mirror of
https://github.com/FunKey-Project/RetroFE.git
synced 2026-04-02 02:05:55 +02:00
Sandboxing for remembering the last selected item when leaving and re-entering a menu.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -67,6 +67,7 @@ public:
|
||||
void PageDown();
|
||||
bool IsIdle();
|
||||
void SetSelectedIndex(int selectedIndex);
|
||||
int GetSelectedIndex();
|
||||
ComponentItemBinding *GetSelectedCollectionItemSprite();
|
||||
ComponentItemBinding *GetPendingCollectionItemSprite();
|
||||
ComponentItemBinding *GetPendingSelectedCollectionItemSprite();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -62,6 +62,8 @@ public:
|
||||
unsigned int GetMenuDepth();
|
||||
Item *GetSelectedItem();
|
||||
void RemoveSelectedItem();
|
||||
void SetSelectedIndex(int i);
|
||||
int GetSelectedIndex();
|
||||
bool IsIdle();
|
||||
bool IsMenuIdle();
|
||||
bool IsHidden();
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user