vdr  2.0.6
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 2.13.1.1 2013/10/16 09:46:15 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  void SetHelpKeys(void);
42  void Set(const char *CurrentFolder = NULL);
43  void DescendPath(const char *Path);
44  eOSState SetFolder(void);
45  eOSState Select(void);
46  eOSState New(void);
47  eOSState Delete(void);
48  eOSState Edit(void);
49  cMenuFolder(const char *Title, cList<cNestedItem> *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path = NULL);
50 public:
51  cMenuFolder(const char *Title, cNestedItemList *NestedItemList, const char *Path = NULL);
52  cString GetFolder(void);
53  virtual eOSState ProcessKey(eKeys Key);
54  };
55 
56 class cMenuCommands : public cOsdMenu {
57 private:
62  bool confirm;
63  char *result;
64  bool Parse(const char *s);
65  eOSState Execute(void);
66 public:
67  cMenuCommands(const char *Title, cList<cNestedItem> *Commands, const char *Parameters = NULL);
68  virtual ~cMenuCommands();
69  virtual eOSState ProcessKey(eKeys Key);
70  };
71 
72 class cMenuEditTimer : public cOsdMenu {
73 private:
76  int channel;
81  eOSState SetFolder(void);
82  void SetFirstDayItem(void);
83  void SetHelpKeys(void);
84 public:
85  cMenuEditTimer(cTimer *Timer, bool New = false);
86  virtual ~cMenuEditTimer();
87  virtual eOSState ProcessKey(eKeys Key);
88  };
89 
90 class cMenuEvent : public cOsdMenu {
91 private:
92  const cEvent *event;
93 public:
94  cMenuEvent(const cEvent *Event, bool CanSwitch = false, bool Buttons = false);
95  virtual void Display(void);
96  virtual eOSState ProcessKey(eKeys Key);
97  };
98 
99 class cMenuMain : public cOsdMenu {
100 private:
101  bool replaying;
107  void Set(void);
108  bool Update(bool Force = false);
109 public:
110  cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false);
111  virtual eOSState ProcessKey(eKeys Key);
112  static cOsdObject *PluginOsdObject(void);
113  };
114 
115 class cDisplayChannel : public cOsdObject {
116 private:
118  int group;
119  bool withInfo;
121  int number;
122  bool timeout;
127  void DisplayChannel(void);
128  void DisplayInfo(void);
129  void Refresh(void);
130  cChannel *NextAvailableChannel(cChannel *Channel, int Direction);
131 public:
132  cDisplayChannel(int Number, bool Switched);
133  cDisplayChannel(eKeys FirstKey);
134  virtual ~cDisplayChannel();
135  virtual eOSState ProcessKey(eKeys Key);
136  static bool IsOpen(void) { return currentDisplayChannel != NULL; }
137  };
138 
139 class cDisplayVolume : public cOsdObject {
140 private:
144  virtual void Show(void);
145  cDisplayVolume(void);
146 public:
147  virtual ~cDisplayVolume();
148  static cDisplayVolume *Create(void);
149  static void Process(eKeys Key);
151  };
152 
153 class cDisplayTracks : public cOsdObject {
154 private:
158  char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
161  virtual void Show(void);
162  cDisplayTracks(void);
163 public:
164  virtual ~cDisplayTracks();
165  static bool IsOpen(void) { return currentDisplayTracks != NULL; }
166  static cDisplayTracks *Create(void);
167  static void Process(eKeys Key);
169  };
170 
172 private:
176  char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
179  virtual void Show(void);
181 public:
182  virtual ~cDisplaySubtitleTracks();
183  static bool IsOpen(void) { return currentDisplayTracks != NULL; }
184  static cDisplaySubtitleTracks *Create(void);
185  static void Process(eKeys Key);
187  };
188 
189 cOsdObject *CamControl(void);
190 bool CamMenuActive(void);
191 
192 class cMenuRecordingItem;
193 
194 class cMenuRecordings : public cOsdMenu {
195 private:
196  char *base;
197  int level;
199  int helpKeys;
200  void SetHelpKeys(void);
201  void Set(bool Refresh = false);
202  bool Open(bool OpenSubMenus = false);
203  eOSState Play(void);
204  eOSState Rewind(void);
205  eOSState Delete(void);
206  eOSState Info(void);
207  eOSState Sort(void);
208  eOSState Commands(eKeys Key = kNone);
209 protected:
210  cString DirectoryName(void);
211 public:
212  cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false);
214  virtual eOSState ProcessKey(eKeys Key);
215  };
216 
218 private:
222  const cEvent *event;
224  char *fileName;
225  bool GetEvent(void);
226 public:
227  cRecordControl(cDevice *Device, cTimer *Timer = NULL, bool Pause = false);
228  virtual ~cRecordControl();
229  bool Process(time_t t);
230  cDevice *Device(void) { return device; }
231  void Stop(bool ExecuteUserCommand = true);
232  const char *InstantId(void) { return instantId; }
233  const char *FileName(void) { return fileName; }
234  cTimer *Timer(void) { return timer; }
235  };
236 
238 private:
240  static int state;
241 public:
242  static bool Start(cTimer *Timer = NULL, bool Pause = false);
243  static void Stop(const char *InstantId);
244  static bool PauseLiveVideo(void);
245  static const char *GetInstantId(const char *LastInstantId);
246  static cRecordControl *GetRecordControl(const char *FileName);
247  static cRecordControl *GetRecordControl(const cTimer *Timer);
250  static void Process(time_t t);
251  static void ChannelDataModified(cChannel *Channel);
252  static bool Active(void);
253  static void Shutdown(void);
254  static void ChangeState(void) { state++; }
255  static bool StateChanged(int &State);
256  };
257 
259 private:
267  time_t timeoutShow;
270  void TimeSearchDisplay(void);
271  void TimeSearchProcess(eKeys Key);
272  void TimeSearch(void);
273  void ShowTimed(int Seconds = 0);
276  void ShowMode(void);
277  bool ShowProgress(bool Initial);
278  void MarkToggle(void);
279  void MarkJump(bool Forward);
280  void MarkMove(bool Forward);
281  void EditCut(void);
282  void EditTest(void);
283 public:
284  cReplayControl(bool PauseLive = false);
285  virtual ~cReplayControl();
286  void Stop(void);
287  virtual cOsdObject *GetInfo(void);
288  virtual const cRecording *GetRecording(void);
289  virtual eOSState ProcessKey(eKeys Key);
290  virtual void Show(void);
291  virtual void Hide(void);
292  bool Visible(void) { return visible; }
293  static void SetRecording(const char *FileName);
294  static const char *NowReplaying(void);
295  static const char *LastReplayed(void);
296  static void ClearLastReplayed(const char *FileName);
297  };
298 
299 #endif //__MENU_H
cDisplaySubtitleTracks(void)
Definition: menu.c:4141
void ShowTimed(int Seconds=0)
Definition: menu.c:4650
static cString fileName
Definition: menu.h:275
bool lastForward
Definition: menu.h:265
Definition: epg.h:71
virtual void Show(void)
Definition: menu.c:4662
int helpKeys
Definition: menu.h:199
cOsdItem * stopReplayItem
Definition: menu.h:102
eOSState ProcessKey(eKeys Key)
Definition: menu.c:3988
cList< cNestedItem > * commands
Definition: menu.h:58
int lastCurrent
Definition: menu.h:264
cString DirectoryName(void)
Definition: menu.c:2336
cString GetFolder(void)
Definition: menu.c:854
virtual ~cMenuText()
Definition: menu.c:575
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:4955
void TimeSearchDisplay(void)
Definition: menu.c:4752
void DisplayChannel(void)
Definition: menu.c:3732
void MarkToggle(void)
Definition: menu.c:4841
char * text
Definition: menu.h:24
cRecordControl(cDevice *Device, cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:4238
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:4948
bool modeOnly
Definition: menu.h:263
cOsdItem * stopRecordingItem
Definition: menu.h:104
const char * FileName(void)
Definition: menu.h:233
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false)
Definition: menu.c:2242
bool timeout
Definition: menu.h:122
bool shown
Definition: menu.h:263
static void Shutdown(void)
Definition: menu.c:4544
cDevice * Device(void)
Definition: menu.h:230
bool visible
Definition: menu.h:263
void Set(const char *CurrentFolder=NULL)
Definition: menu.c:759
virtual void Show(void)
Definition: menu.c:4055
void Refresh(void)
Definition: menu.c:3761
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:594
int lastTotal
Definition: menu.h:264
virtual void Hide(void)
Definition: menu.c:4667
bool lastPlay
Definition: menu.h:265
eOSState Select(void)
Definition: menu.c:794
int timeSearchPos
Definition: menu.h:269
char * result
Definition: menu.h:63
static cDisplayVolume * Create(void)
Definition: menu.c:3975
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
Definition: menu.c:3396
int numTracks
Definition: menu.h:159
cString command
Definition: menu.h:61
eOSState Execute(void)
Definition: menu.c:1864
cString title
Definition: menu.h:60
cTimer * Timer(void)
Definition: menu.h:234
static void ChannelDataModified(cChannel *Channel)
Definition: menu.c:4518
cNestedItemList Commands
Definition: config.c:275
bool Parse(const char *s)
Definition: menu.c:1841
static void Process(time_t t)
Definition: menu.c:4506
Definition: menu.h:22
char * fileName
Definition: menu.h:224
bool confirm
Definition: menu.h:62
const char * Title(void)
Definition: osdbase.h:111
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1911
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:157
cSkinDisplayReplay * displayReplay
Definition: menu.h:260
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4200
cDisplayTracks(void)
Definition: menu.c:4021
static void Process(eKeys Key)
Definition: menu.c:4194
virtual void Show(void)
Definition: menu.c:4176
eOSState SetFolder(void)
Definition: menu.c:944
static cDisplayChannel * currentDisplayChannel
Definition: menu.h:126
cChannel * channel
Definition: menu.h:123
eTrackType
Definition: device.h:65
bool displayFrames
Definition: menu.h:263
eOSState SetFolder(void)
Definition: menu.c:842
static bool StateChanged(int &State)
Definition: menu.c:4551
bool timeSearchActive
Definition: menu.h:268
int channel
Definition: menu.h:76
cTimeMs timeout
Definition: menu.h:156
static int state
Definition: menu.h:240
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:3534
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:964
static bool IsOpen(void)
Definition: menu.h:165
cTimer data
Definition: menu.h:75
cNestedItemList * nestedItemList
Definition: menu.h:36
int timeSearchTime
Definition: menu.h:269
cString instantId
Definition: menu.h:223
static void SetRecording(const char *FileName)
Definition: menu.c:4627
bool replaying
Definition: menu.h:101
Definition: keys.h:55
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:868
Definition: timers.h:27
time_t timeoutShow
Definition: menu.h:267
cDisplayChannel(int Number, bool Switched)
Definition: menu.c:3691
eOSState
Definition: osdbase.h:18
cOsdItem * firstFolder
Definition: menu.h:39
virtual void Show(void)
Definition: menu.c:3970
bool Process(time_t t)
Definition: menu.c:4371
static cDisplayTracks * currentDisplayTracks
Definition: menu.h:160
eDvbFont
Definition: font.h:21
cMenuCommands(const char *Title, cList< cNestedItem > *Commands, const char *Parameters=NULL)
Definition: menu.c:1819
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:158
Definition: font.h:22
eOSState Info(void)
Definition: menu.c:2447
void TimeSearch(void)
Definition: menu.c:4823
virtual ~cDisplayVolume()
Definition: menu.c:3964
void SetFirstDayItem(void)
Definition: menu.c:931
int audioChannel
Definition: menu.h:159
virtual cOsdObject * GetInfo(void)
Returns an OSD object that displays information about the currently played programme.
Definition: menu.c:4940
bool GetEvent(void)
Definition: menu.c:4330
cSkinDisplayTracks * displayTracks
Definition: menu.h:155
cString dir
Definition: menu.h:38
bool addIfConfirmed
Definition: menu.h:77
cDevice * device
Definition: menu.h:219
cOsdItem * cancelEditingItem
Definition: menu.h:103
cSkinDisplayVolume * displayVolume
Definition: menu.h:141
void DescendPath(const char *Path)
Definition: menu.c:777
cList< cNestedItem > * list
Definition: menu.h:37
void SetText(const char *Text)
Definition: menu.c:580
static const cCursesFont Font
Definition: skincurses.c:30
static bool Active(void)
Definition: menu.c:4535
virtual ~cDisplayChannel()
Definition: menu.c:3725
bool Visible(void)
Definition: menu.h:292
cTimeMs timeout
Definition: menu.h:142
const char * InstantId(void)
Definition: menu.h:232
cSkinDisplayTracks * displayTracks
Definition: menu.h:173
virtual ~cReplayControl()
Definition: menu.c:4585
int recordingsState
Definition: menu.h:198
static void Stop(const char *InstantId)
Definition: menu.c:4438
bool timeSearchHide
Definition: menu.h:268
static cDisplaySubtitleTracks * Create(void)
Definition: menu.c:4183
virtual ~cRecordControl()
Definition: menu.c:4322
cRecorder * recorder
Definition: menu.h:221
cMenuEditStrItem * file
Definition: menu.h:78
Definition: menu.h:99
cString parameters
Definition: menu.h:59
int recordControlsState
Definition: menu.h:105
void Stop(bool ExecuteUserCommand=true)
Definition: menu.c:4358
void MarkJump(bool Forward)
Definition: menu.c:4862
static const char * LastReplayed(void)
Definition: menu.c:4637
virtual ~cMenuEditTimer()
Definition: menu.c:919
bool ShowProgress(bool Initial)
Definition: menu.c:4711
eOSState Play(void)
Definition: menu.c:2363
static cDisplaySubtitleTracks * currentDisplayTracks
Definition: menu.h:178
cTimer * timer
Definition: menu.h:74
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4082
static const char * GetInstantId(const char *LastInstantId)
Definition: menu.c:4473
int lastSpeed
Definition: menu.h:266
static cRecordControl * RecordControls[]
Definition: menu.h:239
void TimeSearchProcess(eKeys Key)
Definition: menu.c:4770
static void ClearLastReplayed(const char *FileName)
Definition: menu.c:4644
bool editing
Definition: menu.h:40
const cEvent * lastFollowing
Definition: menu.h:125
bool marksModified
Definition: menu.h:262
void SetHelpKeys(void)
Definition: menu.c:926
void EditTest(void)
Definition: menu.c:4922
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:3781
void ShowMode(void)
Definition: menu.c:4686
static void Process(eKeys Key)
Definition: menu.c:3982
~cMenuRecordings()
Definition: menu.c:2260
bool withInfo
Definition: menu.h:119
static void Process(eKeys Key)
Definition: menu.c:4076
cMenuFolder(const char *Title, cList< cNestedItem > *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path=NULL)
Definition: menu.c:740
static cOsdObject * pluginOsdObject
Definition: menu.h:106
eOSState New(void)
Definition: menu.c:808
virtual void Display(void)
Definition: menu.c:586
static bool IsOpen(void)
Definition: menu.h:183
eOSState Edit(void)
Definition: menu.c:830
cTimeMs lastTime
Definition: menu.h:120
cMenuText(const char *Title, const char *Text, eDvbFont Font=fontOsd)
Definition: menu.c:566
virtual ~cMenuCommands()
Definition: menu.c:1836
cChannel * NextAvailableChannel(cChannel *Channel, int Direction)
Definition: menu.c:3767
virtual ~cDisplayTracks()
Definition: menu.c:4046
void Forward(void)
Definition: dvbplayer.c:895
static cDisplayTracks * Create(void)
Definition: menu.c:4065
eOSState Commands(eKeys Key=kNone)
Definition: menu.c:2457
cDisplayVolume(void)
Definition: menu.c:3955
cSkinDisplayChannel * displayChannel
Definition: menu.h:117
eDvbFont font
Definition: menu.h:25
cMenuEditTimer(cTimer *Timer, bool New=false)
Definition: menu.c:891
static cReplayControl * currentReplayControl
Definition: menu.h:274
cMenuEvent(const cEvent *Event, bool CanSwitch=false, bool Buttons=false)
Definition: menu.c:1236
void DisplayInfo(void)
Definition: menu.c:3739
void SetHelpKeys(void)
Definition: menu.c:754
static void ChangeState(void)
Definition: menu.h:254
cMarks marks
Definition: menu.h:261
const cEvent * event
Definition: menu.h:222
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:175
virtual void Display(void)
Definition: menu.c:1253
static cRecordControl * GetRecordControl(const char *FileName)
Definition: menu.c:4486
char * base
Definition: menu.h:196
virtual ~cDisplaySubtitleTracks()
Definition: menu.c:4167
eOSState Delete(void)
Definition: menu.c:2391
void SetHelpKeys(void)
Definition: menu.c:2266
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1261
eOSState Sort(void)
Definition: menu.c:2472
Definition: tools.h:323
static cOsdObject * PluginOsdObject(void)
Definition: menu.c:3436
void Set(bool Refresh=false)
Definition: menu.c:2291
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:2481
void Set(void)
Definition: menu.c:3443
cReplayControl(bool PauseLive=false)
Definition: menu.c:4564
eOSState Rewind(void)
Definition: menu.c:2377
int number
Definition: menu.h:121
static bool PauseLiveVideo(void)
Definition: menu.c:4458
bool Open(bool OpenSubMenus=false)
Definition: menu.c:2347
cTimer * timer
Definition: menu.h:220
cMenuEditDateItem * day
Definition: menu.h:79
bool Update(bool Force=false)
Definition: menu.c:3480
static bool IsOpen(void)
Definition: menu.h:136
eOSState Delete(void)
Definition: menu.c:814
const cEvent * lastPresent
Definition: menu.h:124
int track
Definition: menu.h:159
eKeys
Definition: keys.h:16
const cEvent * event
Definition: menu.h:92
static cDisplayVolume * currentDisplayVolume
Definition: menu.h:143
The cDevice class is the base from which actual devices can be derived.
Definition: device.h:104
void EditCut(void)
Definition: menu.c:4902
Definition: tools.h:166
cMenuEditDateItem * firstday
Definition: menu.h:80
static const char * NowReplaying(void)
Definition: menu.c:4632
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:176
void MarkMove(bool Forward)
Definition: menu.c:4879
void Stop(void)
Definition: menu.c:4595
static bool Start(cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:4387