vdr 2.6.1
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 5.1 2020/12/26 15:49:01 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
22class cMenuText : public cOsdMenu {
23private:
24 char *text;
26public:
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);
32 };
33
34class cMenuFolder : public cOsdMenu {
35private:
40 bool editing;
41 int helpKeys;
42 void SetHelpKeys(void);
43 void Set(const char *CurrentFolder = NULL);
44 void DescendPath(const char *Path);
46 eOSState Select(bool Open);
50 cMenuFolder(const char *Title, cList<cNestedItem> *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path = NULL);
51public:
52 cMenuFolder(const char *Title, cNestedItemList *NestedItemList, const char *Path = NULL);
55 };
56
57class cMenuCommands : public cOsdMenu {
58private:
63 bool confirm;
64 char *result;
65 bool Parse(const char *s);
67public:
68 cMenuCommands(const char *Title, cList<cNestedItem> *Commands, const char *Parameters = NULL);
69 virtual ~cMenuCommands();
71 };
72
73class cMenuEditTimer : public cOsdMenu {
74private:
75 static const cTimer *addedTimer;
78 int channel;
79 bool addIfConfirmed;
81 char remote[HOST_NAME_MAX];
87 void SetFirstDayItem(void);
88 void SetPatternItem(bool Initial = false);
89 void SetHelpKeys(void);
90public:
91 cMenuEditTimer(cTimer *Timer, bool New = false);
92 virtual ~cMenuEditTimer();
94 static const cTimer *AddedTimer(void);
95 };
96
97class cMenuEvent : public cOsdMenu {
98private:
99 const cEvent *event;
100public:
101 cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch = false, bool Buttons = false);
102 virtual void Display(void);
104 };
105
106class cMenuMain : public cOsdMenu {
107private:
108 bool replaying;
114 void Set(void);
115 bool Update(bool Force = false);
116public:
117 cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false);
120 };
121
122class cDisplayChannel : public cOsdObject {
123private:
125 int group;
126 bool withInfo;
128 int number;
129 bool timeout;
130 int osdState;
131 const cPositioner *positioner;
132 const cChannel *channel;
133 const cEvent *lastPresent;
134 const cEvent *lastFollowing;
136 void DisplayChannel(void);
137 void DisplayInfo(void);
138 void Refresh(void);
139 const cChannel *NextAvailableChannel(const cChannel *Channel, int Direction);
140public:
141 cDisplayChannel(int Number, bool Switched);
145 static bool IsOpen(void) { return currentDisplayChannel != NULL; }
146 };
147
148class cDisplayVolume : public cOsdObject {
149private:
153 virtual void Show(void);
155public:
157 static cDisplayVolume *Create(void);
158 static void Process(eKeys Key);
160 };
161
162class cDisplayTracks : public cOsdObject {
163private:
167 char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
170 virtual void Show(void);
172public:
174 static bool IsOpen(void) { return currentDisplayTracks != NULL; }
175 static cDisplayTracks *Create(void);
176 static void Process(eKeys Key);
178 };
179
180class cDisplaySubtitleTracks : public cOsdObject {
181private:
185 char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
186 int numTracks, track;
188 virtual void Show(void);
190public:
192 static bool IsOpen(void) { return currentDisplayTracks != NULL; }
194 static void Process(eKeys Key);
196 };
197
199bool CamMenuActive(void);
200
201class cRecordingFilter {
202public:
203 virtual ~cRecordingFilter(void) {};
204 virtual bool Filter(const cRecording *Recording) const = 0;
206 };
207
209
210class cMenuRecordings : public cOsdMenu {
211private:
212 char *base;
213 int level;
215 int helpKeys;
217 static cString path;
218 static cString fileName;
219 void SetHelpKeys(void);
220 void Set(bool Refresh = false);
221 bool Open(bool OpenSubMenus = false);
228protected:
230public:
231 cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false, const cRecordingFilter *Filter = NULL);
234 static void SetPath(const char *Path);
235 static void SetRecording(const char *FileName);
236 };
237
238class cRecordControl {
239private:
241 cTimer *timer;
243 const cEvent *event;
245 char *fileName;
246 bool GetEvent(void);
247public:
248 cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer = NULL, bool Pause = false);
250 bool Process(time_t t);
251 cDevice *Device(void) { return device; }
252 void Stop(bool ExecuteUserCommand = true);
253 const char *InstantId(void) { return instantId; }
254 const char *FileName(void) { return fileName; }
255 cTimer *Timer(void) { return timer; }
256 };
257
258class cRecordControls {
259private:
261 static int state;
262public:
263 static bool Start(cTimers *Timers, cTimer *Timer, bool Pause = false);
264 static bool Start(bool Pause = false);
265 static void Stop(const char *InstantId);
266 static void Stop(cTimer *Timer);
267 static bool PauseLiveVideo(void);
268 static const char *GetInstantId(const char *LastInstantId);
269 static cRecordControl *GetRecordControl(const char *FileName);
273 static bool Process(cTimers *Timers, time_t t);
274 static void ChannelDataModified(const cChannel *Channel);
275 static bool Active(void);
276 static void Shutdown(void);
277 static void ChangeState(void) { state++; }
278 static bool StateChanged(int &State);
279 };
280
281class cAdaptiveSkipper {
282private:
283 int *initialValue;
284 int currentValue;
285 double framesPerSecond;
288public:
290 void Initialize(int *InitialValue, double FramesPerSecond);
291 int GetValue(eKeys Key);
292 };
293
294class cReplayControl : public cDvbPlayerControl {
295private:
299 bool marksModified;
302 bool lastPlay, lastForward;
303 int lastSpeed;
304 time_t timeoutShow;
310 void TimeSearch(void);
311 void ShowTimed(int Seconds = 0);
313 static cString fileName;
314 void ShowMode(void);
315 bool ShowProgress(bool Initial);
316 void MarkToggle(void);
317 void MarkJump(bool Forward);
318 void MarkMove(int Frames, bool MarkRequired);
319 void EditCut(void);
320 void EditTest(void);
321public:
322 cReplayControl(bool PauseLive = false);
324 void Stop(void);
325 virtual cOsdObject *GetInfo(void);
326 virtual const cRecording *GetRecording(void);
328 virtual void Show(void);
329 virtual void Hide(void);
330 bool Visible(void) { return visible; }
331 virtual void ClearEditingMarks(void);
332 static void SetRecording(const char *FileName);
333 static const char *NowReplaying(void);
334 static const char *LastReplayed(void);
335 static void ClearLastReplayed(const char *FileName);
336 };
337
338#endif //__MENU_H
void Initialize(int *InitialValue, double FramesPerSecond)
int GetValue(eKeys Key)
cDisplayChannel(eKeys FirstKey)
const cChannel * channel
static bool IsOpen(void)
Definition: menu.h:145
static cDisplayChannel * currentDisplayChannel
void DisplayChannel(void)
virtual ~cDisplayChannel()
void Refresh(void)
virtual eOSState ProcessKey(eKeys Key)
cSkinDisplayChannel * displayChannel
const cPositioner * positioner
void DisplayInfo(void)
const cEvent * lastPresent
const cEvent * lastFollowing
cDisplayChannel(int Number, bool Switched)
const cChannel * NextAvailableChannel(const cChannel *Channel, int Direction)
virtual ~cDisplaySubtitleTracks()
char * descriptions[ttMaxTrackTypes+1]
cSkinDisplayTracks * displayTracks
static cDisplaySubtitleTracks * Create(void)
eTrackType types[ttMaxTrackTypes]
static bool IsOpen(void)
Definition: menu.h:192
static cDisplaySubtitleTracks * currentDisplayTracks
static void Process(eKeys Key)
virtual void Show(void)
eOSState ProcessKey(eKeys Key)
virtual void Show(void)
cSkinDisplayTracks * displayTracks
virtual ~cDisplayTracks()
cDisplayTracks(void)
eTrackType types[ttMaxTrackTypes]
char * descriptions[ttMaxTrackTypes+1]
eOSState ProcessKey(eKeys Key)
static void Process(eKeys Key)
static cDisplayTracks * Create(void)
static bool IsOpen(void)
Definition: menu.h:174
static cDisplayTracks * currentDisplayTracks
static void Process(eKeys Key)
virtual ~cDisplayVolume()
cSkinDisplayVolume * displayVolume
static cDisplayVolume * Create(void)
static cDisplayVolume * currentDisplayVolume
eOSState ProcessKey(eKeys Key)
virtual void Show(void)
cDisplayVolume(void)
void Forward(void)
Definition: dvbplayer.c:1023
Definition: epg.h:73
eOSState Execute(void)
cList< cNestedItem > * commands
virtual ~cMenuCommands()
virtual eOSState ProcessKey(eKeys Key)
cMenuCommands(const char *Title, cList< cNestedItem > *Commands, const char *Parameters=NULL)
bool Parse(const char *s)
cMenuEditStrItem * file
cMenuEditDateItem * day
cMenuEditDateItem * firstday
static const cTimer * addedTimer
cMenuEditStrItem * pattern
eOSState SetFolder(void)
virtual eOSState ProcessKey(eKeys Key)
void SetHelpKeys(void)
virtual ~cMenuEditTimer()
char remote[HOST_NAME_MAX]
cMenuEditTimer(cTimer *Timer, bool New=false)
void SetFirstDayItem(void)
cStringList svdrpServerNames
static const cTimer * AddedTimer(void)
void SetPatternItem(bool Initial=false)
virtual eOSState ProcessKey(eKeys Key)
virtual void Display(void)
const cEvent * event
cMenuEvent(const cTimers *Timers, const cChannels *Channels, const cEvent *Event, bool CanSwitch=false, bool Buttons=false)
cList< cNestedItem > * list
cMenuFolder(const char *Title, cList< cNestedItem > *List, cNestedItemList *NestedItemList, const char *Dir, const char *Path=NULL)
eOSState Delete(void)
cNestedItemList * nestedItemList
cOsdItem * firstFolder
eOSState New(void)
virtual eOSState ProcessKey(eKeys Key)
eOSState SetFolder(void)
void Set(const char *CurrentFolder=NULL)
void DescendPath(const char *Path)
eOSState Edit(void)
cMenuFolder(const char *Title, cNestedItemList *NestedItemList, const char *Path=NULL)
eOSState Select(bool Open)
cString GetFolder(void)
void SetHelpKeys(void)
cOsdItem * stopReplayItem
cOsdItem * stopRecordingItem
void Set(void)
int recordControlsState
virtual eOSState ProcessKey(eKeys Key)
bool Update(bool Force=false)
static cOsdObject * PluginOsdObject(void)
cOsdItem * cancelEditingItem
cMenuMain(eOSState State=osUnknown, bool OpenSubMenus=false)
static cOsdObject * pluginOsdObject
virtual eOSState ProcessKey(eKeys Key)
void Set(bool Refresh=false)
bool Open(bool OpenSubMenus=false)
eOSState Sort(void)
eOSState Info(void)
eOSState Play(void)
static cString fileName
eOSState Rewind(void)
cStateKey recordingsStateKey
static void SetRecording(const char *FileName)
cMenuRecordings(const char *Base=NULL, int Level=0, bool OpenSubMenus=false, const cRecordingFilter *Filter=NULL)
const cRecordingFilter * filter
static void SetPath(const char *Path)
eOSState Commands(eKeys Key=kNone)
cString DirectoryName(void)
void SetHelpKeys(void)
static cString path
eOSState Delete(void)
eDvbFont font
void SetText(const char *Text)
cMenuText(const char *Title, const char *Text, eDvbFont Font=fontOsd)
virtual ~cMenuText()
virtual void Display(void)
virtual eOSState ProcessKey(eKeys Key)
const char * Title(void)
A steerable satellite dish generally points to the south on the northern hemisphere,...
const char * InstantId(void)
Definition: menu.h:253
void Stop(bool ExecuteUserCommand=true)
const char * FileName(void)
Definition: menu.h:254
virtual ~cRecordControl()
bool GetEvent(void)
const cEvent * event
cTimer * Timer(void)
cRecordControl(cDevice *Device, cTimers *Timers, cTimer *Timer=NULL, bool Pause=false)
cDevice * Device(void)
cRecorder * recorder
bool Process(time_t t)
static bool Process(cTimers *Timers, time_t t)
static cRecordControl * RecordControls[]
static const char * GetInstantId(const char *LastInstantId)
static cRecordControl * GetRecordControl(const char *FileName)
static bool PauseLiveVideo(void)
static bool StateChanged(int &State)
static bool Start(cTimers *Timers, cTimer *Timer, bool Pause=false)
static void Shutdown(void)
static cRecordControl * GetRecordControl(const cTimer *Timer)
Returns the cRecordControl for the given Timer.
static void ChannelDataModified(const cChannel *Channel)
static bool Start(bool Pause=false)
static void Stop(const char *InstantId)
static void ChangeState(void)
Definition: menu.h:277
static bool Active(void)
static void Stop(cTimer *Timer)
virtual bool Filter(const cRecording *Recording) const =0
Returns true if the given Recording shall be displayed in the Recordings menu.
virtual ~cRecordingFilter(void)
Definition: menu.h:203
void MarkToggle(void)
static void ClearLastReplayed(const char *FileName)
void TimeSearchDisplay(void)
void MarkMove(int Frames, bool MarkRequired)
static cReplayControl * currentReplayControl
void TimeSearchProcess(eKeys Key)
void MarkJump(bool Forward)
void EditCut(void)
bool Visible(void)
Definition: menu.h:330
void Stop(void)
void ShowTimed(int Seconds=0)
virtual void Show(void)
static cString fileName
static const char * NowReplaying(void)
virtual void ClearEditingMarks(void)
Clears any editing marks this player might be showing.
void EditTest(void)
bool ShowProgress(bool Initial)
cSkinDisplayReplay * displayReplay
cAdaptiveSkipper adaptiveSkipper
static const char * LastReplayed(void)
virtual void Hide(void)
void ShowMode(void)
static void SetRecording(const char *FileName)
virtual eOSState ProcessKey(eKeys Key)
virtual const cRecording * GetRecording(void)
Returns the cRecording that is currently being replayed, or NULL if this player is not playing a cRec...
void TimeSearch(void)
virtual ~cReplayControl()
cReplayControl(bool PauseLive=false)
virtual cOsdObject * GetInfo(void)
Returns an OSD object that displays information about the currently played programme.
cNestedItemList Commands
Definition: config.c:275
eTrackType
Definition: device.h:63
@ ttMaxTrackTypes
Definition: device.h:73
eDvbFont
Definition: font.h:21
@ fontOsd
Definition: font.h:22
@ kNone
@ osUnknown
cOsdObject * CamControl(void)
Definition: menu.c:2490
bool CamMenuActive(void)
Definition: menu.c:2499
static const cCursesFont Font
Definition: skincurses.c:31
Definition: runvdr.c:107