vdr 2.8.3
menu.h
Go to the documentation of this file.
1/*
2 * menu.h: The actual menu implementations
3 *
4 * See the main source file 'vdr.c' for copyright information and
5 * how to reach the author.
6 *
7 * $Id: menu.h 5.15 2026/09/07 18:48:24 kls Exp $
8 */
9
10#ifndef __MENU_H
11#define __MENU_H
12
13#include "ci.h"
14#include "device.h"
15#include "epg.h"
16#include "osdbase.h"
17#include "dvbplayer.h"
18#include "menuitems.h"
19#include "recorder.h"
20#include "skins.h"
21
22class cMenuText : public cOsdMenu {
23private:
24 char *text;
26public:
27 cMenuText(const char *Title, const char *Text, eDvbFont Font = fontOsd);
28 virtual ~cMenuText() override;
29 void SetText(const char *Text);
30 virtual void Display(void) override;
31 virtual eOSState ProcessKey(eKeys Key) override;
32 };
33
34class cMenuFolder : public cOsdMenu {
35private:
40 bool editing;
42 void SetHelpKeys(void);
43 void Set(const char *CurrentFolder = NULL);
44 void DescendPath(const char *Path);
45 eOSState SetFolder(void);
46 eOSState Select(bool Open);
47 eOSState New(void);
48 eOSState Delete(void);
49 eOSState Edit(void);
50 cMenuFolder(const char *Title, cList<cNestedItem> *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path = NULL);
51public:
52 cMenuFolder(const char *Title, cNestedItemList *NestedItemList, const char *Path = NULL);
53 cString GetFolder(void);
54 virtual eOSState ProcessKey(eKeys Key) override;
55 };
56
57class cMenuCommands : public cOsdMenu {
58private:
63 bool confirm;
64 char *result;
65 bool Parse(const char *s);
66 eOSState Execute(void);
67public:
68 cMenuCommands(const char *Title, cList<cNestedItem> *Commands, const char *Parameters = NULL);
69 virtual ~cMenuCommands() override;
70 virtual eOSState ProcessKey(eKeys Key) override;
71 };
72
73class cMenuEditTimer : public cOsdMenu {
74private:
75 static const cTimer *addedTimer;
83 char remote[HOST_NAME_MAX];
90 eOSState SetFolder(void);
91 void SetFirstDayItem(void);
92 void SetPatternItem(bool Initial = false);
93 void SetHelpKeys(void);
94public:
95 cMenuEditTimer(cTimer *Timer, bool New = false);
96 virtual ~cMenuEditTimer() override;
97 virtual eOSState ProcessKey(eKeys Key) override;
98 static const cTimer *AddedTimer(void);
99 };
100
101class cMenuEvent : public cOsdMenu {
102private:
103 const cEvent *event;
104public:
105 cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch = false, bool Buttons = false);
106 virtual void Display(void) override;
107 virtual eOSState ProcessKey(eKeys Key) override;
108 };
109
110class cMenuMain : public cOsdMenu {
111private:
119 void Set(void);
120 bool Update(bool Force = false);
121public:
122 cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false);
123 virtual eOSState ProcessKey(eKeys Key) override;
124 static cOsdObject *PluginOsdObject(void);
125 };
126
128private:
130 int group;
141 void DisplayChannel(void);
142 void DisplayInfo(void);
143 void Refresh(void);
144 const cChannel *NextAvailableChannel(const cChannel *Channel, int Direction);
145public:
146 cDisplayChannel(int Number, bool Switched);
147 cDisplayChannel(eKeys FirstKey);
148 virtual ~cDisplayChannel() override;
149 virtual eOSState ProcessKey(eKeys Key) override;
150 static bool IsOpen(void) { return currentDisplayChannel != NULL; }
151 };
152
154private:
158 virtual void Show(void) override;
159 cDisplayVolume(void);
160public:
161 virtual ~cDisplayVolume() override;
162 static cDisplayVolume *Create(void);
163 static void Process(eKeys Key);
164 virtual eOSState ProcessKey(eKeys Key) override;
165 };
166
168private:
172 char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
175 virtual void Show(void) override;
176 cDisplayTracks(void);
177public:
178 virtual ~cDisplayTracks() override;
179 static bool IsOpen(void) { return currentDisplayTracks != NULL; }
180 static cDisplayTracks *Create(void);
181 static void Process(eKeys Key);
182 virtual eOSState ProcessKey(eKeys Key) override;
183 };
184
186private:
190 char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
193 virtual void Show(void) override;
195public:
196 virtual ~cDisplaySubtitleTracks() override;
197 static bool IsOpen(void) { return currentDisplayTracks != NULL; }
198 static cDisplaySubtitleTracks *Create(void);
199 static void Process(eKeys Key);
200 virtual eOSState ProcessKey(eKeys Key) override;
201 };
202
204bool CamMenuActive(void);
205
207public:
208 virtual ~cRecordingFilter(void) {};
209 virtual bool Filter(const cRecording *Recording) const = 0;
211 };
212
214
215class cMenuRecordings : public cOsdMenu {
216private:
217 char *base;
218 int level;
227 static time_t toggleDelRec;
228 void SetHelpKeys(void);
229 void Set(bool Refresh = false);
230 bool Open(bool OpenSubMenus = false);
231 eOSState AdjustTitle(eOSState State, bool Redisplay = true);
232 eOSState Play(void);
233 eOSState Rewind(void);
234 eOSState Delete(void);
235 eOSState Restore(void);
236 eOSState Purge(void);
237 eOSState Info(void);
238 eOSState Sort(void);
240 void SetDeleted(const char *FileName);
241protected:
243public:
244 cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false, const cRecordingFilter *Filter = NULL, bool DelRecMenu = false);
246 virtual eOSState ProcessKey(eKeys Key) override;
247 static void SetRecording(const char *FileName);
248 };
249
251private:
255 const cEvent *event;
257 char *fileName;
258 bool GetEvent(void);
259public:
260 cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer = NULL, bool Pause = false);
261 virtual ~cRecordControl();
262 bool Process(time_t t);
263 cDevice *Device(void) { return device; }
264 void Stop(bool ExecuteUserCommand = true);
265 const char *InstantId(void) { return instantId; }
266 const char *FileName(void) { return fileName; }
267 cTimer *Timer(void) { return timer; }
268 };
269
271private:
273 static int state;
274public:
275 static bool Start(cTimers *Timers, cTimer *Timer, bool Pause = false);
276 static bool Start(bool Pause = false);
277 static void Stop(const char *InstantId);
278 static void Stop(cTimer *Timer);
279 static bool PauseLiveVideo(void);
280 static const char *GetInstantId(const char *LastInstantId);
281 static cRecordControl *GetRecordControl(const char *FileName);
282 static cRecordControl *GetRecordControl(const cTimer *Timer);
285 static bool Process(cTimers *Timers, time_t t);
286 static void ChannelDataModified(const cChannel *Channel);
287 static bool Active(void);
288 static void Shutdown(void);
289 static void ChangeState(void) { state++; }
290 static bool StateChanged(int &State);
291 };
292
294private:
300public:
301 cAdaptiveSkipper(void);
302 void Initialize(int *InitialValue, double FramesPerSecond);
303 int GetValue(eKeys Key);
304 };
305
307private:
322 void TimeSearchDisplay(void);
323 void TimeSearchProcess(eKeys Key);
324 void TimeSearch(void);
325 void ShowTimed(int Seconds = 0);
328 void ShowMode(void);
329 bool ShowProgress(bool Initial);
330 void MarkToggle(void);
331 void MarkJump(bool Forward);
332 void MarkMove(int Frames, bool MarkRequired);
333 void ErrorJump(bool Forward);
334 void EditCut(void);
335 void EditTest(void);
336public:
337 cReplayControl(bool PauseLive = false);
338 virtual ~cReplayControl() override;
339 static void DelTimeshiftTimer(void);
340 void Stop(void);
341 virtual cOsdObject *GetInfo(void) override;
342 virtual const cRecording *GetRecording(void) override;
343 virtual eOSState ProcessKey(eKeys Key) override;
344 virtual void Show(void) override;
345 virtual void Hide(void) override;
346 bool Visible(void) { return visible; }
347 virtual void ClearEditingMarks(void) override;
348 static void SetRecording(const char *FileName);
349 static const char *NowReplaying(void);
350 static const char *LastReplayed(void);
351 static void ClearLastReplayed(const char *FileName);
352 };
353
354void SetTrackDescriptions(int LiveChannel);
355
356#endif //__MENU_H
double framesPerSecond
Definition menu.h:297
cTimeMs timeout
Definition menu.h:299
cAdaptiveSkipper(void)
Definition menu.c:5986
eKeys lastKey
Definition menu.h:298
void Initialize(int *InitialValue, double FramesPerSecond)
Definition menu.c:5994
int * initialValue
Definition menu.h:295
int currentValue
Definition menu.h:296
int GetValue(eKeys Key)
Definition menu.c:6001
cTimeMs lastTime
Definition menu.h:132
const cChannel * channel
Definition menu.h:137
static bool IsOpen(void)
Definition menu.h:150
const cEvent * lastPresent
Definition menu.h:138
void DisplayChannel(void)
Definition menu.c:5099
const cEvent * lastFollowing
Definition menu.h:139
bool timeout
Definition menu.h:134
cSkinDisplayChannel * displayChannel
Definition menu.h:129
bool withInfo
Definition menu.h:131
void Refresh(void)
Definition menu.c:5126
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:5149
const cPositioner * positioner
Definition menu.h:136
static cDisplayChannel * currentDisplayChannel
Definition menu.h:140
void DisplayInfo(void)
Definition menu.c:5107
cDisplayChannel(int Number, bool Switched)
Definition menu.c:5045
const cChannel * NextAvailableChannel(const cChannel *Channel, int Direction)
Definition menu.c:5132
virtual void Show(void) override
Definition menu.c:5567
cSkinDisplayTracks * displayTracks
Definition menu.h:187
cDisplaySubtitleTracks(void)
Definition menu.c:5532
static void Process(eKeys Key)
Definition menu.c:5585
char * descriptions[ttMaxTrackTypes+1]
Definition menu.h:190
eTrackType types[ttMaxTrackTypes]
Definition menu.h:189
static bool IsOpen(void)
Definition menu.h:197
static cDisplaySubtitleTracks * currentDisplayTracks
Definition menu.h:192
static cDisplaySubtitleTracks * Create(void)
Definition menu.c:5574
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:5591
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:5473
char * descriptions[ttMaxTrackTypes+1]
Definition menu.h:172
static cDisplayTracks * Create(void)
Definition menu.c:5456
cDisplayTracks(void)
Definition menu.c:5412
cTimeMs timeout
Definition menu.h:170
static cDisplayTracks * currentDisplayTracks
Definition menu.h:174
virtual void Show(void) override
Definition menu.c:5446
cSkinDisplayTracks * displayTracks
Definition menu.h:169
int numTracks
Definition menu.h:173
int audioChannel
Definition menu.h:173
static void Process(eKeys Key)
Definition menu.c:5467
static bool IsOpen(void)
Definition menu.h:179
eTrackType types[ttMaxTrackTypes]
Definition menu.h:171
static cDisplayVolume * Create(void)
Definition menu.c:5366
cSkinDisplayVolume * displayVolume
Definition menu.h:155
virtual void Show(void) override
Definition menu.c:5361
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:5379
cTimeMs timeout
Definition menu.h:156
static void Process(eKeys Key)
Definition menu.c:5373
cDisplayVolume(void)
Definition menu.c:5346
static cDisplayVolume * currentDisplayVolume
Definition menu.h:157
cDvbPlayerControl(const char *FileName, bool PauseLive=false)
Definition dvbplayer.c:1008
void Forward(void)
Definition dvbplayer.c:1050
Definition epg.h:74
cList(const char *NeedsLocking=NULL)
Definition tools.h:652
eOSState Execute(void)
Definition menu.c:2290
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:2337
cList< cNestedItem > * commands
Definition menu.h:59
bool confirm
Definition menu.h:63
cMenuCommands(const char *Title, cList< cNestedItem > *Commands, const char *Parameters=NULL)
Definition menu.c:2245
cString title
Definition menu.h:61
cString command
Definition menu.h:62
bool Parse(const char *s)
Definition menu.c:2267
char * result
Definition menu.h:64
cString parameters
Definition menu.h:60
bool addIfConfirmed
Definition menu.h:79
time_t oldStopTime
Definition menu.h:81
time_t oldStartTime
Definition menu.h:80
eOSState SetFolder(void)
Definition menu.c:1123
cMenuEditDateItem * firstday
Definition menu.h:87
static const cTimer * addedTimer
Definition menu.h:75
int channel
Definition menu.h:78
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:1154
cTimer data
Definition menu.h:77
void SetHelpKeys(void)
Definition menu.c:1075
cMenuEditStrItem * file
Definition menu.h:85
cMenuEditTimeItem * stop
Definition menu.h:89
cMenuEditStrItem * pattern
Definition menu.h:84
cMenuEditDateItem * day
Definition menu.h:86
static const cTimer * AddedTimer(void)
Definition menu.c:1068
cTimer * timer
Definition menu.h:76
cMenuEditTimer(cTimer *Timer, bool New=false)
Definition menu.c:1017
cMenuEditTimeItem * start
Definition menu.h:88
void SetFirstDayItem(void)
Definition menu.c:1080
char remote[HOST_NAME_MAX]
Definition menu.h:83
cStringList svdrpServerNames
Definition menu.h:82
void SetPatternItem(bool Initial=false)
Definition menu.c:1093
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:1571
const cEvent * event
Definition menu.h:103
virtual void Display(void) override
Definition menu.c:1562
cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch=false, bool Buttons=false)
Definition menu.c:1545
cMenuFolder(const char *Title, cList< cNestedItem > *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path=NULL)
Definition menu.c:794
eOSState Delete(void)
Definition menu.c:922
int helpKeys
Definition menu.h:41
eOSState New(void)
Definition menu.c:916
cNestedItemList * nestedItemList
Definition menu.h:36
cList< cNestedItem > * list
Definition menu.h:37
eOSState SetFolder(void)
Definition menu.c:950
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:974
cString dir
Definition menu.h:38
void Set(const char *CurrentFolder=NULL)
Definition menu.c:858
void DescendPath(const char *Path)
Definition menu.c:883
cOsdItem * firstFolder
Definition menu.h:39
eOSState Edit(void)
Definition menu.c:938
eOSState Select(bool Open)
Definition menu.c:900
bool editing
Definition menu.h:40
cString GetFolder(void)
Definition menu.c:961
void SetHelpKeys(void)
Definition menu.c:810
cOsdItem * cancelEditingItem
Definition menu.h:115
cOsdItem * stopRecordingItem
Definition menu.h:116
void Set(void)
Definition menu.c:4787
int recordControlsState
Definition menu.h:117
bool replaying
Definition menu.h:112
cOsdItem * stopReplayItem
Definition menu.h:114
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:4899
cOsdItem * deletedRecordingsItem
Definition menu.h:113
bool Update(bool Force=false)
Definition menu.c:4824
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
Definition menu.c:4744
static cOsdObject * pluginOsdObject
Definition menu.h:118
static cOsdObject * PluginOsdObject(void)
Definition menu.c:4780
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false, const cRecordingFilter *Filter=NULL, bool DelRecMenu=false)
Definition menu.c:3152
bool delRecMenu
Definition menu.h:222
void SetDeleted(const char *FileName)
Definition menu.c:3309
void Set(bool Refresh=false)
Definition menu.c:3221
bool Open(bool OpenSubMenus=false)
Definition menu.c:3330
static cString deletedName
Definition menu.h:226
eOSState Purge(void)
Definition menu.c:3531
eOSState Sort(void)
Definition menu.c:3591
static void SetRecording(const char *FileName)
Definition menu.c:3314
eOSState Info(void)
Definition menu.c:3561
eOSState Play(void)
Definition menu.c:3359
const cRecordingFilter * filter
Definition menu.h:224
static cString fileName
Definition menu.h:225
char * base
Definition menu.h:217
eOSState Rewind(void)
Definition menu.c:3373
cStateKey recordingsStateKey
Definition menu.h:219
eOSState AdjustTitle(eOSState State, bool Redisplay=true)
Definition menu.c:3346
eOSState Restore(void)
Definition menu.c:3495
int recordingsHandlerState
Definition menu.h:220
eOSState Commands(eKeys Key=kNone)
Definition menu.c:3576
cString DirectoryName(void)
Definition menu.c:3319
bool autoRefresh
Definition menu.h:223
static time_t toggleDelRec
Definition menu.h:227
void SetHelpKeys(void)
Definition menu.c:3190
eOSState Delete(void)
Definition menu.c:3441
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:3603
eDvbFont font
Definition menu.h:25
void SetText(const char *Text)
Definition menu.c:631
cMenuText(const char *Title, const char *Text, eDvbFont Font=fontOsd)
Definition menu.c:617
virtual void Display(void) override
Definition menu.c:637
char * text
Definition menu.h:24
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:645
cOsdMenu(const char *Title, int c0=0, int c1=0, int c2=0, int c3=0, int c4=0)
Definition osdbase.c:83
const char * Title(void)
Definition osdbase.h:133
cOsdObject(bool FastResponse=false)
Definition osdbase.h:89
A steerable satellite dish generally points to the south on the northern hemisphere,...
Definition positioner.h:31
const char * InstantId(void)
Definition menu.h:265
void Stop(bool ExecuteUserCommand=true)
Definition menu.c:5746
const char * FileName(void)
Definition menu.h:266
cDevice * device
Definition menu.h:252
cTimer * timer
Definition menu.h:253
bool GetEvent(void)
Definition menu.c:5722
char * fileName
Definition menu.h:257
cTimer * Timer(void)
Definition menu.h:267
cRecorder * recorder
Definition menu.h:254
cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer=NULL, bool Pause=false)
Definition menu.c:5632
cDevice * Device(void)
Definition menu.h:263
const cEvent * event
Definition menu.h:255
bool Process(time_t t)
Definition menu.c:5769
cString instantId
Definition menu.h:256
static bool StateChanged(int &State)
Definition menu.c:5976
static const char * GetInstantId(const char *LastInstantId)
Definition menu.c:5895
static void ChannelDataModified(const cChannel *Channel)
Definition menu.c:5943
static bool Process(cTimers *Timers, time_t t)
Definition menu.c:5928
static bool PauseLiveVideo(void)
Definition menu.c:5880
static void Shutdown(void)
Definition menu.c:5969
static bool Start(cTimers *Timers, cTimer *Timer, bool Pause=false)
Definition menu.c:5784
static cRecordControl * RecordControls[]
Definition menu.h:5781
static bool Active(void)
Definition menu.c:5960
static void Stop(const char *InstantId)
Definition menu.c:5846
static cRecordControl * GetRecordControl(const char *FileName)
Definition menu.c:5908
static int state
Definition menu.h:273
static void ChangeState(void)
Definition menu.h:289
virtual bool Filter(const cRecording *Recording) const =0
Returns true if the given Recording shall be displayed in the Recordings menu.
virtual ~cRecordingFilter(void)
Definition menu.h:208
static void SetRecording(const char *FileName)
Definition menu.c:6121
static const char * LastReplayed(void)
Definition menu.c:6131
void MarkToggle(void)
Definition menu.c:6341
virtual void Show(void) override
Definition menu.c:6157
static cString fileName
Definition menu.h:327
void TimeSearchDisplay(void)
Definition menu.c:6251
static void ClearLastReplayed(const char *FileName)
Definition menu.c:6139
int lastTotal
Definition menu.h:315
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:6530
void MarkMove(int Frames, bool MarkRequired)
Definition menu.c:6391
static cReplayControl * currentReplayControl
Definition menu.h:326
bool timeSearchHide
Definition menu.h:320
virtual const cRecording * GetRecording(void) override
Returns the cRecording that is currently being replayed, or NULL if this player is not playing a cRec...
Definition menu.c:6522
void TimeSearchProcess(eKeys Key)
Definition menu.c:6269
void MarkJump(bool Forward)
Definition menu.c:6366
cMarks marks
Definition menu.h:311
void EditCut(void)
Definition menu.c:6474
int timeSearchTime
Definition menu.h:321
bool Visible(void)
Definition menu.h:346
cSkinDisplayReplay * displayReplay
Definition menu.h:309
void Stop(void)
Definition menu.c:6070
void ShowTimed(int Seconds=0)
Definition menu.c:6145
static cTimer * timeshiftTimer
Definition menu.h:308
bool lastForward
Definition menu.h:316
virtual cOsdObject * GetInfo(void) override
Returns an OSD object that displays information about the currently played programme.
Definition menu.c:6514
bool displayFrames
Definition menu.h:313
bool shown
Definition menu.h:313
virtual void Hide(void) override
Definition menu.c:6162
time_t timeoutShow
Definition menu.h:318
void EditTest(void)
Definition menu.c:6498
bool timeSearchActive
Definition menu.h:320
bool ShowProgress(bool Initial)
Definition menu.c:6206
static void DelTimeshiftTimer(void)
Definition menu.c:6058
bool marksModified
Definition menu.h:312
int lastSpeed
Definition menu.h:317
cAdaptiveSkipper adaptiveSkipper
Definition menu.h:310
bool lastPlay
Definition menu.h:316
int timeSearchPos
Definition menu.h:321
virtual void ClearEditingMarks(void) override
Clears any editing marks this player might be showing.
Definition menu.c:6111
int lastErrors
Definition menu.h:314
void ShowMode(void)
Definition menu.c:6181
void ErrorJump(bool Forward)
Definition menu.c:6429
cTimeMs updateTimer
Definition menu.h:319
void TimeSearch(void)
Definition menu.c:6323
bool visible
Definition menu.h:313
bool modeOnly
Definition menu.h:313
static const char * NowReplaying(void)
Definition menu.c:6126
cReplayControl(bool PauseLive=false)
Definition menu.c:6026
int lastCurrent
Definition menu.h:315
cNestedItemList Commands
Definition config.c:276
eTrackType
Definition device.h:63
@ ttMaxTrackTypes
Definition device.h:73
eDvbFont
Definition font.h:21
@ fontOsd
Definition font.h:22
eKeys
Definition keys.h:16
@ kNone
Definition keys.h:55
cOsdObject * CamControl(void)
Definition menu.c:2540
bool CamMenuActive(void)
Definition menu.c:2549
void SetTrackDescriptions(int LiveChannel)
Definition menu.c:5018
eOSState
Definition osdbase.h:18
@ osUnknown
Definition osdbase.h:18