diff options
-rw-r--r-- | tools/display_message.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tools/display_message.h b/tools/display_message.h new file mode 100644 index 00000000..59c72822 --- /dev/null +++ b/tools/display_message.h @@ -0,0 +1,75 @@ +/* + * display_message.h: Display simple message + * + * See the main source file 'xineliboutput.c' for copyright information and + * how to reach the author. + * + * $Id: display_message.h,v 1.1 2006-10-13 04:37:37 phintuka Exp $ + * + */ + +#ifndef __DISPLAY_MESSAGE_H +#define __DISPLAY_MESSAGE_H + +#include <vdr/osdbase.h> +#include <vdr/skins.h> + +class cDisplayMessage : public cOsdObject +{ + cSkinDisplayMessage *displayMessage; + char *Message; + int Timer; + int Timeout; + + public: + + cDisplayMessage(const char *message, int timeout = 3) + { + displayMessage = NULL; + Message = strdup(message); + Timer = 0; + Timeout = timeout; + } + + virtual ~cDisplayMessage() + { + delete displayMessage; + free(Message); + } + + void Update(const char *message) + { + Timer = 0; + free(Message); + Message = strdup(message); + Show(); + } + + virtual eOSState ProcessKey(eKeys Key) + { + if(Key == kNone && Timer++ > Timeout) + return osEnd; + + if(Key != kNone) { +LOGMSG("PutBack: %d , %s", (int)Key, cKey::ToString(Key)); + // put back and close + cRemote::Put(Key, true); + return osEnd; + } + + return osContinue; + } + + virtual void Show(void) + { +if(cRemote::HasKeys()) LOGMSG("Show, HasKeys"); + if(!displayMessage) + displayMessage = Skins.Current()->DisplayMessage(); + + displayMessage->SetMessage(mtInfo, Message); + displayMessage->Flush(); + } + +}; + +#endif |