vdr  2.2.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 3.8 2015/02/06 09:47:30 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:
77  int channel;
82  eOSState SetFolder(void);
83  void SetFirstDayItem(void);
84  void SetHelpKeys(void);
85 public:
86  cMenuEditTimer(cTimer *Timer, bool New = false);
87  virtual ~cMenuEditTimer();
88  virtual eOSState ProcessKey(eKeys Key);
89  };
90 
91 class cMenuEvent : public cOsdMenu {
92 private:
93  const cEvent *event;
94 public:
95  cMenuEvent(const cEvent *Event, bool CanSwitch = false, bool Buttons = false);
96  virtual void Display(void);
97  virtual eOSState ProcessKey(eKeys Key);
98  };
99 
100 class cMenuMain : public cOsdMenu {
101 private:
102  bool replaying;
108  void Set(void);
109  bool Update(bool Force = false);
110 public:
111  cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false);
112  virtual eOSState ProcessKey(eKeys Key);
113  static cOsdObject *PluginOsdObject(void);
114  };
115 
116 class cDisplayChannel : public cOsdObject {
117 private:
119  int group;
120  bool withInfo;
122  int number;
123  bool timeout;
124  int osdState;
130  void DisplayChannel(void);
131  void DisplayInfo(void);
132  void Refresh(void);
133  cChannel *NextAvailableChannel(cChannel *Channel, int Direction);
134 public:
135  cDisplayChannel(int Number, bool Switched);
136  cDisplayChannel(eKeys FirstKey);
137  virtual ~cDisplayChannel();
138  virtual eOSState ProcessKey(eKeys Key);
139  static bool IsOpen(void) { return currentDisplayChannel != NULL; }
140  };
141 
142 class cDisplayVolume : public cOsdObject {
143 private:
147  virtual void Show(void);
148  cDisplayVolume(void);
149 public:
150  virtual ~cDisplayVolume();
151  static cDisplayVolume *Create(void);
152  static void Process(eKeys Key);
154  };
155 
156 class cDisplayTracks : public cOsdObject {
157 private:
161  char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
164  virtual void Show(void);
165  cDisplayTracks(void);
166 public:
167  virtual ~cDisplayTracks();
168  static bool IsOpen(void) { return currentDisplayTracks != NULL; }
169  static cDisplayTracks *Create(void);
170  static void Process(eKeys Key);
172  };
173 
175 private:
179  char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
182  virtual void Show(void);
184 public:
185  virtual ~cDisplaySubtitleTracks();
186  static bool IsOpen(void) { return currentDisplayTracks != NULL; }
187  static cDisplaySubtitleTracks *Create(void);
188  static void Process(eKeys Key);
190  };
191 
192 cOsdObject *CamControl(void);
193 bool CamMenuActive(void);
194 
196 public:
197  virtual ~cRecordingFilter(void) {};
198  virtual bool Filter(const cRecording *Recording) const = 0;
200  };
201 
202 class cMenuRecordingItem;
203 
204 class cMenuRecordings : public cOsdMenu {
205 private:
206  char *base;
207  int level;
209  int helpKeys;
211  static cString path;
213  void SetHelpKeys(void);
214  void Set(bool Refresh = false);
215  bool Open(bool OpenSubMenus = false);
216  eOSState Play(void);
217  eOSState Rewind(void);
218  eOSState Delete(void);
219  eOSState Info(void);
220  eOSState Sort(void);
221  eOSState Commands(eKeys Key = kNone);
222 protected:
223  cString DirectoryName(void);
224 public:
225  cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false, const cRecordingFilter *Filter = NULL);
227  virtual eOSState ProcessKey(eKeys Key);
228  static void SetPath(const char *Path);
229  static void SetRecording(const char *FileName);
230  };
231 
233 private:
237  const cEvent *event;
239  char *fileName;
240  bool GetEvent(void);
241 public:
242  cRecordControl(cDevice *Device, cTimer *Timer = NULL, bool Pause = false);
243  virtual ~cRecordControl();
244  bool Process(time_t t);
245  cDevice *Device(void) { return device; }
246  void Stop(bool ExecuteUserCommand = true);
247  const char *InstantId(void) { return instantId; }
248  const char *FileName(void) { return fileName; }
249  cTimer *Timer(void) { return timer; }
250  };
251 
253 private:
255  static int state;
256 public:
257  static bool Start(cTimer *Timer = NULL, bool Pause = false);
258  static void Stop(const char *InstantId);
259  static bool PauseLiveVideo(void);
260  static const char *GetInstantId(const char *LastInstantId);
261  static cRecordControl *GetRecordControl(const char *FileName);
262  static cRecordControl *GetRecordControl(const cTimer *Timer);
265  static void Process(time_t t);
266  static void ChannelDataModified(cChannel *Channel);
267  static bool Active(void);
268  static void Shutdown(void);
269  static void ChangeState(void) { state++; }
270  static bool StateChanged(int &State);
271  };
272 
274 private:
280 public:
281  cAdaptiveSkipper(void);
282  void Initialize(int *InitialValue, double FramesPerSecond);
283  int GetValue(eKeys Key);
284  };
285 
287 private:
296  time_t timeoutShow;
299  void TimeSearchDisplay(void);
300  void TimeSearchProcess(eKeys Key);
301  void TimeSearch(void);
302  void ShowTimed(int Seconds = 0);
305  void ShowMode(void);
306  bool ShowProgress(bool Initial);
307  void MarkToggle(void);
308  void MarkJump(bool Forward);
309  void MarkMove(int Frames, bool MarkRequired);
310  void EditCut(void);
311  void EditTest(void);
312 public:
313  cReplayControl(bool PauseLive = false);
314  virtual ~cReplayControl();
315  void Stop(void);
316  virtual cOsdObject *GetInfo(void);
317  virtual const cRecording *GetRecording(void);
318  virtual eOSState ProcessKey(eKeys Key);
319  virtual void Show(void);
320  virtual void Hide(void);
321  bool Visible(void) { return visible; }
322  static void SetRecording(const char *FileName);
323  static const char *NowReplaying(void);
324  static const char *LastReplayed(void);
325  static void ClearLastReplayed(const char *FileName);
326  };
327 
328 #endif //__MENU_H
cDisplaySubtitleTracks(void)
Definition: menu.c:4715
void ShowTimed(int Seconds=0)
Definition: menu.c:5263
static cString fileName
Definition: menu.h:304
bool lastForward
Definition: menu.h:294
Definition: epg.h:71
virtual void Show(void)
Definition: menu.c:5275
int helpKeys
Definition: menu.h:209
cOsdItem * stopReplayItem
Definition: menu.h:103
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4562
cList< cNestedItem > * commands
Definition: menu.h:59
int lastCurrent
Definition: menu.h:293
cString DirectoryName(void)
Definition: menu.c:2792
cString GetFolder(void)
Definition: menu.c:912
virtual ~cMenuText()
Definition: menu.c:578
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:5596
const cRecordingFilter * filter
Definition: menu.h:210
void TimeSearchDisplay(void)
Definition: menu.c:5365
void DisplayChannel(void)
Definition: menu.c:4291
void MarkToggle(void)
Definition: menu.c:5455
char * text
Definition: menu.h:24
cRecordControl(cDevice *Device, cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:4812
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:5589
bool modeOnly
Definition: menu.h:292
cOsdItem * stopRecordingItem
Definition: menu.h:105
const char * FileName(void)
Definition: menu.h:248
bool timeout
Definition: menu.h:123
int currentValue
Definition: menu.h:276
bool shown
Definition: menu.h:292
static void Shutdown(void)
Definition: menu.c:5118
cDevice * Device(void)
Definition: menu.h:245
bool visible
Definition: menu.h:292
void Set(const char *CurrentFolder=NULL)
Definition: menu.c:815
cAdaptiveSkipper(void)
Definition: menu.c:5135
cTimeMs timeout
Definition: menu.h:279
virtual void Show(void)
Definition: menu.c:4629
void Refresh(void)
Definition: menu.c:4320
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:597
int lastTotal
Definition: menu.h:293
virtual void Hide(void)
Definition: menu.c:5280
bool lastPlay
Definition: menu.h:294
int timeSearchPos
Definition: menu.h:298
char * result
Definition: menu.h:64
static cDisplayVolume * Create(void)
Definition: menu.c:4549
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
Definition: menu.c:3952
int numTracks
Definition: menu.h:162
cString command
Definition: menu.h:62
eOSState Execute(void)
Definition: menu.c:1942
cString title
Definition: menu.h:61
int * initialValue
Definition: menu.h:275
cTimer * Timer(void)
Definition: menu.h:249
static void ChannelDataModified(cChannel *Channel)
Definition: menu.c:5092
cNestedItemList Commands
Definition: config.c:275
bool Parse(const char *s)
Definition: menu.c:1919
static void Process(time_t t)
Definition: menu.c:5080
Definition: menu.h:22
char * fileName
Definition: menu.h:239
bool confirm
Definition: menu.h:63
int osdState
Definition: menu.h:124
const char * Title(void)
Definition: osdbase.h:112
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1989
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:160
cSkinDisplayReplay * displayReplay
Definition: menu.h:288
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4774
cDisplayTracks(void)
Definition: menu.c:4595
static void Process(eKeys Key)
Definition: menu.c:4768
virtual void Show(void)
Definition: menu.c:4750
eOSState SetFolder(void)
Definition: menu.c:1002
static cDisplayChannel * currentDisplayChannel
Definition: menu.h:129
cChannel * channel
Definition: menu.h:126
const cPositioner * positioner
Definition: menu.h:125
eTrackType
Definition: device.h:70
eOSState Select(bool Open)
Definition: menu.c:853
bool displayFrames
Definition: menu.h:292
eOSState SetFolder(void)
Definition: menu.c:901
static bool StateChanged(int &State)
Definition: menu.c:5125
bool timeSearchActive
Definition: menu.h:297
int GetValue(eKeys Key)
Definition: menu.c:5150
int helpKeys
Definition: menu.h:41
int channel
Definition: menu.h:77
cTimeMs timeout
Definition: menu.h:159
static int state
Definition: menu.h:255
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:4090
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1021
static void SetRecording(const char *FileName)
Definition: menu.c:2787
static bool IsOpen(void)
Definition: menu.h:168
cTimer data
Definition: menu.h:76
cNestedItemList * nestedItemList
Definition: menu.h:36
int timeSearchTime
Definition: menu.h:298
cString instantId
Definition: menu.h:238
static void SetRecording(const char *FileName)
Definition: menu.c:5240
bool replaying
Definition: menu.h:102
Definition: keys.h:55
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:925
Definition: timers.h:27
eKeys lastKey
Definition: menu.h:278
A steerable satellite dish generally points to the south on the northern hemisphere, and to the north on the southern hemisphere (unless you're located directly on the equator, in which case the general direction is "up").
Definition: positioner.h:31
static cString fileName
Definition: menu.h:212
time_t timeoutShow
Definition: menu.h:296
cDisplayChannel(int Number, bool Switched)
Definition: menu.c:4247
eOSState
Definition: osdbase.h:18
cOsdItem * firstFolder
Definition: menu.h:39
virtual void Show(void)
Definition: menu.c:4544
bool Process(time_t t)
Definition: menu.c:4945
static cDisplayTracks * currentDisplayTracks
Definition: menu.h:163
eDvbFont
Definition: font.h:21
void MarkMove(int Frames, bool MarkRequired)
Definition: menu.c:5506
cMenuCommands(const char *Title, cList< cNestedItem > *Commands, const char *Parameters=NULL)
Definition: menu.c:1897
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:161
Definition: font.h:22
eOSState Info(void)
Definition: menu.c:2903
void TimeSearch(void)
Definition: menu.c:5437
virtual ~cDisplayVolume()
Definition: menu.c:4538
void SetFirstDayItem(void)
Definition: menu.c:989
double framesPerSecond
Definition: menu.h:277
int audioChannel
Definition: menu.h:162
virtual cOsdObject * GetInfo(void)
Returns an OSD object that displays information about the currently played programme.
Definition: menu.c:5581
bool GetEvent(void)
Definition: menu.c:4904
cSkinDisplayTracks * displayTracks
Definition: menu.h:158
cString dir
Definition: menu.h:38
bool addIfConfirmed
Definition: menu.h:78
cDevice * device
Definition: menu.h:234
cOsdItem * cancelEditingItem
Definition: menu.h:104
cSkinDisplayVolume * displayVolume
Definition: menu.h:144
void DescendPath(const char *Path)
Definition: menu.c:836
cList< cNestedItem > * list
Definition: menu.h:37
void SetText(const char *Text)
Definition: menu.c:583
static const cCursesFont Font
Definition: skincurses.c:30
static bool Active(void)
Definition: menu.c:5109
virtual ~cDisplayChannel()
Definition: menu.c:4284
bool Visible(void)
Definition: menu.h:321
cTimeMs timeout
Definition: menu.h:145
const char * InstantId(void)
Definition: menu.h:247
cSkinDisplayTracks * displayTracks
Definition: menu.h:176
virtual ~cReplayControl()
Definition: menu.c:5197
int recordingsState
Definition: menu.h:208
static void Stop(const char *InstantId)
Definition: menu.c:5012
bool timeSearchHide
Definition: menu.h:297
static cDisplaySubtitleTracks * Create(void)
Definition: menu.c:4757
virtual ~cRecordControl()
Definition: menu.c:4896
cRecorder * recorder
Definition: menu.h:236
cMenuEditStrItem * file
Definition: menu.h:79
cString parameters
Definition: menu.h:60
int recordControlsState
Definition: menu.h:106
void Stop(bool ExecuteUserCommand=true)
Definition: menu.c:4932
void MarkJump(bool Forward)
Definition: menu.c:5481
static const char * LastReplayed(void)
Definition: menu.c:5250
virtual ~cMenuEditTimer()
Definition: menu.c:977
bool ShowProgress(bool Initial)
Definition: menu.c:5324
eOSState Play(void)
Definition: menu.c:2819
static cDisplaySubtitleTracks * currentDisplayTracks
Definition: menu.h:181
cTimer * timer
Definition: menu.h:75
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4656
static const char * GetInstantId(const char *LastInstantId)
Definition: menu.c:5047
int lastSpeed
Definition: menu.h:295
static cRecordControl * RecordControls[]
Definition: menu.h:254
void TimeSearchProcess(eKeys Key)
Definition: menu.c:5383
static void ClearLastReplayed(const char *FileName)
Definition: menu.c:5257
bool editing
Definition: menu.h:40
const cEvent * lastFollowing
Definition: menu.h:128
bool marksModified
Definition: menu.h:291
void SetHelpKeys(void)
Definition: menu.c:984
cAdaptiveSkipper adaptiveSkipper
Definition: menu.h:289
void EditTest(void)
Definition: menu.c:5565
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:4340
void ShowMode(void)
Definition: menu.c:5299
static void Process(eKeys Key)
Definition: menu.c:4556
~cMenuRecordings()
Definition: menu.c:2702
bool withInfo
Definition: menu.h:120
static void Process(eKeys Key)
Definition: menu.c:4650
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false, const cRecordingFilter *Filter=NULL)
Definition: menu.c:2679
cMenuFolder(const char *Title, cList< cNestedItem > *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path=NULL)
Definition: menu.c:745
static cOsdObject * pluginOsdObject
Definition: menu.h:107
eOSState New(void)
Definition: menu.c:867
virtual void Display(void)
Definition: menu.c:589
static bool IsOpen(void)
Definition: menu.h:186
eOSState Edit(void)
Definition: menu.c:889
cTimeMs lastTime
Definition: menu.h:121
virtual ~cRecordingFilter(void)
Definition: menu.h:197
cMenuText(const char *Title, const char *Text, eDvbFont Font=fontOsd)
Definition: menu.c:569
virtual ~cMenuCommands()
Definition: menu.c:1914
cChannel * NextAvailableChannel(cChannel *Channel, int Direction)
Definition: menu.c:4326
virtual ~cDisplayTracks()
Definition: menu.c:4620
void Forward(void)
Definition: dvbplayer.c:975
static cDisplayTracks * Create(void)
Definition: menu.c:4639
eOSState Commands(eKeys Key=kNone)
Definition: menu.c:2916
cDisplayVolume(void)
Definition: menu.c:4529
cSkinDisplayChannel * displayChannel
Definition: menu.h:118
eDvbFont font
Definition: menu.h:25
cMenuEditTimer(cTimer *Timer, bool New=false)
Definition: menu.c:949
static cReplayControl * currentReplayControl
Definition: menu.h:303
cMenuEvent(const cEvent *Event, bool CanSwitch=false, bool Buttons=false)
Definition: menu.c:1293
void DisplayInfo(void)
Definition: menu.c:4298
void SetHelpKeys(void)
Definition: menu.c:761
static void SetPath(const char *Path)
Definition: menu.c:2782
static void ChangeState(void)
Definition: menu.h:269
cMarks marks
Definition: menu.h:290
const cEvent * event
Definition: menu.h:237
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:178
virtual void Display(void)
Definition: menu.c:1310
static cRecordControl * GetRecordControl(const char *FileName)
Definition: menu.c:5060
char * base
Definition: menu.h:206
virtual ~cDisplaySubtitleTracks()
Definition: menu.c:4741
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:2847
void SetHelpKeys(void)
Definition: menu.c:2711
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1318
eOSState Sort(void)
Definition: menu.c:2931
Definition: tools.h:333
static cOsdObject * PluginOsdObject(void)
Definition: menu.c:3992
void Set(bool Refresh=false)
Definition: menu.c:2732
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:2940
void Set(void)
Definition: menu.c:3999
static cString path
Definition: menu.h:211
cReplayControl(bool PauseLive=false)
Definition: menu.c:5174
void Initialize(int *InitialValue, double FramesPerSecond)
Definition: menu.c:5143
eOSState Rewind(void)
Definition: menu.c:2833
int number
Definition: menu.h:122
static bool PauseLiveVideo(void)
Definition: menu.c:5032
bool Open(bool OpenSubMenus=false)
Definition: menu.c:2803
cTimer * timer
Definition: menu.h:235
cMenuEditDateItem * day
Definition: menu.h:80
bool Update(bool Force=false)
Definition: menu.c:4036
static bool IsOpen(void)
Definition: menu.h:139
eOSState Delete(void)
Definition: menu.c:873
const cEvent * lastPresent
Definition: menu.h:127
int track
Definition: menu.h:162
eKeys
Definition: keys.h:16
const cEvent * event
Definition: menu.h:93
static cDisplayVolume * currentDisplayVolume
Definition: menu.h:146
The cDevice class is the base from which actual devices can be derived.
Definition: device.h:109
void EditCut(void)
Definition: menu.c:5543
Definition: tools.h:168
cMenuEditDateItem * firstday
Definition: menu.h:81
static const char * NowReplaying(void)
Definition: menu.c:5245
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:179
void Stop(void)
Definition: menu.c:5207
static bool Start(cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:4961