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:4927
void ShowTimed(int Seconds=0)
Definition: menu.c:5475
static cString fileName
Definition: menu.h:304
bool lastForward
Definition: menu.h:294
Definition: epg.h:71
virtual void Show(void)
Definition: menu.c:5487
int helpKeys
Definition: menu.h:209
cOsdItem * stopReplayItem
Definition: menu.h:103
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4774
cList< cNestedItem > * commands
Definition: menu.h:59
int lastCurrent
Definition: menu.h:293
cString DirectoryName(void)
Definition: menu.c:3000
cString GetFolder(void)
Definition: menu.c:912
virtual ~cMenuText()
Definition: menu.c:578
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:5808
const cRecordingFilter * filter
Definition: menu.h:210
void TimeSearchDisplay(void)
Definition: menu.c:5577
void DisplayChannel(void)
Definition: menu.c:4503
void MarkToggle(void)
Definition: menu.c:5667
char * text
Definition: menu.h:24
cRecordControl(cDevice *Device, cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:5024
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:5801
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:5330
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:5347
cTimeMs timeout
Definition: menu.h:279
virtual void Show(void)
Definition: menu.c:4841
void Refresh(void)
Definition: menu.c:4532
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:597
int lastTotal
Definition: menu.h:293
virtual void Hide(void)
Definition: menu.c:5492
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:4761
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
Definition: menu.c:4164
int numTracks
Definition: menu.h:162
cString command
Definition: menu.h:62
eOSState Execute(void)
Definition: menu.c:2113
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:5304
cNestedItemList Commands
Definition: config.c:275
bool Parse(const char *s)
Definition: menu.c:2090
static void Process(time_t t)
Definition: menu.c:5292
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:2160
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:160
cSkinDisplayReplay * displayReplay
Definition: menu.h:288
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4986
cDisplayTracks(void)
Definition: menu.c:4807
static void Process(eKeys Key)
Definition: menu.c:4980
virtual void Show(void)
Definition: menu.c:4962
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:5337
bool timeSearchActive
Definition: menu.h:297
int GetValue(eKeys Key)
Definition: menu.c:5362
int helpKeys
Definition: menu.h:41
int channel
Definition: menu.h:77
virtual bool Filter(const cRecording *Recording) const =0
Returns true if the given Recording shall be displayed in the Recordings menu.
cTimeMs timeout
Definition: menu.h:159
static int state
Definition: menu.h:255
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:4302
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1021
static void SetRecording(const char *FileName)
Definition: menu.c:2995
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:5452
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:4459
eOSState
Definition: osdbase.h:18
cOsdItem * firstFolder
Definition: menu.h:39
virtual void Show(void)
Definition: menu.c:4756
bool Process(time_t t)
Definition: menu.c:5157
static cDisplayTracks * currentDisplayTracks
Definition: menu.h:163
eDvbFont
Definition: font.h:21
void MarkMove(int Frames, bool MarkRequired)
Definition: menu.c:5718
cMenuCommands(const char *Title, cList< cNestedItem > *Commands, const char *Parameters=NULL)
Definition: menu.c:2068
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:161
Definition: font.h:22
eOSState Info(void)
Definition: menu.c:3111
void TimeSearch(void)
Definition: menu.c:5649
virtual ~cDisplayVolume()
Definition: menu.c:4750
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:5793
bool GetEvent(void)
Definition: menu.c:5116
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:5321
virtual ~cDisplayChannel()
Definition: menu.c:4496
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:5409
int recordingsState
Definition: menu.h:208
static void Stop(const char *InstantId)
Definition: menu.c:5224
bool timeSearchHide
Definition: menu.h:297
static cDisplaySubtitleTracks * Create(void)
Definition: menu.c:4969
virtual ~cRecordControl()
Definition: menu.c:5108
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:5144
void MarkJump(bool Forward)
Definition: menu.c:5693
static const char * LastReplayed(void)
Definition: menu.c:5462
virtual ~cMenuEditTimer()
Definition: menu.c:977
bool ShowProgress(bool Initial)
Definition: menu.c:5536
eOSState Play(void)
Definition: menu.c:3027
static cDisplaySubtitleTracks * currentDisplayTracks
Definition: menu.h:181
cTimer * timer
Definition: menu.h:75
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4868
static const char * GetInstantId(const char *LastInstantId)
Definition: menu.c:5259
int lastSpeed
Definition: menu.h:295
static cRecordControl * RecordControls[]
Definition: menu.h:254
void TimeSearchProcess(eKeys Key)
Definition: menu.c:5595
static void ClearLastReplayed(const char *FileName)
Definition: menu.c:5469
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:5777
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:4552
void ShowMode(void)
Definition: menu.c:5511
static void Process(eKeys Key)
Definition: menu.c:4768
~cMenuRecordings()
Definition: menu.c:2910
bool withInfo
Definition: menu.h:120
static void Process(eKeys Key)
Definition: menu.c:4862
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false, const cRecordingFilter *Filter=NULL)
Definition: menu.c:2887
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:2085
cChannel * NextAvailableChannel(cChannel *Channel, int Direction)
Definition: menu.c:4538
virtual ~cDisplayTracks()
Definition: menu.c:4832
void Forward(void)
Definition: dvbplayer.c:975
static cDisplayTracks * Create(void)
Definition: menu.c:4851
eOSState Commands(eKeys Key=kNone)
Definition: menu.c:3124
cDisplayVolume(void)
Definition: menu.c:4741
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:1469
void DisplayInfo(void)
Definition: menu.c:4510
void SetHelpKeys(void)
Definition: menu.c:761
static void SetPath(const char *Path)
Definition: menu.c:2990
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:1486
static cRecordControl * GetRecordControl(const char *FileName)
Definition: menu.c:5272
char * base
Definition: menu.h:206
virtual ~cDisplaySubtitleTracks()
Definition: menu.c:4953
eOSState Delete(void)
Definition: menu.c:3055
void SetHelpKeys(void)
Definition: menu.c:2919
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1494
eOSState Sort(void)
Definition: menu.c:3139
Definition: tools.h:333
static cOsdObject * PluginOsdObject(void)
Definition: menu.c:4204
void Set(bool Refresh=false)
Definition: menu.c:2940
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:3148
void Set(void)
Definition: menu.c:4211
static cString path
Definition: menu.h:211
cReplayControl(bool PauseLive=false)
Definition: menu.c:5386
void Initialize(int *InitialValue, double FramesPerSecond)
Definition: menu.c:5355
eOSState Rewind(void)
Definition: menu.c:3041
int number
Definition: menu.h:122
static bool PauseLiveVideo(void)
Definition: menu.c:5244
bool Open(bool OpenSubMenus=false)
Definition: menu.c:3011
cTimer * timer
Definition: menu.h:235
cMenuEditDateItem * day
Definition: menu.h:80
bool Update(bool Force=false)
Definition: menu.c:4248
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
Definition: runvdr.c:107
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:5755
Definition: tools.h:168
cMenuEditDateItem * firstday
Definition: menu.h:81
static const char * NowReplaying(void)
Definition: menu.c:5457
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:179
void Stop(void)
Definition: menu.c:5419
static bool Start(cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:5173