mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
- VDR now requires driver version 0.8.1 or higher. - Recordings are now saved in PES mode. Note that you now need to install the driver *WITHOUT* 'outstream=0'! This is the default when you 'make insmod' in the DVB/driver directory. Old recordings (in AV_PES mode) can still be replayed (as long as the driver still supports replaying AV_PES files). The only limitation with this is that in fast forward/back mode the picture may be slightly distorted and there may be sound fragments. - The EPG data is now dumped into the file /video/epg.data every ten minutes. Use the Perl script 'epg2html.pl' to convert the raw EPG data into a simple HTML programme listing. - Fixed handling of channel switching with the "Blue" button in the "What's on now/next?" menus. - Fixed saving the MarginStop setup parameter. - Fixed missing initialization in cConfig. - Implemented "On Disk Editing". - There is no more default 'timers.conf' file. - Added Italian language texts (thanks to Alberto Carraro). - Fixed starting a replay session when the program is currently in "transfer mode". - Fixed setting/modifying timers via SVDRP with empty summary fields. - Fixed a problem with recordings that have a single quote character in their name (this is now mapped to 0x01). - Changed the value for Diseqc to '0' in the default 'channels.conf'. - Fixed displaying channels and recording status in the RCU's LED display when a recording is interrupted due to higher priority. - Implemented safe writing of config files (first writes into a temporary file and then renames it). - In case the video data stream is broken the log message will come only every 5 seconds. - The current channel is now saved in the 'setup.conf' file when VDR is cancelled, and will be restored next time it is started (thanks to Deti Fliegl). - The EIT scanning thread is now locked when switching channels to avoid problems. - Encrypted channels can now be selected even without knowing the PNR (however, it is still necessary for the EPG info).
105 lines
2.5 KiB
C++
105 lines
2.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.16 2000/12/25 14:25:29 kls Exp $
|
|
*/
|
|
|
|
#ifndef _MENU_H
|
|
#define _MENU_H
|
|
|
|
#define _GNU_SOURCE
|
|
|
|
#include "dvbapi.h"
|
|
#include "osd.h"
|
|
#include "recording.h"
|
|
|
|
class cMenuMain : public cOsdMenu {
|
|
private:
|
|
time_t lastActivity;
|
|
public:
|
|
cMenuMain(bool Replaying);
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cDisplayChannel : public cOsdBase {
|
|
private:
|
|
bool withInfo, group;
|
|
int lines;
|
|
int lastTime;
|
|
int oldNumber, number;
|
|
void DisplayChannel(const cChannel *Channel);
|
|
void DisplayInfo(void);
|
|
public:
|
|
cDisplayChannel(int Number, bool Switched, bool Group = false);
|
|
cDisplayChannel(eKeys FirstKey);
|
|
virtual ~cDisplayChannel();
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cMenuRecordings : public cOsdMenu {
|
|
private:
|
|
cRecordings Recordings;
|
|
eOSState Play(void);
|
|
eOSState Del(void);
|
|
eOSState Summary(void);
|
|
public:
|
|
cMenuRecordings(void);
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cRecordControl {
|
|
private:
|
|
cDvbApi *dvbApi;
|
|
cTimer *timer;
|
|
char *instantId;
|
|
public:
|
|
cRecordControl(cDvbApi *DvbApi, cTimer *Timer = NULL);
|
|
virtual ~cRecordControl();
|
|
bool Process(void);
|
|
bool Uses(cDvbApi *DvbApi) { return DvbApi == dvbApi; }
|
|
void Stop(bool KeepInstant = false);
|
|
bool IsInstant(void) { return instantId; }
|
|
const char *InstantId(void) { return instantId; }
|
|
};
|
|
|
|
class cRecordControls {
|
|
private:
|
|
static cRecordControl *RecordControls[MAXDVBAPI];
|
|
public:
|
|
static bool Start(cTimer *Timer = NULL);
|
|
static void Stop(const char *InstantId);
|
|
static void Stop(cDvbApi *DvbApi);
|
|
static const char *GetInstantId(const char *LastInstantId);
|
|
static void Process(void);
|
|
};
|
|
|
|
class cReplayControl : public cOsdBase {
|
|
private:
|
|
cDvbApi *dvbApi;
|
|
cMarks marks;
|
|
bool visible, shown, displayFrames;
|
|
void Show(void);
|
|
void Hide(void);
|
|
static char *fileName;
|
|
static char *title;
|
|
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);
|
|
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
|