summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--desktop-widgets/mainwindow.cpp25
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)