diff options
Diffstat (limited to 'src/mainmenuitemsprovider.cpp')
-rw-r--r-- | src/mainmenuitemsprovider.cpp | 32 |
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; +} |