Re-added 'lastrom' functionality, where the last ROM successfully loaded

is remembered from a previous run, and autoselected the next time Stella
starts.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1453 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2008-03-30 15:47:10 +00:00
parent c90e67d398
commit 5a50164c9c
2 changed files with 34 additions and 3 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Settings.cxx,v 1.140 2008-03-30 15:01:38 stephena Exp $
// $Id: Settings.cxx,v 1.141 2008-03-30 15:47:10 stephena Exp $
//============================================================================
#include <cassert>
@ -88,6 +88,7 @@ Settings::Settings(OSystem* osystem)
setInternal("launcherres", "640x480");
setInternal("launcherfont", "small");
setInternal("romviewer", "false");
setInternal("lastrom", "");
// UI-related options
setInternal("debuggerres", "1030x690");

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: LauncherDialog.cxx,v 1.85 2008-03-23 16:22:46 stephena Exp $
// $Id: LauncherDialog.cxx,v 1.86 2008-03-30 15:47:10 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -243,7 +243,31 @@ void LauncherDialog::updateListing(bool fullReload)
buf << (myGameList->size() - 1) << " items found";
myRomCount->setLabel(buf.str());
myList->setSelected(myList->getList().isEmpty() ? -1 : 0);
// Restore last selection
int selected = -1;
if(!myList->getList().isEmpty())
{
string lastrom = instance()->settings().getString("lastrom");
if(lastrom == "")
selected = 0;
else
{
unsigned int itemToSelect = 0;
StringList::const_iterator iter;
for(iter = myList->getList().begin(); iter != myList->getList().end();
++iter, ++itemToSelect)
{
if(lastrom == *iter)
{
selected = itemToSelect;
break;
}
}
if(itemToSelect > myList->getList().size())
selected = 0;
}
}
myList->setSelected(selected);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -330,6 +354,12 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
{
instance()->frameBuffer().showMessage("Not a valid ROM file", kMiddleCenter);
}
else
{
#if !defined(GP2X) // Quick GP2X hack to spare flash-card saves
instance()->settings().setString("lastrom", myList->getSelectedString());
#endif
}
}
break;
}