vdr 2.7.2
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.4 2024/09/19 09:49:02 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();
29 void SetText(const char *Text);
30 virtual void Display(void);
31 virtual eOSState ProcessKey(eKeys Key);
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);
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();
70 virtual eOSState ProcessKey(eKeys Key);
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();
93 virtual eOSState ProcessKey(eKeys Key);
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);
103 virtual eOSState ProcessKey(eKeys Key);
104 };
105
106class cMenuMain : public cOsdMenu {
107private:
114 void Set(void);
115 bool Update(bool Force = false);
116public:
117 cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false);
118 virtual eOSState ProcessKey(eKeys Key);
119 static cOsdObject *PluginOsdObject(void);
120 };
121
123private:
125 int group;
136 void DisplayChannel(void);
137 void DisplayInfo(void);
138 void Refresh(void);
139 const cChannel *NextAvailableChannel(const cChannel *Channel, int Direction);
140public:
141 cDisplayChannel(int Number, bool Switched);
142 cDisplayChannel(eKeys FirstKey);
143 virtual ~cDisplayChannel();
144 virtual eOSState ProcessKey(eKeys Key);
145 static bool IsOpen(void) { return currentDisplayChannel != NULL; }
146 };
147
149private:
153 virtual void Show(void);
154 cDisplayVolume(void);
155public:
156 virtual ~cDisplayVolume();
157 static cDisplayVolume *Create(void);
158 static void Process(eKeys Key);
160 };
161
163private:
167 char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
170 virtual void Show(void);
171 cDisplayTracks(void);
172public:
173 virtual ~cDisplayTracks();
174 static bool IsOpen(void) { return currentDisplayTracks != NULL; }
175 static cDisplayTracks *Create(void);
176 static void Process(eKeys Key);
178 };
179
181private:
185 char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
188 virtual void Show(void);
190public:
191 virtual ~cDisplaySubtitleTracks();
192 static bool IsOpen(void) { return currentDisplayTracks != NULL; }
193 static cDisplaySubtitleTracks *Create(void);
194 static void Process(eKeys Key);
196 };
197
199bool CamMenuActive(void);
200
202public:
203 virtual ~cRecordingFilter(void) {};
204 virtual bool Filter(const cRecording *Recording) const = 0;
206 };
207
209
210class cMenuRecordings : public cOsdMenu {
211private:
212 char *base;
213 int level;
217 static cString path;
219 void SetHelpKeys(void);
220 void Set(bool Refresh = false);
221 bool Open(bool OpenSubMenus = false);
222 eOSState Play(void);
223 eOSState Rewind(void);
224 eOSState Delete(void);
225 eOSState Info(void);
226 eOSState Sort(void);
228protected:
230public:
231 cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false, const cRecordingFilter *Filter = NULL);
233 virtual eOSState ProcessKey(eKeys Key);
234 static void SetRecording(const char *FileName);
235 };
236
238private:
242 const cEvent *event;
244 char *fileName;
245 bool GetEvent(void);
246public:
247 cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer = NULL, bool Pause = false);
248 virtual ~cRecordControl();
249 bool Process(time_t t);
250 cDevice *Device(void) { return device; }
251 void Stop(bool ExecuteUserCommand = true);
252 const char *InstantId(void) { return instantId; }
253 const char *FileName(void) { return fileName; }
254 cTimer *Timer(void) { return timer; }
255 };
256
258private:
260 static int state;
261public:
262 static bool Start(cTimers *Timers, cTimer *Timer, bool Pause = false);
263 static bool Start(bool Pause = false);
264 static void Stop(const char *InstantId);
265 static void Stop(cTimer *Timer);
266 static bool PauseLiveVideo(void);
267 static const char *GetInstantId(const char *LastInstantId);
268 static cRecordControl *GetRecordControl(const char *FileName);
269 static cRecordControl *GetRecordControl(const cTimer *Timer);
272 static bool Process(cTimers *Timers, time_t t);
273 static void ChannelDataModified(const cChannel *Channel);
274 static bool Active(void);
275 static void Shutdown(void);
276 static void ChangeState(void) { state++; }
277 static bool StateChanged(int &State);
278 };
279
281private:
287public:
288 cAdaptiveSkipper(void);
289 void Initialize(int *InitialValue, double FramesPerSecond);
290 int GetValue(eKeys Key);
291 };
292
294private:
308 void TimeSearchDisplay(void);
309 void TimeSearchProcess(eKeys Key);
310 void TimeSearch(void);
311 void ShowTimed(int Seconds = 0);
314 void ShowMode(void);
315 bool ShowProgress(bool Initial);
316 void MarkToggle(void);
317 void MarkJump(bool Forward);
318 void MarkMove(int Frames, bool MarkRequired);
319 void EditCut(void);
320 void EditTest(void);
321public:
322 cReplayControl(bool PauseLive = false);
323 virtual ~cReplayControl();
324 void Stop(void);
325 virtual cOsdObject *GetInfo(void);
326 virtual const cRecording *GetRecording(void);
327 virtual eOSState ProcessKey(eKeys Key);
328 virtual void Show(void);
329 virtual void Hide(void);
330 bool Visible(void) { return visible; }
331 virtual void ClearEditingMarks(void);
332 static void SetRecording(const char *FileName);
333 static const char *NowReplaying(void);
334 static const char *LastReplayed(void);
335 static void ClearLastReplayed(const char *FileName);
336 };
337
338void SetTrackDescriptions(int LiveChannel);
339
340#endif //__MENU_H
double framesPerSecond
Definition menu.h:284
cTimeMs timeout
Definition menu.h:286
cAdaptiveSkipper(void)
Definition menu.c:5704
eKeys lastKey
Definition menu.h:285
void Initialize(int *InitialValue, double FramesPerSecond)
Definition menu.c:5712
int * initialValue
Definition menu.h:282
int currentValue
Definition menu.h:283
int GetValue(eKeys Key)
Definition menu.c:5719
cTimeMs lastTime
Definition menu.h:127
const cChannel * channel
Definition menu.h:132
static bool IsOpen(void)
Definition menu.h:145
const cEvent * lastPresent
Definition menu.h:133
void DisplayChannel(void)
Definition menu.c:4822
virtual ~cDisplayChannel()
Definition menu.c:4815
const cEvent * lastFollowing
Definition menu.h:134
bool timeout
Definition menu.h:129
cSkinDisplayChannel * displayChannel
Definition menu.h:124
bool withInfo
Definition menu.h:126
void Refresh(void)
Definition menu.c:4849
const cPositioner * positioner
Definition menu.h:131
static cDisplayChannel * currentDisplayChannel
Definition menu.h:135
void DisplayInfo(void)
Definition menu.c:4830
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:4872
cDisplayChannel(int Number, bool Switched)
Definition menu.c:4768
const cChannel * NextAvailableChannel(const cChannel *Channel, int Direction)
Definition menu.c:4855
cSkinDisplayTracks * displayTracks
Definition menu.h:182
cDisplaySubtitleTracks(void)
Definition menu.c:5255
static void Process(eKeys Key)
Definition menu.c:5308
char * descriptions[ttMaxTrackTypes+1]
Definition menu.h:185
eTrackType types[ttMaxTrackTypes]
Definition menu.h:184
static bool IsOpen(void)
Definition menu.h:192
virtual void Show(void)
Definition menu.c:5290
static cDisplaySubtitleTracks * currentDisplayTracks
Definition menu.h:187
virtual ~cDisplaySubtitleTracks()
Definition menu.c:5281
static cDisplaySubtitleTracks * Create(void)
Definition menu.c:5297
eOSState ProcessKey(eKeys Key)
Definition menu.c:5314
char * descriptions[ttMaxTrackTypes+1]
Definition menu.h:167
static cDisplayTracks * Create(void)
Definition menu.c:5179
cDisplayTracks(void)
Definition menu.c:5135
cTimeMs timeout
Definition menu.h:165
virtual void Show(void)
Definition menu.c:5169
virtual ~cDisplayTracks()
Definition menu.c:5160
eOSState ProcessKey(eKeys Key)
Definition menu.c:5196
static cDisplayTracks * currentDisplayTracks
Definition menu.h:169
cSkinDisplayTracks * displayTracks
Definition menu.h:164
int numTracks
Definition menu.h:168
int audioChannel
Definition menu.h:168
static void Process(eKeys Key)
Definition menu.c:5190
static bool IsOpen(void)
Definition menu.h:174
eTrackType types[ttMaxTrackTypes]
Definition menu.h:166
static cDisplayVolume * Create(void)
Definition menu.c:5089
cSkinDisplayVolume * displayVolume
Definition menu.h:150
virtual ~cDisplayVolume()
Definition menu.c:5078
eOSState ProcessKey(eKeys Key)
Definition menu.c:5102
cTimeMs timeout
Definition menu.h:151
static void Process(eKeys Key)
Definition menu.c:5096
virtual void Show(void)
Definition menu.c:5084
cDisplayVolume(void)
Definition menu.c:5069
static cDisplayVolume * currentDisplayVolume
Definition menu.h:152
void Forward(void)
Definition dvbplayer.c:1033
Definition epg.h:73
Definition tools.h:631
eOSState Execute(void)
Definition menu.c:2240
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:2195
virtual ~cMenuCommands()
Definition menu.c:2212
cString title
Definition menu.h:61
cString command
Definition menu.h:62
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:2287
bool Parse(const char *s)
Definition menu.c:2217
char * result
Definition menu.h:64
cString parameters
Definition menu.h:60
bool addIfConfirmed
Definition menu.h:79
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:1146
eOSState SetFolder(void)
Definition menu.c:1115
cMenuEditDateItem * firstday
Definition menu.h:85
static const cTimer * addedTimer
Definition menu.h:75
int channel
Definition menu.h:78
cTimer data
Definition menu.h:77
void SetHelpKeys(void)
Definition menu.c:1067
cMenuEditStrItem * file
Definition menu.h:83
cMenuEditStrItem * pattern
Definition menu.h:82
cMenuEditDateItem * day
Definition menu.h:84
static const cTimer * AddedTimer(void)
Definition menu.c:1060
cTimer * timer
Definition menu.h:76
cMenuEditTimer(cTimer *Timer, bool New=false)
Definition menu.c:1015
void SetFirstDayItem(void)
Definition menu.c:1072
char remote[HOST_NAME_MAX]
Definition menu.h:81
cStringList svdrpServerNames
Definition menu.h:80
void SetPatternItem(bool Initial=false)
Definition menu.c:1085
virtual ~cMenuEditTimer()
Definition menu.c:1054
const cEvent * event
Definition menu.h:99
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:1522
virtual void Display(void)
Definition menu.c:1514
cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch=false, bool Buttons=false)
Definition menu.c:1497
cMenuFolder(const char *Title, cList< cNestedItem > *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path=NULL)
Definition menu.c:792
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:972
eOSState Delete(void)
Definition menu.c:920
int helpKeys
Definition menu.h:41
eOSState New(void)
Definition menu.c:914
cNestedItemList * nestedItemList
Definition menu.h:36
cList< cNestedItem > * list
Definition menu.h:37
eOSState SetFolder(void)
Definition menu.c:948
cString dir
Definition menu.h:38
void Set(const char *CurrentFolder=NULL)
Definition menu.c:856
void DescendPath(const char *Path)
Definition menu.c:881
cOsdItem * firstFolder
Definition menu.h:39
eOSState Edit(void)
Definition menu.c:936
eOSState Select(bool Open)
Definition menu.c:898
bool editing
Definition menu.h:40
cString GetFolder(void)
Definition menu.c:959
void SetHelpKeys(void)
Definition menu.c:808
cOsdItem * cancelEditingItem
Definition menu.h:110
cOsdItem * stopRecordingItem
Definition menu.h:111
void Set(void)
Definition menu.c:4549
int recordControlsState
Definition menu.h:112
bool replaying
Definition menu.h:108
cOsdItem * stopReplayItem
Definition menu.h:109
bool Update(bool Force=false)
Definition menu.c:4586
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:4644
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
Definition menu.c:4518
static cOsdObject * pluginOsdObject
Definition menu.h:113
static cOsdObject * PluginOsdObject(void)
Definition menu.c:4542
static cString path
Definition menu.h:217
void Set(bool Refresh=false)
Definition menu.c:3144
bool Open(bool OpenSubMenus=false)
Definition menu.c:3219
eOSState Sort(void)
Definition menu.c:3393
static void SetRecording(const char *FileName)
Definition menu.c:3203
eOSState Info(void)
Definition menu.c:3365
eOSState Play(void)
Definition menu.c:3235
const cRecordingFilter * filter
Definition menu.h:216
static cString fileName
Definition menu.h:218
char * base
Definition menu.h:212
eOSState Rewind(void)
Definition menu.c:3249
cStateKey recordingsStateKey
Definition menu.h:214
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false, const cRecordingFilter *Filter=NULL)
Definition menu.c:3093
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:3405
cString DirectoryName(void)
Definition menu.c:3208
void SetHelpKeys(void)
Definition menu.c:3123
eOSState Delete(void)
Definition menu.c:3315
eDvbFont font
Definition menu.h:25
void SetText(const char *Text)
Definition menu.c:629
virtual void Display(void)
Definition menu.c:635
cMenuText(const char *Title, const char *Text, eDvbFont Font=fontOsd)
Definition menu.c:615
virtual ~cMenuText()
Definition menu.c:624
char * text
Definition menu.h:24
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:643
const char * Title(void)
Definition osdbase.h:112
A steerable satellite dish generally points to the south on the northern hemisphere,...
Definition positioner.h:31
virtual ~cRecordControl()
Definition menu.c:5434
const char * InstantId(void)
Definition menu.h:252
void Stop(bool ExecuteUserCommand=true)
Definition menu.c:5466
const char * FileName(void)
Definition menu.h:253
cDevice * device
Definition menu.h:239
cTimer * timer
Definition menu.h:240
bool GetEvent(void)
Definition menu.c:5442
char * fileName
Definition menu.h:244
cTimer * Timer(void)
Definition menu.h:254
cRecorder * recorder
Definition menu.h:241
cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer=NULL, bool Pause=false)
Definition menu.c:5352
cDevice * Device(void)
Definition menu.h:250
const cEvent * event
Definition menu.h:242
bool Process(time_t t)
Definition menu.c:5488
cString instantId
Definition menu.h:243
static bool StateChanged(int &State)
Definition menu.c:5694
static const char * GetInstantId(const char *LastInstantId)
Definition menu.c:5613
static void ChannelDataModified(const cChannel *Channel)
Definition menu.c:5661
static bool Process(cTimers *Timers, time_t t)
Definition menu.c:5646
static bool PauseLiveVideo(void)
Definition menu.c:5598
static void Shutdown(void)
Definition menu.c:5687
static bool Start(cTimers *Timers, cTimer *Timer, bool Pause=false)
Definition menu.c:5503
static cRecordControl * RecordControls[]
Definition menu.h:5500
static bool Active(void)
Definition menu.c:5678
static void Stop(const char *InstantId)
Definition menu.c:5565
static cRecordControl * GetRecordControl(const char *FileName)
Definition menu.c:5626
static int state
Definition menu.h:260
static void ChangeState(void)
Definition menu.h:276
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:203
static void SetRecording(const char *FileName)
Definition menu.c:5831
static const char * LastReplayed(void)
Definition menu.c:5841
void MarkToggle(void)
Definition menu.c:6051
static cString fileName
Definition menu.h:313
void TimeSearchDisplay(void)
Definition menu.c:5961
static void ClearLastReplayed(const char *FileName)
Definition menu.c:5849
int lastTotal
Definition menu.h:301
void MarkMove(int Frames, bool MarkRequired)
Definition menu.c:6101
static cReplayControl * currentReplayControl
Definition menu.h:312
virtual eOSState ProcessKey(eKeys Key)
Definition menu.c:6195
bool timeSearchHide
Definition menu.h:306
void TimeSearchProcess(eKeys Key)
Definition menu.c:5979
void MarkJump(bool Forward)
Definition menu.c:6076
cMarks marks
Definition menu.h:297
void EditCut(void)
Definition menu.c:6139
int timeSearchTime
Definition menu.h:307
bool Visible(void)
Definition menu.h:330
cSkinDisplayReplay * displayReplay
Definition menu.h:295
void Stop(void)
Definition menu.c:5775
void ShowTimed(int Seconds=0)
Definition menu.c:5855
virtual const cRecording * GetRecording(void)
Returns the cRecording that is currently being replayed, or NULL if this player is not playing a cRec...
Definition menu.c:6187
virtual void ClearEditingMarks(void)
Clears any editing marks this player might be showing.
Definition menu.c:5821
bool lastForward
Definition menu.h:302
bool displayFrames
Definition menu.h:299
bool shown
Definition menu.h:299
time_t timeoutShow
Definition menu.h:304
void EditTest(void)
Definition menu.c:6163
bool timeSearchActive
Definition menu.h:306
virtual void Hide(void)
Definition menu.c:5872
bool ShowProgress(bool Initial)
Definition menu.c:5916
bool marksModified
Definition menu.h:298
int lastSpeed
Definition menu.h:303
cAdaptiveSkipper adaptiveSkipper
Definition menu.h:296
bool lastPlay
Definition menu.h:302
int timeSearchPos
Definition menu.h:307
virtual cOsdObject * GetInfo(void)
Returns an OSD object that displays information about the currently played programme.
Definition menu.c:6179
int lastErrors
Definition menu.h:300
void ShowMode(void)
Definition menu.c:5891
virtual ~cReplayControl()
Definition menu.c:5767
virtual void Show(void)
Definition menu.c:5867
cTimeMs updateTimer
Definition menu.h:305
void TimeSearch(void)
Definition menu.c:6033
bool visible
Definition menu.h:299
bool modeOnly
Definition menu.h:299
static const char * NowReplaying(void)
Definition menu.c:5836
cReplayControl(bool PauseLive=false)
Definition menu.c:5743
int lastCurrent
Definition menu.h:301
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:2490
bool CamMenuActive(void)
Definition menu.c:2499
void SetTrackDescriptions(int LiveChannel)
Definition menu.c:4722
eOSState
Definition osdbase.h:18
@ osUnknown
Definition osdbase.h:18
static const cCursesFont Font
Definition skincurses.c:31
Definition runvdr.c:107