vdr 2.8.1
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.12 2026/03/05 19:41:55 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;
81 char remote[HOST_NAME_MAX];
86 eOSState SetFolder(void);
87 void SetFirstDayItem(void);
88 void SetPatternItem(bool Initial = false);
89 void SetHelpKeys(void);
90public:
91 cMenuEditTimer(cTimer *Timer, bool New = false);
92 virtual ~cMenuEditTimer() override;
93 virtual eOSState ProcessKey(eKeys Key) override;
94 static const cTimer *AddedTimer(void);
95 };
96
97class cMenuEvent : public cOsdMenu {
98private:
99 const cEvent *event;
100public:
101 cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch = false, bool Buttons = false);
102 virtual void Display(void) override;
103 virtual eOSState ProcessKey(eKeys Key) override;
104 };
105
106class cMenuMain : public cOsdMenu {
107private:
115 void Set(void);
116 bool Update(bool Force = false);
117public:
118 cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false);
119 virtual eOSState ProcessKey(eKeys Key) override;
120 static cOsdObject *PluginOsdObject(void);
121 };
122
124private:
126 int group;
137 void DisplayChannel(void);
138 void DisplayInfo(void);
139 void Refresh(void);
140 const cChannel *NextAvailableChannel(const cChannel *Channel, int Direction);
141public:
142 cDisplayChannel(int Number, bool Switched);
143 cDisplayChannel(eKeys FirstKey);
144 virtual ~cDisplayChannel() override;
145 virtual eOSState ProcessKey(eKeys Key) override;
146 static bool IsOpen(void) { return currentDisplayChannel != NULL; }
147 };
148
150private:
154 virtual void Show(void) override;
155 cDisplayVolume(void);
156public:
157 virtual ~cDisplayVolume() override;
158 static cDisplayVolume *Create(void);
159 static void Process(eKeys Key);
161 };
162
164private:
168 char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
171 virtual void Show(void) override;
172 cDisplayTracks(void);
173public:
174 virtual ~cDisplayTracks() override;
175 static bool IsOpen(void) { return currentDisplayTracks != NULL; }
176 static cDisplayTracks *Create(void);
177 static void Process(eKeys Key);
179 };
180
182private:
186 char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
189 virtual void Show(void) override;
191public:
192 virtual ~cDisplaySubtitleTracks() override;
193 static bool IsOpen(void) { return currentDisplayTracks != NULL; }
194 static cDisplaySubtitleTracks *Create(void);
195 static void Process(eKeys Key);
197 };
198
200bool CamMenuActive(void);
201
203public:
204 virtual ~cRecordingFilter(void) {};
205 virtual bool Filter(const cRecording *Recording) const = 0;
207 };
208
210
211class cMenuRecordings : public cOsdMenu {
212private:
213 char *base;
214 int level;
222 static time_t toggleDelRec;
223 void SetHelpKeys(void);
224 void Set(bool Refresh = false);
225 bool Open(bool OpenSubMenus = false);
226 eOSState AdjustTitle(eOSState State, bool Redisplay = true);
227 eOSState Play(void);
228 eOSState Rewind(void);
229 eOSState Delete(void);
230 eOSState Restore(void);
231 eOSState Purge(void);
232 eOSState Info(void);
233 eOSState Sort(void);
235 void SetDeleted(const char *FileName);
236protected:
238public:
239 cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false, const cRecordingFilter *Filter = NULL, bool DelRecMenu = false);
241 virtual eOSState ProcessKey(eKeys Key) override;
242 static void SetRecording(const char *FileName);
243 };
244
246private:
250 const cEvent *event;
252 char *fileName;
253 bool GetEvent(void);
254public:
255 cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer = NULL, bool Pause = false);
256 virtual ~cRecordControl();
257 bool Process(time_t t);
258 cDevice *Device(void) { return device; }
259 void Stop(bool ExecuteUserCommand = true);
260 const char *InstantId(void) { return instantId; }
261 const char *FileName(void) { return fileName; }
262 cTimer *Timer(void) { return timer; }
263 };
264
266private:
268 static int state;
269public:
270 static bool Start(cTimers *Timers, cTimer *Timer, bool Pause = false);
271 static bool Start(bool Pause = false);
272 static void Stop(const char *InstantId);
273 static void Stop(cTimer *Timer);
274 static bool PauseLiveVideo(void);
275 static const char *GetInstantId(const char *LastInstantId);
276 static cRecordControl *GetRecordControl(const char *FileName);
277 static cRecordControl *GetRecordControl(const cTimer *Timer);
280 static bool Process(cTimers *Timers, time_t t);
281 static void ChannelDataModified(const cChannel *Channel);
282 static bool Active(void);
283 static void Shutdown(void);
284 static void ChangeState(void) { state++; }
285 static bool StateChanged(int &State);
286 };
287
289private:
295public:
296 cAdaptiveSkipper(void);
297 void Initialize(int *InitialValue, double FramesPerSecond);
298 int GetValue(eKeys Key);
299 };
300
302private:
317 void TimeSearchDisplay(void);
318 void TimeSearchProcess(eKeys Key);
319 void TimeSearch(void);
320 void ShowTimed(int Seconds = 0);
323 void ShowMode(void);
324 bool ShowProgress(bool Initial);
325 void MarkToggle(void);
326 void MarkJump(bool Forward);
327 void MarkMove(int Frames, bool MarkRequired);
328 void ErrorJump(bool Forward);
329 void EditCut(void);
330 void EditTest(void);
331public:
332 cReplayControl(bool PauseLive = false);
333 virtual ~cReplayControl() override;
334 static void DelTimeshiftTimer(void);
335 void Stop(void);
336 virtual cOsdObject *GetInfo(void) override;
337 virtual const cRecording *GetRecording(void) override;
338 virtual eOSState ProcessKey(eKeys Key) override;
339 virtual void Show(void) override;
340 virtual void Hide(void) override;
341 bool Visible(void) { return visible; }
342 virtual void ClearEditingMarks(void) override;
343 static void SetRecording(const char *FileName);
344 static const char *NowReplaying(void);
345 static const char *LastReplayed(void);
346 static void ClearLastReplayed(const char *FileName);
347 };
348
349void SetTrackDescriptions(int LiveChannel);
350
351#endif //__MENU_H
double framesPerSecond
Definition menu.h:292
cTimeMs timeout
Definition menu.h:294
cAdaptiveSkipper(void)
Definition menu.c:5956
eKeys lastKey
Definition menu.h:293
void Initialize(int *InitialValue, double FramesPerSecond)
Definition menu.c:5964
int * initialValue
Definition menu.h:290
int currentValue
Definition menu.h:291
int GetValue(eKeys Key)
Definition menu.c:5971
cTimeMs lastTime
Definition menu.h:128
const cChannel * channel
Definition menu.h:133
static bool IsOpen(void)
Definition menu.h:146
const cEvent * lastPresent
Definition menu.h:134
void DisplayChannel(void)
Definition menu.c:5070
const cEvent * lastFollowing
Definition menu.h:135
bool timeout
Definition menu.h:130
cSkinDisplayChannel * displayChannel
Definition menu.h:125
bool withInfo
Definition menu.h:127
virtual ~cDisplayChannel() override
Definition menu.c:5063
void Refresh(void)
Definition menu.c:5097
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:5120
const cPositioner * positioner
Definition menu.h:132
static cDisplayChannel * currentDisplayChannel
Definition menu.h:136
void DisplayInfo(void)
Definition menu.c:5078
cDisplayChannel(int Number, bool Switched)
Definition menu.c:5016
const cChannel * NextAvailableChannel(const cChannel *Channel, int Direction)
Definition menu.c:5103
virtual void Show(void) override
Definition menu.c:5538
cSkinDisplayTracks * displayTracks
Definition menu.h:183
cDisplaySubtitleTracks(void)
Definition menu.c:5503
static void Process(eKeys Key)
Definition menu.c:5556
char * descriptions[ttMaxTrackTypes+1]
Definition menu.h:186
eTrackType types[ttMaxTrackTypes]
Definition menu.h:185
static bool IsOpen(void)
Definition menu.h:193
static cDisplaySubtitleTracks * currentDisplayTracks
Definition menu.h:188
static cDisplaySubtitleTracks * Create(void)
Definition menu.c:5545
virtual ~cDisplaySubtitleTracks() override
Definition menu.c:5529
eOSState ProcessKey(eKeys Key)
Definition menu.c:5562
char * descriptions[ttMaxTrackTypes+1]
Definition menu.h:168
static cDisplayTracks * Create(void)
Definition menu.c:5427
cDisplayTracks(void)
Definition menu.c:5383
cTimeMs timeout
Definition menu.h:166
eOSState ProcessKey(eKeys Key)
Definition menu.c:5444
static cDisplayTracks * currentDisplayTracks
Definition menu.h:170
virtual void Show(void) override
Definition menu.c:5417
cSkinDisplayTracks * displayTracks
Definition menu.h:165
int numTracks
Definition menu.h:169
int audioChannel
Definition menu.h:169
static void Process(eKeys Key)
Definition menu.c:5438
static bool IsOpen(void)
Definition menu.h:175
virtual ~cDisplayTracks() override
Definition menu.c:5408
eTrackType types[ttMaxTrackTypes]
Definition menu.h:167
static cDisplayVolume * Create(void)
Definition menu.c:5337
cSkinDisplayVolume * displayVolume
Definition menu.h:151
virtual void Show(void) override
Definition menu.c:5332
eOSState ProcessKey(eKeys Key)
Definition menu.c:5350
cTimeMs timeout
Definition menu.h:152
static void Process(eKeys Key)
Definition menu.c:5344
cDisplayVolume(void)
Definition menu.c:5317
static cDisplayVolume * currentDisplayVolume
Definition menu.h:153
virtual ~cDisplayVolume() override
Definition menu.c:5326
cDvbPlayerControl(const char *FileName, bool PauseLive=false)
Definition dvbplayer.c:1004
void Forward(void)
Definition dvbplayer.c:1046
Definition epg.h:74
cList(const char *NeedsLocking=NULL)
Definition tools.h:646
eOSState Execute(void)
Definition menu.c:2258
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:2305
cList< cNestedItem > * commands
Definition menu.h:59
virtual ~cMenuCommands() override
Definition menu.c:2230
bool confirm
Definition menu.h:63
cMenuCommands(const char *Title, cList< cNestedItem > *Commands, const char *Parameters=NULL)
Definition menu.c:2213
cString title
Definition menu.h:61
cString command
Definition menu.h:62
bool Parse(const char *s)
Definition menu.c:2235
char * result
Definition menu.h:64
cString parameters
Definition menu.h:60
bool addIfConfirmed
Definition menu.h:79
eOSState SetFolder(void)
Definition menu.c:1117
cMenuEditDateItem * firstday
Definition menu.h:85
static const cTimer * addedTimer
Definition menu.h:75
int channel
Definition menu.h:78
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:1148
cTimer data
Definition menu.h:77
void SetHelpKeys(void)
Definition menu.c:1069
cMenuEditStrItem * file
Definition menu.h:83
virtual ~cMenuEditTimer() override
Definition menu.c:1056
cMenuEditStrItem * pattern
Definition menu.h:82
cMenuEditDateItem * day
Definition menu.h:84
static const cTimer * AddedTimer(void)
Definition menu.c:1062
cTimer * timer
Definition menu.h:76
cMenuEditTimer(cTimer *Timer, bool New=false)
Definition menu.c:1017
void SetFirstDayItem(void)
Definition menu.c:1074
char remote[HOST_NAME_MAX]
Definition menu.h:81
cStringList svdrpServerNames
Definition menu.h:80
void SetPatternItem(bool Initial=false)
Definition menu.c:1087
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:1541
const cEvent * event
Definition menu.h:99
virtual void Display(void) override
Definition menu.c:1532
cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch=false, bool Buttons=false)
Definition menu.c:1515
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:111
cOsdItem * stopRecordingItem
Definition menu.h:112
void Set(void)
Definition menu.c:4750
int recordControlsState
Definition menu.h:113
bool replaying
Definition menu.h:108
cOsdItem * stopReplayItem
Definition menu.h:110
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:4862
cOsdItem * deletedRecordingsItem
Definition menu.h:109
bool Update(bool Force=false)
Definition menu.c:4787
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
Definition menu.c:4702
static cOsdObject * pluginOsdObject
Definition menu.h:114
static cOsdObject * PluginOsdObject(void)
Definition menu.c:4743
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false, const cRecordingFilter *Filter=NULL, bool DelRecMenu=false)
Definition menu.c:3118
bool delRecMenu
Definition menu.h:217
void SetDeleted(const char *FileName)
Definition menu.c:3272
void Set(bool Refresh=false)
Definition menu.c:3186
bool Open(bool OpenSubMenus=false)
Definition menu.c:3293
static cString deletedName
Definition menu.h:221
eOSState Purge(void)
Definition menu.c:3491
eOSState Sort(void)
Definition menu.c:3551
static void SetRecording(const char *FileName)
Definition menu.c:3277
eOSState Info(void)
Definition menu.c:3521
eOSState Play(void)
Definition menu.c:3322
const cRecordingFilter * filter
Definition menu.h:219
static cString fileName
Definition menu.h:220
char * base
Definition menu.h:213
eOSState Rewind(void)
Definition menu.c:3336
cStateKey recordingsStateKey
Definition menu.h:215
eOSState AdjustTitle(eOSState State, bool Redisplay=true)
Definition menu.c:3309
eOSState Restore(void)
Definition menu.c:3455
cString DirectoryName(void)
Definition menu.c:3282
bool autoRefresh
Definition menu.h:218
static time_t toggleDelRec
Definition menu.h:222
void SetHelpKeys(void)
Definition menu.c:3155
eOSState Delete(void)
Definition menu.c:3401
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:3563
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
virtual ~cMenuText() override
Definition menu.c:626
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:119
cOsdObject(bool FastResponse=false)
Definition osdbase.h:79
A steerable satellite dish generally points to the south on the northern hemisphere,...
Definition positioner.h:31
virtual ~cRecordControl()
Definition menu.c:5685
const char * InstantId(void)
Definition menu.h:260
void Stop(bool ExecuteUserCommand=true)
Definition menu.c:5717
const char * FileName(void)
Definition menu.h:261
cDevice * device
Definition menu.h:247
cTimer * timer
Definition menu.h:248
bool GetEvent(void)
Definition menu.c:5693
char * fileName
Definition menu.h:252
cTimer * Timer(void)
Definition menu.h:262
cRecorder * recorder
Definition menu.h:249
cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer=NULL, bool Pause=false)
Definition menu.c:5603
cDevice * Device(void)
Definition menu.h:258
const cEvent * event
Definition menu.h:250
bool Process(time_t t)
Definition menu.c:5740
cString instantId
Definition menu.h:251
static bool StateChanged(int &State)
Definition menu.c:5946
static const char * GetInstantId(const char *LastInstantId)
Definition menu.c:5865
static void ChannelDataModified(const cChannel *Channel)
Definition menu.c:5913
static bool Process(cTimers *Timers, time_t t)
Definition menu.c:5898
static bool PauseLiveVideo(void)
Definition menu.c:5850
static void Shutdown(void)
Definition menu.c:5939
static bool Start(cTimers *Timers, cTimer *Timer, bool Pause=false)
Definition menu.c:5755
static cRecordControl * RecordControls[]
Definition menu.h:5752
static bool Active(void)
Definition menu.c:5930
static void Stop(const char *InstantId)
Definition menu.c:5817
static cRecordControl * GetRecordControl(const char *FileName)
Definition menu.c:5878
static int state
Definition menu.h:268
static void ChangeState(void)
Definition menu.h:284
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:204
static void SetRecording(const char *FileName)
Definition menu.c:6091
static const char * LastReplayed(void)
Definition menu.c:6101
void MarkToggle(void)
Definition menu.c:6311
virtual void Show(void) override
Definition menu.c:6127
static cString fileName
Definition menu.h:322
void TimeSearchDisplay(void)
Definition menu.c:6221
static void ClearLastReplayed(const char *FileName)
Definition menu.c:6109
int lastTotal
Definition menu.h:310
virtual eOSState ProcessKey(eKeys Key) override
Definition menu.c:6496
void MarkMove(int Frames, bool MarkRequired)
Definition menu.c:6361
static cReplayControl * currentReplayControl
Definition menu.h:321
bool timeSearchHide
Definition menu.h:315
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:6488
void TimeSearchProcess(eKeys Key)
Definition menu.c:6239
void MarkJump(bool Forward)
Definition menu.c:6336
cMarks marks
Definition menu.h:306
void EditCut(void)
Definition menu.c:6440
int timeSearchTime
Definition menu.h:316
bool Visible(void)
Definition menu.h:341
cSkinDisplayReplay * displayReplay
Definition menu.h:304
void Stop(void)
Definition menu.c:6040
void ShowTimed(int Seconds=0)
Definition menu.c:6115
static cTimer * timeshiftTimer
Definition menu.h:303
bool lastForward
Definition menu.h:311
virtual cOsdObject * GetInfo(void) override
Returns an OSD object that displays information about the currently played programme.
Definition menu.c:6480
bool displayFrames
Definition menu.h:308
bool shown
Definition menu.h:308
virtual void Hide(void) override
Definition menu.c:6132
time_t timeoutShow
Definition menu.h:313
void EditTest(void)
Definition menu.c:6464
bool timeSearchActive
Definition menu.h:315
bool ShowProgress(bool Initial)
Definition menu.c:6176
static void DelTimeshiftTimer(void)
Definition menu.c:6028
bool marksModified
Definition menu.h:307
int lastSpeed
Definition menu.h:312
cAdaptiveSkipper adaptiveSkipper
Definition menu.h:305
bool lastPlay
Definition menu.h:311
int timeSearchPos
Definition menu.h:316
virtual void ClearEditingMarks(void) override
Clears any editing marks this player might be showing.
Definition menu.c:6081
int lastErrors
Definition menu.h:309
virtual ~cReplayControl() override
Definition menu.c:6020
void ShowMode(void)
Definition menu.c:6151
void ErrorJump(bool Forward)
Definition menu.c:6399
cTimeMs updateTimer
Definition menu.h:314
void TimeSearch(void)
Definition menu.c:6293
bool visible
Definition menu.h:308
bool modeOnly
Definition menu.h:308
static const char * NowReplaying(void)
Definition menu.c:6096
cReplayControl(bool PauseLive=false)
Definition menu.c:5996
int lastCurrent
Definition menu.h:310
cNestedItemList Commands
Definition config.c:275
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:2508
bool CamMenuActive(void)
Definition menu.c:2517
void SetTrackDescriptions(int LiveChannel)
Definition menu.c:4970
eOSState
Definition osdbase.h:18
@ osUnknown
Definition osdbase.h:18
static const cCursesFont Font
Definition skincurses.c:31
Definition runvdr.c:107