From bd3d5fb8ffed3938c68a723d5c5bfbb6b56fb0ec Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 1 Jul 2012 16:07:48 +0200 Subject: GUI: Clean up save load chooser selection code. --- gui/saveload.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'gui/saveload.cpp') 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); -- cgit v1.2.3