#! /bin/sh /usr/share/dpatch/dpatch-run ## opt-50_graphtft.dpatch by Jörg Wendel (Horchi) ## from vdr-graphtft svn repository (20090728.2153): ## https://vdr-graphtft.svn.sourceforge.net/svnroot/vdr-graphtft ## ## Thomas Günther <tom@toms-cafe.de>: ## - adapted to VDR-1.7.13 ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Patch required for the GraphTFT plugin. @DPATCH@ diff -up vdr-2.0.6/menu.c.orig vdr-2.0.6/menu.c --- vdr-2.0.6/menu.c.orig 2014-11-22 20:07:47.430465638 +0200 +++ vdr-2.0.6/menu.c 2014-11-22 20:07:47.535464378 +0200 @@ -168,6 +168,7 @@ private: public: cMenuEditChannel(cChannel *Channel, bool New = false); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuEditChannel"; } }; cMenuEditChannel::cMenuEditChannel(cChannel *Channel, bool New) @@ -366,6 +367,7 @@ public: cMenuChannels(void); ~cMenuChannels(); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuChannels"; } }; cMenuChannels::cMenuChannels(void) @@ -1166,6 +1168,7 @@ public: virtual ~cMenuTimers(); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuTimers"; } }; cMenuTimers::cMenuTimers(void) @@ -1460,6 +1463,7 @@ void cMenuEvent::Display(void) { cOsdMenu::Display(); DisplayMenu()->SetEvent(event); + cStatus::MsgOsdSetEvent(event); if (event->Description()) cStatus::MsgOsdTextItem(event->Description()); } @@ -1589,6 +1593,8 @@ public: static void SetCurrentChannel(int ChannelNr) { currentChannel = ChannelNr; } static const cEvent *ScheduleEvent(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return now ? "MenuWhatsOnNow" : "MenuWhatsOnNext"; } + virtual void Display(void); }; int cMenuWhatsOn::currentChannel = 0; @@ -1617,6 +1623,18 @@ cMenuWhatsOn::cMenuWhatsOn(const cSchedu SetHelpKeys(); } +void cMenuWhatsOn::Display(void) +{ + cOsdMenu::Display(); + + if (Count() > 0) { + int ni = 0; + for (cOsdItem *item = First(); item; item = Next(item)) { + cStatus::MsgOsdEventItem(((cMenuScheduleItem*)item)->event, item->Text(), ni++, Count()); + } + } +} + bool cMenuWhatsOn::Update(void) { bool result = false; @@ -1757,6 +1775,8 @@ public: cMenuSchedule(void); virtual ~cMenuSchedule(); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuSchedule"; } + virtual void Display(void); }; cMenuSchedule::cMenuSchedule(void) @@ -1783,6 +1803,18 @@ cMenuSchedule::~cMenuSchedule() cMenuWhatsOn::ScheduleEvent(); // makes sure any posted data is cleared } +void cMenuSchedule::Display(void) +{ + cOsdMenu::Display(); + + if (Count() > 0) { + int ni = 0; + for (cOsdItem *item = First(); item; item = Next(item)) { + cStatus::MsgOsdEventItem(((cMenuScheduleItem*)item)->event, item->Text(), ni++, Count()); + } + } +} + void cMenuSchedule::PrepareScheduleAllThis(const cEvent *Event, const cChannel *Channel) { Clear(); @@ -2147,6 +2179,7 @@ public: cMenuCam(cCamSlot *CamSlot); virtual ~cMenuCam(); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuCam"; } }; cMenuCam::cMenuCam(cCamSlot *CamSlot) @@ -2334,6 +2367,7 @@ public: cMenuRecording(const cRecording *Recording, bool WithButtons = false); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuRecording"; } }; cMenuRecording::cMenuRecording(const cRecording *Recording, bool WithButtons) @@ -2350,6 +2384,7 @@ void cMenuRecording::Display(void) { cOsdMenu::Display(); DisplayMenu()->SetRecording(recording); + cStatus::MsgOsdSetRecording(recording); if (recording->Info()->Description()) cStatus::MsgOsdTextItem(recording->Info()->Description()); } @@ -2767,6 +2802,7 @@ public: cMenuSetupOSD(void); virtual ~cMenuSetupOSD(); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuSetupOsd"; } }; cMenuSetupOSD::cMenuSetupOSD(void) @@ -2920,6 +2956,7 @@ private: public: cMenuSetupEPG(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuSetupEpg"; } }; cMenuSetupEPG::cMenuSetupEPG(void) @@ -3017,6 +3054,7 @@ private: public: cMenuSetupDVB(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuSetupDvb"; } }; cMenuSetupDVB::cMenuSetupDVB(void) @@ -3167,6 +3205,7 @@ private: public: cMenuSetupLNB(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuSetupLnb"; } }; cMenuSetupLNB::cMenuSetupLNB(void) @@ -3272,6 +3311,7 @@ private: public: cMenuSetupCAM(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuSetupCam"; } }; cMenuSetupCAM::cMenuSetupCAM(void) @@ -3458,6 +3498,7 @@ class cMenuSetupPlugins : public cMenuSe public: cMenuSetupPlugins(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuSetupPlugins"; } }; cMenuSetupPlugins::cMenuSetupPlugins(void) @@ -3513,6 +3554,7 @@ private: public: cMenuSetup(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuSetup"; } }; cMenuSetup::cMenuSetup(void) diff -up vdr-2.0.6/menu.h.orig vdr-2.0.6/menu.h --- vdr-2.0.6/menu.h.orig 2014-11-22 20:06:02.235727685 +0200 +++ vdr-2.0.6/menu.h 2014-11-22 20:07:47.535464378 +0200 @@ -29,6 +29,7 @@ public: void SetText(const char *Text); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuText"; } }; class cMenuFolder : public cOsdMenu { @@ -67,6 +68,7 @@ public: cMenuCommands(const char *Title, cList<cNestedItem> *Commands, const char *Parameters = NULL); virtual ~cMenuCommands(); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuCommands"; } }; class cMenuEditTimer : public cOsdMenu { @@ -85,6 +87,7 @@ public: cMenuEditTimer(cTimer *Timer, bool New = false); virtual ~cMenuEditTimer(); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuTimerEdit"; } }; class cMenuEvent : public cOsdMenu { @@ -94,6 +97,7 @@ public: cMenuEvent(const cEvent *Event, bool CanSwitch = false, bool Buttons = false); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuEvent"; } }; class cMenuMain : public cOsdMenu { @@ -110,6 +114,7 @@ public: cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false); virtual eOSState ProcessKey(eKeys Key); static cOsdObject *PluginOsdObject(void); + virtual const char* MenuKind() { return "MenuMain"; } }; class cDisplayChannel : public cOsdObject { @@ -212,6 +217,7 @@ public: cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false); ~cMenuRecordings(); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuRecordings"; } }; class cRecordControl { diff -up vdr-2.0.6/menuitems.h.orig vdr-2.0.6/menuitems.h --- vdr-2.0.6/menuitems.h.orig 2012-03-13 13:19:11.000000000 +0200 +++ vdr-2.0.6/menuitems.h 2014-11-22 20:07:47.535464378 +0200 @@ -209,6 +209,7 @@ public: cMenuSetupPage(void); virtual eOSState ProcessKey(eKeys Key); void SetPlugin(cPlugin *Plugin); + const char* MenuKind() { return "MenuSetupPage"; } }; #endif //__MENUITEMS_H diff -up vdr-2.0.6/osdbase.c.orig vdr-2.0.6/osdbase.c --- vdr-2.0.6/osdbase.c.orig 2014-11-22 20:06:02.235727685 +0200 +++ vdr-2.0.6/osdbase.c 2014-11-22 20:07:47.535464378 +0200 @@ -106,6 +106,7 @@ cOsdMenu::~cOsdMenu() free(status); displayMenu->Clear(); cStatus::MsgOsdClear(); + cStatus::MsgOsdMenuDestroy(); if (!--displayMenuCount) DELETENULL(displayMenu); } @@ -223,6 +224,7 @@ void cOsdMenu::Display(void) displayMenu->SetMessage(mtStatus, NULL); displayMenu->Clear(); cStatus::MsgOsdClear(); + cStatus::MsgOsdMenuDisplay(MenuKind()); if (menuCategory != displayMenu->MenuCategory()) displayMenu->SetMenuCategory(menuCategory); displayMenuItems = displayMenu->MaxItems(); diff -up vdr-2.0.6/osdbase.h.orig vdr-2.0.6/osdbase.h --- vdr-2.0.6/osdbase.h.orig 2014-11-22 20:06:02.235727685 +0200 +++ vdr-2.0.6/osdbase.h 2014-11-22 20:07:47.535464378 +0200 @@ -138,6 +138,7 @@ public: void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual const char* MenuKind() { return "MenuUnknown"; } }; #endif //__OSDBASE_H diff -up vdr-2.0.6/recording.h.orig vdr-2.0.6/recording.h --- vdr-2.0.6/recording.h.orig 2013-12-25 12:54:05.000000000 +0200 +++ vdr-2.0.6/recording.h 2014-11-22 20:07:47.535464378 +0200 @@ -69,6 +69,7 @@ public: const cEvent *GetEvent(void) const { return event; } const char *Title(void) const { return event->Title(); } const char *ShortText(void) const { return event->ShortText(); } + tEventID EventID(void) const { return event->EventID(); } const char *Description(void) const { return event->Description(); } const cComponents *Components(void) const { return event->Components(); } const char *Aux(void) const { return aux; } diff -up vdr-2.0.6/status.c.orig vdr-2.0.6/status.c --- vdr-2.0.6/status.c.orig 2012-03-07 16:17:24.000000000 +0200 +++ vdr-2.0.6/status.c 2014-11-22 20:07:47.535464378 +0200 @@ -124,3 +124,32 @@ void cStatus::MsgOsdProgramme(time_t Pre for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) sm->OsdProgramme(PresentTime, PresentTitle, PresentSubtitle, FollowingTime, FollowingTitle, FollowingSubtitle); } + +void cStatus::MsgOsdSetEvent(const cEvent* event) +{ + for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) + sm->OsdSetEvent(event); +} + +void cStatus::MsgOsdSetRecording(const cRecording* recording) +{ + for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) + sm->OsdSetRecording(recording); +} + +void cStatus::MsgOsdMenuDisplay(const char* kind) +{ + for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) + sm->OsdMenuDisplay(kind); +} + +void cStatus::MsgOsdMenuDestroy() +{ + for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) + sm->OsdMenuDestroy(); +} +void cStatus::MsgOsdEventItem(const cEvent* Event, const char *Text, int Index, int Count) +{ + for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) + sm->OsdEventItem(Event, Text, Index, Count); +} diff -up vdr-2.0.6/status.h.orig vdr-2.0.6/status.h --- vdr-2.0.6/status.h.orig 2012-03-07 16:16:57.000000000 +0200 +++ vdr-2.0.6/status.h 2014-11-22 20:07:47.535464378 +0200 @@ -81,6 +81,17 @@ protected: // The OSD displays the single line Text with the current channel information. virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle) {} // The OSD displays the given programme information. + virtual void OsdSetRecording(const cRecording* recording) {} + // The OSD displays the recording information. + virtual void OsdSetEvent(const cEvent* event) {} + // The OSD displays the event information. + virtual void OsdMenuDisplay(const char* kind) {} + // report menu creation + virtual void OsdMenuDestroy() {} + // report menu destruvtion + virtual void OsdEventItem(const cEvent* Event, const char *Text, int Index, int Count) {} + // The OSD displays the given single line Event as menu item at Index. + public: cStatus(void); virtual ~cStatus(); @@ -102,6 +113,11 @@ public: static void MsgOsdTextItem(const char *Text, bool Scroll = false); static void MsgOsdChannel(const char *Text); static void MsgOsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle); + static void MsgOsdSetEvent(const cEvent* event); + static void MsgOsdSetRecording(const cRecording* recording); + static void MsgOsdMenuDisplay(const char* kind); + static void MsgOsdMenuDestroy(); + static void MsgOsdEventItem(const cEvent* Event, const char *Text, int Index, int Count); }; #endif //__STATUS_H