aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud
diff options
context:
space:
mode:
authorAlexander Tkachev2016-07-20 12:45:09 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commit6753c18d6f182f98db0fe9403991392482d7a9fa (patch)
tree5e73bd7926bc5e442b96cd733b7376b1b2209a0c /backends/cloud
parenta11b004b6bc18a23b5ab257f4da4ff9e5429c9d9 (diff)
downloadscummvm-rg350-6753c18d6f182f98db0fe9403991392482d7a9fa.tar.gz
scummvm-rg350-6753c18d6f182f98db0fe9403991392482d7a9fa.tar.bz2
scummvm-rg350-6753c18d6f182f98db0fe9403991392482d7a9fa.zip
CLOUD: Add default SavesSync callbacks
With OSD messages indicating whether saves sync is complete, cancelled or failed.
Diffstat (limited to 'backends/cloud')
-rw-r--r--backends/cloud/storage.cpp25
-rw-r--r--backends/cloud/storage.h8
2 files changed, 32 insertions, 1 deletions
diff --git a/backends/cloud/storage.cpp b/backends/cloud/storage.cpp
index c20ad865ad..d4548b84cb 100644
--- a/backends/cloud/storage.cpp
+++ b/backends/cloud/storage.cpp
@@ -128,7 +128,8 @@ SavesSyncRequest *Storage::syncSaves(BoolCallback callback, Networking::ErrorCal
_runningRequestsMutex.unlock();
return _savesSyncRequest;
}
- if (!errorCallback) errorCallback = getErrorPrintingCallback();
+ if (!callback) callback = new Common::Callback<Storage, BoolResponse>(this, &Storage::savesSyncDefaultCallback);
+ if (!errorCallback) errorCallback = new Common::Callback<Storage, Networking::ErrorResponse>(this, &Storage::savesSyncDefaultErrorCallback);
_savesSyncRequest = new SavesSyncRequest(this, callback, errorCallback);
_syncRestartRequestsed = false;
_runningRequestsMutex.unlock();
@@ -192,6 +193,28 @@ void Storage::setSyncTarget(GUI::CommandReceiver *target) {
_runningRequestsMutex.unlock();
}
+void Storage::savesSyncDefaultCallback(BoolResponse response) {
+ _runningRequestsMutex.lock();
+ _savesSyncRequest = nullptr;
+ _runningRequestsMutex.unlock();
+
+ if (!response.value) warning("SavesSyncRequest called success callback with `false` argument");
+ g_system->displayMessageOnOSD(_("Saves sync complete."));
+}
+
+void Storage::savesSyncDefaultErrorCallback(Networking::ErrorResponse error) {
+ _runningRequestsMutex.lock();
+ _savesSyncRequest = nullptr;
+ _runningRequestsMutex.unlock();
+
+ printErrorResponse(error);
+
+ if (error.interrupted)
+ g_system->displayMessageOnOSD(_("Saves sync was cancelled."));
+ else
+ g_system->displayMessageOnOSD(_("Saves sync failed.\nCheck your Internet connection."));
+}
+
///// DownloadFolderRequest-related /////
bool Storage::startDownload(Common::String remotePath, Common::String localPath) {
diff --git a/backends/cloud/storage.h b/backends/cloud/storage.h
index a577b3c468..b33d69e411 100644
--- a/backends/cloud/storage.h
+++ b/backends/cloud/storage.h
@@ -181,6 +181,14 @@ public:
/** Sets SavesSyncRequest's target to given CommandReceiver. */
virtual void setSyncTarget(GUI::CommandReceiver *target);
+protected:
+ /** Finishes the sync. Shows an OSD message. */
+ virtual void savesSyncDefaultCallback(BoolResponse response);
+
+ /** Finishes the sync. Shows an OSD message. */
+ virtual void savesSyncDefaultErrorCallback(Networking::ErrorResponse error);
+
+public:
///// DownloadFolderRequest-related /////
/** Starts a folder download. */