diff options
author | Johannes Schickel | 2008-09-14 21:00:24 +0000 |
---|---|---|
committer | Johannes Schickel | 2008-09-14 21:00:24 +0000 |
commit | 92fc264461e1870725310cba38916afaece13022 (patch) | |
tree | 0b15336970ad872afb01a34917401d9528e93b33 /gui | |
parent | 6dd62f650cc161617ab4f48607c550a1644be8a1 (diff) | |
download | scummvm-rg350-92fc264461e1870725310cba38916afaece13022.tar.gz scummvm-rg350-92fc264461e1870725310cba38916afaece13022.tar.bz2 scummvm-rg350-92fc264461e1870725310cba38916afaece13022.zip |
- Added thumbnail support to launcher load dialog.
- Adopted KYRA to support displaying thumbnails in load dialog (SCUMM engine has yet to follow)
svn-id: r34539
Diffstat (limited to 'gui')
-rw-r--r-- | gui/launcher.cpp | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/gui/launcher.cpp b/gui/launcher.cpp index bb4a9dcb3c..3674da5a97 100644 --- a/gui/launcher.cpp +++ b/gui/launcher.cpp @@ -46,6 +46,7 @@ #include "gui/TabWidget.h" #include "gui/PopUpWidget.h" #include "graphics/cursorman.h" +#include "graphics/scaler.h" #include "sound/mididrv.h" @@ -539,6 +540,7 @@ int SaveLoadChooser::runModal(const EnginePlugin *plugin, const String &target) _plugin = plugin; _target = target; _delSupport = (*_plugin)->hasFeature(MetaEngine::kSupportsDeleteSave); + reflowLayout(); updateSaveList(); int ret = Dialog::runModal(); @@ -601,13 +603,48 @@ void SaveLoadChooser::handleCommand(CommandSender *sender, uint32 cmd, uint32 da } void SaveLoadChooser::reflowLayout() { - _container->setFlags(GUI::WIDGET_INVISIBLE); - _gfxWidget->setFlags(GUI::WIDGET_INVISIBLE); + if (g_gui.evaluator()->getVar("scummsaveload_extinfo.visible") == 1 && (_plugin && (*_plugin)->hasFeature(MetaEngine::kSupportsThumbnails))) { + int thumbX = g_gui.evaluator()->getVar("scummsaveload_thumbnail.x"); + int thumbY = g_gui.evaluator()->getVar("scummsaveload_thumbnail.y"); + int hPad = g_gui.evaluator()->getVar("scummsaveload_thumbnail.hPad"); + int vPad = g_gui.evaluator()->getVar("scummsaveload_thumbnail.vPad"); + int thumbH = ((g_system->getHeight() % 200 && g_system->getHeight() != 350) ? kThumbnailHeight2 : kThumbnailHeight1); + + _container->resize(thumbX - hPad, thumbY - vPad, kThumbnailWidth + hPad * 2, thumbH + vPad * 2/* + kLineHeight * 4*/); + + // Add the thumbnail display + _gfxWidget->resize(thumbX, thumbY, kThumbnailWidth, thumbH); + + _container->clearFlags(GUI::WIDGET_INVISIBLE); + _gfxWidget->clearFlags(GUI::WIDGET_INVISIBLE); + + _fillR = g_gui.evaluator()->getVar("scummsaveload_thumbnail.fillR"); + _fillG = g_gui.evaluator()->getVar("scummsaveload_thumbnail.fillG"); + _fillB = g_gui.evaluator()->getVar("scummsaveload_thumbnail.fillB"); + updateInfos(false); + } else { + _container->setFlags(GUI::WIDGET_INVISIBLE); + _gfxWidget->setFlags(GUI::WIDGET_INVISIBLE); + } + Dialog::reflowLayout(); } void SaveLoadChooser::updateInfos(bool redraw) { - _gfxWidget->setGfx(-1, -1, _fillR, _fillG, _fillB); + int selItem = _list->getSelected(); + Graphics::Surface *thumb = 0; + if (selItem >= 0 && !_list->getSelectedString().empty()) + thumb = (*_plugin)->loadThumbnailFromSlot(_target.c_str(), atoi(_saveList[selItem].save_slot().c_str())); + + if (thumb) { + _gfxWidget->setGfx(thumb); + _gfxWidget->useAlpha(256); + thumb->free(); + delete thumb; + } else { + _gfxWidget->setGfx(-1, -1, _fillR, _fillG, _fillB); + } + if (redraw) _gfxWidget->draw(); } |