vdr  2.4.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 4.5 2018/01/25 15:09:23 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 
35  os_User, // the following values can be used locally
46  };
47 
48 class cOsdItem : public cListObject {
49 private:
50  char *text;
52  bool selectable;
53 protected:
54  bool fresh;
55 public:
56  cOsdItem(eOSState State = osUnknown);
57  cOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
58  virtual ~cOsdItem();
59  bool Selectable(void) const { return selectable; }
60  void SetText(const char *Text, bool Copy = true);
61  void SetSelectable(bool Selectable);
62  void SetFresh(bool Fresh);
63  const char *Text(void) const { return text; }
64  virtual void Set(void) {}
65  virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
66  virtual eOSState ProcessKey(eKeys Key);
67  };
68 
69 class cOsdObject {
70  friend class cOsdMenu;
71 private:
72  bool isMenu;
74 protected:
75  void SetNeedsFastResponse(bool NeedsFastResponse) { needsFastResponse = NeedsFastResponse; }
76 public:
77  cOsdObject(bool FastResponse = false) { isMenu = false; needsFastResponse = FastResponse; }
78  virtual ~cOsdObject() {}
79  virtual bool NeedsFastResponse(void) { return needsFastResponse; }
80  bool IsMenu(void) const { return isMenu; }
81  virtual void Show(void);
82  virtual eOSState ProcessKey(eKeys Key) { return osUnknown; }
83  };
84 
85 class cOsdMenu : public cOsdObject, public cList<cOsdItem> {
86 private:
88  static int displayMenuCount;
89  static int osdState;
91  char *title;
93  int first, current, marked;
99  const char *helpRed, *helpGreen, *helpYellow, *helpBlue;
101  char *status;
102  int digit;
104  int key_nr;
106  void DisplayHelp(bool Force = false);
107 protected:
108  void SetDisplayMenu(void);
109  cSkinDisplayMenu *DisplayMenu(void) { return displayMenu; }
110  const char *hk(const char *s);
111  void SetCols(int c0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
112  void SetHasHotkeys(bool HasHotkeys = true);
113  virtual void Clear(void);
114  const char *Title(void) { return title; }
115  bool SelectableItem(int idx);
116  void SetCurrent(cOsdItem *Item);
117  void RefreshCurrent(void);
118  void DisplayCurrent(bool Current);
119  void DisplayItem(cOsdItem *Item);
120  void CursorUp(void);
121  void CursorDown(void);
122  void PageUp(void);
123  void PageDown(void);
124  void Mark(void);
125  eOSState HotKey(eKeys Key);
126  eOSState AddSubMenu(cOsdMenu *SubMenu);
127  eOSState CloseSubMenu(bool ReDisplay = true);
128  bool HasSubMenu(void) { return subMenu; }
129  cOsdMenu *SubMenu(void) { return subMenu; }
130  void SetStatus(const char *s);
131  void SetTitle(const char *Title);
132  void SetHelp(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
133  virtual void Del(int Index);
134 public:
135  cOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
136  virtual ~cOsdMenu();
137  virtual bool NeedsFastResponse(void) { return subMenu ? subMenu->NeedsFastResponse() : cOsdObject::NeedsFastResponse(); }
138  void SetMenuCategory(eMenuCategory MenuCategory);
139  void SetMenuSortMode(eMenuSortMode MenuSortMode);
140  int Current(void) const { return current; }
141  void Add(cOsdItem *Item, bool Current = false, cOsdItem *After = NULL);
142  void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
143  virtual void Display(void);
144  virtual eOSState ProcessKey(eKeys Key);
145  };
146 
147 #endif //__OSDBASE_H
eMenuOrientation
Definition: skins.h:145
int Index(void) const
Definition: tools.c:2072
int lastOffset
Definition: osdbase.h:94
int key_nr
Definition: osdbase.h:104
virtual bool NeedsFastResponse(void)
Definition: osdbase.h:137
cOsdItem(eOSState State=osUnknown)
Definition: osdbase.c:20
eMenuCategory menuCategory
Definition: osdbase.h:95
bool hasHotkeys
Definition: osdbase.h:103
cOsdMenu * subMenu
Definition: osdbase.h:98
int displayMenuItems
Definition: osdbase.h:90
cOsdMenu * SubMenu(void)
Definition: osdbase.h:129
const char * Title(void)
Definition: osdbase.h:114
Definition: tools.h:594
bool selectable
Definition: osdbase.h:52
bool fresh
Definition: osdbase.h:54
void SetFresh(bool Fresh)
Definition: osdbase.c:53
int Current(void) const
Definition: osdbase.h:140
bool IsMenu(void) const
Definition: osdbase.h:80
void SetNeedsFastResponse(bool NeedsFastResponse)
Definition: osdbase.h:75
virtual ~cOsdObject()
Definition: osdbase.h:78
cTimeMs lastActivity
Definition: osdbase.h:105
static cSkinDisplayMenu * displayMenu
Definition: osdbase.h:87
char * status
Definition: osdbase.h:101
eOSState
Definition: osdbase.h:18
const char * Text(void) const
Definition: osdbase.h:63
bool Selectable(void) const
Definition: osdbase.h:59
cOsdObject(bool FastResponse=false)
Definition: osdbase.h:77
Definition: osdbase.h:34
char * title
Definition: osdbase.h:91
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:99
virtual ~cOsdItem()
Definition: osdbase.c:37
cSkinDisplayMenu * DisplayMenu(void)
Definition: osdbase.h:109
int digit
Definition: osdbase.h:102
static int displayMenuCount
Definition: osdbase.h:88
int current
Definition: osdbase.h:93
eMenuSortMode menuSortMode
Definition: osdbase.h:96
virtual eOSState ProcessKey(eKeys Key)
Definition: osdbase.c:63
virtual void Show(void)
Definition: osdbase.c:70
virtual eOSState ProcessKey(eKeys Key)
Definition: osdbase.h:82
eMenuCategory
Definition: skins.h:104
bool isMenu
Definition: osdbase.h:72
virtual bool NeedsFastResponse(void)
Definition: osdbase.h:79
static int osdState
Definition: osdbase.h:89
char * text
Definition: osdbase.h:50
bool HasSubMenu(void)
Definition: osdbase.h:128
eMenuOrientation menuOrientation
Definition: osdbase.h:97
Definition: tools.h:369
virtual void Set(void)
Definition: osdbase.h:64
bool helpDisplayed
Definition: osdbase.h:100
Definition: osdbase.h:33
bool needsFastResponse
Definition: osdbase.h:73
eOSState state
Definition: osdbase.h:51
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
Definition: osdbase.c:58
eKeys
Definition: keys.h:16
eMenuSortMode
Definition: skins.h:137