diff options
author | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-22 13:51:47 +0000 |
---|---|---|
committer | svntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f> | 2007-07-22 13:51:47 +0000 |
commit | 1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f (patch) | |
tree | cf9e5a2f477405e789a8613bf37ae6d81cb5b97a /vdr-patch | |
parent | 2e1c7361dce4d44d980628537a679a9fbebd5546 (diff) | |
download | vdr-plugin-menuorg-1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f.tar.gz vdr-plugin-menuorg-1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f.tar.bz2 |
initial submenu checkin
git-svn-id: file:///home/tobias/sandbox/vdr/--/vdr-pkg/vdr-pkg/submenu/trunk@5628 cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f
Diffstat (limited to 'vdr-patch')
-rwxr-xr-x | vdr-patch/opt-37_submenu.dpatch | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/vdr-patch/opt-37_submenu.dpatch b/vdr-patch/opt-37_submenu.dpatch new file mode 100755 index 0000000..7435f64 --- /dev/null +++ b/vdr-patch/opt-37_submenu.dpatch @@ -0,0 +1,223 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## opt-37_submenu.dpatch by Tobias Grimm <tg@e-tobi.net> +## 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-22 15:14:29.000000000 +0200 ++++ vdr-1.4.7/Makefile 2007-07-22 15:14: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-22 15:14:29.000000000 +0200 ++++ vdr-1.4.7/menu.c 2007-07-22 15:25:10.000000000 +0200 +@@ -31,6 +31,7 @@ + #include "vdrttxtsubshooks.h" + #include "dvbsub.h" + #include "videodir.h" ++#include "submenupatch.h" + + #define MAXWAIT4EPGINFO 3 // seconds + #define MODETIMEOUT 3 // seconds +@@ -3084,6 +3085,25 @@ + Clear(); + SetTitle("VDR"); + SetHasHotkeys(); ++ ++ SubMenuPatch::ISubMenuProvider* subMenuProvider; ++ ++ if (cPluginManager::CallFirstService("SubMenuPatch-v0.1::SubMenuProvider", &subMenuProvider)) { ++ SubMenuPatch::MainMenuItemsList* menuItems = subMenuProvider->MainMenuItems(); ++ SubMenuPatch::MainMenuItemsList::iterator i; ++ ++ for (i = menuItems->begin(); i != menuItems->end(); i++) { ++ if ((*i)->IsCustomMenuItem()) { ++ cOsdItem* osdItem = (*i)->CustomMenuItem(); ++ osdItem->SetText(hk(osdItem->Text())); ++ Add(osdItem); ++ } ++ else if ((*i)->IsPluginMenuItem()) { ++ Add(new cMenuPluginItem(hk((*i)->PluginMenuEntry()), (*i)->PluginIndex())); ++ } ++ } ++ } ++ else { + + // Basic menu items: + +@@ -3111,6 +3131,8 @@ + if (Commands.Count()) + Add(new cOsdItem(hk(tr("Commands")), osCommands)); + ++ } ++ + Update(true); + + Display(); +@@ -3238,6 +3260,17 @@ + state = osEnd; + } + break; ++ case osUser1: { ++ SubMenuPatch::ISubMenuProvider* subMenuProvider; ++ ++ if (cPluginManager::CallFirstService("SubMenuPatch-v0.1::SubMenuProvider", &subMenuProvider)) { ++ cOsdMenu* subMenu = subMenuProvider->OpenSubMenu(Current()); ++ if (subMenu) { ++ AddSubMenu(subMenu); ++ } ++ break; ++ } ++ } + 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-22 15:14: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-22 15:21:59.000000000 +0200 +@@ -0,0 +1,59 @@ ++/* ++ * 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: $ ++ * ++ */ ++ ++#ifndef __SUBMENUPATCH_H ++#define __SUBMENUPATCH_H ++ ++#include "osdbase.h" ++#include <vector> ++ ++namespace SubMenuPatch ++{ ++ ++class MainMenuItem ++{ ++ public: ++ static MainMenuItem* CreateCustomMenuItem(cOsdItem* item); ++ static MainMenuItem* CreatePluginMenuItem(const char* pluginMainMenuEntry, int pluginIndex); ++ ++ public: ++ virtual ~MainMenuItem() {}; ++ virtual bool IsCustomMenuItem() = 0; ++ virtual bool IsPluginMenuItem() = 0; ++ virtual cOsdItem* CustomMenuItem() = 0; ++ virtual const char* PluginMenuEntry() = 0; ++ virtual int PluginIndex() = 0; ++}; ++ ++typedef std::vector<MainMenuItem*> MainMenuItemsList; ++ ++class ISubMenuProvider ++{ ++ public: ++ virtual ~ISubMenuProvider(); ++ virtual MainMenuItemsList* MainMenuItems() = 0; ++ virtual cOsdMenu* OpenSubMenu(int mainMenuItemIndex) = 0; ++}; ++ ++}; ++ ++#endif //__SUBMENUPATCH_H |