diff options
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | sources.mk | 2 | ||||
-rw-r--r-- | src/menunode.cpp | 2 | ||||
-rw-r--r-- | src/menunode.h | 2 | ||||
-rw-r--r-- | src/pluginmenuitem.cpp | 6 | ||||
-rw-r--r-- | src/pluginmenuitem.h | 2 | ||||
-rw-r--r-- | src/submenuprovider.cpp | 2 | ||||
-rw-r--r-- | src/vdrmenuitem.cpp | 6 | ||||
-rw-r--r-- | src/vdrmenuitem.h | 2 | ||||
-rwxr-xr-x | vdr-patch/opt-37_submenu.dpatch | 112 |
10 files changed, 22 insertions, 115 deletions
@@ -5,7 +5,6 @@ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. -# By default the main source file also carries this name. # PLUGIN = menuorg @@ -1,7 +1,9 @@ SRCS = \ + src/custommainmenuitem.cpp \ src/menunode.cpp \ src/menuorg.cpp \ src/plugincreator.cpp \ + src/pluginmainmenuitem.cpp \ src/pluginmenuitem.cpp \ src/submenuitem.cpp \ src/submenuprovider.cpp \ diff --git a/src/menunode.cpp b/src/menunode.cpp index ab862e6..42197e2 100644 --- a/src/menunode.cpp +++ b/src/menunode.cpp @@ -31,7 +31,7 @@ void MenuNode::SetParent(MenuNode* parent) _parent = parent; } -SubMenuPatch::MainMenuItem* MenuNode::CreateMainMenuItem() +SubMenuPatch::IMainMenuItem* MenuNode::CreateMainMenuItem() { return NULL; } diff --git a/src/menunode.h b/src/menunode.h index 66286a1..7899bb5 100644 --- a/src/menunode.h +++ b/src/menunode.h @@ -22,7 +22,7 @@ class MenuNode MenuNode* Parent(); MenuNodeList& Childs(); MenuNode* AddChild(MenuNode* child); - virtual SubMenuPatch::MainMenuItem* CreateMainMenuItem(); + virtual SubMenuPatch::IMainMenuItem* CreateMainMenuItem(); }; #endif diff --git a/src/pluginmenuitem.cpp b/src/pluginmenuitem.cpp index d44d747..f2a30ae 100644 --- a/src/pluginmenuitem.cpp +++ b/src/pluginmenuitem.cpp @@ -1,5 +1,6 @@ #include "pluginmenuitem.h" #include <vdr/submenupatch.h> +#include "pluginmainmenuitem.h" PluginMenuItem::PluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex) { @@ -7,8 +8,7 @@ PluginMenuItem::PluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex) _pluginIndex = pluginIndex; } -SubMenuPatch::MainMenuItem* PluginMenuItem::CreateMainMenuItem() +SubMenuPatch::IMainMenuItem* PluginMenuItem::CreateMainMenuItem() { - return SubMenuPatch::MainMenuItem::CreatePluginMenuItem( - _pluginMainMenuEntry, _pluginIndex); + return new PluginMainMenuItem(_pluginMainMenuEntry, _pluginIndex); } diff --git a/src/pluginmenuitem.h b/src/pluginmenuitem.h index 069abce..b9fbde4 100644 --- a/src/pluginmenuitem.h +++ b/src/pluginmenuitem.h @@ -13,7 +13,7 @@ class PluginMenuItem: public MenuNode public: PluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex); - SubMenuPatch::MainMenuItem* CreateMainMenuItem(); + SubMenuPatch::IMainMenuItem* CreateMainMenuItem(); }; #endif diff --git a/src/submenuprovider.cpp b/src/submenuprovider.cpp index 114fc04..b76c635 100644 --- a/src/submenuprovider.cpp +++ b/src/submenuprovider.cpp @@ -63,7 +63,7 @@ void SubMenuProvider::EnterSubMenu(cOsdItem* item) { for(unsigned int itemIndex=0; itemIndex < _currentMainMenuItems.size(); itemIndex++) { - MainMenuItem* menuItem = _currentMainMenuItems.at(itemIndex); + IMainMenuItem* menuItem = _currentMainMenuItems.at(itemIndex); if (menuItem->IsCustomMenuItem() && (menuItem->CustomMenuItem() == item)) { _currentMenu = _currentMenu->Childs().at(itemIndex); diff --git a/src/vdrmenuitem.cpp b/src/vdrmenuitem.cpp index 1ca704d..e36d25d 100644 --- a/src/vdrmenuitem.cpp +++ b/src/vdrmenuitem.cpp @@ -1,5 +1,6 @@ #include "vdrmenuitem.h" #include <vdr/submenupatch.h> +#include "custommainmenuitem.h" VdrMenuItem::VdrMenuItem(std::string itemText, eOSState itemState) { @@ -7,8 +8,7 @@ VdrMenuItem::VdrMenuItem(std::string itemText, eOSState itemState) _itemState = itemState; } -SubMenuPatch::MainMenuItem* VdrMenuItem::CreateMainMenuItem() +SubMenuPatch::IMainMenuItem* VdrMenuItem::CreateMainMenuItem() { - return SubMenuPatch::MainMenuItem::CreateCustomMenuItem( - new cOsdItem(_itemText.c_str(), _itemState)); + return new CustomMainMenuItem(new cOsdItem(_itemText.c_str(), _itemState)); } diff --git a/src/vdrmenuitem.h b/src/vdrmenuitem.h index 166e5e0..c518fe8 100644 --- a/src/vdrmenuitem.h +++ b/src/vdrmenuitem.h @@ -14,7 +14,7 @@ class VdrMenuItem: public MenuNode public: VdrMenuItem(std::string itemText, eOSState itemState); - SubMenuPatch::MainMenuItem* CreateMainMenuItem(); + SubMenuPatch::IMainMenuItem* CreateMainMenuItem(); }; #endif diff --git a/vdr-patch/opt-37_submenu.dpatch b/vdr-patch/opt-37_submenu.dpatch index 92335ea..ea9f50d 100755 --- a/vdr-patch/opt-37_submenu.dpatch +++ b/vdr-patch/opt-37_submenu.dpatch @@ -3,21 +3,9 @@ ## DP: This patch is needed for the submenu plugin. @DPATCH@ -diff -urNad vdr-1.4.7~/Makefile vdr-1.4.7/Makefile ---- vdr-1.4.7~/Makefile 2007-07-26 23:27:29.000000000 +0200 -+++ vdr-1.4.7/Makefile 2007-07-26 23:27:30.000000000 +0200 -@@ -38,7 +38,7 @@ - lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o rcu.o\ - receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o sections.o\ - skinclassic.o skins.o skinsttng.o sources.o spu.o status.o svdrp.o themes.o thread.o\ -- timers.o tools.o transfer.o vdr.o videodir.o -+ timers.o tools.o transfer.o vdr.o videodir.o submenupatch.o - - OBJS += osdcontroller.o rcontroller.o dvbsub.o vdrttxtsubshooks.o - diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c ---- vdr-1.4.7~/menu.c 2007-07-26 23:27:29.000000000 +0200 -+++ vdr-1.4.7/menu.c 2007-07-26 23:30:16.000000000 +0200 +--- vdr-1.4.7~/menu.c 2007-07-28 12:12:30.000000000 +0200 ++++ vdr-1.4.7/menu.c 2007-07-28 12:12:31.000000000 +0200 @@ -31,6 +31,7 @@ #include "vdrttxtsubshooks.h" #include "dvbsub.h" @@ -101,89 +89,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~/submenupatch.c vdr-1.4.7/submenupatch.c ---- vdr-1.4.7~/submenupatch.c 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.4.7/submenupatch.c 2007-07-26 23:27:30.000000000 +0200 -@@ -0,0 +1,75 @@ -+/* -+ * vdr-submenu - A plugin for the Linux Video Disk Recorder -+ * Copyright (c) 2007 Tobias Grimm <vdr@e-tobi.net> -+ * -+ * 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$ -+ * -+ */ -+ -+#include "submenupatch.h" -+ -+namespace SubMenuPatch -+{ -+ -+class CustomMainMenuItem: public MainMenuItem -+{ -+ private: -+ cOsdItem* _osdItem; -+ -+ public: -+ CustomMainMenuItem(cOsdItem* osdItem) {_osdItem = osdItem; }; -+ virtual bool IsCustomMenuItem() { return true; }; -+ virtual bool IsPluginMenuItem() { return false; }; -+ virtual cOsdItem* CustomMenuItem() { return _osdItem; }; -+ virtual const char* PluginMenuEntry() { return NULL; }; -+ virtual int PluginIndex() { return 0; }; -+}; -+ -+class PluginMainMenuItem: public MainMenuItem -+{ -+ private: -+ const char* _mainMenuEntry; -+ int _pluginIndex; -+ -+ public: -+ PluginMainMenuItem(const char* mainMenuEntry, int pluginIndex) -+ { -+ _mainMenuEntry = mainMenuEntry; -+ _pluginIndex = pluginIndex; -+ }; -+ virtual bool IsCustomMenuItem() { return false; }; -+ virtual bool IsPluginMenuItem() { return true; }; -+ virtual cOsdItem* CustomMenuItem() { return NULL; }; -+ virtual const char* PluginMenuEntry() { return _mainMenuEntry; }; -+ virtual int PluginIndex() { return _pluginIndex; }; -+}; -+ -+ISubMenuProvider::~ISubMenuProvider() -+{ -+} -+ -+MainMenuItem* MainMenuItem::CreateCustomMenuItem(cOsdItem* item) -+{ -+ return new CustomMainMenuItem(item); -+} -+ -+MainMenuItem* MainMenuItem::CreatePluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex) -+{ -+ return new PluginMainMenuItem(pluginMainMenuEntry, pluginIndex); -+} -+ -+}; diff -urNad vdr-1.4.7~/submenupatch.h vdr-1.4.7/submenupatch.h --- vdr-1.4.7~/submenupatch.h 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.4.7/submenupatch.h 2007-07-26 23:27:30.000000000 +0200 -@@ -0,0 +1,60 @@ ++++ vdr-1.4.7/submenupatch.h 2007-07-28 12:13:57.000000000 +0200 +@@ -0,0 +1,57 @@ +/* + * vdr-submenu - A plugin for the Linux Video Disk Recorder + * Copyright (c) 2007 Tobias Grimm <vdr@e-tobi.net> @@ -209,20 +118,17 @@ diff -urNad vdr-1.4.7~/submenupatch.h vdr-1.4.7/submenupatch.h +#ifndef __SUBMENUPATCH_H +#define __SUBMENUPATCH_H + -+#include "osdbase.h" +#include <vector> + ++class cOsdItem; ++ +namespace SubMenuPatch +{ + -+class MainMenuItem ++class IMainMenuItem +{ + public: -+ static MainMenuItem* CreateCustomMenuItem(cOsdItem* item); -+ static MainMenuItem* CreatePluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex); -+ -+ public: -+ virtual ~MainMenuItem() {}; ++ virtual ~IMainMenuItem() {}; + virtual bool IsCustomMenuItem() = 0; + virtual bool IsPluginMenuItem() = 0; + virtual cOsdItem* CustomMenuItem() = 0; @@ -230,7 +136,7 @@ diff -urNad vdr-1.4.7~/submenupatch.h vdr-1.4.7/submenupatch.h + virtual int PluginIndex() = 0; +}; + -+typedef std::vector<MainMenuItem*> MainMenuItemsList; ++typedef std::vector<IMainMenuItem*> MainMenuItemsList; + +class ISubMenuProvider +{ |