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