summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-widgets/mainwindow.cpp')
-rw-r--r--desktop-widgets/mainwindow.cpp62
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;
}