Sync cloud storage on take-cloud-online

When taking the cloud online, actually sync with the online cloud storage.
If there are no unsaved changes, do the same as "Open cloud storage".
If there are unsaved changes, ask the user if they want to commit them
(do the same as "Save to cloud storage") or if they want to sync manually.

If syncing failed, inform the user.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-01-02 21:56:03 +01:00 committed by Dirk Hohndel
parent fd5a521b94
commit dbef391786

View file

@ -647,8 +647,31 @@ void MainWindow::on_actionCloudstoragesave_triggered()
void MainWindow::on_actionTake_cloud_storage_online_triggered() void MainWindow::on_actionTake_cloud_storage_online_triggered()
{ {
// Refuse to go online if there is an edit in progress
if (DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING ||
information()->isEditing() ) {
QMessageBox::warning(this, tr("Warning"), tr("Please save or cancel the current dive edit before going online"));
return;
}
prefs.git_local_only = false; prefs.git_local_only = false;
ui.actionTake_cloud_storage_online->setEnabled(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();
}
if (prefs.git_local_only)
report_error(qPrintable(tr("Failure taking cloud storage online")));
} }
void learnImageDirs(QStringList dirnames) void learnImageDirs(QStringList dirnames)