summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-08-19 19:30:35 +0000
committersvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-08-19 19:30:35 +0000
commit5fe4cc430fa9c9030e9703e6d4ea3008cb4c3aab (patch)
tree88813457ebfeced0f0be783008d2c00db72d280c
parentaba6a8f23c898ee0184e987d8fbe9e53ffc12e4a (diff)
downloadvdr-plugin-menuorg-5fe4cc430fa9c9030e9703e6d4ea3008cb4c3aab.tar.gz
vdr-plugin-menuorg-5fe4cc430fa9c9030e9703e6d4ea3008cb4c3aab.tar.bz2
some renamings
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5828 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
-rw-r--r--src/custommainmenuitem.cpp6
-rw-r--r--src/custommainmenuitem.h10
-rw-r--r--src/mainmenuitemsprovider.cpp12
-rw-r--r--src/mainmenuitemsprovider.h8
-rw-r--r--src/menunode.cpp2
-rw-r--r--src/menunode.h4
-rw-r--r--src/menuorg.cpp5
-rw-r--r--src/pluginmainmenuitem.cpp6
-rw-r--r--src/pluginmainmenuitem.h10
-rw-r--r--src/pluginmenuitem.cpp4
-rw-r--r--src/pluginmenuitem.h2
-rw-r--r--src/systemmenuitem.cpp4
-rw-r--r--src/systemmenuitem.h2
-rwxr-xr-xvdr-patch/menuorg-0.1.diff203
14 files changed, 178 insertions, 100 deletions
diff --git a/src/custommainmenuitem.cpp b/src/custommainmenuitem.cpp
index 2afded8..fb93a49 100644
--- a/src/custommainmenuitem.cpp
+++ b/src/custommainmenuitem.cpp
@@ -27,17 +27,17 @@ CustomMainMenuItem::CustomMainMenuItem(cOsdItem* osdItem)
_osdItem = osdItem;
}
-bool CustomMainMenuItem::IsCustomMenuItem()
+bool CustomMainMenuItem::IsCustomOsdItem()
{
return true;
}
-bool CustomMainMenuItem::IsPluginMenuItem()
+bool CustomMainMenuItem::IsPluginItem()
{
return false;
}
-cOsdItem* CustomMainMenuItem::CustomMenuItem()
+cOsdItem* CustomMainMenuItem::CustomOsdItem()
{
return _osdItem;
}
diff --git a/src/custommainmenuitem.h b/src/custommainmenuitem.h
index 1d18c1e..7e6cd41 100644
--- a/src/custommainmenuitem.h
+++ b/src/custommainmenuitem.h
@@ -23,18 +23,18 @@
#ifndef ___CUSTOMMAINMENUITEM_H
#define ___CUSTOMMAINMENUITEM_H
-#include <vdr/menuorgpatch.h>
+#include <vdr/mainmenuitemsprovider.h>
-class CustomMainMenuItem: public MenuOrgPatch::IMainMenuItem
+class CustomMainMenuItem: public IMenuItemDefinition
{
private:
cOsdItem* _osdItem;
public:
CustomMainMenuItem(cOsdItem* osdItem);
- virtual bool IsCustomMenuItem();
- virtual bool IsPluginMenuItem();
- virtual cOsdItem* CustomMenuItem();
+ virtual bool IsCustomOsdItem();
+ virtual bool IsPluginItem();
+ virtual cOsdItem* CustomOsdItem();
virtual const char* PluginMenuEntry();
virtual int PluginIndex();
};
diff --git a/src/mainmenuitemsprovider.cpp b/src/mainmenuitemsprovider.cpp
index 4250fb3..fe14ddb 100644
--- a/src/mainmenuitemsprovider.cpp
+++ b/src/mainmenuitemsprovider.cpp
@@ -26,8 +26,6 @@
#include "pluginmenuitem.h"
#include <vdr/plugin.h>
-using namespace MenuOrgPatch;
-
MainMenuItemsProvider::MainMenuItemsProvider(MenuNode* rootMenu)
{
_currentMenu = _rootMenu = rootMenu;
@@ -39,14 +37,14 @@ MainMenuItemsProvider::~MainMenuItemsProvider()
delete _rootMenu;
}
-MainMenuItemsList* MainMenuItemsProvider::MainMenuItems()
+MenuItemDefinitions* MainMenuItemsProvider::MainMenuItems()
{
ResetMainMenuItemsList();
for (MenuNodeList::iterator i = _currentMenu->Childs().begin();
i != _currentMenu->Childs().end(); i++)
{
- _currentMainMenuItems.push_back((*i)->CreateMainMenuItem());
+ _currentMainMenuItems.push_back((*i)->CreateMenuItemDefinition());
}
return &_currentMainMenuItems;
@@ -55,7 +53,7 @@ MainMenuItemsList* MainMenuItemsProvider::MainMenuItems()
void MainMenuItemsProvider::ResetMainMenuItemsList()
{
- for( MainMenuItemsList::iterator i = _currentMainMenuItems.begin();
+ for( MenuItemDefinitions::iterator i = _currentMainMenuItems.begin();
i != _currentMainMenuItems.end(); i++)
{
delete *i;
@@ -72,8 +70,8 @@ void MainMenuItemsProvider::EnterSubMenu(cOsdItem* item)
{
for(unsigned int itemIndex=0; itemIndex < _currentMainMenuItems.size(); itemIndex++)
{
- IMainMenuItem* menuItem = _currentMainMenuItems.at(itemIndex);
- if (menuItem->IsCustomMenuItem() && (menuItem->CustomMenuItem() == item))
+ IMenuItemDefinition* menuItem = _currentMainMenuItems.at(itemIndex);
+ if (menuItem->IsCustomOsdItem() && (menuItem->CustomOsdItem() == item))
{
_currentMenu = _currentMenu->Childs().at(itemIndex);
break;
diff --git a/src/mainmenuitemsprovider.h b/src/mainmenuitemsprovider.h
index e6e1837..0c6b254 100644
--- a/src/mainmenuitemsprovider.h
+++ b/src/mainmenuitemsprovider.h
@@ -23,21 +23,21 @@
#ifndef ___MAINMENUITEMSPROVIDER_H
#define ___MAINMENUITEMSPROVIDER_H
-#include <vdr/menuorgpatch.h>
+#include <vdr/mainmenuitemsprovider.h>
class MenuNode;
-class MainMenuItemsProvider: public MenuOrgPatch::IMainMenuItemsProvider
+class MainMenuItemsProvider: public IMainMenuItemsProvider
{
private:
MenuNode* _rootMenu;
MenuNode* _currentMenu;
- MenuOrgPatch::MainMenuItemsList _currentMainMenuItems;
+ MenuItemDefinitions _currentMainMenuItems;
public:
MainMenuItemsProvider(MenuNode* rootMenu);
~MainMenuItemsProvider();
- virtual MenuOrgPatch::MainMenuItemsList* MainMenuItems();
+ virtual MenuItemDefinitions* MainMenuItems();
virtual void EnterRootMenu();
virtual void EnterSubMenu(cOsdItem* item);
virtual bool LeaveSubMenu();
diff --git a/src/menunode.cpp b/src/menunode.cpp
index e813c1c..0552484 100644
--- a/src/menunode.cpp
+++ b/src/menunode.cpp
@@ -58,7 +58,7 @@ void MenuNode::SetParent(MenuNode* parent)
_parent = parent;
}
-MenuOrgPatch::IMainMenuItem* MenuNode::CreateMainMenuItem()
+IMenuItemDefinition* MenuNode::CreateMenuItemDefinition()
{
return NULL;
}
diff --git a/src/menunode.h b/src/menunode.h
index d8e9eef..59c2e33 100644
--- a/src/menunode.h
+++ b/src/menunode.h
@@ -25,7 +25,7 @@
#include <vector>
-namespace MenuOrgPatch { class IMainMenuItem; }
+class IMenuItemDefinition;
class MenuNode;
typedef std::vector<MenuNode*> MenuNodeList;
@@ -45,7 +45,7 @@ class MenuNode
MenuNode* Parent();
MenuNodeList& Childs();
MenuNode* AddChild(MenuNode* child);
- virtual MenuOrgPatch::IMainMenuItem* CreateMainMenuItem();
+ virtual IMenuItemDefinition* CreateMenuItemDefinition();
};
#endif
diff --git a/src/menuorg.cpp b/src/menuorg.cpp
index 257aeb0..0805bcd 100644
--- a/src/menuorg.cpp
+++ b/src/menuorg.cpp
@@ -23,7 +23,7 @@
#include <vdr/plugin.h>
#include <vdr/config.h>
#include <vdr/tools.h>
-#include <vdr/menuorgpatch.h>
+#include <vdr/mainmenuitemsprovider.h>
#include <vector>
#include <iostream>
#include <string>
@@ -35,7 +35,6 @@
#include "i18n.h"
using namespace std;
-using namespace MenuOrgPatch;
MenuOrgPlugin::MenuOrgPlugin(void)
{
@@ -142,7 +141,7 @@ bool MenuOrgPlugin::SetupParse(const char *Name, const char *Value)
bool MenuOrgPlugin::Service(const char *Id, void *Data)
{
- if (strcmp(Id, "MenuOrgPatch-v0.1::MainMenuItemsProvider") == 0)
+ if (strcmp(Id, MENU_ITEMS_PROVIDER_SERVICE_ID) == 0)
{
if (_subMenuProvider)
{
diff --git a/src/pluginmainmenuitem.cpp b/src/pluginmainmenuitem.cpp
index 6a47418..8101aa1 100644
--- a/src/pluginmainmenuitem.cpp
+++ b/src/pluginmainmenuitem.cpp
@@ -28,17 +28,17 @@ PluginMainMenuItem::PluginMainMenuItem(const char* mainMenuEntry, int pluginInde
_pluginIndex = pluginIndex;
}
-bool PluginMainMenuItem::IsCustomMenuItem()
+bool PluginMainMenuItem::IsCustomOsdItem()
{
return false;
}
-bool PluginMainMenuItem::IsPluginMenuItem()
+bool PluginMainMenuItem::IsPluginItem()
{
return true;
}
-cOsdItem* PluginMainMenuItem::CustomMenuItem()
+cOsdItem* PluginMainMenuItem::CustomOsdItem()
{
return NULL;
}
diff --git a/src/pluginmainmenuitem.h b/src/pluginmainmenuitem.h
index 287ba0c..df1427f 100644
--- a/src/pluginmainmenuitem.h
+++ b/src/pluginmainmenuitem.h
@@ -23,9 +23,9 @@
#ifndef ___PLUGINMAINMENUITEM_H
#define ___PLUGINMAINMENUITEM_H
-#include <vdr/menuorgpatch.h>
+#include <vdr/mainmenuitemsprovider.h>
-class PluginMainMenuItem: public MenuOrgPatch::IMainMenuItem
+class PluginMainMenuItem: public IMenuItemDefinition
{
private:
const char* _mainMenuEntry;
@@ -33,9 +33,9 @@ class PluginMainMenuItem: public MenuOrgPatch::IMainMenuItem
public:
PluginMainMenuItem(const char* mainMenuEntry, int pluginIndex);
- virtual bool IsCustomMenuItem();
- virtual bool IsPluginMenuItem();
- virtual cOsdItem* CustomMenuItem();
+ virtual bool IsCustomOsdItem();
+ virtual bool IsPluginItem();
+ virtual cOsdItem* CustomOsdItem();
virtual const char* PluginMenuEntry();
virtual int PluginIndex();
};
diff --git a/src/pluginmenuitem.cpp b/src/pluginmenuitem.cpp
index 36bbfa6..1149c38 100644
--- a/src/pluginmenuitem.cpp
+++ b/src/pluginmenuitem.cpp
@@ -21,7 +21,7 @@
*/
#include "pluginmenuitem.h"
-#include <vdr/menuorgpatch.h>
+#include <vdr/mainmenuitemsprovider.h>
#include "pluginmainmenuitem.h"
PluginMenuItem::PluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex)
@@ -30,7 +30,7 @@ PluginMenuItem::PluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex)
_pluginIndex = pluginIndex;
}
-MenuOrgPatch::IMainMenuItem* PluginMenuItem::CreateMainMenuItem()
+IMenuItemDefinition* PluginMenuItem::CreateMenuItemDefinition()
{
return new PluginMainMenuItem(_pluginMainMenuEntry, _pluginIndex);
}
diff --git a/src/pluginmenuitem.h b/src/pluginmenuitem.h
index 87f38d4..05bb298 100644
--- a/src/pluginmenuitem.h
+++ b/src/pluginmenuitem.h
@@ -33,7 +33,7 @@ class PluginMenuItem: public MenuNode
public:
PluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex);
- MenuOrgPatch::IMainMenuItem* CreateMainMenuItem();
+ IMenuItemDefinition* CreateMenuItemDefinition();
};
#endif
diff --git a/src/systemmenuitem.cpp b/src/systemmenuitem.cpp
index b62beef..30257ee 100644
--- a/src/systemmenuitem.cpp
+++ b/src/systemmenuitem.cpp
@@ -21,7 +21,7 @@
*/
#include "systemmenuitem.h"
-#include <vdr/menuorgpatch.h>
+#include <vdr/mainmenuitemsprovider.h>
#include "custommainmenuitem.h"
SystemMenuItem::SystemMenuItem(std::string itemText, eOSState itemState)
@@ -30,7 +30,7 @@ SystemMenuItem::SystemMenuItem(std::string itemText, eOSState itemState)
_itemState = itemState;
}
-MenuOrgPatch::IMainMenuItem* SystemMenuItem::CreateMainMenuItem()
+IMenuItemDefinition* SystemMenuItem::CreateMenuItemDefinition()
{
if(_itemState != osUser1)
return new CustomMainMenuItem(new cOsdItem(tr(_itemText.c_str()), _itemState));
diff --git a/src/systemmenuitem.h b/src/systemmenuitem.h
index 19ded04..4c7c1f7 100644
--- a/src/systemmenuitem.h
+++ b/src/systemmenuitem.h
@@ -35,7 +35,7 @@ class SystemMenuItem: public MenuNode
public:
SystemMenuItem(std::string itemText, eOSState itemState);
- MenuOrgPatch::IMainMenuItem* CreateMainMenuItem();
+ IMenuItemDefinition* CreateMenuItemDefinition();
};
#endif
diff --git a/vdr-patch/menuorg-0.1.diff b/vdr-patch/menuorg-0.1.diff
index 3c1fcb1..406d860 100755
--- a/vdr-patch/menuorg-0.1.diff
+++ b/vdr-patch/menuorg-0.1.diff
@@ -1,48 +1,99 @@
-diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
---- vdr-1.4.7~/menu.c 2007-08-11 20:48:29.000000000 +0200
-+++ vdr-1.4.7/menu.c 2007-08-11 20:48:29.000000000 +0200
-@@ -31,6 +31,7 @@
- #include "vdrttxtsubshooks.h"
- #include "dvbsub.h"
+diff -Nur vdr-1.4.7/mainmenuitemsprovider.h vdr-1.4.7.patched/mainmenuitemsprovider.h
+--- vdr-1.4.7/mainmenuitemsprovider.h 1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.7.patched/mainmenuitemsprovider.h 2007-08-19 21:28:32.000000000 +0200
+@@ -0,0 +1,55 @@
++/*
++ * vdr-menuorg - A plugin for the Linux Video Disk Recorder
++ * Copyright (C) 2007 Thomas Creutz, Tobias Grimm
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * $Id:$
++ *
++ */
++
++#ifndef __MAINMENUITEMSPROVIDER_H
++#define __MAINMENUITEMSPROVIDER_H
++
++#include <vector>
++
++class cOsdItem;
++
++class IMenuItemDefinition
++{
++ public:
++ virtual ~IMenuItemDefinition() {};
++ virtual bool IsCustomOsdItem() = 0;
++ virtual bool IsPluginItem() = 0;
++ virtual cOsdItem* CustomOsdItem() = 0;
++ virtual const char* PluginMenuEntry() = 0;
++ virtual int PluginIndex() = 0;
++};
++
++typedef std::vector<IMenuItemDefinition*> MenuItemDefinitions;
++
++#define MENU_ITEMS_PROVIDER_SERVICE_ID "MenuOrgPatch-v0.1::MainMenuItemsProvider"
++
++class IMainMenuItemsProvider
++{
++ public:
++ virtual ~IMainMenuItemsProvider() {};
++ virtual MenuItemDefinitions* MainMenuItems() = 0;
++ virtual void EnterRootMenu() = 0;
++ virtual void EnterSubMenu(cOsdItem* item) = 0;
++ virtual bool LeaveSubMenu() = 0;
++};
++
++#endif //__MAINMENUITEMSPROVIDER_H
+diff -Nur vdr-1.4.7/menu.c vdr-1.4.7.patched/menu.c
+--- vdr-1.4.7/menu.c 2006-12-02 12:12:02.000000000 +0100
++++ vdr-1.4.7.patched/menu.c 2007-08-19 21:28:32.000000000 +0200
+@@ -28,6 +28,7 @@
+ #include "timers.h"
+ #include "transfer.h"
#include "videodir.h"
+#include "menuorgpatch.h"
#define MAXWAIT4EPGINFO 3 // seconds
#define MODETIMEOUT 3 // seconds
-@@ -3057,6 +3058,13 @@
+@@ -2788,6 +2789,9 @@
cancelEditingItem = NULL;
stopRecordingItem = NULL;
recordControlsState = 0;
+
-+ MenuOrgPatch::IMainMenuItemsProvider* mainMenuItemsProvider;
-+
-+ if (cPluginManager::CallFirstService("MenuOrgPatch-v0.1::MainMenuitemsProvider", &mainMenuItemsProvider)) {
-+ mainMenuItemsProvider->EnterRootMenu();
-+ }
++ MenuOrgPatch::EnterRootMenu();
+
Set();
// Initial submenus:
-@@ -3084,6 +3092,29 @@
+@@ -2815,6 +2819,25 @@
Clear();
SetTitle("VDR");
SetHasHotkeys();
+
-+ MenuOrgPatch::IMainMenuItemsProvider* mainMenuItemsProvider;
-+
-+ if (cPluginManager::CallFirstService("MenuOrgPatch-v0.1::MainMenuItemsProvider", &mainMenuItemsProvider)) {
-+ MenuOrgPatch::MainMenuItemsList* menuItems = mainMenuItemsProvider->MainMenuItems();
-+ MenuOrgPatch::MainMenuItemsList::iterator i;
-+
-+ for (i = menuItems->begin(); i != menuItems->end(); i++) {
-+ if ((*i)->IsCustomMenuItem()) {
-+ cOsdItem* osdItem = (*i)->CustomMenuItem();
++ if (MenuOrgPatch::IsCustomMenuAvailable()) {
++ MenuItemDefinitions* menuItems = MenuOrgPatch::MainMenuItems();
++ for (MenuItemDefinitions::iterator i = menuItems->begin(); i != menuItems->end(); i++) {
++ if ((*i)->IsCustomOsdItem()) {
++ cOsdItem* osdItem = (*i)->CustomOsdItem();
+ if (osdItem) {
+ osdItem->SetText(hk(osdItem->Text()));
+ Add(osdItem);
+ }
+ }
-+ else if ((*i)->IsPluginMenuItem()) {
++ else if ((*i)->IsPluginItem()) {
+ const char *item = (*i)->PluginMenuEntry();
+ if (item)
+ Add(new cMenuPluginItem(hk(item), (*i)->PluginIndex()));
@@ -53,7 +104,7 @@ diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
// Basic menu items:
-@@ -3111,6 +3142,8 @@
+@@ -2842,6 +2865,8 @@
if (Commands.Count())
Add(new cOsdItem(hk(tr("Commands")), osCommands));
@@ -62,15 +113,14 @@ diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
Update(true);
Display();
-@@ -3238,6 +3271,35 @@
+@@ -2966,6 +2991,32 @@
state = osEnd;
}
break;
+ case osBack: {
-+ MenuOrgPatch::IMainMenuItemsProvider* mainMenuItemsProvider;
-+
-+ if (cPluginManager::CallFirstService("MenuOrgPatch-v0.1::MainMenuItemsProvider", &mainMenuItemsProvider)) {
-+ bool leavingMenuSucceeded = mainMenuItemsProvider->LeaveSubMenu();
++ if (MenuOrgPatch::IsCustomMenuAvailable())
++ {
++ bool leavingMenuSucceeded = MenuOrgPatch::LeaveSubMenu();
+ Set();
+ stopReplayItem = NULL;
+ cancelEditingItem = NULL;
@@ -86,10 +136,8 @@ diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
+ }
+ break;
+ case osUser1: {
-+ MenuOrgPatch::IMainMenuItemsProvider* mainMenuItemsProvider;
-+
-+ if (cPluginManager::CallFirstService("MenuOrgPatch-v0.1::MainMenuItemsProvider", &mainMenuItemsProvider)) {
-+ mainMenuItemsProvider->EnterSubMenu(Get(Current()));
++ if (MenuOrgPatch::IsCustomMenuAvailable()) {
++ MenuOrgPatch::EnterSubMenu(Get(Current()));
+ Set();
+ return osContinue;
+ }
@@ -98,10 +146,10 @@ diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
default: switch (Key) {
case kRecord:
case kRed: if (!HadSubMenu)
-diff -urNad vdr-1.4.7~/menuorgpatch.h vdr-1.4.7/menuorgpatch.h
---- vdr-1.4.7~/menuorgpatch.h 1970-01-01 01:00:00.000000000 +0100
-+++ vdr-1.4.7/menuorgpatch.h 2007-08-11 20:48:58.000000000 +0200
-@@ -0,0 +1,58 @@
+diff -Nur vdr-1.4.7/menuorgpatch.h vdr-1.4.7.patched/menuorgpatch.h
+--- vdr-1.4.7/menuorgpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.7.patched/menuorgpatch.h 2007-08-19 21:28:32.000000000 +0200
+@@ -0,0 +1,91 @@
+/*
+ * vdr-menuorg - A plugin for the Linux Video Disk Recorder
+ * Copyright (C) 2007 Thomas Creutz, Tobias Grimm
@@ -127,36 +175,69 @@ diff -urNad vdr-1.4.7~/menuorgpatch.h vdr-1.4.7/menuorgpatch.h
+#ifndef __MENUORGPATCH_H
+#define __MENUORGPATCH_H
+
-+#include <vector>
-+
-+class cOsdItem;
++#include "mainmenuitemsprovider.h"
+
-+namespace MenuOrgPatch
++class MenuOrgPatch
+{
++ private:
++ static IMainMenuItemsProvider* _mainMenuItemsProvider;
++
++ private:
++ static IMainMenuItemsProvider* MainMenuItemsProvider()
++ {
++ if (!_mainMenuItemsProvider)
++ {
++ IMainMenuItemsProvider* mainMenuItemsProvider;
++
++ if (cPluginManager::CallFirstService(MENU_ITEMS_PROVIDER_SERVICE_ID, &mainMenuItemsProvider))
++ {
++ _mainMenuItemsProvider = mainMenuItemsProvider;
++ }
++ }
++ return _mainMenuItemsProvider;
++ }
+
-+class IMainMenuItem
-+{
+ public:
-+ virtual ~IMainMenuItem() {};
-+ virtual bool IsCustomMenuItem() = 0;
-+ virtual bool IsPluginMenuItem() = 0;
-+ virtual cOsdItem* CustomMenuItem() = 0;
-+ virtual const char* PluginMenuEntry() = 0;
-+ virtual int PluginIndex() = 0;
-+};
-+
-+typedef std::vector<IMainMenuItem*> MainMenuItemsList;
++ static bool IsCustomMenuAvailable()
++ {
++ return (MainMenuItemsProvider() != NULL);
++ }
++
++ static void EnterRootMenu()
++ {
++ if (MainMenuItemsProvider())
++ {
++ MainMenuItemsProvider()->EnterRootMenu();
++ }
++ }
+
-+class IMainMenuItemsProvider
-+{
-+ public:
-+ virtual ~IMainMenuItemsProvider() {};
-+ virtual MainMenuItemsList* MainMenuItems() = 0;
-+ virtual void EnterRootMenu() = 0;
-+ virtual void EnterSubMenu(cOsdItem* item) = 0;
-+ virtual bool LeaveSubMenu() = 0;
++ static bool LeaveSubMenu()
++ {
++ if (MainMenuItemsProvider())
++ {
++ return MainMenuItemsProvider()->LeaveSubMenu();
++ }
++ return false;
++ }
++
++ static void EnterSubMenu(cOsdItem* item)
++ {
++ if (MainMenuItemsProvider())
++ {
++ MainMenuItemsProvider()->EnterSubMenu(item);
++ }
++ }
++
++ static MenuItemDefinitions* MainMenuItems()
++ {
++ if (MainMenuItemsProvider())
++ {
++ return MainMenuItemsProvider()->MainMenuItems();
++ }
++ return NULL;
++ }
+};
+
-+};
++IMainMenuItemsProvider* MenuOrgPatch::_mainMenuItemsProvider = NULL;
+
+#endif //__MENUORGPATCH_H