vdr 2.8.2
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 5.8 2026/05/30 12:27:12 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
59
60class cOsdItem : public cListObject {
61private:
62 char *text;
65protected:
66 bool fresh;
67public:
69 cOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
70 virtual ~cOsdItem() override;
71 bool Selectable(void) const { return selectable; }
72 void SetText(const char *Text, bool Copy = true);
73 void SetSelectable(bool Selectable);
74 void SetFresh(bool Fresh);
75 const char *Text(void) const { return text; }
76 virtual void Set(void) {}
77 virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
78 virtual eOSState ProcessKey(eKeys Key);
79 };
80
82 friend class cOsdMenu;
83private:
84 bool isMenu;
86protected:
88public:
89 cOsdObject(bool FastResponse = false) { isMenu = false; needsFastResponse = FastResponse; }
90 virtual ~cOsdObject() {}
91 virtual bool NeedsFastResponse(void) { return needsFastResponse; }
92 bool IsMenu(void) const { return isMenu; }
93 virtual void Show(void);
94 virtual eOSState ProcessKey(eKeys Key) { return osUnknown; }
95 };
96
97class cOsdMenu : public cOsdObject, public cList<cOsdItem> {
98private:
101 static int osdState;
104 char *title;
115 char *status;
116 int digit;
118 bool active;
119 void SetActive(bool Active);
120 void DisplayHelp(bool Force = false);
121 void DisplayNoStatus(void);
122protected:
123 void SetDisplayMenu(void);
125 const char *hk(const char *s);
126 void SetCols(int c0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
131 void SetHasHotkeys(bool HasHotkeys = true);
132 virtual void Clear(void) override;
133 const char *Title(void) { return title; }
134 int VisibleItem(int Idx);
135 bool SelectableItem(int idx);
136 void SetCurrent(cOsdItem *Item);
137 void RefreshCurrent(void);
138 void DisplayCurrent(bool Current);
139 void DisplayItem(cOsdItem *Item);
140 void CursorUp(void);
141 void CursorDown(void);
142 void PageUp(void);
143 void PageDown(void);
144 void Mark(void);
145 eOSState HotKey(eKeys Key);
147 eOSState CloseSubMenu(bool ReDisplay = true);
148 bool HasSubMenu(void) { return subMenu; }
149 cOsdMenu *SubMenu(void) { return subMenu; }
150 void SetStatus(const char *s);
151 void SetTitle(const char *Title);
152 void SetHelp(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
153 virtual void Del(int Index);
154public:
155 cOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
156 virtual ~cOsdMenu() override;
157 virtual bool NeedsFastResponse(void) override { return subMenu ? subMenu->NeedsFastResponse() : cOsdObject::NeedsFastResponse(); }
158 void SetMenuCategory(eMenuCategory MenuCategory);
159 void SetMenuSortMode(eMenuSortMode MenuSortMode);
160 int Current(void) const { return current; }
161 void Add(cOsdItem *Item, bool Current = false, cOsdItem *After = NULL);
162 void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
163 virtual void Display(void);
164 virtual eOSState ProcessKey(eKeys Key) override;
165 };
166
167#endif //__OSDBASE_H
cListObject(const cListObject &ListObject)
Definition tools.h:547
int Index(void) const
Definition tools.c:2118
cList(const char *NeedsLocking=NULL)
Definition tools.h:646
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
Definition osdbase.c:58
const char * Text(void) const
Definition osdbase.h:75
bool selectable
Definition osdbase.h:64
void SetSelectable(bool Selectable)
Definition osdbase.c:48
virtual eOSState ProcessKey(eKeys Key)
Definition osdbase.c:63
eOSState state
Definition osdbase.h:63
virtual void Set(void)
Definition osdbase.h:76
char * text
Definition osdbase.h:62
bool fresh
Definition osdbase.h:66
void SetFresh(bool Fresh)
Definition osdbase.c:53
bool Selectable(void) const
Definition osdbase.h:71
void SetText(const char *Text, bool Copy=true)
Definition osdbase.c:42
virtual ~cOsdItem() override
Definition osdbase.c:37
cOsdItem(eOSState State=osUnknown)
Definition osdbase.c:20
void Ins(cOsdItem *Item, bool Current=false, cOsdItem *Before=NULL)
Definition osdbase.c:234
virtual eOSState ProcessKey(eKeys Key) override
Definition osdbase.c:581
int displayMenuItems
Definition osdbase.h:103
int marked
Definition osdbase.h:106
eOSState HotKey(eKeys Key)
Definition osdbase.c:541
eOSState CloseSubMenu(bool ReDisplay=true)
Definition osdbase.c:569
void SetTitle(const char *Title)
Definition osdbase.c:187
char * title
Definition osdbase.h:104
static int osdState
Definition osdbase.h:101
void PageUp(void)
Definition osdbase.c:467
const char * helpBlue
Definition osdbase.h:113
bool conveyStatus
Definition osdbase.h:108
void DisplayCurrent(bool Current)
Definition osdbase.c:326
bool helpDisplayed
Definition osdbase.h:114
char * status
Definition osdbase.h:115
static cOsdMenu * topMenu
Definition osdbase.h:102
void SetActive(bool Active)
Definition osdbase.c:135
int Current(void) const
Definition osdbase.h:160
const char * helpYellow
Definition osdbase.h:113
int cols[cSkinDisplayMenu::MaxTabs]
Definition osdbase.h:105
bool SelectableItem(int idx)
Definition osdbase.c:381
const char * hk(const char *s)
Definition osdbase.c:149
void CursorDown(void)
Definition osdbase.c:426
void Mark(void)
Definition osdbase.c:533
void SetStatus(const char *s)
Definition osdbase.c:179
cOsdMenu * SubMenu(void)
Definition osdbase.h:149
void CursorUp(void)
Definition osdbase.c:387
void DisplayHelp(bool Force=false)
Definition osdbase.c:193
void DisplayItem(cOsdItem *Item)
Definition osdbase.c:348
eMenuCategory menuCategory
Definition osdbase.h:109
eOSState AddSubMenu(cOsdMenu *SubMenu)
Definition osdbase.c:559
virtual void Clear(void) override
Definition osdbase.c:362
void SetDisplayMenu(void)
Definition osdbase.c:140
void Add(cOsdItem *Item, bool Current=false, cOsdItem *After=NULL)
Definition osdbase.c:227
void PageDown(void)
Definition osdbase.c:500
void SetHasHotkeys(bool HasHotkeys=true)
Definition osdbase.c:173
void SetCols(int c0, int c1=0, int c2=0, int c3=0, int c4=0)
Sets the column widths to the given values, which are the number of characters in each column.
Definition osdbase.c:164
void SetCurrent(cOsdItem *Item)
Definition osdbase.c:311
bool hasHotkeys
Definition osdbase.h:117
int lastOffset
Definition osdbase.h:107
eMenuOrientation menuOrientation
Definition osdbase.h:111
cOsdMenu(const char *Title, int c0=0, int c1=0, int c2=0, int c3=0, int c4=0)
Definition osdbase.c:83
void SetMenuCategory(eMenuCategory MenuCategory)
Definition osdbase.c:125
void RefreshCurrent(void)
Definition osdbase.c:319
const char * helpRed
Definition osdbase.h:113
static cSkinDisplayMenu * displayMenu
Definition osdbase.h:99
void SetHelp(const char *Red, const char *Green=NULL, const char *Yellow=NULL, const char *Blue=NULL)
Definition osdbase.c:203
static int displayMenuCount
Definition osdbase.h:100
cSkinDisplayMenu * DisplayMenu(void)
Definition osdbase.h:124
virtual void Display(void)
Definition osdbase.c:248
bool HasSubMenu(void)
Definition osdbase.h:148
int VisibleItem(int Idx)
Returns the index in the menu if the item is currently visible, -1 otherwise.
Definition osdbase.c:373
void DisplayNoStatus(void)
Definition osdbase.c:241
virtual void Del(int Index)
Definition osdbase.c:213
virtual ~cOsdMenu() override
Definition osdbase.c:112
virtual bool NeedsFastResponse(void) override
Definition osdbase.h:157
const char * Title(void)
Definition osdbase.h:133
bool active
Definition osdbase.h:118
void SetMenuSortMode(eMenuSortMode MenuSortMode)
Definition osdbase.c:130
cOsdMenu * subMenu
Definition osdbase.h:112
int current
Definition osdbase.h:106
eMenuSortMode menuSortMode
Definition osdbase.h:110
const char * helpGreen
Definition osdbase.h:113
int digit
Definition osdbase.h:116
int first
Definition osdbase.h:106
bool needsFastResponse
Definition osdbase.h:85
virtual bool NeedsFastResponse(void)
Definition osdbase.h:91
virtual ~cOsdObject()
Definition osdbase.h:90
void SetNeedsFastResponse(bool NeedsFastResponse)
Definition osdbase.h:87
virtual eOSState ProcessKey(eKeys Key)
Definition osdbase.h:94
cOsdObject(bool FastResponse=false)
Definition osdbase.h:89
bool IsMenu(void) const
Definition osdbase.h:92
bool isMenu
Definition osdbase.h:84
virtual void Show(void)
Definition osdbase.c:70
friend class cOsdMenu
Definition osdbase.h:82
eKeys
Definition keys.h:16
eOSState
Definition osdbase.h:18
@ osUser20
Definition osdbase.h:57
@ os_User
Definition osdbase.h:37
@ osUser5
Definition osdbase.h:42
@ osRecordings
Definition osdbase.h:23
@ osCancelEdit
Definition osdbase.h:34
@ osUser19
Definition osdbase.h:56
@ osPause
Definition osdbase.h:29
@ osPlugin
Definition osdbase.h:26
@ osUser11
Definition osdbase.h:48
@ osUser18
Definition osdbase.h:55
@ osChannels
Definition osdbase.h:21
@ osStopReplay
Definition osdbase.h:33
@ osUser12
Definition osdbase.h:49
@ osUser13
Definition osdbase.h:50
@ osUser1
Definition osdbase.h:38
@ osUser8
Definition osdbase.h:45
@ osUser10
Definition osdbase.h:47
@ osRecord
Definition osdbase.h:30
@ osEnd
Definition osdbase.h:36
@ osSetup
Definition osdbase.h:27
@ osUser4
Definition osdbase.h:41
@ osStopRecord
Definition osdbase.h:32
@ osContinue
Definition osdbase.h:19
@ osUser6
Definition osdbase.h:43
@ osTimers
Definition osdbase.h:22
@ osReplay
Definition osdbase.h:31
@ osUser15
Definition osdbase.h:52
@ osUser17
Definition osdbase.h:54
@ osUser3
Definition osdbase.h:40
@ osRecsOpen
Definition osdbase.h:24
@ osUser2
Definition osdbase.h:39
@ osRecsDel
Definition osdbase.h:25
@ osUser16
Definition osdbase.h:53
@ osUnknown
Definition osdbase.h:18
@ osUser14
Definition osdbase.h:51
@ osUser9
Definition osdbase.h:46
@ osSchedule
Definition osdbase.h:20
@ osCommands
Definition osdbase.h:28
@ osBack
Definition osdbase.h:35
@ osUser7
Definition osdbase.h:44
eMenuOrientation
Definition skins.h:146
eMenuCategory
Definition skins.h:104
eMenuSortMode
Definition skins.h:138