diff options
author | svntcreutz <svntcreutz@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-28 00:03:36 +0000 |
---|---|---|
committer | svntcreutz <svntcreutz@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-28 00:03:36 +0000 |
commit | 5add845c880a421d3f8c4624476c6941c2b5e551 (patch) | |
tree | 05f5ad947c184d7a60a5adde09a0c6f63fc517b1 /src/submenuprovider.cpp | |
parent | 9ea196bed5d4c395a8eda28320809abbfff4113a (diff) | |
download | vdr-plugin-menuorg-5add845c880a421d3f8c4624476c6941c2b5e551.tar.gz vdr-plugin-menuorg-5add845c880a421d3f8c4624476c6941c2b5e551.tar.bz2 |
rename *.cc to *.cpp and fix the sources.mk
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5662 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
Diffstat (limited to 'src/submenuprovider.cpp')
-rw-r--r-- | src/submenuprovider.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/submenuprovider.cpp b/src/submenuprovider.cpp new file mode 100644 index 0000000..872927c --- /dev/null +++ b/src/submenuprovider.cpp @@ -0,0 +1,86 @@ +#include "submenuprovider.h" +#include "submenuitem.h" +#include "vdrmenuitem.h" +#include "pluginmenuitem.h" +#include <vdr/plugin.h> + +SubMenuProvider::SubMenuProvider() +{ + //CreateTestMenus(); + _oXmlMenu.loadXmlMenu(); + _currentMenu = &_oXmlMenu._rootMenuNode; +} +/* +void SubMenuProvider::CreateTestMenus() +{ + MenuNode* subMenu1 =_rootMenuNode.AddChild(new SubMenuItem("Custom menu 1")); + subMenu1->AddChild(new VdrMenuItem(tr("Schedule"), osSchedule)); + subMenu1->AddChild(new VdrMenuItem(tr("Channels"), osChannels)); + MenuNode* subMenu1_1 = subMenu1->AddChild(new SubMenuItem("Custom menu 1.1")); + subMenu1_1->AddChild(new VdrMenuItem(tr("Timers"), osTimers)); + subMenu1_1->AddChild(new VdrMenuItem(tr("Recordings"), osRecordings)); + MenuNode* subMenu2 =_rootMenuNode.AddChild(new SubMenuItem("Custom menu 2")); + //plugins + int i=0; + while (cPlugin *p = cPluginManager::GetPlugin(i)) + { + if (const char *item = p->MainMenuEntry()) + { + subMenu2->AddChild(new PluginMenuItem(item, i)); + } + i++; + } + _rootMenuNode.AddChild(new VdrMenuItem(tr("Setup"), osSetup)); + if (Commands.Count()) + _rootMenuNode.AddChild(new VdrMenuItem(tr("Commands"), osCommands)); +} +*/ +MainMenuItemsList* SubMenuProvider::MainMenuItems() +{ + ResetMainMenuItemsList(); + + for (MenuNodeList::iterator i = _currentMenu->Childs().begin(); + i != _currentMenu->Childs().end(); i++) + { + _currentMainMenuItems.push_back((*i)->CreateMainMenuItem()); + } + + return &_currentMainMenuItems; +} + +void SubMenuProvider::ResetMainMenuItemsList() +{ + + for( MainMenuItemsList::iterator i = _currentMainMenuItems.begin(); + i != _currentMainMenuItems.end(); i++) + { + delete *i; + } + _currentMainMenuItems.clear(); +} + +void SubMenuProvider::EnterSubMenu(cOsdItem* item) +{ + for(unsigned int itemIndex=0; itemIndex < _currentMainMenuItems.size(); itemIndex++) + { + MainMenuItem* menuItem = _currentMainMenuItems.at(itemIndex); + if (menuItem->IsCustomMenuItem() && (menuItem->CustomMenuItem() == item)) + { + _currentMenu = _currentMenu->Childs().at(itemIndex); + break; + } + } +} + +bool SubMenuProvider::LeaveSubMenu() +{ + if (_currentMenu->Parent()) + { + _currentMenu = _currentMenu->Parent(); + return true; + } + else + { + return false; + } +} |