summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2002-06-23 09:44:00 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2002-06-23 09:44:00 +0200
commit0bb9a1a77b866b79b73fc71e9863e7da5fc57c56 (patch)
tree69e37ffba78ba7aa1045431f935444f7d5bd31a2
parent359e90b8a7fee368e496b79ab253045b989fa6a5 (diff)
downloadvdr-0bb9a1a77b866b79b73fc71e9863e7da5fc57c56.tar.gz
vdr-0bb9a1a77b866b79b73fc71e9863e7da5fc57c56.tar.bz2
Moved handling of the Menu key entirely into vdr.c
-rw-r--r--HISTORY3
-rw-r--r--interface.h3
-rw-r--r--menu.c5
-rw-r--r--menu.h4
-rw-r--r--osd.h5
-rw-r--r--player.h3
-rw-r--r--vdr.c33
7 files changed, 35 insertions, 21 deletions
diff --git a/HISTORY b/HISTORY
index 3b881cb2..06f92f67 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1348,8 +1348,9 @@ Video Disk Recorder Revision History
+ Switching between different language tracks doesn't work yet.
+ Cutting doesn't work yet.
-2002-06-22: Version 1.1.4
+2002-06-23: Version 1.1.4
- Added Hungarian language texts (thanks to Istvan Koenigsberger and Guido Josten).
- Activated cutting.
- Activated transfer mode.
+- Moved handling of the Menu key entirely into vdr.c.
diff --git a/interface.h b/interface.h
index 240db631..137c7d48 100644
--- a/interface.h
+++ b/interface.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: interface.h 1.26 2002/05/18 13:43:20 kls Exp $
+ * $Id: interface.h 1.27 2002/06/22 14:39:48 kls Exp $
*/
#ifndef __INTERFACE_H
@@ -33,6 +33,7 @@ private:
public:
cInterface(int SVDRPport = 0);
~cInterface();
+ bool IsOpen(void) { return open > 0; }
void Open(int NumCols = 0, int NumLines = 0);
void Close(void);
void Interrupt(void) { interrupted = true; }
diff --git a/menu.c b/menu.c
index 904a630a..338838ec 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.c 1.199 2002/06/22 13:36:10 kls Exp $
+ * $Id: menu.c 1.200 2002/06/23 09:09:11 kls Exp $
*/
#include "menu.h"
@@ -1513,7 +1513,6 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key)
case kGreen: return Rewind();
case kYellow: return Del();
case kBlue: return Summary();
- case kMenu: return osEnd;
default: break;
}
}
@@ -2080,7 +2079,6 @@ eOSState cMenuMain::ProcessKey(eKeys Key)
}
break;
default: switch (Key) {
- case kMenu: state = osEnd; break;
case kRed: if (!HasSubMenu())
state = osRecord;
break;
@@ -3062,7 +3060,6 @@ eOSState cReplayControl::ProcessKey(eKeys Key)
displayFrames = DisplayedFrames;
switch (Key) {
// Menu control:
- case kMenu: Hide(); return osMenu; // allow direct switching to menu
case kOk: if (visible && !modeOnly) {
Hide();
DoShowMode = true;
diff --git a/menu.h b/menu.h
index 9dfe1a40..c03e627e 100644
--- a/menu.h
+++ b/menu.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.h 1.44 2002/06/14 12:33:35 kls Exp $
+ * $Id: menu.h 1.45 2002/06/22 14:49:15 kls Exp $
*/
#ifndef __MENU_H
@@ -124,7 +124,6 @@ private:
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);
@@ -139,6 +138,7 @@ public:
cReplayControl(void);
virtual ~cReplayControl();
virtual eOSState ProcessKey(eKeys Key);
+ virtual void Hide(void);
bool Visible(void) { return visible; }
static void SetRecording(const char *FileName, const char *Title);
static const char *LastReplayed(void);
diff --git a/osd.h b/osd.h
index 88c986c8..c0621577 100644
--- a/osd.h
+++ b/osd.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: osd.h 1.31 2002/05/18 14:00:15 kls Exp $
+ * $Id: osd.h 1.32 2002/06/23 09:13:17 kls Exp $
*/
#ifndef __OSD_H
@@ -22,7 +22,6 @@
#define MAXOSDITEMS (Setup.OSDheight - 4)
enum eOSState { osUnknown,
- osMenu,
osContinue,
osSchedule,
osChannels,
@@ -115,7 +114,7 @@ public:
int Width(void) { return Interface->Width(); }
int Height(void) { return Interface->Height(); }
bool NeedsFastResponse(void) { return needsFastResponse; }
- virtual eOSState ProcessKey(eKeys Key) = 0;
+ virtual eOSState ProcessKey(eKeys Key) { return osUnknown; }
};
class cOsdMenu : public cOsdObject, public cList<cOsdItem> {
diff --git a/player.h b/player.h
index 1221c244..f4b976b7 100644
--- a/player.h
+++ b/player.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: player.h 1.1 2002/06/16 11:52:45 kls Exp $
+ * $Id: player.h 1.2 2002/06/22 14:47:25 kls Exp $
*/
#ifndef __PLAYER_H
@@ -46,6 +46,7 @@ class cControl : public cOsdObject {
public:
cControl(void);
virtual ~cControl();
+ virtual void Hide(void) = 0;
};
#endif //__PLAYER_H
diff --git a/vdr.c b/vdr.c
index 9423219f..534439dc 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/people/kls/vdr
*
- * $Id: vdr.c 1.115 2002/06/22 09:56:12 kls Exp $
+ * $Id: vdr.c 1.116 2002/06/23 09:35:08 kls Exp $
*/
#include <getopt.h>
@@ -372,6 +372,7 @@ int main(int argc, char *argv[])
// Main program loop:
cOsdObject *Menu = NULL;
+ cOsdObject *Temp = NULL;
cReplayControl *ReplayControl = NULL;
int LastChannel = -1;
int PreviousChannel = cDevice::CurrentChannel();
@@ -401,7 +402,7 @@ int main(int argc, char *argv[])
// Channel display:
if (!EITScanner.Active() && cDevice::CurrentChannel() != LastChannel) {
if (!Menu)
- Menu = new cDisplayChannel(cDevice::CurrentChannel(), LastChannel > 0);
+ Menu = Temp = new cDisplayChannel(cDevice::CurrentChannel(), LastChannel > 0);
if (LastChannel > 0)
PreviousChannel = LastChannel;
LastChannel = cDevice::CurrentChannel();
@@ -425,6 +426,18 @@ int main(int argc, char *argv[])
}
// Keys that must work independent of any interactive mode:
switch (key) {
+ // Menu control:
+ case kMenu:
+ if (Menu) {
+ DELETENULL(Menu);
+ if (!Temp)
+ break;
+ }
+ if (ReplayControl)
+ ReplayControl->Hide();
+ Menu = new cMenuMain(ReplayControl);
+ Temp = NULL;
+ break;
// Volume Control:
case kVolUp|k_Repeat:
case kVolUp:
@@ -437,13 +450,14 @@ int main(int argc, char *argv[])
}
else
cDevice::PrimaryDevice()->SetVolume(NORMALKEY(key) == kVolDn ? -VOLUMEDELTA : VOLUMEDELTA);
- if (!Menu && (!ReplayControl || !ReplayControl->Visible()))
- Menu = cDisplayVolume::Create();
+ if (!Interface->IsOpen())
+ Menu = Temp = cDisplayVolume::Create();
cDisplayVolume::Process(key);
break;
// Power off:
case kPower: isyslog("Power button pressed");
DELETENULL(*Interact);
+ Temp = NULL;
if (!Shutdown) {
Interface->Error(tr("Can't shutdown - option '-s' not given!"));
break;
@@ -457,33 +471,36 @@ int main(int argc, char *argv[])
default:
if (*Interact) {
switch ((*Interact)->ProcessKey(key)) {
- case osMenu: DELETENULL(Menu);
- Menu = new cMenuMain(ReplayControl);
- break;
case osRecord: DELETENULL(Menu);
+ Temp = NULL;
if (!cRecordControls::Start())
Interface->Error(tr("No free DVB device to record!"));
break;
case osRecordings:
DELETENULL(Menu);
DELETENULL(ReplayControl);
+ Temp = NULL;
Menu = new cMenuMain(ReplayControl, osRecordings);
break;
case osReplay: DELETENULL(Menu);
DELETENULL(ReplayControl);
+ Temp = NULL;
ReplayControl = new cReplayControl;
break;
case osStopReplay:
DELETENULL(*Interact);
DELETENULL(ReplayControl);
+ Temp = NULL;
break;
case osSwitchDvb:
DELETENULL(*Interact);
+ Temp = NULL;
Interface->Info(tr("Switching primary DVB..."));
cDevice::SetPrimaryDevice(Setup.PrimaryDVB);
break;
case osBack:
case osEnd: DELETENULL(*Interact);
+ Temp = NULL;
break;
default: ;
}
@@ -520,8 +537,6 @@ int main(int argc, char *argv[])
channel->Switch();
break;
}
- // Menu Control:
- case kMenu: Menu = new cMenuMain(ReplayControl); break;
// Viewing Control:
case kOk: LastChannel = -1; break; // forces channel display
default: break;