diff options
Diffstat (limited to 'desktop-widgets')
-rw-r--r-- | desktop-widgets/mainwindow.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp index ad8b39dd7..84cac46b4 100644 --- a/desktop-widgets/mainwindow.cpp +++ b/desktop-widgets/mainwindow.cpp @@ -647,8 +647,31 @@ void MainWindow::on_actionCloudstoragesave_triggered() void MainWindow::on_actionTake_cloud_storage_online_triggered() { + // Refuse to go online if there is an edit in progress + if (DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING || + information()->isEditing() ) { + QMessageBox::warning(this, tr("Warning"), tr("Please save or cancel the current dive edit before going online")); + return; + } + prefs.git_local_only = false; - ui.actionTake_cloud_storage_online->setEnabled(false); + if (unsaved_changes()) { + // If there are unsaved changes, ask the user if they want to save them. + // If they don't, they have to sync manually. + if (QMessageBox::warning(this, tr("Save changes?"), + tr("You have unsaved changes. Do you want to commit them to the cloud storage?\n" + "If answering no, the cloud will only be synced on next call to " + "\"Open cloud storage\" or \"Save to cloud storage\"."), + QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes) + on_actionCloudstoragesave_triggered(); + else + setTitle(); + } else { + // If there are no unsaved changes, let's just try to load the remote cloud + on_actionCloudstorageopen_triggered(); + } + if (prefs.git_local_only) + report_error(qPrintable(tr("Failure taking cloud storage online"))); } void learnImageDirs(QStringList dirnames) |