diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-22 16:16:04 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-22 16:16:04 +0000 |
commit | 76dcc6f9bb7afda0a060efc28bf0b98db4914a4d (patch) | |
tree | 5147b57f94fadbc522a387b4d75f239cfa83a431 /src | |
parent | 1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f (diff) | |
download | vdr-plugin-menuorg-76dcc6f9bb7afda0a060efc28bf0b98db4914a4d.tar.gz vdr-plugin-menuorg-76dcc6f9bb7afda0a060efc28bf0b98db4914a4d.tar.bz2 |
using another strategy
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5629 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
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(); |