diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/submenu.cc | 3 | ||||
-rw-r--r-- | src/submenu.h | 10 | ||||
-rw-r--r-- | src/submenuprovider.cc | 80 | ||||
-rw-r--r-- | src/submenuprovider.h | 5 |
4 files changed, 52 insertions, 46 deletions
diff --git a/src/submenu.cc b/src/submenu.cc deleted file mode 100644 index d9c3ab7..0000000 --- a/src/submenu.cc +++ /dev/null @@ -1,3 +0,0 @@ -eOSState SubMenu::ProcessKey(eKeys Key) -{ -} diff --git a/src/submenu.h b/src/submenu.h deleted file mode 100644 index b26c47f..0000000 --- a/src/submenu.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef ___SUBMENU_H -#define ___SUBMENU_H - -class SubMenu : public cOsdMenu -{ - public: - virtual eOSState ProcessKey(eKeys Key); -}; - -#endif diff --git a/src/submenuprovider.cc b/src/submenuprovider.cc index ccbb3fc..0b5abde 100644 --- a/src/submenuprovider.cc +++ b/src/submenuprovider.cc @@ -1,32 +1,42 @@ #include "submenuprovider.h" #include <vdr/plugin.h> +SubMenuProvider::SubMenuProvider() +{ + _inSubMenu = false; +} + MainMenuItemsList* SubMenuProvider::MainMenuItems() { ResetMainMenuItemsList(); - - _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem("A custom sub menu", osUser1))); -// _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Schedule"), osSchedule))); -// _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Channels"), osChannels))); -// _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Timers"), osTimers))); -// _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Recordings"), osRecordings))); - - for (int i = 0; ; i++) { - cPlugin *p = cPluginManager::GetPlugin(i); - if (p) { - const char *item = p->MainMenuEntry(); - if (item) - _osdItems.push_back(MainMenuItem::CreatePluginMenuItem(item, i)); - } - else - break; - } - - _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Setup"), osSetup))); - - if (Commands.Count()) - _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Commands"), osCommands))); + if (_inSubMenu) + { + _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Schedule"), osSchedule))); + _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Channels"), osChannels))); + _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Timers"), osTimers))); + _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Recordings"), osRecordings))); + } + else + { + _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem("A custom sub menu", osUser1))); + _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem("Another custom sub menu", osContinue))); + for (int i = 0; ; i++) { + cPlugin *p = cPluginManager::GetPlugin(i); + if (p) { + const char *item = p->MainMenuEntry(); + if (item) + _osdItems.push_back(MainMenuItem::CreatePluginMenuItem(item, i)); + } + else + break; + } + + _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Setup"), osSetup))); + + if (Commands.Count()) + _osdItems.push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Commands"), osCommands))); + } return &_osdItems; } @@ -40,17 +50,23 @@ void SubMenuProvider::ResetMainMenuItemsList() _osdItems.clear(); } -cOsdMenu* SubMenuProvider::OpenSubMenu(int mainMenuItemIndex) +void SubMenuProvider::EnterSubMenu(int mainMenuItemIndex) { - if (mainMenuItemIndex == 0) + if ((mainMenuItemIndex == 0) && !_inSubMenu) { - cOsdMenu* fooMenu = new cOsdMenu("Foo-Submenu"); - fooMenu->Add(new cOsdItem(tr("Schedule"), osSchedule)); - fooMenu->Add(new cOsdItem(tr("Channels"), osChannels)); - fooMenu->Add(new cOsdItem(tr("Timers"), osTimers)); - fooMenu->Add(new cOsdItem(tr("Recordings"), osRecordings)); - return fooMenu; + _inSubMenu = true; + } +} + +bool SubMenuProvider::LeaveSubMenu() +{ + if (_inSubMenu) + { + _inSubMenu = false; + return true; + } + else + { + return false; } - - return NULL; } diff --git a/src/submenuprovider.h b/src/submenuprovider.h index f15daf6..d4d73eb 100644 --- a/src/submenuprovider.h +++ b/src/submenuprovider.h @@ -9,10 +9,13 @@ class SubMenuProvider: public ISubMenuProvider { private: MainMenuItemsList _osdItems; + bool _inSubMenu; public: + SubMenuProvider(); virtual MainMenuItemsList* MainMenuItems(); - virtual cOsdMenu* OpenSubMenu(int mainMenuItemIndex); + virtual void EnterSubMenu(int mainMenuItemIndex); + virtual bool LeaveSubMenu(); private: void ResetMainMenuItemsList(); |