From 6753c18d6f182f98db0fe9403991392482d7a9fa Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Wed, 20 Jul 2016 12:45:09 +0600 Subject: CLOUD: Add default SavesSync callbacks With OSD messages indicating whether saves sync is complete, cancelled or failed. --- backends/cloud/storage.cpp | 25 ++++++++++++++++++++++++- backends/cloud/storage.h | 8 ++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) (limited to 'backends/cloud') 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(this, &Storage::savesSyncDefaultCallback); + if (!errorCallback) errorCallback = new Common::Callback(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. */ -- cgit v1.2.3