vdr  2.4.0
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 4.8 2018/04/14 10:24:41 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 
22 class cMenuText : public cOsdMenu {
23 private:
24  char *text;
26 public:
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 
34 class cMenuFolder : public cOsdMenu {
35 private:
40  bool editing;
41  int helpKeys;
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);
51 public:
52  cMenuFolder(const char *Title, cNestedItemList *NestedItemList, const char *Path = NULL);
53  cString GetFolder(void);
54  virtual eOSState ProcessKey(eKeys Key);
55  };
56 
57 class cMenuCommands : public cOsdMenu {
58 private:
63  bool confirm;
64  char *result;
65  bool Parse(const char *s);
66  eOSState Execute(void);
67 public:
68  cMenuCommands(const char *Title, cList<cNestedItem> *Commands, const char *Parameters = NULL);
69  virtual ~cMenuCommands();
70  virtual eOSState ProcessKey(eKeys Key);
71  };
72 
73 class cMenuEditTimer : public cOsdMenu {
74 private:
75  static const cTimer *addedTimer;
78  int channel;
81  char remote[HOST_NAME_MAX];
85  eOSState SetFolder(void);
86  void SetFirstDayItem(void);
87  void SetHelpKeys(void);
88 public:
89  cMenuEditTimer(cTimer *Timer, bool New = false);
90  virtual ~cMenuEditTimer();
91  virtual eOSState ProcessKey(eKeys Key);
92  static const cTimer *AddedTimer(void);
93  };
94 
95 class cMenuEvent : public cOsdMenu {
96 private:
97  const cEvent *event;
98 public:
99  cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch = false, bool Buttons = false);
100  virtual void Display(void);
101  virtual eOSState ProcessKey(eKeys Key);
102  };
103 
104 class cMenuMain : public cOsdMenu {
105 private:
106  bool replaying;
112  void Set(void);
113  bool Update(bool Force = false);
114 public:
115  cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false);
116  virtual eOSState ProcessKey(eKeys Key);
117  static cOsdObject *PluginOsdObject(void);
118  };
119 
120 class cDisplayChannel : public cOsdObject {
121 private:
123  int group;
124  bool withInfo;
126  int number;
127  bool timeout;
128  int osdState;
134  void DisplayChannel(void);
135  void DisplayInfo(void);
136  void Refresh(void);
137  const cChannel *NextAvailableChannel(const cChannel *Channel, int Direction);
138 public:
139  cDisplayChannel(int Number, bool Switched);
140  cDisplayChannel(eKeys FirstKey);
141  virtual ~cDisplayChannel();
142  virtual eOSState ProcessKey(eKeys Key);
143  static bool IsOpen(void) { return currentDisplayChannel != NULL; }
144  };
145 
146 class cDisplayVolume : public cOsdObject {
147 private:
151  virtual void Show(void);
152  cDisplayVolume(void);
153 public:
154  virtual ~cDisplayVolume();
155  static cDisplayVolume *Create(void);
156  static void Process(eKeys Key);
158  };
159 
160 class cDisplayTracks : public cOsdObject {
161 private:
165  char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
168  virtual void Show(void);
169  cDisplayTracks(void);
170 public:
171  virtual ~cDisplayTracks();
172  static bool IsOpen(void) { return currentDisplayTracks != NULL; }
173  static cDisplayTracks *Create(void);
174  static void Process(eKeys Key);
176  };
177 
179 private:
183  char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
186  virtual void Show(void);
188 public:
189  virtual ~cDisplaySubtitleTracks();
190  static bool IsOpen(void) { return currentDisplayTracks != NULL; }
191  static cDisplaySubtitleTracks *Create(void);
192  static void Process(eKeys Key);
194  };
195 
196 cOsdObject *CamControl(void);
197 bool CamMenuActive(void);
198 
200 public:
201  virtual ~cRecordingFilter(void) {};
202  virtual bool Filter(const cRecording *Recording) const = 0;
204  };
205 
206 class cMenuRecordingItem;
207 
208 class cMenuRecordings : public cOsdMenu {
209 private:
210  char *base;
211  int level;
213  int helpKeys;
215  static cString path;
217  void SetHelpKeys(void);
218  void Set(bool Refresh = false);
219  bool Open(bool OpenSubMenus = false);
220  eOSState Play(void);
221  eOSState Rewind(void);
222  eOSState Delete(void);
223  eOSState Info(void);
224  eOSState Sort(void);
225  eOSState Commands(eKeys Key = kNone);
226 protected:
227  cString DirectoryName(void);
228 public:
229  cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false, const cRecordingFilter *Filter = NULL);
231  virtual eOSState ProcessKey(eKeys Key);
232  static void SetPath(const char *Path);
233  static void SetRecording(const char *FileName);
234  };
235 
237 private:
241  const cEvent *event;
243  char *fileName;
244  bool GetEvent(void);
245 public:
246  cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer = NULL, bool Pause = false);
247  virtual ~cRecordControl();
248  bool Process(time_t t);
249  cDevice *Device(void) { return device; }
250  void Stop(bool ExecuteUserCommand = true);
251  const char *InstantId(void) { return instantId; }
252  const char *FileName(void) { return fileName; }
253  cTimer *Timer(void) { return timer; }
254  };
255 
257 private:
259  static int state;
260 public:
261  static bool Start(cTimers *Timers, cTimer *Timer, bool Pause = false);
262  static bool Start(bool Pause = false);
263  static void Stop(const char *InstantId);
264  static void Stop(cTimer *Timer);
265  static bool PauseLiveVideo(void);
266  static const char *GetInstantId(const char *LastInstantId);
267  static cRecordControl *GetRecordControl(const char *FileName);
268  static cRecordControl *GetRecordControl(const cTimer *Timer);
271  static bool Process(cTimers *Timers, time_t t);
272  static void ChannelDataModified(const cChannel *Channel);
273  static bool Active(void);
274  static void Shutdown(void);
275  static void ChangeState(void) { state++; }
276  static bool StateChanged(int &State);
277  };
278 
280 private:
286 public:
287  cAdaptiveSkipper(void);
288  void Initialize(int *InitialValue, double FramesPerSecond);
289  int GetValue(eKeys Key);
290  };
291 
293 private:
302  time_t timeoutShow;
306  void TimeSearchDisplay(void);
307  void TimeSearchProcess(eKeys Key);
308  void TimeSearch(void);
309  void ShowTimed(int Seconds = 0);
312  void ShowMode(void);
313  bool ShowProgress(bool Initial);
314  void MarkToggle(void);
315  void MarkJump(bool Forward);
316  void MarkMove(int Frames, bool MarkRequired);
317  void EditCut(void);
318  void EditTest(void);
319 public:
320  cReplayControl(bool PauseLive = false);
321  virtual ~cReplayControl();
322  void Stop(void);
323  virtual cOsdObject *GetInfo(void);
324  virtual const cRecording *GetRecording(void);
325  virtual eOSState ProcessKey(eKeys Key);
326  virtual void Show(void);
327  virtual void Hide(void);
328  bool Visible(void) { return visible; }
329  virtual void ClearEditingMarks(void);
330  static void SetRecording(const char *FileName);
331  static const char *NowReplaying(void);
332  static const char *LastReplayed(void);
333  static void ClearLastReplayed(const char *FileName);
334  };
335 
336 #endif //__MENU_H
cDisplaySubtitleTracks(void)
Definition: menu.c:5183
void ShowTimed(int Seconds=0)
Definition: menu.c:5761
static cString fileName
Definition: menu.h:311
bool lastForward
Definition: menu.h:300
Definition: epg.h:71
virtual void Show(void)
Definition: menu.c:5773
int helpKeys
Definition: menu.h:213
cOsdItem * stopReplayItem
Definition: menu.h:107
eOSState ProcessKey(eKeys Key)
Definition: menu.c:5030
cList< cNestedItem > * commands
Definition: menu.h:59
int lastCurrent
Definition: menu.h:299
cString DirectoryName(void)
Definition: menu.c:3113
cString GetFolder(void)
Definition: menu.c:942
virtual ~cMenuText()
Definition: menu.c:607
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:6094
const cRecordingFilter * filter
Definition: menu.h:214
void TimeSearchDisplay(void)
Definition: menu.c:5862
void DisplayChannel(void)
Definition: menu.c:4754
void MarkToggle(void)
Definition: menu.c:5952
char * text
Definition: menu.h:24
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:6086
bool modeOnly
Definition: menu.h:298
cOsdItem * stopRecordingItem
Definition: menu.h:109
const char * FileName(void)
Definition: menu.h:252
static const cTimer * AddedTimer(void)
Definition: menu.c:1024
bool timeout
Definition: menu.h:127
int currentValue
Definition: menu.h:282
bool shown
Definition: menu.h:298
static void Shutdown(void)
Definition: menu.c:5594
cDevice * Device(void)
Definition: menu.h:249
bool visible
Definition: menu.h:298
void Set(const char *CurrentFolder=NULL)
Definition: menu.c:839
cAdaptiveSkipper(void)
Definition: menu.c:5611
cTimeMs timeout
Definition: menu.h:285
virtual void Show(void)
Definition: menu.c:5097
void Refresh(void)
Definition: menu.c:4781
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:626
int lastTotal
Definition: menu.h:299
virtual void Hide(void)
Definition: menu.c:5778
bool lastPlay
Definition: menu.h:300
int timeSearchPos
Definition: menu.h:305
char * result
Definition: menu.h:64
static cDisplayVolume * Create(void)
Definition: menu.c:5017
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
Definition: menu.c:4417
int numTracks
Definition: menu.h:166
cString command
Definition: menu.h:62
char remote[HOST_NAME_MAX]
Definition: menu.h:81
eOSState Execute(void)
Definition: menu.c:2161
const cChannel * channel
Definition: menu.h:130
cString title
Definition: menu.h:61
int * initialValue
Definition: menu.h:281
cTimer * Timer(void)
Definition: menu.h:253
cNestedItemList Commands
Definition: config.c:275
bool Parse(const char *s)
Definition: menu.c:2138
Definition: menu.h:22
char * fileName
Definition: menu.h:243
bool confirm
Definition: menu.h:63
int osdState
Definition: menu.h:128
const char * Title(void)
Definition: osdbase.h:112
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:2208
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:164
cSkinDisplayReplay * displayReplay
Definition: menu.h:294
eOSState ProcessKey(eKeys Key)
Definition: menu.c:5242
cDisplayTracks(void)
Definition: menu.c:5063
static void Process(eKeys Key)
Definition: menu.c:5236
virtual void Show(void)
Definition: menu.c:5218
eOSState SetFolder(void)
Definition: menu.c:1049
static cDisplayChannel * currentDisplayChannel
Definition: menu.h:133
const cPositioner * positioner
Definition: menu.h:129
virtual void ClearEditingMarks(void)
Clears any editing marks this player might be showing.
Definition: menu.c:5727
eTrackType
Definition: device.h:63
eOSState Select(bool Open)
Definition: menu.c:881
bool displayFrames
Definition: menu.h:298
eOSState SetFolder(void)
Definition: menu.c:931
static bool StateChanged(int &State)
Definition: menu.c:5601
bool timeSearchActive
Definition: menu.h:304
int GetValue(eKeys Key)
Definition: menu.c:5626
int helpKeys
Definition: menu.h:41
int channel
Definition: menu.h:78
cTimeMs timeout
Definition: menu.h:163
static int state
Definition: menu.h:259
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:4554
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1084
const cChannel * NextAvailableChannel(const cChannel *Channel, int Direction)
Definition: menu.c:4787
static void SetRecording(const char *FileName)
Definition: menu.c:3108
static bool IsOpen(void)
Definition: menu.h:172
cTimer data
Definition: menu.h:77
cNestedItemList * nestedItemList
Definition: menu.h:36
int timeSearchTime
Definition: menu.h:305
cString instantId
Definition: menu.h:242
static void SetRecording(const char *FileName)
Definition: menu.c:5737
bool replaying
Definition: menu.h:106
Definition: keys.h:55
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:955
Definition: timers.h:27
eKeys lastKey
Definition: menu.h:284
A steerable satellite dish generally points to the south on the northern hemisphere, and to the north on the southern hemisphere (unless you&#39;re located directly on the equator, in which case the general direction is &quot;up&quot;).
Definition: positioner.h:31
static cString fileName
Definition: menu.h:216
time_t timeoutShow
Definition: menu.h:302
cDisplayChannel(int Number, bool Switched)
Definition: menu.c:4705
eOSState
Definition: osdbase.h:18
cOsdItem * firstFolder
Definition: menu.h:39
virtual void Show(void)
Definition: menu.c:5012
cStringList svdrpServerNames
Definition: menu.h:80
bool Process(time_t t)
Definition: menu.c:5401
static cDisplayTracks * currentDisplayTracks
Definition: menu.h:167
eDvbFont
Definition: font.h:21
void MarkMove(int Frames, bool MarkRequired)
Definition: menu.c:6002
cMenuCommands(const char *Title, cList< cNestedItem > *Commands, const char *Parameters=NULL)
Definition: menu.c:2116
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:165
Definition: font.h:22
eOSState Info(void)
Definition: menu.c:3267
void TimeSearch(void)
Definition: menu.c:5934
virtual ~cDisplayVolume()
Definition: menu.c:5006
void SetFirstDayItem(void)
Definition: menu.c:1036
double framesPerSecond
Definition: menu.h:283
int audioChannel
Definition: menu.h:166
virtual cOsdObject * GetInfo(void)
Returns an OSD object that displays information about the currently played programme.
Definition: menu.c:6078
bool GetEvent(void)
Definition: menu.c:5364
cSkinDisplayTracks * displayTracks
Definition: menu.h:162
cString dir
Definition: menu.h:38
bool addIfConfirmed
Definition: menu.h:79
cDevice * device
Definition: menu.h:238
static const cTimer * addedTimer
Definition: menu.h:75
cOsdItem * cancelEditingItem
Definition: menu.h:108
cSkinDisplayVolume * displayVolume
Definition: menu.h:148
void DescendPath(const char *Path)
Definition: menu.c:864
cList< cNestedItem > * list
Definition: menu.h:37
void SetText(const char *Text)
Definition: menu.c:612
static const cCursesFont Font
Definition: skincurses.c:32
static bool Process(cTimers *Timers, time_t t)
Definition: menu.c:5553
static bool Active(void)
Definition: menu.c:5585
virtual ~cDisplayChannel()
Definition: menu.c:4747
bool Visible(void)
Definition: menu.h:328
cTimeMs timeout
Definition: menu.h:149
const char * InstantId(void)
Definition: menu.h:251
cSkinDisplayTracks * displayTracks
Definition: menu.h:180
virtual ~cReplayControl()
Definition: menu.c:5673
static void Stop(const char *InstantId)
Definition: menu.c:5472
bool timeSearchHide
Definition: menu.h:304
cTimeMs updateTimer
Definition: menu.h:303
static cDisplaySubtitleTracks * Create(void)
Definition: menu.c:5225
virtual ~cRecordControl()
Definition: menu.c:5356
cRecorder * recorder
Definition: menu.h:240
cMenuEditStrItem * file
Definition: menu.h:82
cString parameters
Definition: menu.h:60
int recordControlsState
Definition: menu.h:110
void Stop(bool ExecuteUserCommand=true)
Definition: menu.c:5388
void MarkJump(bool Forward)
Definition: menu.c:5977
static const char * LastReplayed(void)
Definition: menu.c:5747
virtual ~cMenuEditTimer()
Definition: menu.c:1018
bool ShowProgress(bool Initial)
Definition: menu.c:5822
eOSState Play(void)
Definition: menu.c:3140
static cDisplaySubtitleTracks * currentDisplayTracks
Definition: menu.h:185
cTimer * timer
Definition: menu.h:76
eOSState ProcessKey(eKeys Key)
Definition: menu.c:5124
static const char * GetInstantId(const char *LastInstantId)
Definition: menu.c:5520
int lastSpeed
Definition: menu.h:301
static cRecordControl * RecordControls[]
Definition: menu.h:258
void TimeSearchProcess(eKeys Key)
Definition: menu.c:5880
static void ClearLastReplayed(const char *FileName)
Definition: menu.c:5755
bool editing
Definition: menu.h:40
const cEvent * lastFollowing
Definition: menu.h:132
bool marksModified
Definition: menu.h:297
void SetHelpKeys(void)
Definition: menu.c:1031
cAdaptiveSkipper adaptiveSkipper
Definition: menu.h:295
void EditTest(void)
Definition: menu.c:6062
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:4802
void ShowMode(void)
Definition: menu.c:5797
static void Process(eKeys Key)
Definition: menu.c:5024
~cMenuRecordings()
Definition: menu.c:3014
bool withInfo
Definition: menu.h:124
static void Process(eKeys Key)
Definition: menu.c:5118
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false, const cRecordingFilter *Filter=NULL)
Definition: menu.c:2992
cMenuFolder(const char *Title, cList< cNestedItem > *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path=NULL)
Definition: menu.c:775
static cOsdObject * pluginOsdObject
Definition: menu.h:111
eOSState New(void)
Definition: menu.c:897
virtual void Display(void)
Definition: menu.c:618
static bool IsOpen(void)
Definition: menu.h:190
eOSState Edit(void)
Definition: menu.c:919
cTimeMs lastTime
Definition: menu.h:125
virtual ~cRecordingFilter(void)
Definition: menu.h:201
cMenuText(const char *Title, const char *Text, eDvbFont Font=fontOsd)
Definition: menu.c:598
virtual ~cMenuCommands()
Definition: menu.c:2133
virtual ~cDisplayTracks()
Definition: menu.c:5088
void Forward(void)
Definition: dvbplayer.c:1023
static cDisplayTracks * Create(void)
Definition: menu.c:5107
eOSState Commands(eKeys Key=kNone)
Definition: menu.c:3280
cDisplayVolume(void)
Definition: menu.c:4997
cSkinDisplayChannel * displayChannel
Definition: menu.h:122
eDvbFont font
Definition: menu.h:25
cMenuEditTimer(cTimer *Timer, bool New=false)
Definition: menu.c:981
static cReplayControl * currentReplayControl
Definition: menu.h:310
void DisplayInfo(void)
Definition: menu.c:4762
void SetHelpKeys(void)
Definition: menu.c:791
cStateKey recordingsStateKey
Definition: menu.h:212
static void SetPath(const char *Path)
Definition: menu.c:3103
static void ChangeState(void)
Definition: menu.h:275
cMarks marks
Definition: menu.h:296
const cEvent * event
Definition: menu.h:241
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:182
virtual void Display(void)
Definition: menu.c:1437
static cRecordControl * GetRecordControl(const char *FileName)
Definition: menu.c:5533
char * base
Definition: menu.h:210
virtual ~cDisplaySubtitleTracks()
Definition: menu.c:5209
virtual bool Filter(const cRecording *Recording) const =0
Returns true if the given Recording shall be displayed in the Recordings menu.
eOSState Delete(void)
Definition: menu.c:3220
void SetHelpKeys(void)
Definition: menu.c:3023
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1445
eOSState Sort(void)
Definition: menu.c:3295
Definition: tools.h:369
static cOsdObject * PluginOsdObject(void)
Definition: menu.c:4456
void Set(bool Refresh=false)
Definition: menu.c:3044
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:3307
void Set(void)
Definition: menu.c:4463
static cString path
Definition: menu.h:215
cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch=false, bool Buttons=false)
Definition: menu.c:1420
cReplayControl(bool PauseLive=false)
Definition: menu.c:5650
static bool Start(cTimers *Timers, cTimer *Timer, bool Pause=false)
Definition: menu.c:5416
void Initialize(int *InitialValue, double FramesPerSecond)
Definition: menu.c:5619
eOSState Rewind(void)
Definition: menu.c:3154
int number
Definition: menu.h:126
static bool PauseLiveVideo(void)
Definition: menu.c:5505
bool Open(bool OpenSubMenus=false)
Definition: menu.c:3124
cTimer * timer
Definition: menu.h:239
cMenuEditDateItem * day
Definition: menu.h:83
bool Update(bool Force=false)
Definition: menu.c:4500
static bool IsOpen(void)
Definition: menu.h:143
eOSState Delete(void)
Definition: menu.c:903
const cEvent * lastPresent
Definition: menu.h:131
int track
Definition: menu.h:166
Definition: runvdr.c:107
static void ChannelDataModified(const cChannel *Channel)
Definition: menu.c:5568
eKeys
Definition: keys.h:16
const cEvent * event
Definition: menu.h:97
static cDisplayVolume * currentDisplayVolume
Definition: menu.h:150
void EditCut(void)
Definition: menu.c:6040
Definition: tools.h:176
cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:5280
cMenuEditDateItem * firstday
Definition: menu.h:84
static const char * NowReplaying(void)
Definition: menu.c:5742
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:183
void Stop(void)
Definition: menu.c:5681