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
162  int numTracks, track, audioChannel;
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
180  int numTracks, track;
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);
226  ~cMenuRecordings();
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:
254  static cRecordControl *RecordControls[];
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:
292  bool visible, modeOnly, shown, displayFrames;
293  int lastCurrent, lastTotal;
294  bool lastPlay, lastForward;
296  time_t timeoutShow;
297  bool timeSearchActive, timeSearchHide;
298  int timeSearchTime, timeSearchPos;
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
static cString fileName
Definition: menu.h:304
Definition: epg.h:71
int helpKeys
Definition: menu.h:209
cOsdItem * stopReplayItem
Definition: menu.h:103
cList< cNestedItem > * commands
Definition: menu.h:59
virtual ~cMenuText()
Definition: menu.c:578
const cRecordingFilter * filter
Definition: menu.h:210
char * text
Definition: menu.h:24
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
cDevice * Device(void)
Definition: menu.h:245
bool visible
Definition: menu.h:292
cTimeMs timeout
Definition: menu.h:279
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:597
int lastTotal
Definition: menu.h:293
bool lastPlay
Definition: menu.h:294
char * result
Definition: menu.h:64
cString command
Definition: menu.h:62
cString title
Definition: menu.h:61
int * initialValue
Definition: menu.h:275
cTimer * Timer(void)
Definition: menu.h:249
cNestedItemList Commands
Definition: config.c:275
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
cSkinDisplayReplay * displayReplay
Definition: menu.h:288
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
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
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
bool replaying
Definition: menu.h:102
Definition: keys.h:55
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&#39;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
eOSState
Definition: osdbase.h:18
cOsdItem * firstFolder
Definition: menu.h:39
static cDisplayTracks * currentDisplayTracks
Definition: menu.h:163
eDvbFont
Definition: font.h:21
Definition: font.h:22
double framesPerSecond
Definition: menu.h:277
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 Sort(void)
Definition: tools.c:2115
cList< cNestedItem > * list
Definition: menu.h:37
void SetText(const char *Text)
Definition: menu.c:583
static const cCursesFont Font
Definition: skincurses.c:30
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
int recordingsState
Definition: menu.h:208
bool timeSearchHide
Definition: menu.h:297
cRecorder * recorder
Definition: menu.h:236
cMenuEditStrItem * file
Definition: menu.h:79
cString parameters
Definition: menu.h:60
int recordControlsState
Definition: menu.h:106
virtual void Show(void)
Definition: osdbase.c:70
static cDisplaySubtitleTracks * currentDisplayTracks
Definition: menu.h:181
cTimer * timer
Definition: menu.h:75
int lastSpeed
Definition: menu.h:295
bool editing
Definition: menu.h:40
const cEvent * lastFollowing
Definition: menu.h:128
bool marksModified
Definition: menu.h:291
cAdaptiveSkipper adaptiveSkipper
Definition: menu.h:289
bool withInfo
Definition: menu.h:120
static cOsdObject * pluginOsdObject
Definition: menu.h:107
virtual void Display(void)
Definition: menu.c:589
static bool IsOpen(void)
Definition: menu.h:186
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
cSkinDisplayChannel * displayChannel
Definition: menu.h:118
eDvbFont font
Definition: menu.h:25
static cReplayControl * currentReplayControl
Definition: menu.h:303
static void ChangeState(void)
Definition: menu.h:269
cMarks marks
Definition: menu.h:290
const cEvent * event
Definition: menu.h:237
char * base
Definition: menu.h:206
Definition: tools.h:333
static cString path
Definition: menu.h:211
int number
Definition: menu.h:122
cTimer * timer
Definition: menu.h:235
cMenuEditDateItem * day
Definition: menu.h:80
static bool IsOpen(void)
Definition: menu.h:139
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
Definition: tools.h:168
cMenuEditDateItem * firstday
Definition: menu.h:81