summaryrefslogtreecommitdiff
path: root/src/submenuprovider.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/submenuprovider.cc')
-rw-r--r--src/submenuprovider.cc80
1 files changed, 48 insertions, 32 deletions
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;
}