aboutsummaryrefslogtreecommitdiff
path: root/gui/saveload.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2012-07-01 16:07:48 +0200
committerJohannes Schickel2012-07-01 16:49:07 +0200
commitbd3d5fb8ffed3938c68a723d5c5bfbb6b56fb0ec (patch)
treeabd363915ff1f3c6ab48a119b19935a4a6726597 /gui/saveload.cpp
parent236db5ed87acf603898243734e2c5273c23568cb (diff)
downloadscummvm-rg350-bd3d5fb8ffed3938c68a723d5c5bfbb6b56fb0ec.tar.gz
scummvm-rg350-bd3d5fb8ffed3938c68a723d5c5bfbb6b56fb0ec.tar.bz2
scummvm-rg350-bd3d5fb8ffed3938c68a723d5c5bfbb6b56fb0ec.zip
GUI: Clean up save load chooser selection code.
Diffstat (limited to 'gui/saveload.cpp')
-rw-r--r--gui/saveload.cpp30
1 files changed, 14 insertions, 16 deletions
diff --git a/gui/saveload.cpp b/gui/saveload.cpp
index 7f3dd6d5d8..12e62122fe 100644
--- a/gui/saveload.cpp
+++ b/gui/saveload.cpp
@@ -40,18 +40,20 @@ SaveLoadChooser::~SaveLoadChooser() {
}
void SaveLoadChooser::selectChooser(const MetaEngine &engine) {
- delete _impl;
- _impl = 0;
+ const SaveLoadChooserType requestedType = getRequestedSaveLoadDialog(_saveMode, engine);
+ if (!_impl || _impl->getType() != requestedType) {
+ delete _impl;
+ _impl = 0;
- Common::String userConfig = ConfMan.get("gui_saveload_chooser", Common::ConfigManager::kApplicationDomain);
+ switch (requestedType) {
+ case kSaveLoadDialogGrid:
+ _impl = new LoadChooserThumbnailed(_title);
+ break;
- if (!_saveMode && g_gui.getWidth() >= 640 && g_gui.getHeight() >= 400
- && engine.hasFeature(MetaEngine::kSavesSupportMetaInfo)
- && engine.hasFeature(MetaEngine::kSavesSupportThumbnail)
- && userConfig.equalsIgnoreCase("grid")) {
- _impl = new LoadChooserThumbnailed(_title);
- } else {
- _impl = new SaveLoadChooserSimple(_title, _buttonLabel, _saveMode);
+ case kSaveLoadDialogList:
+ _impl = new SaveLoadChooserSimple(_title, _buttonLabel, _saveMode);
+ break;
+ }
}
}
@@ -90,12 +92,8 @@ int SaveLoadChooser::runModalWithPluginAndTarget(const EnginePlugin *plugin, con
do {
ret = _impl->run(target, &(**plugin));
- if (ret == kSwitchToList) {
- delete _impl;
- _impl = new SaveLoadChooserSimple(_title, _buttonLabel, _saveMode);
- } else if (ret == kSwitchToGrid) {
- delete _impl;
- _impl = new LoadChooserThumbnailed(_title);
+ if (ret == kSwitchSaveLoadDialog) {
+ selectChooser(**plugin);
}
} while (ret < -1);