diff options
author | Alexander Tkachev | 2016-06-08 18:56:17 +0600 |
---|---|---|
committer | Alexander Tkachev | 2016-08-24 16:07:55 +0600 |
commit | 90ae7b7337ece337cfd6ed2eabcef4f42a3abe7a (patch) | |
tree | 23ecbb062fa3017ff9ff91692a900c2e88896616 /gui/storagebrowser.cpp | |
parent | 870e96eb9ca6e69bea5f47a215d171fd58ab1265 (diff) | |
download | scummvm-rg350-90ae7b7337ece337cfd6ed2eabcef4f42a3abe7a.tar.gz scummvm-rg350-90ae7b7337ece337cfd6ed2eabcef4f42a3abe7a.tar.bz2 scummvm-rg350-90ae7b7337ece337cfd6ed2eabcef4f42a3abe7a.zip |
GUI: Add Options dialog Cloud tab
With StorageBrowser to select a Storage. It actually uses CloudMan to
switch active Storage.
Diffstat (limited to 'gui/storagebrowser.cpp')
-rw-r--r-- | gui/storagebrowser.cpp | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/gui/storagebrowser.cpp b/gui/storagebrowser.cpp new file mode 100644 index 0000000000..30a0e9e23d --- /dev/null +++ b/gui/storagebrowser.cpp @@ -0,0 +1,96 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "gui/storagebrowser.h" +#include "gui/widgets/list.h" +#include "gui/widget.h" +#include "gui/gui-manager.h" + +#include "common/translation.h" +#ifdef USE_CLOUD +#include "backends/cloud/cloudmanager.h" +#endif + +namespace GUI { + +enum { + kChooseCmd = 'Chos' +}; + +StorageBrowser::StorageBrowser() : Dialog("Browser") { + new StaticTextWidget(this, "Browser.Headline", _("Select a Storage")); + + // Add storages list + _storagesList = new ListWidget(this, "Browser.List"); + _storagesList->setNumberingMode(kListNumberingOff); + _storagesList->setEditable(false); + + _backgroundType = GUI::ThemeEngine::kDialogBackgroundPlain; + + // Buttons + new ButtonWidget(this, "Browser.Cancel", _("Cancel"), 0, kCloseCmd); + new ButtonWidget(this, "Browser.Choose", _("Choose"), 0, kChooseCmd); +} + +void StorageBrowser::open() { + // Always refresh storages list + updateListing(); + + // Call super implementation + Dialog::open(); +} + +void StorageBrowser::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) { + switch (cmd) { + case kChooseCmd: + case kListItemActivatedCmd: + case kListItemDoubleClickedCmd: { + int selection = _storagesList->getSelected(); + if (selection < 0) + break; + _selectionIndex = selection; + setResult(1); + close(); + break; + } + default: + Dialog::handleCommand(sender, cmd, data); + } +} + +void StorageBrowser::updateListing() { + Common::StringArray list; + uint32 currentStorageIndex = 0; +#ifdef USE_CLOUD + list = CloudMan.listStorages(); + currentStorageIndex = CloudMan.getStorageIndex(); +#endif + + _storagesList->setList(list); + _storagesList->scrollTo(0); + _storagesList->setSelected(currentStorageIndex); + + // Finally, redraw + draw(); +} + +} // End of namespace GUI |