mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
- Fixed setting the OSD size in the 'Confirm' interface call (thanks to Deti Fliegl). - Removed the 'read incomplete section...' error message in the EIT processor. - Fixed channel data for "DW TV" (thanks to Axel Gruber). - Added DPID to "PREMIERE MOVIE 1" in channels.conf.cable (thanks to Stephan Schreiber). - Prepared the OSD functions for multiple overlapping windows. - Removed the check to see whether the system time is running linearly. - Improved performance of SVDRP command entry. - Removed EPGBugfixLevel '3' - after more than a year Pro-7 finally managed to broadcast the correct timestamps for EPG events between 0:00 and 6:00! - Fixed failing watchdog timer if program hangs in OSD activities (thanks to Carsten Koch). - No longer requiring 'libncurses' if compiling without DEBUG_OSD=1 and REMOTE=KBD (thanks to Lauri Pesonen). - The "Recordings" menu now displays a hierarchical structure if there are subdirectories for the recordings. This can be controlled through the "RecordingDirs" parameter in the "Setup" menu. See "MANUAL/Replaying a Recording" for details. - Improved speed of setting the Help button texts. - Fixed handling file names that contain single quotes (') or dollar signs ($) in the call to the shutdown command (option '-s') and the recording command (option '-r'). - Improved error handling in the editing process; the resulting file will be deleted if an error occured. - A message is now prompted at the end of the editing process, indicating whether the process succeeded or failed. - Fixed setting the LastActivity timestamp after a shutdown prompt (thanks to Sergei Haller). - A message is now prompted if free disk space becomes low during recording. - The editing process now calls AssertFreeDiskSpace() to remove deleted recordings if the disk becomes full. - The "Main" menu now displays in its title the used disk space (in percent) and the estimated free disk space (in hh:mm), assuming a data rate of 30 MB per minute. - Activating the "Recordings" menu now displays "scanning recordings..." to give the user some feedback in case this takes longer. - Status messages are now displayed centered. - Removed the 'Tools' subdirectory from the VDR archive. All contributed tools can now be found at ftp://ftp.cadsoft.de/pub/people/kls/vdr/Tools.
153 lines
3.8 KiB
C++
153 lines
3.8 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.35 2002/01/20 13:38:34 kls Exp $
|
|
*/
|
|
|
|
#ifndef _MENU_H
|
|
#define _MENU_H
|
|
|
|
#include "dvbapi.h"
|
|
#ifdef DVDSUPPORT
|
|
#include "dvd.h"
|
|
#endif //DVDSUPPORT
|
|
#include "osd.h"
|
|
#include "recording.h"
|
|
|
|
class cMenuMain : public cOsdMenu {
|
|
private:
|
|
time_t lastActivity;
|
|
int digit;
|
|
const char *hk(const char *s);
|
|
public:
|
|
cMenuMain(bool Replaying, eOSState State = osUnknown);
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cDisplayChannel : public cOsdBase {
|
|
private:
|
|
int group;
|
|
bool withInfo;
|
|
int lines;
|
|
int lastTime;
|
|
int oldNumber, number;
|
|
void DisplayChannel(const cChannel *Channel);
|
|
void DisplayInfo(void);
|
|
public:
|
|
cDisplayChannel(int Number, bool Switched);
|
|
cDisplayChannel(eKeys FirstKey);
|
|
virtual ~cDisplayChannel();
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
#ifdef DVDSUPPORT
|
|
class cMenuDVD : public cOsdMenu {
|
|
private:
|
|
cDVD *dvd;//XXX member really necessary???
|
|
eOSState Play(void);
|
|
eOSState Eject(void);
|
|
public:
|
|
cMenuDVD(void);
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
#endif //DVDSUPPORT
|
|
|
|
class cMenuRecordingItem;
|
|
|
|
class cMenuRecordings : public cOsdMenu {
|
|
private:
|
|
static cRecordings Recordings;
|
|
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 Del(void);
|
|
eOSState Summary(void);
|
|
public:
|
|
cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false);
|
|
~cMenuRecordings();
|
|
virtual eOSState ProcessKey(eKeys Key);
|
|
};
|
|
|
|
class cRecordControl {
|
|
private:
|
|
cDvbApi *dvbApi;
|
|
cTimer *timer;
|
|
const cEventInfo *eventInfo;
|
|
char *instantId;
|
|
char *fileName;
|
|
bool GetEventInfo(void);
|
|
public:
|
|
cRecordControl(cDvbApi *DvbApi, cTimer *Timer = NULL);
|
|
virtual ~cRecordControl();
|
|
bool Process(time_t t);
|
|
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 bool StopPrimary(bool DoIt = false);
|
|
static const char *GetInstantId(const char *LastInstantId);
|
|
static void Process(time_t t);
|
|
static bool Active(void);
|
|
};
|
|
|
|
class cReplayControl : public cOsdBase {
|
|
private:
|
|
cDvbApi *dvbApi;
|
|
cMarks marks;
|
|
bool visible, modeOnly, shown, displayFrames;
|
|
int lastCurrent, lastTotal;
|
|
time_t timeoutShow;
|
|
bool timeSearchActive, timeSearchHide;
|
|
int timeSearchHH, timeSearchMM, timeSearchPos;
|
|
void TimeSearchDisplay(void);
|
|
void TimeSearchProcess(eKeys Key);
|
|
void TimeSearch(void);
|
|
void Show(int Seconds = 0);
|
|
void Hide(void);
|
|
static char *fileName;
|
|
#ifdef DVDSUPPORT
|
|
static cDVD *dvd;//XXX member really necessary???
|
|
static int titleid;//XXX
|
|
#endif //DVDSUPPORT
|
|
static char *title;
|
|
void DisplayAtBottom(const char *s = NULL);
|
|
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);
|
|
bool Visible(void) { return visible; }
|
|
static void SetRecording(const char *FileName, const char *Title);
|
|
#ifdef DVDSUPPORT
|
|
static void SetDVD(cDVD *DVD, int Title);//XXX
|
|
static int LastTitleID(void);
|
|
#endif //DVDSUPPORT
|
|
static const char *LastReplayed(void);
|
|
static void ClearLastReplayed(const char *FileName);
|
|
};
|
|
|
|
#endif //_MENU_H
|