summaryrefslogtreecommitdiff
path: root/vdr-patch
diff options
context:
space:
mode:
authorsvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-07-22 13:51:47 +0000
committersvntobi <svntobi@cd0d6b48-d4f9-0310-940f-ab8c4eb44d3f>2007-07-22 13:51:47 +0000
commit1e8d4c38cf55f3995a3d02c6c275fec0d1b7326f (patch)
treecf9e5a2f477405e789a8613bf37ae6d81cb5b97a /vdr-patch
parent2e1c7361dce4d44d980628537a679a9fbebd5546 (diff)
downloadvdr-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-xvdr-patch/opt-37_submenu.dpatch223
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