vdr  2.0.5
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;
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;
128  void DisplayChannel(void);
129  void DisplayInfo(void);
130  void Refresh(void);
131  cChannel *NextAvailableChannel(cChannel *Channel, int Direction);
132 public:
133  cDisplayChannel(int Number, bool Switched);
134  cDisplayChannel(eKeys FirstKey);
135  virtual ~cDisplayChannel();
136  virtual eOSState ProcessKey(eKeys Key);
137  static bool IsOpen(void) { return currentDisplayChannel != NULL; }
138  };
139 
140 class cDisplayVolume : public cOsdObject {
141 private:
145  virtual void Show(void);
146  cDisplayVolume(void);
147 public:
148  virtual ~cDisplayVolume();
149  static cDisplayVolume *Create(void);
150  static void Process(eKeys Key);
152  };
153 
154 class cDisplayTracks : public cOsdObject {
155 private:
159  char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
162  virtual void Show(void);
163  cDisplayTracks(void);
164 public:
165  virtual ~cDisplayTracks();
166  static bool IsOpen(void) { return currentDisplayTracks != NULL; }
167  static cDisplayTracks *Create(void);
168  static void Process(eKeys Key);
170  };
171 
173 private:
177  char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
180  virtual void Show(void);
182 public:
183  virtual ~cDisplaySubtitleTracks();
184  static bool IsOpen(void) { return currentDisplayTracks != NULL; }
185  static cDisplaySubtitleTracks *Create(void);
186  static void Process(eKeys Key);
188  };
189 
190 cOsdObject *CamControl(void);
191 bool CamMenuActive(void);
192 
193 class cMenuRecordingItem;
194 
195 class cMenuRecordings : public cOsdMenu {
196 private:
197  char *base;
198  int level;
200  int helpKeys;
201  void SetHelpKeys(void);
202  void Set(bool Refresh = false);
203  bool Open(bool OpenSubMenus = false);
204  eOSState Play(void);
205  eOSState Rewind(void);
206  eOSState Delete(void);
207  eOSState Info(void);
208  eOSState Sort(void);
209  eOSState Commands(eKeys Key = kNone);
210  eOSState Edit(void);
211 protected:
212  cString DirectoryName(void);
213 public:
214  cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false);
216  virtual eOSState ProcessKey(eKeys Key);
217  };
218 
220 private:
224  const cEvent *event;
226  char *fileName;
227  bool GetEvent(void);
228 public:
229  cRecordControl(cDevice *Device, cTimer *Timer = NULL, bool Pause = false);
230  virtual ~cRecordControl();
231  bool Process(time_t t);
232  cDevice *Device(void) { return device; }
233  void Stop(bool ExecuteUserCommand = true);
234  const char *InstantId(void) { return instantId; }
235  const char *FileName(void) { return fileName; }
236  cTimer *Timer(void) { return timer; }
237  };
238 
240 private:
242  static int state;
243 public:
244  static bool Start(cTimer *Timer = NULL, bool Pause = false);
245  static void Stop(const char *InstantId);
246  static bool PauseLiveVideo(void);
247  static const char *GetInstantId(const char *LastInstantId);
248  static cRecordControl *GetRecordControl(const char *FileName);
249  static cRecordControl *GetRecordControl(const cTimer *Timer);
252  static void Process(time_t t);
253  static void ChannelDataModified(cChannel *Channel);
254  static bool Active(void);
255  static void Shutdown(void);
256  static void ChangeState(void) { state++; }
257  static bool StateChanged(int &State);
258  };
259 
261 private:
272  time_t timeoutShow;
275  void TimeSearchDisplay(void);
276  void TimeSearchProcess(eKeys Key);
277  void TimeSearch(void);
278  void ShowTimed(int Seconds = 0);
281  void ShowMode(void);
282  bool ShowProgress(bool Initial);
283  void MarkToggle(void);
284  void MarkJump(bool Forward);
285  void MarkMove(bool Forward);
286  void EditCut(void);
287  void EditTest(void);
288 public:
289  cReplayControl(bool PauseLive = false);
290  virtual ~cReplayControl();
291  void Stop(void);
292  virtual cOsdObject *GetInfo(void);
293  virtual const cRecording *GetRecording(void);
294  virtual eOSState ProcessKey(eKeys Key);
295  virtual void Show(void);
296  virtual void Hide(void);
297  bool Visible(void) { return visible; }
298  static void SetRecording(const char *FileName);
299  static const char *NowReplaying(void);
300  static const char *LastReplayed(void);
301  static void ClearLastReplayed(const char *FileName);
302  };
303 
304 #endif //__MENU_H
cDisplaySubtitleTracks(void)
Definition: menu.c:4491
void ShowTimed(int Seconds=0)
Definition: menu.c:5007
static cString fileName
Definition: menu.h:280
bool lastForward
Definition: menu.h:267
Definition: epg.h:71
virtual void Show(void)
Definition: menu.c:5019
int helpKeys
Definition: menu.h:200
cOsdItem * stopReplayItem
Definition: menu.h:102
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4338
cList< cNestedItem > * commands
Definition: menu.h:58
int lastCurrent
Definition: menu.h:266
cString DirectoryName(void)
Definition: menu.c:2664
cString GetFolder(void)
Definition: menu.c:851
virtual ~cMenuText()
Definition: menu.c:572
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:5312
void TimeSearchDisplay(void)
Definition: menu.c:5109
void DisplayChannel(void)
Definition: menu.c:4082
void MarkToggle(void)
Definition: menu.c:5198
char * text
Definition: menu.h:24
cRecordControl(cDevice *Device, cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:4588
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:5305
bool modeOnly
Definition: menu.h:265
cOsdItem * stopRecordingItem
Definition: menu.h:105
const char * FileName(void)
Definition: menu.h:235
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false)
Definition: menu.c:2570
bool timeout
Definition: menu.h:123
bool shown
Definition: menu.h:265
static void Shutdown(void)
Definition: menu.c:4894
cDevice * Device(void)
Definition: menu.h:232
bool visible
Definition: menu.h:265
void Set(const char *CurrentFolder=NULL)
Definition: menu.c:756
virtual void Show(void)
Definition: menu.c:4405
void Refresh(void)
Definition: menu.c:4111
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:591
int lastTotal
Definition: menu.h:266
virtual void Hide(void)
Definition: menu.c:5024
bool lastPlay
Definition: menu.h:267
eOSState Select(void)
Definition: menu.c:791
int timeSearchPos
Definition: menu.h:274
char * result
Definition: menu.h:63
static cDisplayVolume * Create(void)
Definition: menu.c:4325
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
Definition: menu.c:3726
int numTracks
Definition: menu.h:160
cString command
Definition: menu.h:61
eOSState Execute(void)
Definition: menu.c:2032
cString title
Definition: menu.h:60
cTimer * Timer(void)
Definition: menu.h:236
static void ChannelDataModified(cChannel *Channel)
Definition: menu.c:4868
cNestedItemList Commands
Definition: config.c:275
bool Parse(const char *s)
Definition: menu.c:2009
static void Process(time_t t)
Definition: menu.c:4856
Definition: menu.h:22
char * fileName
Definition: menu.h:226
bool confirm
Definition: menu.h:62
const char * Title(void)
Definition: osdbase.h:112
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:2079
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:158
cSkinDisplayReplay * displayReplay
Definition: menu.h:262
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4550
cDisplayTracks(void)
Definition: menu.c:4371
static void Process(eKeys Key)
Definition: menu.c:4544
virtual void Show(void)
Definition: menu.c:4526
eOSState SetFolder(void)
Definition: menu.c:941
static cDisplayChannel * currentDisplayChannel
Definition: menu.h:127
cChannel * channel
Definition: menu.h:124
eTrackType
Definition: device.h:65
bool displayFrames
Definition: menu.h:265
eOSState SetFolder(void)
Definition: menu.c:839
static bool StateChanged(int &State)
Definition: menu.c:4901
bool timeSearchActive
Definition: menu.h:273
int channel
Definition: menu.h:76
cTimeMs timeout
Definition: menu.h:157
static int state
Definition: menu.h:242
int lastSkipSeconds
Definition: menu.h:269
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:3878
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:961
static bool IsOpen(void)
Definition: menu.h:166
cTimer data
Definition: menu.h:75
cNestedItemList * nestedItemList
Definition: menu.h:36
int timeSearchTime
Definition: menu.h:274
cString instantId
Definition: menu.h:225
static void SetRecording(const char *FileName)
Definition: menu.c:4984
bool replaying
Definition: menu.h:101
Definition: keys.h:55
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:865
Definition: timers.h:27
time_t timeoutShow
Definition: menu.h:272
cDisplayChannel(int Number, bool Switched)
Definition: menu.c:4041
eOSState
Definition: osdbase.h:18
cOsdItem * firstFolder
Definition: menu.h:39
virtual void Show(void)
Definition: menu.c:4320
bool Process(time_t t)
Definition: menu.c:4721
static cDisplayTracks * currentDisplayTracks
Definition: menu.h:161
eDvbFont
Definition: font.h:21
cMenuCommands(const char *Title, cList< cNestedItem > *Commands, const char *Parameters=NULL)
Definition: menu.c:1987
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:159
Definition: font.h:22
eOSState Info(void)
Definition: menu.c:2774
void TimeSearch(void)
Definition: menu.c:5180
virtual ~cDisplayVolume()
Definition: menu.c:4314
cTimeMs lastSkipTimeout
Definition: menu.h:271
void SetFirstDayItem(void)
Definition: menu.c:928
int audioChannel
Definition: menu.h:160
virtual cOsdObject * GetInfo(void)
Returns an OSD object that displays information about the currently played programme.
Definition: menu.c:5297
bool GetEvent(void)
Definition: menu.c:4680
cSkinDisplayTracks * displayTracks
Definition: menu.h:156
cOsdItem * cancelFileTransferItem
Definition: menu.h:104
cString dir
Definition: menu.h:38
bool addIfConfirmed
Definition: menu.h:77
cDevice * device
Definition: menu.h:221
cOsdItem * cancelEditingItem
Definition: menu.h:103
cSkinDisplayVolume * displayVolume
Definition: menu.h:142
void DescendPath(const char *Path)
Definition: menu.c:774
cList< cNestedItem > * list
Definition: menu.h:37
void SetText(const char *Text)
Definition: menu.c:577
static const cCursesFont Font
Definition: skincurses.c:30
static bool Active(void)
Definition: menu.c:4885
virtual ~cDisplayChannel()
Definition: menu.c:4075
bool Visible(void)
Definition: menu.h:297
cTimeMs timeout
Definition: menu.h:143
const char * InstantId(void)
Definition: menu.h:234
cSkinDisplayTracks * displayTracks
Definition: menu.h:174
virtual ~cReplayControl()
Definition: menu.c:4942
int recordingsState
Definition: menu.h:199
static void Stop(const char *InstantId)
Definition: menu.c:4788
bool timeSearchHide
Definition: menu.h:273
static cDisplaySubtitleTracks * Create(void)
Definition: menu.c:4533
virtual ~cRecordControl()
Definition: menu.c:4672
cRecorder * recorder
Definition: menu.h:223
cMenuEditStrItem * file
Definition: menu.h:78
Definition: menu.h:99
cString parameters
Definition: menu.h:59
int recordControlsState
Definition: menu.h:106
void Stop(bool ExecuteUserCommand=true)
Definition: menu.c:4708
void MarkJump(bool Forward)
Definition: menu.c:5219
static const char * LastReplayed(void)
Definition: menu.c:4994
virtual ~cMenuEditTimer()
Definition: menu.c:916
bool ShowProgress(bool Initial)
Definition: menu.c:5068
eOSState Play(void)
Definition: menu.c:2691
static cDisplaySubtitleTracks * currentDisplayTracks
Definition: menu.h:179
cTimer * timer
Definition: menu.h:74
eOSState ProcessKey(eKeys Key)
Definition: menu.c:4432
static const char * GetInstantId(const char *LastInstantId)
Definition: menu.c:4823
eKeys lastSkipKey
Definition: menu.h:270
int lastSpeed
Definition: menu.h:268
static cRecordControl * RecordControls[]
Definition: menu.h:241
void TimeSearchProcess(eKeys Key)
Definition: menu.c:5127
static void ClearLastReplayed(const char *FileName)
Definition: menu.c:5001
bool editing
Definition: menu.h:40
const cEvent * lastFollowing
Definition: menu.h:126
bool marksModified
Definition: menu.h:264
void SetHelpKeys(void)
Definition: menu.c:923
void EditTest(void)
Definition: menu.c:5279
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:4131
void ShowMode(void)
Definition: menu.c:5043
static void Process(eKeys Key)
Definition: menu.c:4332
~cMenuRecordings()
Definition: menu.c:2588
bool withInfo
Definition: menu.h:120
static void Process(eKeys Key)
Definition: menu.c:4426
cMenuFolder(const char *Title, cList< cNestedItem > *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path=NULL)
Definition: menu.c:737
static cOsdObject * pluginOsdObject
Definition: menu.h:107
eOSState New(void)
Definition: menu.c:805
virtual void Display(void)
Definition: menu.c:583
static bool IsOpen(void)
Definition: menu.h:184
eOSState Edit(void)
Definition: menu.c:827
cTimeMs lastTime
Definition: menu.h:121
cMenuText(const char *Title, const char *Text, eDvbFont Font=fontOsd)
Definition: menu.c:563
virtual ~cMenuCommands()
Definition: menu.c:2004
cChannel * NextAvailableChannel(cChannel *Channel, int Direction)
Definition: menu.c:4117
virtual ~cDisplayTracks()
Definition: menu.c:4396
void Forward(void)
Definition: dvbplayer.c:900
static cDisplayTracks * Create(void)
Definition: menu.c:4415
eOSState Commands(eKeys Key=kNone)
Definition: menu.c:2784
cDisplayVolume(void)
Definition: menu.c:4305
cSkinDisplayChannel * displayChannel
Definition: menu.h:118
eDvbFont font
Definition: menu.h:25
cMenuEditTimer(cTimer *Timer, bool New=false)
Definition: menu.c:888
static cReplayControl * currentReplayControl
Definition: menu.h:279
cMenuEvent(const cEvent *Event, bool CanSwitch=false, bool Buttons=false)
Definition: menu.c:1409
void DisplayInfo(void)
Definition: menu.c:4089
void SetHelpKeys(void)
Definition: menu.c:751
static void ChangeState(void)
Definition: menu.h:256
cMarks marks
Definition: menu.h:263
const cEvent * event
Definition: menu.h:224
eTrackType types[ttMaxTrackTypes]
Definition: menu.h:176
virtual void Display(void)
Definition: menu.c:1426
static cRecordControl * GetRecordControl(const char *FileName)
Definition: menu.c:4836
char * base
Definition: menu.h:197
virtual ~cDisplaySubtitleTracks()
Definition: menu.c:4517
eOSState Delete(void)
Definition: menu.c:2719
void SetHelpKeys(void)
Definition: menu.c:2594
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:1434
eOSState Sort(void)
Definition: menu.c:2799
Definition: tools.h:323
static cOsdObject * PluginOsdObject(void)
Definition: menu.c:3767
void Set(bool Refresh=false)
Definition: menu.c:2619
virtual eOSState ProcessKey(eKeys Key)
Definition: menu.c:2818
void Set(void)
Definition: menu.c:3774
cReplayControl(bool PauseLive=false)
Definition: menu.c:4918
eOSState Rewind(void)
Definition: menu.c:2705
int number
Definition: menu.h:122
static bool PauseLiveVideo(void)
Definition: menu.c:4808
bool Open(bool OpenSubMenus=false)
Definition: menu.c:2675
cTimer * timer
Definition: menu.h:222
cMenuEditDateItem * day
Definition: menu.h:79
bool Update(bool Force=false)
Definition: menu.c:3811
static bool IsOpen(void)
Definition: menu.h:137
eOSState Delete(void)
Definition: menu.c:811
const cEvent * lastPresent
Definition: menu.h:125
int track
Definition: menu.h:160
Definition: runvdr.c:107
eKeys
Definition: keys.h:16
const cEvent * event
Definition: menu.h:92
static cDisplayVolume * currentDisplayVolume
Definition: menu.h:144
The cDevice class is the base from which actual devices can be derived.
Definition: device.h:104
void EditCut(void)
Definition: menu.c:5259
Definition: tools.h:166
cMenuEditDateItem * firstday
Definition: menu.h:80
static const char * NowReplaying(void)
Definition: menu.c:4989
char * descriptions[ttMaxTrackTypes+1]
Definition: menu.h:177
void MarkMove(bool Forward)
Definition: menu.c:5236
eOSState Edit(void)
Definition: menu.c:2808
void Stop(void)
Definition: menu.c:4952
static bool Start(cTimer *Timer=NULL, bool Pause=false)
Definition: menu.c:4737