vdr/menu.h
Klaus Schmidinger 156831036e Version 0.95
- Fixed behaviour in case the shutdown didn't take place (there were many
  "next timer event at..." messages in that case).
- Reduced the default value for MinEventTimeout to 30 minutes.
- Fixed detecting manual start in shutdown feature.
- An error message is now displayed in case the Transfer Mode can't be
  started because the necessary DVB card is currently recording (or there
  is no DVB card that can access this channel).
- Fixed toggling channels with the '0' key in case the "Ok" button has been
  pressed to display the current/next information.
- Pressing the "Power" key now always initiates the shutdown sequence (after
  user confirmation in case of a recording timer), event if there is currently
  a menu or a replay session active. Note the additional remarks in INSTALL
  regarding the values of the two parameters given to the shutdown program
  in case of a currently recording timer.
- Switching through channel groups with the "Left" and "Right" keys now
  always starts at the group that contains the current channel.
- Implemented "Multi Speed Mode" (thanks to Stefan Huelswitt).
- Implemented backtracing to hit the right spot after fast forward/rewind
  (thanks to Stefan Huelswitt).
- Implemented replay mode display (thanks to Stefan Huelswitt, with a few
  rewrites by kls).
- Changed the size of all input buffers used to parse config files or receive
  SVDRP commands to the same value of 10KB. This allows long strings to be
  used in the 'summary' field of a timer, for instance.
- The pipe to the Dolby Digital replay command (option '-a') now closes all
  unused file descriptors in the child process to avoid crashing when the
  OSD is used (thanks to Andreas Vitting).
- Switched to the driver's new tuning API (VDR now requires a driver version
  dated 2001-09-14 or higher).
- Changed obsolete macro VIDEO_WINDOW_CHROMAKEY to VID_TYPE_CHROMAKEY (thanks
  to Guido Fiala).
- New version of the "Master-Timer" tool (thanks to Matthias Schniedermeyer).
- Better error handling when writing configuration files.
- Fixed putting the final editing mark into the edited version's marks file.
- Fixed manipulating an editing mark at the very end of a recording.
- Fixed starting a new replay immediately after stopping a previous one (had
  caused a mix between live video and replay).
- Three new keys ("Volume+", Volume-" and "Mute") to control the DVB card's
  audio output volume.
- New version of the 'epg2timers' tool (thanks to Carsten Koch).
2001-09-16 18:00:00 +02:00

143 lines
3.4 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.28 2001/09/14 15:09:49 kls Exp $
*/
#ifndef _MENU_H
#define _MENU_H
#define _GNU_SOURCE
#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);
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 cMenuRecordings : public cOsdMenu {
private:
cRecordings Recordings;
eOSState Play(void);
eOSState Rewind(void);
eOSState Del(void);
eOSState Summary(void);
public:
cMenuRecordings(void);
virtual eOSState ProcessKey(eKeys Key);
};
class cRecordControl {
private:
cDvbApi *dvbApi;
cTimer *timer;
const cEventInfo *eventInfo;
char *instantId;
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 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
#endif //DVDSUPPORT
static const char *LastReplayed(void);
static void ClearLastReplayed(const char *FileName);
};
#endif //_MENU_H