diff options
-rw-r--r-- | desktop-widgets/mainwindow.cpp | 62 | ||||
-rw-r--r-- | desktop-widgets/mainwindow.h | 2 | ||||
-rw-r--r-- | desktop-widgets/mainwindow.ui | 9 |
3 files changed, 44 insertions, 29 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; } diff --git a/desktop-widgets/mainwindow.h b/desktop-widgets/mainwindow.h index 901d184df..7e5ebbebe 100644 --- a/desktop-widgets/mainwindow.h +++ b/desktop-widgets/mainwindow.h @@ -103,7 +103,7 @@ slots: void on_actionClose_triggered(); void on_actionCloudstorageopen_triggered(); void on_actionCloudstoragesave_triggered(); - void on_actionTake_cloud_storage_online_triggered(); + void on_actionCloudOnline_triggered(); void on_actionPrint_triggered(); void on_actionPreferences_triggered(); void on_actionQuit_triggered(); diff --git a/desktop-widgets/mainwindow.ui b/desktop-widgets/mainwindow.ui index 93f19e84e..5cd897971 100644 --- a/desktop-widgets/mainwindow.ui +++ b/desktop-widgets/mainwindow.ui @@ -66,7 +66,7 @@ <addaction name="actionSaveAs"/> <addaction name="actionCloudstorageopen"/> <addaction name="actionCloudstoragesave"/> - <addaction name="actionTake_cloud_storage_online"/> + <addaction name="actionCloudOnline"/> <addaction name="separator"/> <addaction name="actionClose"/> <addaction name="actionExport"/> @@ -714,9 +714,12 @@ <string>Facebook</string> </property> </action> - <action name="actionTake_cloud_storage_online"> + <action name="actionCloudOnline"> + <property name="checkable"> + <bool>true</bool> + </property> <property name="text"> - <string>Take cloud storage online</string> + <string>Cloud storage online</string> </property> </action> </widget> |