summaryrefslogtreecommitdiff
path: root/src/mainmenuitemsprovider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainmenuitemsprovider.cpp')
-rw-r--r--src/mainmenuitemsprovider.cpp32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/mainmenuitemsprovider.cpp b/src/mainmenuitemsprovider.cpp
index 8cb5469..31a1744 100644
--- a/src/mainmenuitemsprovider.cpp
+++ b/src/mainmenuitemsprovider.cpp
@@ -68,14 +68,10 @@ void MainMenuItemsProvider::EnterRootMenu()
void MainMenuItemsProvider::EnterSubMenu(cOsdItem* item)
{
- for(unsigned int itemIndex=0; itemIndex < _currentMainMenuItems.size(); itemIndex++)
+ int itemIndex = IndexOfCustomOsdItem(item);
+ if (itemIndex >= 0)
{
- IMenuItemDefinition* menuItem = _currentMainMenuItems.at(itemIndex);
- if (menuItem->IsCustomOsdItem() && (menuItem->CustomOsdItem() == item))
- {
- _currentMenu = _currentMenu->Childs().at(itemIndex);
- break;
- }
+ _currentMenu = _currentMenu->Childs().at(itemIndex);
}
}
@@ -91,3 +87,25 @@ bool MainMenuItemsProvider::LeaveSubMenu()
return false;
}
}
+
+cOsdMenu* MainMenuItemsProvider::Execute(cOsdItem* item)
+{
+ int itemIndex = IndexOfCustomOsdItem(item);
+ if (itemIndex >= 0)
+ {
+ return _currentMenu->Childs().at(itemIndex)->Execute();
+ }
+}
+
+int MainMenuItemsProvider::IndexOfCustomOsdItem(cOsdItem* item)
+{
+ for(unsigned int itemIndex=0; itemIndex < _currentMainMenuItems.size(); itemIndex++)
+ {
+ IMenuItemDefinition* menuItem = _currentMainMenuItems.at(itemIndex);
+ if (menuItem->IsCustomOsdItem() && (menuItem->CustomOsdItem() == item))
+ {
+ return itemIndex;
+ }
+ }
+ return -1;
+}