From e7763700e2e2016f4573e3feb77b5fab69268683 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Sun, 5 Jun 2016 15:44:05 +0600 Subject: CLOUD: Make Save/Load dialog start saves sync It also shows a "sync disabled" icon in case it has a savepath override. --- gui/saveload-dialog.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 3d4adfff2b..d9713505e6 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -21,6 +21,11 @@ */ #include "gui/saveload-dialog.h" + +#include "backends/cloud/cloudmanager.h" +#include "backends/cloud/savessyncrequest.h" +#include "backends/networking/curl/connectionmanager.h" + #include "common/translation.h" #include "common/config-manager.h" @@ -135,6 +140,17 @@ void SaveLoadChooserDialog::handleCommand(CommandSender *sender, uint32 cmd, uin return Dialog::handleCommand(sender, cmd, data); } +void SaveLoadChooserDialog::runSaveSync(bool hasSavepathOverride) { + if (!CloudMan.isSyncing()) { + if (hasSavepathOverride) { + ConnMan.showCloudDisabledIcon(); + } else { + Cloud::SavesSyncRequest *request = CloudMan.syncSaves(); + if (request) request->setTarget(this); + } + } +} + void SaveLoadChooserDialog::reflowLayout() { #ifndef DISABLE_SAVELOADCHOOSER_GRID addChooserButtons(); -- cgit v1.2.3 From e9721976aa4fc604810cf1daf6d60b206197cd9a Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Sun, 5 Jun 2016 20:20:22 +0600 Subject: GUI: Add SaveLoadCloudSyncProgressDialog It's shown by SaveLoadChooserDialog when files are downloaded and some save slots are locked. One can hide that dialog to interact with non-locked slots or cancel saves sync completely. Dialog's label shows current sync progress. Dialog automatically hides itself when all files are downloaded. WARNING: right now that results in a crash! --- gui/saveload-dialog.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 85 insertions(+), 2 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index d9713505e6..e5e71a73b8 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -38,6 +38,53 @@ namespace GUI { +enum { + kSavesSyncProgressCmd = 'SSPR', + kSavesSyncEndedCmd = 'SSEN', + + kCancelSyncCmd = 'PDCS', + kBackgroundSyncCmd = 'PDBS' +}; + +SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog(10, 10, 320, 100) { + int x = 10; + int buttonHeight = 24; + int buttonWidth = 140; + int marginBottom = 8; + + uint32 progress = (uint32)(100 * CloudMan.getSyncProgress()); + _label = new StaticTextWidget(this, 10, 10, 300, kLineHeight, Common::String::format("Downloading saves (%u%% complete)...", progress), Graphics::kTextAlignCenter); + + //if (defaultButton) + new ButtonWidget(this, x, _h - buttonHeight - marginBottom, buttonWidth, buttonHeight, "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog + + //if (altButton) + new ButtonWidget(this, x + buttonWidth + 10, _h - buttonHeight - 8, buttonWidth, buttonHeight, "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog +} + +SaveLoadCloudSyncProgressDialog::~SaveLoadCloudSyncProgressDialog() {} + +void SaveLoadCloudSyncProgressDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) { + switch(cmd) { + case kSavesSyncProgressCmd: + _label->setLabel(Common::String::format("Downloading saves (%u%% complete)...", data)); + break; + + case kCancelSyncCmd: + setResult(kCancelSyncCmd); + close(); + break; + + case kSavesSyncEndedCmd: + case kBackgroundSyncCmd: + setResult(kBackgroundSyncCmd); + close(); + break; + } + + Dialog::handleCommand(sender, cmd, data); +} + #ifndef DISABLE_SAVELOADCHOOSER_GRID SaveLoadChooserType getRequestedSaveLoadDialog(const MetaEngine &metaEngine) { const Common::String &userConfig = ConfMan.get("gui_saveload_chooser", Common::ConfigManager::kApplicationDomain); @@ -71,7 +118,8 @@ enum { SaveLoadChooserDialog::SaveLoadChooserDialog(const Common::String &dialogName, const bool saveMode) : Dialog(dialogName), _metaEngine(0), _delSupport(false), _metaInfoSupport(false), - _thumbnailSupport(false), _saveDateSupport(false), _playTimeSupport(false), _saveMode(saveMode) + _thumbnailSupport(false), _saveDateSupport(false), _playTimeSupport(false), _saveMode(saveMode), + _dialogWasShown(false) #ifndef DISABLE_SAVELOADCHOOSER_GRID , _listButton(0), _gridButton(0) #endif // !DISABLE_SAVELOADCHOOSER_GRID @@ -83,7 +131,8 @@ SaveLoadChooserDialog::SaveLoadChooserDialog(const Common::String &dialogName, c SaveLoadChooserDialog::SaveLoadChooserDialog(int x, int y, int w, int h, const bool saveMode) : Dialog(x, y, w, h), _metaEngine(0), _delSupport(false), _metaInfoSupport(false), - _thumbnailSupport(false), _saveDateSupport(false), _playTimeSupport(false), _saveMode(saveMode) + _thumbnailSupport(false), _saveDateSupport(false), _playTimeSupport(false), _saveMode(saveMode), + _dialogWasShown(false) #ifndef DISABLE_SAVELOADCHOOSER_GRID , _listButton(0), _gridButton(0) #endif // !DISABLE_SAVELOADCHOOSER_GRID @@ -99,6 +148,8 @@ void SaveLoadChooserDialog::open() { // So that quitting ScummVM will not cause the dialog result to say a // saved game was selected. setResult(-1); + + _dialogWasShown = false; } int SaveLoadChooserDialog::run(const Common::String &target, const MetaEngine *metaEngine) { @@ -137,6 +188,21 @@ void SaveLoadChooserDialog::handleCommand(CommandSender *sender, uint32 cmd, uin } #endif // !DISABLE_SAVELOADCHOOSER_GRID + if (cmd == kSavesSyncProgressCmd || cmd == kSavesSyncEndedCmd) { + Cloud::SavesSyncRequest *request = (Cloud::SavesSyncRequest *)sender; + + //this dialog only gets these commands if the progress dialog was shown and user clicked "run in background" + switch (cmd) { + case kSavesSyncProgressCmd: + //TODO: unlock that save which was downloaded + break; + + case kSavesSyncEndedCmd: + //TODO: ? + break; + } + } + return Dialog::handleCommand(sender, cmd, data); } @@ -151,6 +217,23 @@ void SaveLoadChooserDialog::runSaveSync(bool hasSavepathOverride) { } } +void SaveLoadChooserDialog::handleTickle() { + if (!_dialogWasShown && CloudMan.isSyncing()) { + Common::Array files = CloudMan.getSyncingFiles(); + if (!files.empty()) { + SaveLoadCloudSyncProgressDialog dialog; + CloudMan.setSyncTarget(&dialog); + int result = dialog.runModal(); + if (result == kCancelSyncCmd) { + CloudMan.cancelSync(); + } + CloudMan.setSyncTarget(this); + _dialogWasShown = true; + } + } + Dialog::handleTickle(); +} + void SaveLoadChooserDialog::reflowLayout() { #ifndef DISABLE_SAVELOADCHOOSER_GRID addChooserButtons(); -- cgit v1.2.3 From 3db80154d60c98fe27018dc78c875df52c20cfe9 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Sun, 5 Jun 2016 21:07:36 +0600 Subject: CLOUD: Fix SaveLoadCloudSyncProgressDialog crash It's closing itself a bit later now. --- gui/saveload-dialog.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index e5e71a73b8..bdae9efea4 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -46,7 +46,7 @@ enum { kBackgroundSyncCmd = 'PDBS' }; -SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog(10, 10, 320, 100) { +SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog(10, 10, 320, 100), _close(false) { int x = 10; int buttonHeight = 24; int buttonWidth = 140; @@ -77,14 +77,22 @@ void SaveLoadCloudSyncProgressDialog::handleCommand(CommandSender *sender, uint3 case kSavesSyncEndedCmd: case kBackgroundSyncCmd: - setResult(kBackgroundSyncCmd); - close(); + _close = true; break; } Dialog::handleCommand(sender, cmd, data); } +void SaveLoadCloudSyncProgressDialog::handleTickle() { + if (_close) { + setResult(kBackgroundSyncCmd); + close(); + } + + Dialog::handleTickle(); +} + #ifndef DISABLE_SAVELOADCHOOSER_GRID SaveLoadChooserType getRequestedSaveLoadDialog(const MetaEngine &metaEngine) { const Common::String &userConfig = ConfMan.get("gui_saveload_chooser", Common::ConfigManager::kApplicationDomain); -- cgit v1.2.3 From 0ce7be17d3fec380f726c1ff16c559344b3e24c1 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Sun, 5 Jun 2016 21:07:55 +0600 Subject: CLOUD: Make ProgressDialog display downloading progress --- gui/saveload-dialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index bdae9efea4..6d343c88ed 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -52,7 +52,7 @@ SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog(10, 1 int buttonWidth = 140; int marginBottom = 8; - uint32 progress = (uint32)(100 * CloudMan.getSyncProgress()); + uint32 progress = (uint32)(100 * CloudMan.getSyncDownloadingProgress()); _label = new StaticTextWidget(this, 10, 10, 300, kLineHeight, Common::String::format("Downloading saves (%u%% complete)...", progress), Graphics::kTextAlignCenter); //if (defaultButton) -- cgit v1.2.3 From 9eb4aad7fdea54fd99ad4a9aa4ab78bf64f81794 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Sun, 5 Jun 2016 22:26:51 +0600 Subject: CLOUD: Make DefaultSaveFileManager ignore syncing files MetaEngines don't get "locked" files in the list, so won't try to open these. Save/Load dialog updates save list every time SavesSyncRequest tells it to. --- gui/saveload-dialog.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 6d343c88ed..2f10182006 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -35,6 +35,7 @@ #include "gui/widgets/edittext.h" #include "graphics/scaler.h" +#include namespace GUI { @@ -201,12 +202,9 @@ void SaveLoadChooserDialog::handleCommand(CommandSender *sender, uint32 cmd, uin //this dialog only gets these commands if the progress dialog was shown and user clicked "run in background" switch (cmd) { - case kSavesSyncProgressCmd: - //TODO: unlock that save which was downloaded - break; - + case kSavesSyncProgressCmd: case kSavesSyncEndedCmd: - //TODO: ? + updateSaveList(); break; } } @@ -237,6 +235,7 @@ void SaveLoadChooserDialog::handleTickle() { } CloudMan.setSyncTarget(this); _dialogWasShown = true; + updateSaveList(); } } Dialog::handleTickle(); @@ -259,6 +258,11 @@ void SaveLoadChooserDialog::reflowLayout() { Dialog::reflowLayout(); } +void SaveLoadChooserDialog::updateSaveList() { + Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing + g_system->getSavefileManager()->updateSavefilesList(files); +} + #ifndef DISABLE_SAVELOADCHOOSER_GRID void SaveLoadChooserDialog::addChooserButtons() { if (_listButton) { @@ -570,6 +574,7 @@ void SaveLoadChooserSimple::close() { } void SaveLoadChooserSimple::updateSaveList() { + SaveLoadChooserDialog::updateSaveList(); _saveList = _metaEngine->listSaves(_target.c_str()); int curSlot = 0; @@ -631,6 +636,7 @@ void SaveLoadChooserSimple::updateSaveList() { } _list->setList(saveNames, &colors); + draw(); } // SaveLoadChooserGrid implementation @@ -726,6 +732,13 @@ void SaveLoadChooserGrid::handleMouseWheel(int x, int y, int direction) { } } +void SaveLoadChooserGrid::updateSaveList() { + SaveLoadChooserDialog::updateSaveList(); + _saveList = _metaEngine->listSaves(_target.c_str()); + updateSaves(); + draw(); +} + void SaveLoadChooserGrid::open() { SaveLoadChooserDialog::open(); -- cgit v1.2.3 From 6c5a8f34eaf5fe6af0d885cb162b5ebf193030f8 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Mon, 6 Jun 2016 10:25:49 +0600 Subject: CLOUD: Add SaveLoadCloudSyncProgress enum It's common for Save/Load dialogs and SavesSyncRequest. --- gui/saveload-dialog.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 2f10182006..2646194b4b 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -40,9 +40,6 @@ namespace GUI { enum { - kSavesSyncProgressCmd = 'SSPR', - kSavesSyncEndedCmd = 'SSEN', - kCancelSyncCmd = 'PDCS', kBackgroundSyncCmd = 'PDBS' }; @@ -198,15 +195,8 @@ void SaveLoadChooserDialog::handleCommand(CommandSender *sender, uint32 cmd, uin #endif // !DISABLE_SAVELOADCHOOSER_GRID if (cmd == kSavesSyncProgressCmd || cmd == kSavesSyncEndedCmd) { - Cloud::SavesSyncRequest *request = (Cloud::SavesSyncRequest *)sender; - //this dialog only gets these commands if the progress dialog was shown and user clicked "run in background" - switch (cmd) { - case kSavesSyncProgressCmd: - case kSavesSyncEndedCmd: - updateSaveList(); - break; - } + return updateSaveList(); } return Dialog::handleCommand(sender, cmd, data); -- cgit v1.2.3 From f1a56eaf3666a6535ff0d1654e4e014249933452 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Mon, 6 Jun 2016 12:22:22 +0600 Subject: GUI: Show "locked" saves during sync --- gui/saveload-dialog.cpp | 56 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 13 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 2646194b4b..5360bfe1ac 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -251,6 +251,32 @@ void SaveLoadChooserDialog::reflowLayout() { void SaveLoadChooserDialog::updateSaveList() { Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing g_system->getSavefileManager()->updateSavefilesList(files); + listSaves(); +} + +void SaveLoadChooserDialog::listSaves() { + _saveList = _metaEngine->listSaves(_target.c_str()); + + Common::String pattern = _metaEngine->getSavefilesPattern(_target); + Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing + for (uint32 i = 0; i < files.size(); ++i) { + if (!files[i].matchString(pattern, true)) continue; + + //make up some slot number + int slotNum = 0; + for (int j = files[i].size() - 3; j < files[i].size(); ++j) { //3 last chars + if (j < 0) continue; + char c = files[i][j]; + if (c < '0' || c > '9') continue; + slotNum = slotNum * 10 + (c - '0'); + } + + SaveStateDescriptor slot(slotNum, files[i]); + slot.setLocked(true); + _saveList.push_back(slot); + } + + Common::sort(_saveList.begin(), _saveList.end(), SaveStateDescriptorSlotComparator()); } #ifndef DISABLE_SAVELOADCHOOSER_GRID @@ -454,6 +480,7 @@ void SaveLoadChooserSimple::updateSelection(bool redraw) { bool isDeletable = _delSupport; bool isWriteProtected = false; bool startEditMode = _list->isEditable(); + bool isLocked = false; // We used to support letting the themes specify the fill color with our // initial theme based GUI. But this support was dropped. @@ -463,10 +490,11 @@ void SaveLoadChooserSimple::updateSelection(bool redraw) { _playtime->setLabel(_("No playtime saved")); if (selItem >= 0 && _metaInfoSupport) { - SaveStateDescriptor desc = _metaEngine->querySaveMetaInfos(_target.c_str(), _saveList[selItem].getSaveSlot()); + SaveStateDescriptor desc = (_saveList[selItem].getLocked() ? _saveList[selItem] : _metaEngine->querySaveMetaInfos(_target.c_str(), _saveList[selItem].getSaveSlot())); isDeletable = desc.getDeletableFlag() && _delSupport; isWriteProtected = desc.getWriteProtectedFlag(); + isLocked = desc.getLocked(); // Don't allow the user to change the description of write protected games if (isWriteProtected) @@ -499,9 +527,9 @@ void SaveLoadChooserSimple::updateSelection(bool redraw) { if (_list->isEditable()) { - // Disable the save button if nothing is selected, or if the selected - // game is write protected - _chooseButton->setEnabled(selItem >= 0 && !isWriteProtected); + // Disable the save button if slot is locked, nothing is selected, + // or if the selected game is write protected + _chooseButton->setEnabled(!isLocked && selItem >= 0 && !isWriteProtected); if (startEditMode) { _list->startEditMode(); @@ -513,13 +541,13 @@ void SaveLoadChooserSimple::updateSelection(bool redraw) { } } } else { - // Disable the load button if nothing is selected, or if an empty - // list item is selected. - _chooseButton->setEnabled(selItem >= 0 && !_list->getSelectedString().empty()); + // Disable the load button if slot is locked, nothing is selected, + // or if an empty list item is selected. + _chooseButton->setEnabled(!isLocked && selItem >= 0 && !_list->getSelectedString().empty()); } // Delete will always be disabled if the engine doesn't support it. - _deleteButton->setEnabled(isDeletable && (selItem >= 0) && (!_list->getSelectedString().empty())); + _deleteButton->setEnabled(isDeletable && !isLocked && (selItem >= 0) && (!_list->getSelectedString().empty())); if (redraw) { _gfxWidget->draw(); @@ -565,7 +593,6 @@ void SaveLoadChooserSimple::close() { void SaveLoadChooserSimple::updateSaveList() { SaveLoadChooserDialog::updateSaveList(); - _saveList = _metaEngine->listSaves(_target.c_str()); int curSlot = 0; int saveSlot = 0; @@ -598,7 +625,7 @@ void SaveLoadChooserSimple::updateSaveList() { description = _("Untitled savestate"); colors.push_back(ThemeEngine::kFontColorAlternate); } else { - colors.push_back(ThemeEngine::kFontColorNormal); + colors.push_back((x->getLocked() ? ThemeEngine::kFontColorAlternate : ThemeEngine::kFontColorNormal)); } saveNames.push_back(description); @@ -724,7 +751,6 @@ void SaveLoadChooserGrid::handleMouseWheel(int x, int y, int direction) { void SaveLoadChooserGrid::updateSaveList() { SaveLoadChooserDialog::updateSaveList(); - _saveList = _metaEngine->listSaves(_target.c_str()); updateSaves(); draw(); } @@ -732,7 +758,7 @@ void SaveLoadChooserGrid::updateSaveList() { void SaveLoadChooserGrid::open() { SaveLoadChooserDialog::open(); - _saveList = _metaEngine->listSaves(_target.c_str()); + listSaves(); _resultString.clear(); // Load information to restore the last page the user had open. @@ -973,7 +999,7 @@ void SaveLoadChooserGrid::updateSaves() { for (uint i = _curPage * _entriesPerPage, curNum = 0; i < _saveList.size() && curNum < _entriesPerPage; ++i, ++curNum) { const uint saveSlot = _saveList[i].getSaveSlot(); - SaveStateDescriptor desc = _metaEngine->querySaveMetaInfos(_target.c_str(), saveSlot); + SaveStateDescriptor desc = (_saveList[i].getLocked() ? _saveList[i] : _metaEngine->querySaveMetaInfos(_target.c_str(), saveSlot)); SlotButton &curButton = _buttons[curNum]; curButton.setVisible(true); const Graphics::Surface *thumbnail = desc.getThumbnail(); @@ -984,6 +1010,10 @@ void SaveLoadChooserGrid::updateSaves() { } curButton.description->setLabel(Common::String::format("%d. %s", saveSlot, desc.getDescription().c_str())); + //that would make it look "disabled" if slot is locked + curButton.button->setEnabled(!desc.getLocked()); + curButton.description->setEnabled(!desc.getLocked()); + Common::String tooltip(_("Name: ")); tooltip += desc.getDescription(); -- cgit v1.2.3 From 67789c3c1621e4b59167bd9f0c0d38eec122dd90 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Mon, 6 Jun 2016 13:37:38 +0600 Subject: GUI: Update SaveLoadCloudSyncProgressDialog So now it's centered, includes a progress bar and two labels instead of one. Works fine in 320x200. --- gui/saveload-dialog.cpp | 48 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 5360bfe1ac..af4db178a9 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -44,20 +44,47 @@ enum { kBackgroundSyncCmd = 'PDBS' }; -SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog(10, 10, 320, 100), _close(false) { - int x = 10; - int buttonHeight = 24; - int buttonWidth = 140; +SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog(0,0,0,0), _close(false) { + const int screenW = g_system->getOverlayWidth(); + const int screenH = g_system->getOverlayHeight(); + + int buttonWidth = g_gui.xmlEval()->getVar("Globals.Button.Width", 0) * 1.4; // "Run in background" is too long + int buttonHeight = g_gui.xmlEval()->getVar("Globals.Button.Height", 0); + int progressBarHeight = buttonHeight; + + int marginAround = 8; int marginBottom = 8; + int marginBetween = 10; + + _w = screenW * 80 / 100; + _h = 0; + _h += buttonHeight + marginBottom; //buttons + _h += 2 * (kLineHeight + 2 * marginAround); //top label + bottom label + _h += progressBarHeight; //progress bar + if (_h > screenH) _h = screenH; + + // Center the dialog + _x = (screenW - _w) / 2; + _y = (screenH - _h) / 2; + _label = new StaticTextWidget(this, marginAround, marginAround, _w - marginAround * 2, kLineHeight, "Downloading saves...", Graphics::kTextAlignCenter); + uint32 progress = (uint32)(100 * CloudMan.getSyncDownloadingProgress()); - _label = new StaticTextWidget(this, 10, 10, 300, kLineHeight, Common::String::format("Downloading saves (%u%% complete)...", progress), Graphics::kTextAlignCenter); + _progressBar = new SliderWidget(this, marginAround, marginAround * 2 + kLineHeight, _w - marginAround * 2, progressBarHeight); + _progressBar->setMinValue(0); + _progressBar->setMaxValue(100); + _progressBar->setValue(progress); + + _percentLabel = new StaticTextWidget(this, marginAround, marginAround * 3 + kLineHeight + progressBarHeight, _w - marginAround * 2, kLineHeight, Common::String::format("%u %%", progress), Graphics::kTextAlignCenter); + + int x1 = (_w - buttonWidth * 2 - marginBetween) / 2; + int x2 = x1 + buttonWidth + marginBetween; //if (defaultButton) - new ButtonWidget(this, x, _h - buttonHeight - marginBottom, buttonWidth, buttonHeight, "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog + new ButtonWidget(this, x1, _h - buttonHeight - marginBottom, buttonWidth, buttonHeight, "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog //if (altButton) - new ButtonWidget(this, x + buttonWidth + 10, _h - buttonHeight - 8, buttonWidth, buttonHeight, "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog + new ButtonWidget(this, x2, _h - buttonHeight - marginBottom, buttonWidth, buttonHeight, "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog } SaveLoadCloudSyncProgressDialog::~SaveLoadCloudSyncProgressDialog() {} @@ -65,7 +92,9 @@ SaveLoadCloudSyncProgressDialog::~SaveLoadCloudSyncProgressDialog() {} void SaveLoadCloudSyncProgressDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) { switch(cmd) { case kSavesSyncProgressCmd: - _label->setLabel(Common::String::format("Downloading saves (%u%% complete)...", data)); + _percentLabel->setLabel(Common::String::format("%u%%", data)); + _progressBar->setValue(data); + _progressBar->draw(); break; case kCancelSyncCmd: @@ -264,8 +293,7 @@ void SaveLoadChooserDialog::listSaves() { //make up some slot number int slotNum = 0; - for (int j = files[i].size() - 3; j < files[i].size(); ++j) { //3 last chars - if (j < 0) continue; + for (uint32 j = (files[i].size() > 3 ? files[i].size() - 3 : 0); j < files[i].size(); ++j) { //3 last chars char c = files[i][j]; if (c < '0' || c > '9') continue; slotNum = slotNum * 10 + (c - '0'); -- cgit v1.2.3 From f5cb5be393d482130d86794a84358e9b37f37af7 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Mon, 6 Jun 2016 15:08:44 +0600 Subject: GUI: Add SaveLoadCloudSyncProgress in ScummModern theme ScummVM would probably crash when using a theme without SaveLoadCloudSyncProgress dialog described. --- gui/saveload-dialog.cpp | 43 ++++++------------------------------------- 1 file changed, 6 insertions(+), 37 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index af4db178a9..e9248bd082 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -44,47 +44,16 @@ enum { kBackgroundSyncCmd = 'PDBS' }; -SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog(0,0,0,0), _close(false) { - const int screenW = g_system->getOverlayWidth(); - const int screenH = g_system->getOverlayHeight(); - - int buttonWidth = g_gui.xmlEval()->getVar("Globals.Button.Width", 0) * 1.4; // "Run in background" is too long - int buttonHeight = g_gui.xmlEval()->getVar("Globals.Button.Height", 0); - int progressBarHeight = buttonHeight; - - int marginAround = 8; - int marginBottom = 8; - int marginBetween = 10; - - _w = screenW * 80 / 100; - _h = 0; - _h += buttonHeight + marginBottom; //buttons - _h += 2 * (kLineHeight + 2 * marginAround); //top label + bottom label - _h += progressBarHeight; //progress bar - if (_h > screenH) _h = screenH; - - // Center the dialog - _x = (screenW - _w) / 2; - _y = (screenH - _h) / 2; - - _label = new StaticTextWidget(this, marginAround, marginAround, _w - marginAround * 2, kLineHeight, "Downloading saves...", Graphics::kTextAlignCenter); - +SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog("SaveLoadCloudSyncProgress"), _close(false) { + _label = new StaticTextWidget(this, "SaveLoadCloudSyncProgress.TitleText", "Downloading saves..."); uint32 progress = (uint32)(100 * CloudMan.getSyncDownloadingProgress()); - _progressBar = new SliderWidget(this, marginAround, marginAround * 2 + kLineHeight, _w - marginAround * 2, progressBarHeight); + _progressBar = new SliderWidget(this, "SaveLoadCloudSyncProgress.ProgressBar"); _progressBar->setMinValue(0); _progressBar->setMaxValue(100); _progressBar->setValue(progress); - - _percentLabel = new StaticTextWidget(this, marginAround, marginAround * 3 + kLineHeight + progressBarHeight, _w - marginAround * 2, kLineHeight, Common::String::format("%u %%", progress), Graphics::kTextAlignCenter); - - int x1 = (_w - buttonWidth * 2 - marginBetween) / 2; - int x2 = x1 + buttonWidth + marginBetween; - - //if (defaultButton) - new ButtonWidget(this, x1, _h - buttonHeight - marginBottom, buttonWidth, buttonHeight, "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog - - //if (altButton) - new ButtonWidget(this, x2, _h - buttonHeight - marginBottom, buttonWidth, buttonHeight, "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog + _percentLabel = new StaticTextWidget(this, "SaveLoadCloudSyncProgress.PercentText", Common::String::format("%u %%", progress)); + new ButtonWidget(this, "SaveLoadCloudSyncProgress.Cancel", "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog + new ButtonWidget(this, "SaveLoadCloudSyncProgress.Background", "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog } SaveLoadCloudSyncProgressDialog::~SaveLoadCloudSyncProgressDialog() {} -- cgit v1.2.3 From f24a89e080df860f7a32a8b3c9f272c1623aedbb Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Mon, 6 Jun 2016 17:48:08 +0600 Subject: GUI: Fix SaveLoadCloudSyncProgressDialog * disabled progress bar; * removed syncTarget segfault; * fixed grid slots disabling for "locked" slots. --- gui/saveload-dialog.cpp | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index e9248bd082..1ba1793ef4 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -51,12 +51,15 @@ SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog("Save _progressBar->setMinValue(0); _progressBar->setMaxValue(100); _progressBar->setValue(progress); + _progressBar->setEnabled(false); _percentLabel = new StaticTextWidget(this, "SaveLoadCloudSyncProgress.PercentText", Common::String::format("%u %%", progress)); new ButtonWidget(this, "SaveLoadCloudSyncProgress.Cancel", "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog new ButtonWidget(this, "SaveLoadCloudSyncProgress.Background", "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog } -SaveLoadCloudSyncProgressDialog::~SaveLoadCloudSyncProgressDialog() {} +SaveLoadCloudSyncProgressDialog::~SaveLoadCloudSyncProgressDialog() { + CloudMan.setSyncTarget(nullptr); //not that dialog, at least +} void SaveLoadCloudSyncProgressDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) { switch(cmd) { @@ -146,6 +149,10 @@ SaveLoadChooserDialog::SaveLoadChooserDialog(int x, int y, int w, int h, const b #endif // !DISABLE_SAVELOADCHOOSER_GRID } +SaveLoadChooserDialog::~SaveLoadChooserDialog() { + CloudMan.setSyncTarget(nullptr); //not that dialog, at least +} + void SaveLoadChooserDialog::open() { Dialog::open(); @@ -215,12 +222,15 @@ void SaveLoadChooserDialog::handleTickle() { if (!_dialogWasShown && CloudMan.isSyncing()) { Common::Array files = CloudMan.getSyncingFiles(); if (!files.empty()) { - SaveLoadCloudSyncProgressDialog dialog; - CloudMan.setSyncTarget(&dialog); - int result = dialog.runModal(); - if (result == kCancelSyncCmd) { - CloudMan.cancelSync(); + { + SaveLoadCloudSyncProgressDialog dialog; + CloudMan.setSyncTarget(&dialog); + int result = dialog.runModal(); + if (result == kCancelSyncCmd) { + CloudMan.cancelSync(); + } } + //dialog changes syncTarget to nullptr after that } CloudMan.setSyncTarget(this); _dialogWasShown = true; updateSaveList(); @@ -253,6 +263,7 @@ void SaveLoadChooserDialog::updateSaveList() { } void SaveLoadChooserDialog::listSaves() { + if (!_metaEngine) return; //very strange _saveList = _metaEngine->listSaves(_target.c_str()); Common::String pattern = _metaEngine->getSavefilesPattern(_target); @@ -1007,10 +1018,6 @@ void SaveLoadChooserGrid::updateSaves() { } curButton.description->setLabel(Common::String::format("%d. %s", saveSlot, desc.getDescription().c_str())); - //that would make it look "disabled" if slot is locked - curButton.button->setEnabled(!desc.getLocked()); - curButton.description->setEnabled(!desc.getLocked()); - Common::String tooltip(_("Name: ")); tooltip += desc.getDescription(); @@ -1045,6 +1052,10 @@ void SaveLoadChooserGrid::updateSaves() { } else { curButton.button->setEnabled(true); } + + //that would make it look "disabled" if slot is locked + curButton.button->setEnabled(!desc.getLocked()); + curButton.description->setEnabled(!desc.getLocked()); } const uint numPages = (_entriesPerPage != 0 && !_saveList.empty()) ? ((_saveList.size() + _entriesPerPage - 1) / _entriesPerPage) : 1; -- cgit v1.2.3 From ab1d160ec8f99e472667b83aa4bdd7697b702f3a Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Tue, 7 Jun 2016 19:33:00 +0600 Subject: ALL: Add MetaEngine::simpleSaveNames() Engines with "simple" savenames would support "Run in background" in save/load dialog and gradual save slots unlocking. Other engines save/load feature would be locked until save sync is over. --- gui/saveload-dialog.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 1ba1793ef4..0dde1a4060 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -266,25 +266,27 @@ void SaveLoadChooserDialog::listSaves() { if (!_metaEngine) return; //very strange _saveList = _metaEngine->listSaves(_target.c_str()); - Common::String pattern = _metaEngine->getSavefilesPattern(_target); - Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing - for (uint32 i = 0; i < files.size(); ++i) { - if (!files[i].matchString(pattern, true)) continue; - - //make up some slot number - int slotNum = 0; - for (uint32 j = (files[i].size() > 3 ? files[i].size() - 3 : 0); j < files[i].size(); ++j) { //3 last chars - char c = files[i][j]; - if (c < '0' || c > '9') continue; - slotNum = slotNum * 10 + (c - '0'); + if (_metaEngine->simpleSaveNames()) { + Common::String pattern = _target + ".###"; + Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing + for (uint32 i = 0; i < files.size(); ++i) { + if (!files[i].matchString(pattern, true)) continue; + + //make up some slot number + int slotNum = 0; + for (uint32 j = (files[i].size() > 3 ? files[i].size() - 3 : 0); j < files[i].size(); ++j) { //3 last chars + char c = files[i][j]; + if (c < '0' || c > '9') continue; + slotNum = slotNum * 10 + (c - '0'); + } + + SaveStateDescriptor slot(slotNum, files[i]); + slot.setLocked(true); + _saveList.push_back(slot); } - SaveStateDescriptor slot(slotNum, files[i]); - slot.setLocked(true); - _saveList.push_back(slot); + Common::sort(_saveList.begin(), _saveList.end(), SaveStateDescriptorSlotComparator()); } - - Common::sort(_saveList.begin(), _saveList.end(), SaveStateDescriptorSlotComparator()); } #ifndef DISABLE_SAVELOADCHOOSER_GRID -- cgit v1.2.3 From 62a640ff440919ae762072a6e6acea415f0957dd Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Tue, 7 Jun 2016 19:52:36 +0600 Subject: GUI: Disable "Run in background" for "difficult" engines During saves sync slots of MetaEngines with simpleSaveNames() == false would not be available at all. User would have to wait for sync to complete. --- gui/saveload-dialog.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 0dde1a4060..3ac6074bf8 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -44,7 +44,7 @@ enum { kBackgroundSyncCmd = 'PDBS' }; -SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog("SaveLoadCloudSyncProgress"), _close(false) { +SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(bool canRunInBackground): Dialog("SaveLoadCloudSyncProgress"), _close(false) { _label = new StaticTextWidget(this, "SaveLoadCloudSyncProgress.TitleText", "Downloading saves..."); uint32 progress = (uint32)(100 * CloudMan.getSyncDownloadingProgress()); _progressBar = new SliderWidget(this, "SaveLoadCloudSyncProgress.ProgressBar"); @@ -54,7 +54,9 @@ SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(): Dialog("Save _progressBar->setEnabled(false); _percentLabel = new StaticTextWidget(this, "SaveLoadCloudSyncProgress.PercentText", Common::String::format("%u %%", progress)); new ButtonWidget(this, "SaveLoadCloudSyncProgress.Cancel", "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog - new ButtonWidget(this, "SaveLoadCloudSyncProgress.Background", "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog + ButtonWidget *backgroundButton = new ButtonWidget(this, "SaveLoadCloudSyncProgress.Background", "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog + backgroundButton->setEnabled(canRunInBackground); + draw(); } SaveLoadCloudSyncProgressDialog::~SaveLoadCloudSyncProgressDialog() { @@ -223,7 +225,7 @@ void SaveLoadChooserDialog::handleTickle() { Common::Array files = CloudMan.getSyncingFiles(); if (!files.empty()) { { - SaveLoadCloudSyncProgressDialog dialog; + SaveLoadCloudSyncProgressDialog dialog(_metaEngine ? _metaEngine->simpleSaveNames() : false); CloudMan.setSyncTarget(&dialog); int result = dialog.runModal(); if (result == kCancelSyncCmd) { -- cgit v1.2.3 From 659dcd9702a82b3fdf5b6c6c87f11267fe313744 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Mon, 4 Jul 2016 17:45:50 +0600 Subject: GUI: Fix SaveLoadDialog It was SavesSyncRequest's target even when closed. --- gui/saveload-dialog.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 3ac6074bf8..eff4a5a0a3 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -165,6 +165,11 @@ void SaveLoadChooserDialog::open() { _dialogWasShown = false; } +void SaveLoadChooserDialog::close() { + CloudMan.setSyncTarget(nullptr); //not that dialog, at least + Dialog::close(); +} + int SaveLoadChooserDialog::run(const Common::String &target, const MetaEngine *metaEngine) { _metaEngine = metaEngine; _target = target; -- cgit v1.2.3 From 81c85b6651fcb4ba2f1dc0ba2955e34cb541fc35 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Tue, 5 Jul 2016 13:30:24 +0600 Subject: CLOUD: Fix SaveLoadDialogs to check USE_CLOUD Linking was failing when disabling curl support. --- gui/saveload-dialog.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index eff4a5a0a3..faf6fa9dfe 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -22,9 +22,11 @@ #include "gui/saveload-dialog.h" +#ifdef USE_CLOUD #include "backends/cloud/cloudmanager.h" #include "backends/cloud/savessyncrequest.h" #include "backends/networking/curl/connectionmanager.h" +#endif #include "common/translation.h" #include "common/config-manager.h" @@ -39,6 +41,8 @@ namespace GUI { +#ifdef USE_CLOUD + enum { kCancelSyncCmd = 'PDCS', kBackgroundSyncCmd = 'PDBS' @@ -93,6 +97,7 @@ void SaveLoadCloudSyncProgressDialog::handleTickle() { Dialog::handleTickle(); } +#endif #ifndef DISABLE_SAVELOADCHOOSER_GRID SaveLoadChooserType getRequestedSaveLoadDialog(const MetaEngine &metaEngine) { @@ -152,7 +157,9 @@ SaveLoadChooserDialog::SaveLoadChooserDialog(int x, int y, int w, int h, const b } SaveLoadChooserDialog::~SaveLoadChooserDialog() { +#ifdef USE_CLOUD CloudMan.setSyncTarget(nullptr); //not that dialog, at least +#endif } void SaveLoadChooserDialog::open() { @@ -166,7 +173,9 @@ void SaveLoadChooserDialog::open() { } void SaveLoadChooserDialog::close() { +#ifdef USE_CLOUD CloudMan.setSyncTarget(nullptr); //not that dialog, at least +#endif Dialog::close(); } @@ -206,14 +215,17 @@ void SaveLoadChooserDialog::handleCommand(CommandSender *sender, uint32 cmd, uin } #endif // !DISABLE_SAVELOADCHOOSER_GRID +#ifdef USE_CLOUD if (cmd == kSavesSyncProgressCmd || cmd == kSavesSyncEndedCmd) { //this dialog only gets these commands if the progress dialog was shown and user clicked "run in background" return updateSaveList(); } +#endif return Dialog::handleCommand(sender, cmd, data); } +#ifdef USE_CLOUD void SaveLoadChooserDialog::runSaveSync(bool hasSavepathOverride) { if (!CloudMan.isSyncing()) { if (hasSavepathOverride) { @@ -224,8 +236,10 @@ void SaveLoadChooserDialog::runSaveSync(bool hasSavepathOverride) { } } } +#endif void SaveLoadChooserDialog::handleTickle() { +#ifdef USE_CLOUD if (!_dialogWasShown && CloudMan.isSyncing()) { Common::Array files = CloudMan.getSyncingFiles(); if (!files.empty()) { @@ -243,6 +257,7 @@ void SaveLoadChooserDialog::handleTickle() { updateSaveList(); } } +#endif Dialog::handleTickle(); } @@ -263,9 +278,11 @@ void SaveLoadChooserDialog::reflowLayout() { Dialog::reflowLayout(); } -void SaveLoadChooserDialog::updateSaveList() { +void SaveLoadChooserDialog::updateSaveList() { +#ifdef USE_CLOUD Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing g_system->getSavefileManager()->updateSavefilesList(files); +#endif listSaves(); } @@ -273,6 +290,8 @@ void SaveLoadChooserDialog::listSaves() { if (!_metaEngine) return; //very strange _saveList = _metaEngine->listSaves(_target.c_str()); +#ifdef USE_CLOUD + //if there is Cloud support, add currently synced files as "locked" saves in the list if (_metaEngine->simpleSaveNames()) { Common::String pattern = _target + ".###"; Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing @@ -294,6 +313,7 @@ void SaveLoadChooserDialog::listSaves() { Common::sort(_saveList.begin(), _saveList.end(), SaveStateDescriptorSlotComparator()); } +#endif } #ifndef DISABLE_SAVELOADCHOOSER_GRID -- cgit v1.2.3 From 3da38ca60b65d3f1bd67b049f3c4b2a90a4d6a19 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Tue, 5 Jul 2016 15:05:30 +0600 Subject: CLOUD: Replace USE_CLOUD with USE_LIBCURL In most cases that's the right one to check. USE_CLOUD is defined when either USE_LIBCURL or USE_SDL_NET are, which means if there is no curl, USE_CLOUD still could be defined and linking errors would appear. --- gui/saveload-dialog.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index faf6fa9dfe..222f637872 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -22,7 +22,7 @@ #include "gui/saveload-dialog.h" -#ifdef USE_CLOUD +#ifdef USE_LIBCURL #include "backends/cloud/cloudmanager.h" #include "backends/cloud/savessyncrequest.h" #include "backends/networking/curl/connectionmanager.h" @@ -41,7 +41,7 @@ namespace GUI { -#ifdef USE_CLOUD +#ifdef USE_LIBCURL enum { kCancelSyncCmd = 'PDCS', @@ -157,7 +157,7 @@ SaveLoadChooserDialog::SaveLoadChooserDialog(int x, int y, int w, int h, const b } SaveLoadChooserDialog::~SaveLoadChooserDialog() { -#ifdef USE_CLOUD +#ifdef USE_LIBCURL CloudMan.setSyncTarget(nullptr); //not that dialog, at least #endif } @@ -173,7 +173,7 @@ void SaveLoadChooserDialog::open() { } void SaveLoadChooserDialog::close() { -#ifdef USE_CLOUD +#ifdef USE_LIBCURL CloudMan.setSyncTarget(nullptr); //not that dialog, at least #endif Dialog::close(); @@ -215,7 +215,7 @@ void SaveLoadChooserDialog::handleCommand(CommandSender *sender, uint32 cmd, uin } #endif // !DISABLE_SAVELOADCHOOSER_GRID -#ifdef USE_CLOUD +#ifdef USE_LIBCURL if (cmd == kSavesSyncProgressCmd || cmd == kSavesSyncEndedCmd) { //this dialog only gets these commands if the progress dialog was shown and user clicked "run in background" return updateSaveList(); @@ -225,7 +225,7 @@ void SaveLoadChooserDialog::handleCommand(CommandSender *sender, uint32 cmd, uin return Dialog::handleCommand(sender, cmd, data); } -#ifdef USE_CLOUD +#ifdef USE_LIBCURL void SaveLoadChooserDialog::runSaveSync(bool hasSavepathOverride) { if (!CloudMan.isSyncing()) { if (hasSavepathOverride) { @@ -239,7 +239,7 @@ void SaveLoadChooserDialog::runSaveSync(bool hasSavepathOverride) { #endif void SaveLoadChooserDialog::handleTickle() { -#ifdef USE_CLOUD +#ifdef USE_LIBCURL if (!_dialogWasShown && CloudMan.isSyncing()) { Common::Array files = CloudMan.getSyncingFiles(); if (!files.empty()) { @@ -279,7 +279,7 @@ void SaveLoadChooserDialog::reflowLayout() { } void SaveLoadChooserDialog::updateSaveList() { -#ifdef USE_CLOUD +#ifdef USE_LIBCURL Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing g_system->getSavefileManager()->updateSavefilesList(files); #endif @@ -290,7 +290,7 @@ void SaveLoadChooserDialog::listSaves() { if (!_metaEngine) return; //very strange _saveList = _metaEngine->listSaves(_target.c_str()); -#ifdef USE_CLOUD +#ifdef USE_LIBCURL //if there is Cloud support, add currently synced files as "locked" saves in the list if (_metaEngine->simpleSaveNames()) { Common::String pattern = _target + ".###"; -- cgit v1.2.3 From 438ba985a4a97a8695a6e6fdda6930694976c07b Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Thu, 21 Jul 2016 11:44:36 +0600 Subject: JANITORIAL: Remove spaces at the end of the line I knew there were some, but I wanted to fix them once, instead of doing it all the time. --- gui/saveload-dialog.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 222f637872..0a39f59cd6 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -57,7 +57,7 @@ SaveLoadCloudSyncProgressDialog::SaveLoadCloudSyncProgressDialog(bool canRunInBa _progressBar->setValue(progress); _progressBar->setEnabled(false); _percentLabel = new StaticTextWidget(this, "SaveLoadCloudSyncProgress.PercentText", Common::String::format("%u %%", progress)); - new ButtonWidget(this, "SaveLoadCloudSyncProgress.Cancel", "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog + new ButtonWidget(this, "SaveLoadCloudSyncProgress.Cancel", "Cancel", 0, kCancelSyncCmd, Common::ASCII_ESCAPE); // Cancel dialog ButtonWidget *backgroundButton = new ButtonWidget(this, "SaveLoadCloudSyncProgress.Background", "Run in background", 0, kBackgroundSyncCmd, Common::ASCII_RETURN); // Confirm dialog backgroundButton->setEnabled(canRunInBackground); draw(); @@ -69,7 +69,7 @@ SaveLoadCloudSyncProgressDialog::~SaveLoadCloudSyncProgressDialog() { void SaveLoadCloudSyncProgressDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) { switch(cmd) { - case kSavesSyncProgressCmd: + case kSavesSyncProgressCmd: _percentLabel->setLabel(Common::String::format("%u%%", data)); _progressBar->setValue(data); _progressBar->draw(); @@ -280,7 +280,7 @@ void SaveLoadChooserDialog::reflowLayout() { void SaveLoadChooserDialog::updateSaveList() { #ifdef USE_LIBCURL - Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing + Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing g_system->getSavefileManager()->updateSavefilesList(files); #endif listSaves(); @@ -300,7 +300,7 @@ void SaveLoadChooserDialog::listSaves() { //make up some slot number int slotNum = 0; - for (uint32 j = (files[i].size() > 3 ? files[i].size() - 3 : 0); j < files[i].size(); ++j) { //3 last chars + for (uint32 j = (files[i].size() > 3 ? files[i].size() - 3 : 0); j < files[i].size(); ++j) { //3 last chars char c = files[i][j]; if (c < '0' || c > '9') continue; slotNum = slotNum * 10 + (c - '0'); -- cgit v1.2.3 From 53aa0c46f1a5d6aefe3f2a087c60d9a59439aedf Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 22 Jul 2016 15:48:46 +0300 Subject: GUI: JANITORIAL: Fix code formatting --- gui/saveload-dialog.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 0a39f59cd6..0bed5f4d5b 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -111,9 +111,9 @@ SaveLoadChooserType getRequestedSaveLoadDialog(const MetaEngine &metaEngine) { g_gui.checkScreenChange(); if (g_gui.getWidth() >= 640 && g_gui.getHeight() >= 400 - && metaEngine.hasFeature(MetaEngine::kSavesSupportMetaInfo) - && metaEngine.hasFeature(MetaEngine::kSavesSupportThumbnail) - && userConfig.equalsIgnoreCase("grid")) { + && metaEngine.hasFeature(MetaEngine::kSavesSupportMetaInfo) + && metaEngine.hasFeature(MetaEngine::kSavesSupportThumbnail) + && userConfig.equalsIgnoreCase("grid")) { // In case we are 640x400 or higher, this dialog is not in save mode, // the user requested the grid dialog and the engines supports it we // try to set it up. @@ -232,7 +232,8 @@ void SaveLoadChooserDialog::runSaveSync(bool hasSavepathOverride) { ConnMan.showCloudDisabledIcon(); } else { Cloud::SavesSyncRequest *request = CloudMan.syncSaves(); - if (request) request->setTarget(this); + if (request) + request->setTarget(this); } } } @@ -296,13 +297,15 @@ void SaveLoadChooserDialog::listSaves() { Common::String pattern = _target + ".###"; Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing for (uint32 i = 0; i < files.size(); ++i) { - if (!files[i].matchString(pattern, true)) continue; + if (!files[i].matchString(pattern, true)) + continue; //make up some slot number int slotNum = 0; for (uint32 j = (files[i].size() > 3 ? files[i].size() - 3 : 0); j < files[i].size(); ++j) { //3 last chars char c = files[i][j]; - if (c < '0' || c > '9') continue; + if (c < '0' || c > '9') + continue; slotNum = slotNum * 10 + (c - '0'); } -- cgit v1.2.3 From b665fc933d7d1c9e32820e5a3f24d0e3456a0ff7 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Mon, 25 Jul 2016 14:32:04 +0600 Subject: ALL: Make simpleSaveNames() a MetaEngineFeature Added it into hasFeature() of all engines which returned `true` in simpleSaveNames() before. As mentioned in #788, SCI is not always using simple names, so it doesn't have such feature now. --- gui/saveload-dialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gui/saveload-dialog.cpp') diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp index 0bed5f4d5b..ae3612f778 100644 --- a/gui/saveload-dialog.cpp +++ b/gui/saveload-dialog.cpp @@ -245,7 +245,7 @@ void SaveLoadChooserDialog::handleTickle() { Common::Array files = CloudMan.getSyncingFiles(); if (!files.empty()) { { - SaveLoadCloudSyncProgressDialog dialog(_metaEngine ? _metaEngine->simpleSaveNames() : false); + SaveLoadCloudSyncProgressDialog dialog(_metaEngine ? _metaEngine->hasFeature(MetaEngine::kSimpleSavesNames) : false); CloudMan.setSyncTarget(&dialog); int result = dialog.runModal(); if (result == kCancelSyncCmd) { @@ -293,7 +293,7 @@ void SaveLoadChooserDialog::listSaves() { #ifdef USE_LIBCURL //if there is Cloud support, add currently synced files as "locked" saves in the list - if (_metaEngine->simpleSaveNames()) { + if (_metaEngine->hasFeature(MetaEngine::kSimpleSavesNames)) { Common::String pattern = _target + ".###"; Common::Array files = CloudMan.getSyncingFiles(); //returns empty array if not syncing for (uint32 i = 0; i < files.size(); ++i) { -- cgit v1.2.3