diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-01-03 11:46:21 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-01-06 10:46:07 -0800 |
commit | bb64c6bda8ac6dbe60adc9797596ed5b2131923b (patch) | |
tree | 47c994df5b6a6477e99009152ae9e04d210f61d7 /desktop-widgets/mainwindow.cpp | |
parent | dbef391786a3ba70ba5e4c002ed968122c5e780a (diff) | |
download | subsurface-bb64c6bda8ac6dbe60adc9797596ed5b2131923b.tar.gz |
Turn take-cloud-online menu action into checkbox
Replace the "Take cloud storage online" menu entry by a "Cloud online"
checkbox. After this change, the user can also force going offline.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/mainwindow.cpp')
-rw-r--r-- | desktop-widgets/mainwindow.cpp | 62 |
1 files changed, 37 insertions, 25 deletions
diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp index 84cac46b4..25e1a0cd6 100644 --- a/desktop-widgets/mainwindow.cpp +++ b/desktop-widgets/mainwindow.cpp @@ -441,7 +441,8 @@ void MainWindow::enableDisableCloudActions() { ui.actionCloudstorageopen->setEnabled(prefs.cloud_verification_status == CS_VERIFIED); ui.actionCloudstoragesave->setEnabled(prefs.cloud_verification_status == CS_VERIFIED); - ui.actionTake_cloud_storage_online->setEnabled(prefs.cloud_verification_status == CS_VERIFIED && prefs.git_local_only); + ui.actionCloudOnline->setEnabled(prefs.cloud_verification_status == CS_VERIFIED); + ui.actionCloudOnline->setChecked(prefs.cloud_verification_status == CS_VERIFIED && !prefs.git_local_only); } PlannerDetails *MainWindow::plannerDetails() const { @@ -645,33 +646,45 @@ void MainWindow::on_actionCloudstoragesave_triggered() mark_divelist_changed(false); } -void MainWindow::on_actionTake_cloud_storage_online_triggered() +void MainWindow::on_actionCloudOnline_triggered() { + bool isOffline = !ui.actionCloudOnline->isChecked(); + if (isOffline == prefs.git_local_only) + return; + // Refuse to go online if there is an edit in progress - if (DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING || - information()->isEditing() ) { + if (!isOffline && + (DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING || + information()->isEditing())) { QMessageBox::warning(this, tr("Warning"), tr("Please save or cancel the current dive edit before going online")); + // We didn't switch to online, therefore uncheck the checkbox + ui.actionCloudOnline->setChecked(false); return; } - prefs.git_local_only = 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(); + prefs.git_local_only = isOffline; + if (!isOffline) { + // User requests to go online. Try to sync cloud storage + prefs.git_local_only = 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 { + // 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"))); } - if (prefs.git_local_only) - report_error(qPrintable(tr("Failure taking cloud storage online"))); + + setTitle(); + ui.actionCloudOnline->setChecked(!prefs.git_local_only); } void learnImageDirs(QStringList dirnames) @@ -1727,12 +1740,11 @@ QString MainWindow::displayedFilename(QString fullFilename) if (fullFilename.contains(prefs.cloud_git_url)) { QString email = fileName.left(fileName.indexOf('[')); - if (prefs.git_local_only) { - ui.actionTake_cloud_storage_online->setEnabled(true); + ui.actionCloudOnline->setChecked(!prefs.git_local_only); + if (prefs.git_local_only) return tr("[local cache for] %1").arg(email); - } else { + else return tr("[cloud storage for] %1").arg(email); - } } else { return fileName; } |