summaryrefslogtreecommitdiff
path: root/src/submenuprovider.cpp
diff options
context:
space:
mode:
authorsvntcreutz <svntcreutz@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-07-28 00:03:36 +0000
committersvntcreutz <svntcreutz@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-07-28 00:03:36 +0000
commit5add845c880a421d3f8c4624476c6941c2b5e551 (patch)
tree05f5ad947c184d7a60a5adde09a0c6f63fc517b1 /src/submenuprovider.cpp
parent9ea196bed5d4c395a8eda28320809abbfff4113a (diff)
downloadvdr-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.cpp86
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;
+ }
+}