diff --git a/CONTRIBUTORS b/CONTRIBUTORS index da92b79f..f96e444f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -627,3 +627,6 @@ Olivier Jacques ) Kai Moeller for reporting a double call to MainMenuAction() of a plugin if invoked via a hotkey + +Carsten Siebholz + for adding cStatus::OsdItem() to provide the entire list of menu items to a plugin diff --git a/HISTORY b/HISTORY index 1cbd60df..92a0b498 100644 --- a/HISTORY +++ b/HISTORY @@ -2104,3 +2104,5 @@ Video Disk Recorder Revision History If all devices are busy and none of them can provide the current channel, the message "Channel not available!" will be displayed. - Removed the (no longer necessary) 'panic' stuff from cThread. +- Added cStatus::OsdItem() to provide the entire list of menu items to a plugin + (thanks to Carsten Siebholz). diff --git a/osd.c b/osd.c index 96e038a4..9d8b72db 100644 --- a/osd.c +++ b/osd.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osd.c 1.41 2003/05/02 10:46:13 kls Exp $ + * $Id: osd.c 1.42 2003/05/03 14:46:38 kls Exp $ */ #include "osd.h" @@ -423,6 +423,11 @@ void cOsdMenu::Display(void) Interface->Help(helpRed, helpGreen, helpYellow, helpBlue); int count = Count(); if (count > 0) { + for (int i = 0; i < count; i++) { + cOsdItem *item = Get(i); + if (item) + cStatus::MsgOsdItem(item->Text(), i); + } if (current < 0) current = 0; // just for safety - there HAS to be a current item! int n = 0; diff --git a/status.c b/status.c index 0bc4dd8e..3dbe8543 100644 --- a/status.c +++ b/status.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: status.c 1.4 2002/07/13 10:49:34 kls Exp $ + * $Id: status.c 1.5 2003/05/03 14:47:44 kls Exp $ */ #include "status.h" @@ -71,6 +71,12 @@ void cStatus::MsgOsdHelpKeys(const char *Red, const char *Green, const char *Yel sm->OsdHelpKeys(Red, Green, Yellow, Blue); } +void cStatus::MsgOsdItem(const char *Text, int Index) +{ + for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) + sm->OsdItem(Text, Index); +} + void cStatus::MsgOsdCurrentItem(const char *Text) { for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm)) diff --git a/status.h b/status.h index 8041f8cd..de0d9256 100644 --- a/status.h +++ b/status.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: status.h 1.5 2002/07/14 10:54:39 kls Exp $ + * $Id: status.h 1.6 2003/05/03 14:43:18 kls Exp $ */ #ifndef __STATUS_H @@ -45,6 +45,8 @@ protected: // If Message is NULL, the status line has been cleared. virtual void OsdHelpKeys(const char *Red, const char *Green, const char *Yellow, const char *Blue) {} // The help keys have been set to the given values (may be NULL). + virtual void OsdItem(const char *Text, int Index) {} + // The OSD displays the given single line Text as menu item at Index. virtual void OsdCurrentItem(const char *Text) {} // The OSD displays the given single line Text as the current menu item. virtual void OsdTextItem(const char *Text, bool Scroll) {} @@ -69,6 +71,7 @@ public: static void MsgOsdTitle(const char *Title); static void MsgOsdStatusMessage(const char *Message); static void MsgOsdHelpKeys(const char *Red, const char *Green, const char *Yellow, const char *Blue); + static void MsgOsdItem(const char *Text, int Index); static void MsgOsdCurrentItem(const char *Text); static void MsgOsdTextItem(const char *Text, bool Scroll = false); static void MsgOsdChannel(const char *Text);