mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
- The setup option "DVB/Video display format" is now only available if "Video format" is set to "4:3" (suggested by Mikko Salo). - Updated the Russian OSD texts (thanks to Vyacheslav Dikonov). - Dropped CA support for the old '-icam' firmware. - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Updated the Swedish OSD texts (thanks to Tomas Prybil). - Fixed a few French OSD texts that were in the wrong place. - Improved matching timers to EPG events, especially in case there are several events with the same VPS time. - Fixed cDolbyRepacker to allow recording ProSieben HD broadcasts (thanks to Reinhard Nissl). - Fixed cDvbDevice::SetVideoDisplayFormat() in case of 16:9 (thanks to Marco Schlüßler). - The running status of a VPS event is now only taken seriously if that event has been seen within the last 30 seconds - otherwise recording is done as if no VPS was available. - The day of a timer is now stored as a full date in ISO notation ("YYYY-MM-DD") in 'timers.conf' and for the result of the SVDRP command LSTT (based in parts on a patch by Roman Krenický). - Some fixes to avoid compiler warnings in gcc 4.0 (thanks to Ville Skyttä for reporting these). - Single shot timers are now reliably deleted when they have expired. - Fixed setting the colored button help after deleting a recording in case the next menu entry is a directory (thanks to Steffen Beyer). - Improved falling back to normal recording if the VPS data hasn't been seen for more than 30 seconds. - Added a missing cMutexLock to cRemote::HasKeys() (thanks to Wolfgang Rohdewald). - All log entries regarding timers now contain a short description of the timer.
218 lines
5.5 KiB
C++
218 lines
5.5 KiB
C++
/*
|
|
* menu.h: The actual menu implementations
|
|
*
|
|
* See the main source file 'vdr.c' for copyright information and
|
|
* how to reach the author.
|
|
*
|
|
* $Id: menu.h 1.69 2005/03/20 10:57:29 kls Exp $
|
|
*/
|
|
|
|
#ifndef __MENU_H
|
|
#define __MENU_H
|
|
|
|
#include "ci.h"
|
|
#include "device.h"
|
|
#include "epg.h"
|
|
#include "osdbase.h"
|
|
#include "dvbplayer.h"
|
|
#include "recorder.h"
|
|
#include "skins.h"
|
|
|
|
class cMenuText : public cOsdMenu {
|
|
private:
|
|
char *text;
|
|
public:
|
|
cMenuText(const char *Title, const char *Text, eDvbFont Font = fontOsd);
|
|
virtual ~cMenuText();
|
|
void SetText(const char *Text);
|
|
virtual void Display(void);
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cMenuMain : public cOsdMenu {
|
|
private:
|
|
time_t lastActivity;
|
|
bool replaying;
|
|
static cOsdObject *pluginOsdObject;
|
|
void Set(const char *Plugin = NULL);
|
|
public:
|
|
cMenuMain(bool Replaying, eOSState State = osUnknown, const char *Plugin = NULL);
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
static cOsdObject *PluginOsdObject(void);
|
|
};
|
|
|
|
class cDisplayChannel : public cOsdObject {
|
|
private:
|
|
cSkinDisplayChannel *displayChannel;
|
|
int group;
|
|
bool withInfo;
|
|
cTimeMs lastTime;
|
|
int number;
|
|
cChannel *channel;
|
|
const cEvent *lastPresent;
|
|
const cEvent *lastFollowing;
|
|
void DisplayChannel(void);
|
|
void DisplayInfo(void);
|
|
void Refresh(void);
|
|
public:
|
|
cDisplayChannel(int Number, bool Switched);
|
|
cDisplayChannel(eKeys FirstKey);
|
|
virtual ~cDisplayChannel();
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cDisplayVolume : public cOsdObject {
|
|
private:
|
|
cSkinDisplayVolume *displayVolume;
|
|
cTimeMs timeout;
|
|
static cDisplayVolume *currentDisplayVolume;
|
|
virtual void Show(void);
|
|
cDisplayVolume(void);
|
|
public:
|
|
virtual ~cDisplayVolume();
|
|
static cDisplayVolume *Create(void);
|
|
static void Process(eKeys Key);
|
|
eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cDisplayTracks : public cOsdObject {
|
|
private:
|
|
cSkinDisplayTracks *displayTracks;
|
|
cTimeMs timeout;
|
|
eTrackType types[ttMaxTrackTypes];
|
|
char *descriptions[ttMaxTrackTypes];
|
|
int numTracks, track, audioChannel;
|
|
static cDisplayTracks *currentDisplayTracks;
|
|
virtual void Show(void);
|
|
cDisplayTracks(void);
|
|
public:
|
|
virtual ~cDisplayTracks();
|
|
static bool IsOpen(void) { return currentDisplayTracks != NULL; }
|
|
static cDisplayTracks *Create(void);
|
|
static void Process(eKeys Key);
|
|
eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cMenuCam : public cOsdMenu {
|
|
private:
|
|
cCiMenu *ciMenu;
|
|
time_t lastActivity;
|
|
bool selected;
|
|
eOSState Select(void);
|
|
public:
|
|
cMenuCam(cCiMenu *CiMenu);
|
|
virtual ~cMenuCam();
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cMenuCamEnquiry : public cOsdMenu {
|
|
private:
|
|
cCiEnquiry *ciEnquiry;
|
|
time_t lastActivity;
|
|
char *input;
|
|
bool replied;
|
|
eOSState Reply(void);
|
|
public:
|
|
cMenuCamEnquiry(cCiEnquiry *CiEnquiry);
|
|
virtual ~cMenuCamEnquiry();
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
cOsdObject *CamControl(void);
|
|
|
|
class cMenuRecordingItem;
|
|
|
|
class cMenuRecordings : public cOsdMenu {
|
|
private:
|
|
char *base;
|
|
int level;
|
|
static int helpKeys;
|
|
void SetHelpKeys(void);
|
|
cRecording *GetRecording(cMenuRecordingItem *Item);
|
|
bool Open(bool OpenSubMenus = false);
|
|
eOSState Play(void);
|
|
eOSState Rewind(void);
|
|
eOSState Delete(void);
|
|
eOSState Summary(void);
|
|
eOSState Commands(eKeys Key = kNone);
|
|
public:
|
|
cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false);
|
|
~cMenuRecordings();
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cRecordControl {
|
|
private:
|
|
cDevice *device;
|
|
cTimer *timer;
|
|
cRecorder *recorder;
|
|
const cEvent *event;
|
|
char *instantId;
|
|
char *fileName;
|
|
bool GetEvent(void);
|
|
public:
|
|
cRecordControl(cDevice *Device, cTimer *Timer = NULL, bool Pause = false);
|
|
virtual ~cRecordControl();
|
|
bool Process(time_t t);
|
|
cDevice *Device(void) { return device; }
|
|
void Stop(void);
|
|
const char *InstantId(void) { return instantId; }
|
|
const char *FileName(void) { return fileName; }
|
|
cTimer *Timer(void) { return timer; }
|
|
};
|
|
|
|
class cRecordControls {
|
|
private:
|
|
static cRecordControl *RecordControls[];
|
|
public:
|
|
static bool Start(cTimer *Timer = NULL, bool Pause = false);
|
|
static void Stop(const char *InstantId);
|
|
static void Stop(cDevice *Device);
|
|
static bool StopPrimary(bool DoIt = false);
|
|
static bool PauseLiveVideo(void);
|
|
static const char *GetInstantId(const char *LastInstantId);
|
|
static cRecordControl *GetRecordControl(const char *FileName);
|
|
static void Process(time_t t);
|
|
static void ChannelDataModified(cChannel *Channel);
|
|
static bool Active(void);
|
|
static void Shutdown(void);
|
|
};
|
|
|
|
class cReplayControl : public cDvbPlayerControl {
|
|
private:
|
|
cSkinDisplayReplay *displayReplay;
|
|
cMarks marks;
|
|
bool visible, modeOnly, shown, displayFrames;
|
|
int lastCurrent, lastTotal;
|
|
bool lastPlay, lastForward;
|
|
int lastSpeed;
|
|
time_t timeoutShow;
|
|
bool timeSearchActive, timeSearchHide;
|
|
int timeSearchTime, timeSearchPos;
|
|
void TimeSearchDisplay(void);
|
|
void TimeSearchProcess(eKeys Key);
|
|
void TimeSearch(void);
|
|
void ShowTimed(int Seconds = 0);
|
|
static char *fileName;
|
|
static char *title;
|
|
void ShowMode(void);
|
|
bool ShowProgress(bool Initial);
|
|
void MarkToggle(void);
|
|
void MarkJump(bool Forward);
|
|
void MarkMove(bool Forward);
|
|
void EditCut(void);
|
|
void EditTest(void);
|
|
public:
|
|
cReplayControl(void);
|
|
virtual ~cReplayControl();
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
virtual void Show(void);
|
|
virtual void Hide(void);
|
|
bool Visible(void) { return visible; }
|
|
static void SetRecording(const char *FileName, const char *Title);
|
|
static const char *LastReplayed(void);
|
|
static void ClearLastReplayed(const char *FileName);
|
|
};
|
|
|
|
#endif //__MENU_H
|