--- ../vdr-1.4.3-plain//menu.c 2006-07-23 11:23:11.000000000 +0200 +++ menu.c 2006-11-30 00:06:15.000000000 +0100 @@ -220,6 +220,7 @@ public: cMenuEditChannel(cChannel *Channel, bool New = false); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omEditChannel; } }; cMenuEditChannel::cMenuEditChannel(cChannel *Channel, bool New) @@ -393,6 +394,7 @@ cMenuChannels(void); ~cMenuChannels(); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omChannels; } }; cMenuChannels::cMenuChannels(void) @@ -802,6 +804,7 @@ cMenuTimers(void); virtual ~cMenuTimers(); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omTimers; } }; cMenuTimers::cMenuTimers(void) @@ -1246,6 +1249,7 @@ cMenuSchedule(void); virtual ~cMenuSchedule(); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omSchedule; } }; cMenuSchedule::cMenuSchedule(void) @@ -1518,6 +1522,7 @@ cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters = NULL); virtual ~cMenuCommands(); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omCommands; } }; cMenuCommands::cMenuCommands(const char *Title, cCommands *Commands, const char *Parameters) @@ -1749,6 +1754,7 @@ cMenuRecording(const cRecording *Recording, bool WithButtons = false); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omRecording; } }; cMenuRecording::cMenuRecording(const cRecording *Recording, bool WithButtons) @@ -2638,6 +2644,7 @@ public: cMenuSetupPlugins(void); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omSetupPage; } }; cMenuSetupPlugins::cMenuSetupPlugins(void) @@ -2691,6 +2698,7 @@ public: cMenuSetup(void); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omSetup; } }; cMenuSetup::cMenuSetup(void) --- ../vdr-1.4.3-plain//menu.h 2006-03-25 13:15:19.000000000 +0100 +++ menu.h 2006-11-29 14:40:58.000000000 +0100 @@ -29,6 +29,7 @@ void SetText(const char *Text); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omText; } }; class cMenuEditTimer : public cOsdMenu { @@ -43,6 +44,7 @@ cMenuEditTimer(cTimer *Timer, bool New = false); virtual ~cMenuEditTimer(); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omTimerEdit; } }; class cMenuEvent : public cOsdMenu { @@ -52,6 +54,7 @@ cMenuEvent(const cEvent *Event, bool CanSwitch = false, bool Buttons = false); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omEvent; } }; class cMenuMain : public cOsdMenu { @@ -70,6 +73,7 @@ cMenuMain(eOSState State = osUnknown); virtual eOSState ProcessKey(eKeys Key); static cOsdObject *PluginOsdObject(void); + virtual eOsdMenuKind MenuKind() { return omMain; } }; class cDisplayChannel : public cOsdObject { @@ -139,6 +143,7 @@ cMenuCam(cCiMenu *CiMenu); virtual ~cMenuCam(); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omCam; } }; class cMenuCamEnquiry : public cOsdMenu { @@ -151,6 +156,7 @@ cMenuCamEnquiry(cCiEnquiry *CiEnquiry); virtual ~cMenuCamEnquiry(); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omCamEnquiry; } }; cOsdObject *CamControl(void); @@ -177,6 +183,7 @@ cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false); ~cMenuRecordings(); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omRecordings; } }; class cRecordControl { --- ../vdr-1.4.3-plain//menuitems.h 2006-04-14 12:01:47.000000000 +0200 +++ menuitems.h 2006-11-29 14:40:58.000000000 +0100 @@ -166,6 +166,7 @@ cMenuSetupPage(void); virtual eOSState ProcessKey(eKeys Key); void SetPlugin(cPlugin *Plugin); + eOsdMenuKind MenuKind() { return omSetupPage; } }; #endif //__MENUITEMS_H --- ../vdr-1.4.3-plain//osdbase.c 2006-02-05 15:37:03.000000000 +0100 +++ osdbase.c 2006-11-29 14:40:58.000000000 +0100 @@ -99,6 +99,7 @@ free(status); displayMenu->Clear(); cStatus::MsgOsdClear(); + cStatus::MsgOsdMenuDestroy(); if (!--displayMenuCount) DELETENULL(displayMenu); } @@ -194,6 +195,7 @@ displayMenu->SetMessage(mtStatus, NULL); displayMenu->Clear(); cStatus::MsgOsdClear(); + cStatus::MsgOsdMenuDisplay(MenuKind()); displayMenu->SetTabs(cols[0], cols[1], cols[2], cols[3], cols[4]);//XXX displayMenu->SetTitle(title); cStatus::MsgOsdTitle(title); @@ -463,6 +465,7 @@ eOSState state = subMenu->ProcessKey(Key); if (state == osBack) return CloseSubMenu(); + return state; } --- ../vdr-1.4.3-plain//osdbase.h 2006-01-06 12:55:30.000000000 +0100 +++ osdbase.h 2006-11-29 14:40:58.000000000 +0100 @@ -46,6 +46,30 @@ osUser10, }; +enum eOsdMenuKind { omUnknown, + omMain, + omText, + omTimerEdit, + omEvent, + omCam, + omCamEnquiry, + omSetupPage, + omEditChannel, + omChannels, + omCommands, + omTimers, + omWhatsOn, + omWhatsOnElse = omWhatsOn, + omWhatsOnNow, + omWhatsOnNext, + omSchedule, + omRecording, + omRecordings, + omRenameRecording, + omSetup + }; + + class cOsdItem : public cListObject { private: char *text; @@ -125,6 +149,7 @@ void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL); virtual void Display(void); virtual eOSState ProcessKey(eKeys Key); + virtual eOsdMenuKind MenuKind() { return omUnknown; } }; #endif //__OSDBASE_H --- ../vdr-1.4.3-plain//status.c 2005-12-31 16:10:10.000000000 +0100 +++ status.c 2006-11-29 14:40:58.000000000 +0100 @@ -112,3 +112,15 @@ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) sm->OsdProgramme(PresentTime, PresentTitle, PresentSubtitle, FollowingTime, FollowingTitle, FollowingSubtitle); } + +void cStatus::MsgOsdMenuDisplay(eOsdMenuKind 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(); +} --- ../vdr-1.4.3-plain//status.h 2005-12-31 16:15:25.000000000 +0100 +++ status.h 2006-11-29 14:40:58.000000000 +0100 @@ -67,6 +67,11 @@ // 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 OsdMenuDisplay(eOsdMenuKind kind) {} + // report menu creation + virtual void OsdMenuDestroy() {} + // report menu destruvtion + public: cStatus(void); virtual ~cStatus(); @@ -86,6 +91,8 @@ 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 MsgOsdMenuDisplay(const eOsdMenuKind kind); + static void MsgOsdMenuDestroy(); }; #endif //__STATUS_H