Sandboxing for remembering the last selected item when leaving and re-entering a menu.

This commit is contained in:
Don Honerbrink
2015-05-28 17:02:21 -05:00
parent 7bd25cb079
commit 298b424049
6 changed files with 35 additions and 0 deletions

View File

@@ -267,8 +267,15 @@ void ScrollingList::SetPoints(std::vector<ViewInfo *> *scrollPoints, std::vector
TweenPoints = tweenPoints;
}
int ScrollingList::GetSelectedIndex()
{
return SelectedSpriteListIndex;
}
void ScrollingList::SetSelectedIndex(int selectedIndex)
{
if(selectedIndex >= SpriteList.size()) return;
SelectedSpriteListIndex = selectedIndex;
for(unsigned int i = 0; SpriteList && ScrollPoints && i < SelectedSpriteListIndex; ++i)

View File

@@ -67,6 +67,7 @@ public:
void PageDown();
bool IsIdle();
void SetSelectedIndex(int selectedIndex);
int GetSelectedIndex();
ComponentItemBinding *GetSelectedCollectionItemSprite();
ComponentItemBinding *GetPendingCollectionItemSprite();
ComponentItemBinding *GetPendingSelectedCollectionItemSprite();

View File

@@ -291,6 +291,23 @@ void Page::RemoveSelectedItem()
}
void Page::SetSelectedIndex(int i)
{
if(!ActiveMenu) return;
ActiveMenu->SetSelectedIndex();
}
int Page::GetSelectedIndex()
{
if(!ActiveMenu) return -1;
return ActiveMenu->GetSelectedIndex();
}
void Page::SetMinShowTime(float value)
{
MinShowTime = value;

View File

@@ -62,6 +62,8 @@ public:
unsigned int GetMenuDepth();
Item *GetSelectedItem();
void RemoveSelectedItem();
void SetSelectedIndex(int i);
int GetSelectedIndex();
bool IsIdle();
bool IsMenuIdle();
bool IsHidden();

View File

@@ -283,6 +283,11 @@ void RetroFE::Run()
MenuParser mp;
mp.GetMenuItems(info);
CurrentPage->PushCollection(info);
if(LastSelectedItems.find(firstCollection) != LastSelectedItems.end())
{
CurrentPage->SetSelectedIndex(LastSelectedItems[firstCollection]);
}
}
else
{
@@ -307,6 +312,7 @@ void RetroFE::Run()
break;
case RETROFE_BACK_REQUEST:
LastSelectedItems[CurrentPage->GetCollectionName()] = CurrentPage->GetSelectedIndex();
CurrentPage->PopCollection();
Config.SetCurrentCollection(CurrentPage->GetCollectionName());

View File

@@ -26,6 +26,7 @@
#include <SDL2/SDL.h>
#include <list>
#include <vector>
#include <map>
class CollectionInfo;
class Configuration;
@@ -78,5 +79,6 @@ private:
Item *NextPageItem;
FontCache FC;
AttractMode Attract;
std::map<std::string, int> LastSelectedItems;
};