mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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>
This commit is contained in:
parent
dbef391786
commit
bb64c6bda8
3 changed files with 44 additions and 29 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue