summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/submenuprovider.cc72
-rw-r--r--src/submenuprovider.h19
2 files changed, 64 insertions, 27 deletions
diff --git a/src/submenuprovider.cc b/src/submenuprovider.cc
index 94861e0..382e956 100644
--- a/src/submenuprovider.cc
+++ b/src/submenuprovider.cc
@@ -8,6 +8,7 @@ SubMenuProvider::SubMenuProvider()
{
_OsdSet = false;
_inSubMenu = false;
+ _MenuIndex=0;
}
@@ -17,6 +18,14 @@ void SubMenuProvider::CreateTestMenus()
// Mainmenu
_myOsdItems[0].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("A custom sub menu1"), osUser1)));
_myOsdItems[0].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("A custom sub menu2"), osUser1)));
+ _myOsdItems[0].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Setup"), osSetup)));
+ if (Commands.Count())
+ _myOsdItems[0].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Commands"), osCommands)));
+
+ _MenuZuordnung[0][0] = 1;
+ _MenuZuordnung[0][1] = 2;
+ _MenuZuordnung[0][2] = 0;
+ _MenuZuordnung[0][3] = 0;
// Submenu 1
_myOsdItems[1].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Schedule"), osSchedule)));
@@ -25,15 +34,36 @@ void SubMenuProvider::CreateTestMenus()
_myOsdItems[1].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Timers"), osTimers)));
_myOsdItems[1].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Recordings"), osRecordings)));
+ _MenuZuordnung[1][0] = 1;
+ _MenuZuordnung[1][1] = 1;
+ _MenuZuordnung[1][2] = 1;
+ _MenuZuordnung[1][3] = 1;
+ _MenuZuordnung[1][4] = 1;
+
+ int MenuCount = 0;
// Submenu 2
- _myOsdItems[2].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Setup"), osSetup)));
- if (Commands.Count())
- _myOsdItems[2].push_back(MainMenuItem::CreateCustomMenuItem(new cOsdItem(tr("Commands"), osCommands)));
+ for (int i = 0; ; i++)
+ {
+ cPlugin *p = cPluginManager::GetPlugin(i);
+ if (p)
+ {
+ const char *item = p->MainMenuEntry();
+ if (item)
+ {
+ _myOsdItems[2].push_back(MainMenuItem::CreatePluginMenuItem(item, i));
+ _MenuZuordnung[2][MenuCount] = 2;
+ }
+ }
+ else
+ break;
+ }
}
MainMenuItemsList* SubMenuProvider::MainMenuItems()
{
+ isyslog("Call MainMenuItems - _MenuIndex=%d", _MenuIndex);
+
ResetMainMenuItemsList();
if (_OsdSet == false)
@@ -42,18 +72,14 @@ MainMenuItemsList* SubMenuProvider::MainMenuItems()
CreateTestMenus();
// set mainmenu
- _osdItems=_myOsdItems[0];
-
+ _osdItems=_myOsdItems[_MenuIndex];
+
_OsdSet=true;
}
else
{
- if (_inSubMenu)
- _osdItems=_myOsdItems[1];
- else
- _osdItems=_myOsdItems[0];
-
- //_osdItems=_myOsdItemNext;
+ _osdItems=_myOsdItems[_nextMenuIndex];
+ _MenuIndex=_nextMenuIndex;
}
return &_osdItems;
@@ -70,28 +96,28 @@ void SubMenuProvider::ResetMainMenuItemsList()
void SubMenuProvider::EnterSubMenu(cOsdItem* item)
{
- if (_inSubMenu == false)
- _inSubMenu = true;
+ isyslog("Call EnterSubMenu - _MenuIndex=%d", _MenuIndex);
+ unsigned int itemIndex;
-/*
- for(int i=0; i<=2; i++)
+ for(itemIndex=0; itemIndex < _osdItems.size(); itemIndex++)
{
-
- for( MainMenuItemsList::iterator oMenuItem = _myOsdItems[i].begin(); i != _myOsdItems[i].end(); i++)
+ MainMenuItem* menuItem = _osdItems.at(itemIndex);
+ if (menuItem->IsCustomMenuItem() && (menuItem->CustomMenuItem() == item))
{
- if (oMenuItem==item)
- isyslog("Item found\n");
+ break;
}
- // Suche nach dem nächsten Submenu und speichere es dann in _myOsdItemNext
}
-*/
+
+ _nextMenuIndex = _MenuZuordnung[_MenuIndex][itemIndex];
}
bool SubMenuProvider::LeaveSubMenu()
{
- if (_inSubMenu)
+ isyslog("Call LeaveSubMenu - _MenuIndex=%d", _MenuIndex);
+
+ if (_MenuIndex != 0)
{
- _inSubMenu = false;
+ _MenuIndex = 0;
return true;
}
else
diff --git a/src/submenuprovider.h b/src/submenuprovider.h
index 2fefe17..916729a 100644
--- a/src/submenuprovider.h
+++ b/src/submenuprovider.h
@@ -5,14 +5,25 @@
using namespace SubMenuPatch;
+/*
+struct sSubMenu
+{
+ int MainMenuIndex;
+ int NextMenuIndex;
+};
+*/
+
class SubMenuProvider: public ISubMenuProvider
{
private:
- MainMenuItemsList _osdItems;
- MainMenuItemsList _myOsdItems[5];
- MainMenuItemsList _myOsdItemNext;
- bool _OsdSet;
+ MainMenuItemsList _osdItems; // Enthält das aktuelle MenüItem (kann weg)
+ MainMenuItemsList _myOsdItems[5]; // Enthält alle verfügbaren Menüs
+ bool _OsdSet; // Zum entscheiden, ob in MainMenuItems() die Testmenus erstellt werden müssen
+ // Später evtl. an diesem Punkt die XML Datei laden
bool _inSubMenu;
+ int _MenuIndex; // Der Index des aktuellen Menüs
+ int _nextMenuIndex; // Enthält den Index des nächsten Menüs
+ int _MenuZuordnung[5][20]; // Speichert die Zuodnung
public:
SubMenuProvider();