vdr/menu.h
Klaus Schmidinger 217fcb2680 Version 1.0.0pre4
- Added 'Ca' code 201 for 'Cryptoworks, GOD-DIGITAL' to 'ca.conf' (thanks to
  Bernd Schweikert).
- Fixed avoiding the primary DVB interface in case Setup.PrimaryLimit is 0.
- Fixed handling CICAM settings if the first one of a DVB card was FTA.
- Fixed reacting on changes in CICAM settings (needed to restart VDR before).
- The "Blue" button in the "Main" menu now works as "Stop" button if a recording
  is currently being replayed.
- New command line option '-m' to mute audio of the primary DVB device at
  startup (suggested by Mirko Günther).
- The new SVDRP command VOLU can be used to control the audio volume (suggested
  by Mirko Günther).
- Fixed resetting 'mute' state when setting the volume to a non-zero value.
- Added log messages when deleting recordings in case the disk runs full while
  recording.
- Fixed closing a pipe (used for replaying Dolby Digital audio), which
  sometimes left 'zombie' processes behind (thanks to Werner Fink for helping
  to debug this one).
- Now starting the Dolby Digital output thread only if the recording actually
  contains Dolby Digital audio data (thanks to Werner Fink).
- Implemented OSD for Volume and Mute (works only if there is no other OSD
  activity, but this should be no problem for normal use).
- Changed the MANUAL description of the "Conditional Access" setup parameters
  to reflect the actual "CICAM DVBn m" notation in the "Setup" menu.
- The new Setup parameter "Use time from transponder" can be used to define which
  transponder shall be used to set the system time (see MANUAL for details).
  If you have been using the SetSystemTime option previously, you now MUST
  select a channel that you trust to have a reliable time base.
- Grouped the Setup parameters into several sub-menus, so that each group of
  parameters fits on a single screen - unless the height of the OSD has been
  set to a small value (based on code from Markus Lang).
- Changed the title of the "Main" menu to "VDR".
- Fixed displaying a system message while the replay mode is being shown.
- Physically removing a deleted recording if one with the same name shall be
  deleted again.
- The "Left" and "Right" keys are now used to page up and down in text displays
  (like the EPG descriptions or the results of commands executed from the
  "Commands" menu).
- Fixed high CPU usage in transfer mode.
- Replaced 'killproc' with 'killall' in 'runvdr', since apparently 'killproc'
  is not available by default on some Linux distributions, whereas 'killall' is.
  Please check if your system provides 'killall' - if it doesn't, please change
  this back in 'runvdr' and report this (thanks to Achim Lange).
- The "Commands" menu now automatically assigns number keys as hotkeys to the
  commands. If you have preceeded your commands with digits you may want to
  remove these from your 'commands.conf' file.
- The new Setup item "Restart" can be used to force a complete restart of VDR,
  including reloading the driver. Note that this can only work if VDR and the
  driver are wrapped into a mechanism that actually performs this action if VDR
  exits. The 'runvdr' script can be used for this purpose.
- Refined texts of the "Setup" menu.
2002-03-17 18:00:00 +01:00

146 lines
3.7 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.40 2002/03/16 09:51:10 kls Exp $
*/
#ifndef _MENU_H
#define _MENU_H
#include "dvbapi.h"
#include "osd.h"
#include "recording.h"
class cMenuMain : public cOsdMenu {
private:
time_t lastActivity;
bool replaying;
void Set(void);
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);
};
class cDisplayVolume : public cOsdBase {
private:
int timeout;
static cDisplayVolume *displayVolume;
void Show(void);
cDisplayVolume(void);
public:
virtual ~cDisplayVolume();
static cDisplayVolume *Create(void);
static void Process(eKeys Key);
eOSState ProcessKey(eKeys Key);
};
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; }
const char *FileName(void) { return fileName; }
cTimer *Timer(void) { return timer; }
};
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 cRecordControl *GetRecordControl(const char *FileName);
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;
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);
static const char *LastReplayed(void);
static void ClearLastReplayed(const char *FileName);
};
#endif //_MENU_H