vdr  2.4.1
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:
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;
99  const char *helpRed, *helpGreen, *helpYellow, *helpBlue;
101  char *status;
102  int digit;
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
cOsdMenu::SetStatus
void SetStatus(const char *s)
Definition: osdbase.c:167
cOsdMenu::menuCategory
eMenuCategory menuCategory
Definition: osdbase.h:95
osRecordings
@ osRecordings
Definition: osdbase.h:23
cOsdMenu::hasHotkeys
bool hasHotkeys
Definition: osdbase.h:103
cOsdMenu::subMenu
cOsdMenu * subMenu
Definition: osdbase.h:98
cOsdMenu::helpGreen
const char * helpGreen
Definition: osdbase.h:99
cOsdMenu::SubMenu
cOsdMenu * SubMenu(void)
Definition: osdbase.h:127
cOsdMenu::lastOffset
int lastOffset
Definition: osdbase.h:94
cOsdItem::SetMenuItem
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
Definition: osdbase.c:58
cOsdObject::~cOsdObject
virtual ~cOsdObject()
Definition: osdbase.h:78
cListObject::Index
int Index(void) const
Definition: tools.c:2072
cOsdMenu::HotKey
eOSState HotKey(eKeys Key)
Definition: osdbase.c:504
cOsdMenu::cols
int cols[cSkinDisplayMenu::MaxTabs]
Definition: osdbase.h:92
cOsdMenu::RefreshCurrent
void RefreshCurrent(void)
Definition: osdbase.c:290
cOsdObject::isMenu
bool isMenu
Definition: osdbase.h:72
cOsdMenu::Clear
virtual void Clear(void)
Definition: osdbase.c:329
cOsdMenu::PageUp
void PageUp(void)
Definition: osdbase.c:426
osStopReplay
@ osStopReplay
Definition: osdbase.h:31
cOsdItem::fresh
bool fresh
Definition: osdbase.h:54
cOsdMenu::DisplayItem
void DisplayItem(cOsdItem *Item)
Definition: osdbase.c:315
cOsdMenu::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: osdbase.c:540
osPause
@ osPause
Definition: osdbase.h:27
cOsdMenu::SetCols
void SetCols(int c0, int c1=0, int c2=0, int c3=0, int c4=0)
Definition: osdbase.c:152
osContinue
@ osContinue
Definition: osdbase.h:19
osUser2
@ osUser2
Definition: osdbase.h:37
cOsdItem::SetFresh
void SetFresh(bool Fresh)
Definition: osdbase.c:53
cOsdItem::Set
virtual void Set(void)
Definition: osdbase.h:64
cOsdMenu::Del
virtual void Del(int Index)
Definition: osdbase.c:199
cSkinDisplayMenu::MaxTabs
@ MaxTabs
Definition: skins.h:168
cOsdMenu
Definition: osdbase.h:85
cOsdMenu::NeedsFastResponse
virtual bool NeedsFastResponse(void)
Definition: osdbase.h:135
osd.h
eKeys
eKeys
Definition: keys.h:16
osSchedule
@ osSchedule
Definition: osdbase.h:20
cOsdItem
Definition: osdbase.h:48
eMenuSortMode
eMenuSortMode
Definition: skins.h:137
cOsdObject
Definition: osdbase.h:69
osUser8
@ osUser8
Definition: osdbase.h:43
cOsdMenu::PageDown
void PageDown(void)
Definition: osdbase.c:461
osCommands
@ osCommands
Definition: osdbase.h:26
cOsdObject::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: osdbase.h:82
osUser6
@ osUser6
Definition: osdbase.h:41
cOsdMenu::CursorDown
void CursorDown(void)
Definition: osdbase.c:385
cOsdMenu::Ins
void Ins(cOsdItem *Item, bool Current=false, cOsdItem *Before=NULL)
Definition: osdbase.c:220
cOsdMenu::marked
int marked
Definition: osdbase.h:93
cOsdMenu::status
char * status
Definition: osdbase.h:101
cListObject
Definition: tools.h:493
eMenuCategory
eMenuCategory
Definition: skins.h:104
cOsdMenu::SetHasHotkeys
void SetHasHotkeys(bool HasHotkeys=true)
Definition: osdbase.c:161
cOsdObject::NeedsFastResponse
virtual bool NeedsFastResponse(void)
Definition: osdbase.h:79
cOsdMenu::SetDisplayMenu
void SetDisplayMenu(void)
Definition: osdbase.c:128
cOsdMenu::SetMenuSortMode
void SetMenuSortMode(eMenuSortMode MenuSortMode)
Definition: osdbase.c:123
cOsdItem::SetSelectable
void SetSelectable(bool Selectable)
Definition: osdbase.c:48
cOsdMenu::DisplayMenu
cSkinDisplayMenu * DisplayMenu(void)
Definition: osdbase.h:107
cOsdMenu::digit
int digit
Definition: osdbase.h:102
cOsdMenu::SetMenuCategory
void SetMenuCategory(eMenuCategory MenuCategory)
Definition: osdbase.c:118
eOSState
eOSState
Definition: osdbase.h:18
cOsdMenu::displayMenuCount
static int displayMenuCount
Definition: osdbase.h:88
eMenuOrientation
eMenuOrientation
Definition: skins.h:145
cOsdMenu::Title
const char * Title(void)
Definition: osdbase.h:112
cOsdMenu::title
char * title
Definition: osdbase.h:91
os_User
@ os_User
Definition: osdbase.h:35
cOsdMenu::helpYellow
const char * helpYellow
Definition: osdbase.h:99
osTimers
@ osTimers
Definition: osdbase.h:22
cOsdMenu::displayMenu
static cSkinDisplayMenu * displayMenu
Definition: osdbase.h:87
cList
Definition: tools.h:594
cOsdItem::cOsdItem
cOsdItem(eOSState State=osUnknown)
Definition: osdbase.c:20
osUser9
@ osUser9
Definition: osdbase.h:44
cOsdObject::IsMenu
bool IsMenu(void) const
Definition: osdbase.h:80
cSkinDisplayMenu
Definition: skins.h:150
cOsdMenu::helpDisplayed
bool helpDisplayed
Definition: osdbase.h:100
osUser4
@ osUser4
Definition: osdbase.h:39
osUser5
@ osUser5
Definition: osdbase.h:40
cOsdObject::needsFastResponse
bool needsFastResponse
Definition: osdbase.h:73
osCancelEdit
@ osCancelEdit
Definition: osdbase.h:32
cOsdMenu::helpRed
const char * helpRed
Definition: osdbase.h:99
cOsdMenu::osdState
static int osdState
Definition: osdbase.h:89
osRecord
@ osRecord
Definition: osdbase.h:28
cOsdObject::SetNeedsFastResponse
void SetNeedsFastResponse(bool NeedsFastResponse)
Definition: osdbase.h:75
cOsdItem::~cOsdItem
virtual ~cOsdItem()
Definition: osdbase.c:37
cOsdMenu::Mark
void Mark(void)
Definition: osdbase.c:496
cOsdMenu::menuOrientation
eMenuOrientation menuOrientation
Definition: osdbase.h:97
osEnd
@ osEnd
Definition: osdbase.h:34
cOsdObject::cOsdObject
cOsdObject(bool FastResponse=false)
Definition: osdbase.h:77
osUser3
@ osUser3
Definition: osdbase.h:38
osUser10
@ osUser10
Definition: osdbase.h:45
skins.h
cOsdMenu::DisplayHelp
void DisplayHelp(bool Force=false)
Definition: osdbase.c:180
cOsdMenu::first
int first
Definition: osdbase.h:93
cOsdMenu::~cOsdMenu
virtual ~cOsdMenu()
Definition: osdbase.c:107
cOsdMenu::Current
int Current(void) const
Definition: osdbase.h:138
cOsdMenu::current
int current
Definition: osdbase.h:93
cOsdItem::Text
const char * Text(void) const
Definition: osdbase.h:63
cOsdObject::cOsdMenu
friend class cOsdMenu
Definition: osdbase.h:70
cOsdMenu::menuSortMode
eMenuSortMode menuSortMode
Definition: osdbase.h:96
osBack
@ osBack
Definition: osdbase.h:33
cOsdMenu::AddSubMenu
eOSState AddSubMenu(cOsdMenu *SubMenu)
Definition: osdbase.c:521
cOsdMenu::SelectableItem
bool SelectableItem(int idx)
Definition: osdbase.c:340
cOsdMenu::Display
virtual void Display(void)
Definition: osdbase.c:227
cOsdMenu::DisplayCurrent
void DisplayCurrent(bool Current)
Definition: osdbase.c:297
config.h
cOsdMenu::SetCurrent
void SetCurrent(cOsdItem *Item)
Definition: osdbase.c:282
osSetup
@ osSetup
Definition: osdbase.h:25
cOsdItem::SetText
void SetText(const char *Text, bool Copy=true)
Definition: osdbase.c:42
cOsdItem::Selectable
bool Selectable(void) const
Definition: osdbase.h:59
cOsdMenu::CursorUp
void CursorUp(void)
Definition: osdbase.c:346
cOsdMenu::CloseSubMenu
eOSState CloseSubMenu(bool ReDisplay=true)
Definition: osdbase.c:529
cOsdMenu::hk
const char * hk(const char *s)
Definition: osdbase.c:137
tools.h
cOsdItem::text
char * text
Definition: osdbase.h:50
osReplay
@ osReplay
Definition: osdbase.h:29
cOsdMenu::SetHelp
void SetHelp(const char *Red, const char *Green=NULL, const char *Yellow=NULL, const char *Blue=NULL)
Definition: osdbase.c:189
osUnknown
@ osUnknown
Definition: osdbase.h:18
cOsdItem::selectable
bool selectable
Definition: osdbase.h:52
cOsdMenu::SetTitle
void SetTitle(const char *Title)
Definition: osdbase.c:174
osUser7
@ osUser7
Definition: osdbase.h:42
cOsdMenu::helpBlue
const char * helpBlue
Definition: osdbase.h:99
osChannels
@ osChannels
Definition: osdbase.h:21
osUser1
@ osUser1
Definition: osdbase.h:36
cOsdMenu::Add
void Add(cOsdItem *Item, bool Current=false, cOsdItem *After=NULL)
Definition: osdbase.c:213
cOsdItem::state
eOSState state
Definition: osdbase.h:51
cOsdMenu::displayMenuItems
int displayMenuItems
Definition: osdbase.h:90
osPlugin
@ osPlugin
Definition: osdbase.h:24
cOsdMenu::HasSubMenu
bool HasSubMenu(void)
Definition: osdbase.h:126
cOsdObject::Show
virtual void Show(void)
Definition: osdbase.c:70
cOsdItem::ProcessKey
virtual eOSState ProcessKey(eKeys Key)
Definition: osdbase.c:63
osStopRecord
@ osStopRecord
Definition: osdbase.h:30