vdr  2.2.0
osdbase.h
Go to the documentation of this file.
1 /*
2  * osdbase.h: Basic interface to the On Screen Display
3  *
4  * See the main source file 'vdr.c' for copyright information and
5  * how to reach the author.
6  *
7  * $Id: osdbase.h 3.2 2015/01/15 10:09:18 kls Exp $
8  */
9 
10 #ifndef __OSDBASE_H
11 #define __OSDBASE_H
12 
13 #include "config.h"
14 #include "osd.h"
15 #include "skins.h"
16 #include "tools.h"
17 
36  os_User, // the following values can be used locally
47  };
48 
49 class cOsdItem : public cListObject {
50 private:
51  char *text;
53  bool selectable;
54 protected:
55  bool fresh;
56 public:
57  cOsdItem(eOSState State = osUnknown);
58  cOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
59  virtual ~cOsdItem();
60  bool Selectable(void) const { return selectable; }
61  void SetText(const char *Text, bool Copy = true);
62  void SetSelectable(bool Selectable);
63  void SetFresh(bool Fresh);
64  const char *Text(void) const { return text; }
65  virtual void Set(void) {}
66  virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
67  virtual eOSState ProcessKey(eKeys Key);
68  };
69 
70 class cOsdObject {
71  friend class cOsdMenu;
72 private:
73  bool isMenu;
75 protected:
77 public:
78  cOsdObject(bool FastResponse = false) { isMenu = false; needsFastResponse = FastResponse; }
79  virtual ~cOsdObject() {}
80  virtual bool NeedsFastResponse(void) { return needsFastResponse; }
81  bool IsMenu(void) const { return isMenu; }
82  virtual void Show(void);
83  virtual eOSState ProcessKey(eKeys Key) { return osUnknown; }
84  };
85 
86 class cOsdMenu : public cOsdObject, public cList<cOsdItem> {
87 private:
89  static int displayMenuCount;
91  char *title;
97  const char *helpRed, *helpGreen, *helpYellow, *helpBlue;
99  char *status;
100  int digit;
102  int key_nr;
104  void DisplayHelp(bool Force = false);
105 protected:
106  void SetDisplayMenu(void);
108  const char *hk(const char *s);
109  void SetCols(int c0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
110  void SetHasHotkeys(bool HasHotkeys = true);
111  virtual void Clear(void);
112  const char *Title(void) { return title; }
113  bool SelectableItem(int idx);
114  void SetCurrent(cOsdItem *Item);
115  void RefreshCurrent(void);
116  void DisplayCurrent(bool Current);
117  void DisplayItem(cOsdItem *Item);
118  void CursorUp(void);
119  void CursorDown(void);
120  void PageUp(void);
121  void PageDown(void);
122  void Mark(void);
123  eOSState HotKey(eKeys Key);
125  eOSState CloseSubMenu(bool ReDisplay = true);
126  bool HasSubMenu(void) { return subMenu; }
127  cOsdMenu *SubMenu(void) { return subMenu; }
128  void SetStatus(const char *s);
129  void SetTitle(const char *Title);
130  void SetHelp(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
131  virtual void Del(int Index);
132 public:
133  cOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
134  virtual ~cOsdMenu();
136  void SetMenuCategory(eMenuCategory MenuCategory);
137  void SetMenuSortMode(eMenuSortMode MenuSortMode);
138  int Current(void) const { return current; }
139  void Add(cOsdItem *Item, bool Current = false, cOsdItem *After = NULL);
140  void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
141  virtual void Display(void);
142  virtual eOSState ProcessKey(eKeys Key);
143  };
144 
145 #endif //__OSDBASE_H
virtual ~cOsdMenu()
Definition: osdbase.c:103
void SetStatus(const char *s)
Definition: osdbase.c:163
void DisplayItem(cOsdItem *Item)
Definition: osdbase.c:305
virtual void Del(int Index)
Definition: osdbase.c:195
const char * helpGreen
Definition: osdbase.h:97
const char * helpBlue
Definition: osdbase.h:97
int key_nr
Definition: osdbase.h:102
virtual bool NeedsFastResponse(void)
Definition: osdbase.h:135
void Add(cOsdItem *Item, bool Current=false, cOsdItem *After=NULL)
Definition: osdbase.c:209
cOsdItem(eOSState State=osUnknown)
Definition: osdbase.c:20
eMenuCategory menuCategory
Definition: osdbase.h:94
bool hasHotkeys
Definition: osdbase.h:101
cOsdMenu * subMenu
Definition: osdbase.h:96
int displayMenuItems
Definition: osdbase.h:90
cOsdMenu * SubMenu(void)
Definition: osdbase.h:127
virtual void Clear(void)
Definition: osdbase.c:319
int Index(void) const
Definition: tools.c:1989
eOSState HotKey(eKeys Key)
Definition: osdbase.c:490
void RefreshCurrent(void)
Definition: osdbase.c:280
const char * Title(void)
Definition: osdbase.h:112
Definition: tools.h:489
bool selectable
Definition: osdbase.h:53
void PageUp(void)
Definition: osdbase.c:412
bool fresh
Definition: osdbase.h:55
void SetFresh(bool Fresh)
Definition: osdbase.c:53
void SetDisplayMenu(void)
Definition: osdbase.c:124
void SetNeedsFastResponse(bool NeedsFastResponse)
Definition: osdbase.h:76
virtual ~cOsdObject()
Definition: osdbase.h:79
cTimeMs lastActivity
Definition: osdbase.h:103
int marked
Definition: osdbase.h:93
static cSkinDisplayMenu * displayMenu
Definition: osdbase.h:88
char * status
Definition: osdbase.h:99
eOSState
Definition: osdbase.h:18
void SetHasHotkeys(bool HasHotkeys=true)
Definition: osdbase.c:157
virtual eOSState ProcessKey(eKeys Key)
Definition: osdbase.c:564
void PageDown(void)
Definition: osdbase.c:446
void Ins(cOsdItem *Item, bool Current=false, cOsdItem *Before=NULL)
Definition: osdbase.c:216
void SetCols(int c0, int c1=0, int c2=0, int c3=0, int c4=0)
Definition: osdbase.c:148
cOsdObject(bool FastResponse=false)
Definition: osdbase.h:78
Definition: osdbase.h:35
void SetMenuCategory(eMenuCategory MenuCategory)
Definition: osdbase.c:114
void CursorDown(void)
Definition: osdbase.c:372
char * title
Definition: osdbase.h:91
cOsdMenu(const char *Title, int c0=0, int c1=0, int c2=0, int c3=0, int c4=0)
Definition: osdbase.c:81
void SetText(const char *Text, bool Copy=true)
Definition: osdbase.c:42
void SetSelectable(bool Selectable)
Definition: osdbase.c:48
const char * helpYellow
Definition: osdbase.h:97
virtual ~cOsdItem()
Definition: osdbase.c:37
virtual void Display(void)
Definition: osdbase.c:223
void Mark(void)
Definition: osdbase.c:480
cSkinDisplayMenu * DisplayMenu(void)
Definition: osdbase.h:107
int digit
Definition: osdbase.h:100
static int displayMenuCount
Definition: osdbase.h:89
int current
Definition: osdbase.h:93
eMenuSortMode menuSortMode
Definition: osdbase.h:95
virtual eOSState ProcessKey(eKeys Key)
Definition: osdbase.c:63
virtual void Show(void)
Definition: osdbase.c:70
void DisplayHelp(bool Force=false)
Definition: osdbase.c:176
int first
Definition: osdbase.h:93
virtual eOSState ProcessKey(eKeys Key)
Definition: osdbase.h:83
void SetCurrent(cOsdItem *Item)
Definition: osdbase.c:275
void DisplayCurrent(bool Current)
Definition: osdbase.c:287
void SetMenuSortMode(eMenuSortMode MenuSortMode)
Definition: osdbase.c:119
eOSState CloseSubMenu(bool ReDisplay=true)
Definition: osdbase.c:553
eMenuCategory
Definition: skins.h:91
bool isMenu
Definition: osdbase.h:73
const char * hk(const char *s)
Definition: osdbase.c:133
bool Selectable(void) const
Definition: osdbase.h:60
virtual bool NeedsFastResponse(void)
Definition: osdbase.h:80
void SetHelp(const char *Red, const char *Green=NULL, const char *Yellow=NULL, const char *Blue=NULL)
Definition: osdbase.c:185
bool SelectableItem(int idx)
Definition: osdbase.c:328
char * text
Definition: osdbase.h:51
bool HasSubMenu(void)
Definition: osdbase.h:126
void CursorUp(void)
Definition: osdbase.c:334
Definition: tools.h:333
virtual void Set(void)
Definition: osdbase.h:65
bool helpDisplayed
Definition: osdbase.h:98
bool IsMenu(void) const
Definition: osdbase.h:81
Definition: osdbase.h:34
bool needsFastResponse
Definition: osdbase.h:74
eOSState state
Definition: osdbase.h:52
const char * helpRed
Definition: osdbase.h:97
void SetTitle(const char *Title)
Definition: osdbase.c:170
eOSState AddSubMenu(cOsdMenu *SubMenu)
Definition: osdbase.c:545
int Current(void) const
Definition: osdbase.h:138
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
Definition: osdbase.c:58
int cols[cSkinDisplayMenu::MaxTabs]
Definition: osdbase.h:92
eKeys
Definition: keys.h:16
const char * Text(void) const
Definition: osdbase.h:64
eMenuSortMode
Definition: skins.h:124