mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Implemented additional dedicated keys
This commit is contained in:
parent
462463404d
commit
74c74fb5d2
18
HISTORY
18
HISTORY
@ -1611,7 +1611,7 @@ Video Disk Recorder Revision History
|
|||||||
shall be executed from the "Recordings" menu; see MANUAL and 'man vdr(5)' for
|
shall be executed from the "Recordings" menu; see MANUAL and 'man vdr(5)' for
|
||||||
details (suggested by Gerhard Steiner).
|
details (suggested by Gerhard Steiner).
|
||||||
|
|
||||||
2002-10-26: Version 1.1.14
|
2002-10-27: Version 1.1.14
|
||||||
|
|
||||||
- Fixed some faulty default parameter initializations (thanks to Robert Schiele).
|
- Fixed some faulty default parameter initializations (thanks to Robert Schiele).
|
||||||
- Added further satellites to 'sources.conf' (thanks to Reinhard Walter Buchner
|
- Added further satellites to 'sources.conf' (thanks to Reinhard Walter Buchner
|
||||||
@ -1647,3 +1647,19 @@ Video Disk Recorder Revision History
|
|||||||
- Now the name of the remote control is displayed when learning the keys.
|
- Now the name of the remote control is displayed when learning the keys.
|
||||||
- Fixed learning remote control keys in case there is more than one remote
|
- Fixed learning remote control keys in case there is more than one remote
|
||||||
control (thanks to Oliver Endriss for reporting this one).
|
control (thanks to Oliver Endriss for reporting this one).
|
||||||
|
- Implemented additional dedicated keys for "Play", "Pause", "Stop", "Record",
|
||||||
|
"FastFwd", "FastRew", "Channel+" and "Channel-". If your remote control supports
|
||||||
|
any of these keys you can delete your 'remote.conf' file and restart VDR to
|
||||||
|
go through the key learning procedure again in order to assign these new keys.
|
||||||
|
See MANUAL for more information.
|
||||||
|
Authors of player plugins should update their ProcessKey() functions so that
|
||||||
|
the new player keys have the same functionality as the "Up", "Down", "Left",
|
||||||
|
"Right" and "Blue" keys, respectively. Note that the existing functionality
|
||||||
|
of these keys should by all means be retained, since VDR (and any plugins)
|
||||||
|
shall be fully usable with just the basic set of keys. These new keys are only
|
||||||
|
for additional comfort in case the remote control in use supports them.
|
||||||
|
- Implemented new keys to directly access the VDR main menu functions "Schedule",
|
||||||
|
"Channels", "Timers", "Recordings", "Setup" and "Commands". If your remote
|
||||||
|
control provides keys you want to assign these functions to, you can delete
|
||||||
|
your 'remote.cof' file and restart VDR to go through the key learning procedure
|
||||||
|
again in order to assign these new keys. See MANUAL for more information.
|
||||||
|
29
MANUAL
29
MANUAL
@ -23,10 +23,31 @@ Video Disk Recorder User's Manual
|
|||||||
Blue - Stop/Resume Mark On/Off(1) - Summary Stop
|
Blue - Stop/Resume Mark On/Off(1) - Summary Stop
|
||||||
0..9 Ch select - - - Numeric inp. Exec cmd(2) Editing
|
0..9 Ch select - - - Numeric inp. Exec cmd(2) Editing
|
||||||
|
|
||||||
Power Shutdown
|
If your remote control provides additional keys, they can be used for the
|
||||||
Volume+ Volume up
|
following functions:
|
||||||
Volume- Volume down
|
|
||||||
Mute Mute
|
Play resume normal replay
|
||||||
|
Pause pause replay
|
||||||
|
Stop stop replay
|
||||||
|
Record instant recording
|
||||||
|
FastFwd fast forward
|
||||||
|
FastRew fast rewind
|
||||||
|
|
||||||
|
Channel+ channel up
|
||||||
|
Channel- channel down
|
||||||
|
|
||||||
|
Power shutdown
|
||||||
|
|
||||||
|
Volume+ volume up
|
||||||
|
Volume- volume down
|
||||||
|
Mute mute
|
||||||
|
|
||||||
|
Schedule \
|
||||||
|
Channels |
|
||||||
|
Timers | directly access the VDR
|
||||||
|
Recordings | main menu functions
|
||||||
|
Setup |
|
||||||
|
Commands /
|
||||||
|
|
||||||
(1) The "On/Off" button in the "Timers" menu only works if sorting the timers
|
(1) The "On/Off" button in the "Timers" menu only works if sorting the timers
|
||||||
has been enabled in the "Setup" menu. Otherwise the Blue button is used
|
has been enabled in the "Setup" menu. Otherwise the Blue button is used
|
||||||
|
@ -1064,11 +1064,12 @@ consider here are
|
|||||||
<i>Play</i>, <i>Pause</i>, <i>Fast Rewind</i> and <i>Fast Forward</i>, respectively
|
<i>Play</i>, <i>Pause</i>, <i>Fast Rewind</i> and <i>Fast Forward</i>, respectively
|
||||||
(provided that this particular player can implement these functions) if the player
|
(provided that this particular player can implement these functions) if the player
|
||||||
is not currently showing any menu. If there is a menu, they shall allow the user
|
is not currently showing any menu. If there is a menu, they shall allow the user
|
||||||
to navigate in the menu.
|
to navigate in the menu. The dedicated <i>Play</i>, <i>Pause</i>, <i>FastRew</i>
|
||||||
|
and <i>FastFwd</i> keys shall always result in their specific functionality.
|
||||||
<li>The <i>Green</i> and <i>Yellow</i> buttons shall skip back- and forward by an
|
<li>The <i>Green</i> and <i>Yellow</i> buttons shall skip back- and forward by an
|
||||||
amount of time suitable for this player (provided that this particular player can
|
amount of time suitable for this player (provided that this particular player can
|
||||||
implement these functions).
|
implement these functions).
|
||||||
<li>The <i>Blue</i> button shall immediately stop the replay session.
|
<li>The <i>Blue</i> and <i>Stop</i> button shall immediately stop the replay session.
|
||||||
</ul>
|
</ul>
|
||||||
Of course, these are only suggestions which should make it easier for VDR users to
|
Of course, these are only suggestions which should make it easier for VDR users to
|
||||||
enjoy additional players, since they will be able to control them with actions
|
enjoy additional players, since they will be able to control them with actions
|
||||||
|
130
i18n.c
130
i18n.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: i18n.c 1.98 2002/10/26 12:04:20 kls Exp $
|
* $Id: i18n.c 1.99 2002/10/27 14:24:00 kls Exp $
|
||||||
*
|
*
|
||||||
* Translations provided by:
|
* Translations provided by:
|
||||||
*
|
*
|
||||||
@ -2786,6 +2786,102 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Albastru",
|
"Albastru",
|
||||||
"Kék",
|
"Kék",
|
||||||
},
|
},
|
||||||
|
{ "Play",
|
||||||
|
"Wiedergabe",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
|
{ "Pause",
|
||||||
|
"Pause",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
|
{ "Stop",
|
||||||
|
"Stop",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
|
{ "Record",
|
||||||
|
"Aufnehmen",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
|
{ "FastFwd",
|
||||||
|
"Vorlauf",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
|
{ "FastRew",
|
||||||
|
"Rücklauf",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
{ "Power",
|
{ "Power",
|
||||||
"Ausschalten",
|
"Ausschalten",
|
||||||
"Izklop",
|
"Izklop",
|
||||||
@ -2802,6 +2898,38 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Pornit",
|
"Pornit",
|
||||||
"Kikapcsolni",
|
"Kikapcsolni",
|
||||||
},
|
},
|
||||||
|
{ "Channel+",
|
||||||
|
"Kanal+",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
|
{ "Channel-",
|
||||||
|
"Kanal-",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
{ "Volume+",
|
{ "Volume+",
|
||||||
"Lautstärke+",
|
"Lautstärke+",
|
||||||
"Glasnost+",
|
"Glasnost+",
|
||||||
|
72
keys.c
72
keys.c
@ -4,40 +4,54 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: keys.c 1.1 2002/09/29 09:56:51 kls Exp $
|
* $Id: keys.c 1.2 2002/10/27 14:00:49 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "keys.h"
|
#include "keys.h"
|
||||||
|
|
||||||
static tKey keyTable[] = { // "Up" and "Down" must be the first two keys!
|
static tKey keyTable[] = { // "Up" and "Down" must be the first two keys!
|
||||||
{ kUp, "Up" },
|
{ kUp, "Up" },
|
||||||
{ kDown, "Down" },
|
{ kDown, "Down" },
|
||||||
{ kMenu, "Menu" },
|
{ kMenu, "Menu" },
|
||||||
{ kOk, "Ok" },
|
{ kOk, "Ok" },
|
||||||
{ kBack, "Back" },
|
{ kBack, "Back" },
|
||||||
{ kLeft, "Left" },
|
{ kLeft, "Left" },
|
||||||
{ kRight, "Right" },
|
{ kRight, "Right" },
|
||||||
{ kRed, "Red" },
|
{ kRed, "Red" },
|
||||||
{ kGreen, "Green" },
|
{ kGreen, "Green" },
|
||||||
{ kYellow, "Yellow" },
|
{ kYellow, "Yellow" },
|
||||||
{ kBlue, "Blue" },
|
{ kBlue, "Blue" },
|
||||||
{ k0, "0" },
|
{ k0, "0" },
|
||||||
{ k1, "1" },
|
{ k1, "1" },
|
||||||
{ k2, "2" },
|
{ k2, "2" },
|
||||||
{ k3, "3" },
|
{ k3, "3" },
|
||||||
{ k4, "4" },
|
{ k4, "4" },
|
||||||
{ k5, "5" },
|
{ k5, "5" },
|
||||||
{ k6, "6" },
|
{ k6, "6" },
|
||||||
{ k7, "7" },
|
{ k7, "7" },
|
||||||
{ k8, "8" },
|
{ k8, "8" },
|
||||||
{ k9, "9" },
|
{ k9, "9" },
|
||||||
{ kPower, "Power" },
|
{ kPlay, "Play" },
|
||||||
{ kVolUp, "Volume+" },
|
{ kPause, "Pause" },
|
||||||
{ kVolDn, "Volume-" },
|
{ kStop, "Stop" },
|
||||||
{ kMute, "Mute" },
|
{ kRecord, "Record" },
|
||||||
{ kNone, "" },
|
{ kFastFwd, "FastFwd" },
|
||||||
{ k_Setup, "_Setup" },
|
{ kFastRew, "FastRew" },
|
||||||
{ kNone, NULL },
|
{ kPower, "Power" },
|
||||||
|
{ kChanUp, "Channel+" },
|
||||||
|
{ kChanDn, "Channel-" },
|
||||||
|
{ kVolUp, "Volume+" },
|
||||||
|
{ kVolDn, "Volume-" },
|
||||||
|
{ kMute, "Mute" },
|
||||||
|
{ kSchedule, "Schedule" },
|
||||||
|
{ kChannels, "Channels" },
|
||||||
|
{ kTimers, "Timers" },
|
||||||
|
{ kRecordings, "Recordings" },
|
||||||
|
{ kSetup, "Setup" },
|
||||||
|
{ kCommands, "Commands" },
|
||||||
|
{ kNone, "" },
|
||||||
|
{ k_Setup, "_Setup" },
|
||||||
|
{ kNone, NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
// -- cKey -------------------------------------------------------------------
|
// -- cKey -------------------------------------------------------------------
|
||||||
|
23
keys.h
23
keys.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: keys.h 1.1 2002/09/29 09:55:52 kls Exp $
|
* $Id: keys.h 1.2 2002/10/27 13:58:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __KEYS_H
|
#ifndef __KEYS_H
|
||||||
@ -26,10 +26,24 @@ enum eKeys { // "Up" and "Down" must be the first two keys!
|
|||||||
kYellow,
|
kYellow,
|
||||||
kBlue,
|
kBlue,
|
||||||
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9,
|
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9,
|
||||||
|
kPlay,
|
||||||
|
kPause,
|
||||||
|
kStop,
|
||||||
|
kRecord,
|
||||||
|
kFastFwd,
|
||||||
|
kFastRew,
|
||||||
kPower,
|
kPower,
|
||||||
|
kChanUp,
|
||||||
|
kChanDn,
|
||||||
kVolUp,
|
kVolUp,
|
||||||
kVolDn,
|
kVolDn,
|
||||||
kMute,
|
kMute,
|
||||||
|
kSchedule,
|
||||||
|
kChannels,
|
||||||
|
kTimers,
|
||||||
|
kRecordings,
|
||||||
|
kSetup,
|
||||||
|
kCommands,
|
||||||
kNone,
|
kNone,
|
||||||
k_Setup,
|
k_Setup,
|
||||||
// The following flags are OR'd with the above codes:
|
// The following flags are OR'd with the above codes:
|
||||||
@ -47,9 +61,10 @@ enum eKeys { // "Up" and "Down" must be the first two keys!
|
|||||||
#define kEditCut k2
|
#define kEditCut k2
|
||||||
#define kEditTest k8
|
#define kEditTest k8
|
||||||
|
|
||||||
#define RAWKEY(k) (eKeys((k) & ~k_Flags))
|
#define RAWKEY(k) (eKeys((k) & ~k_Flags))
|
||||||
#define ISRAWKEY(k) ((k) != kNone && ((k) & k_Flags) == 0)
|
#define ISRAWKEY(k) ((k) != kNone && ((k) & k_Flags) == 0)
|
||||||
#define NORMALKEY(k) (eKeys((k) & ~k_Repeat))
|
#define NORMALKEY(k) (eKeys((k) & ~k_Repeat))
|
||||||
|
#define ISMODELESSKEY(k) (RAWKEY(k) > k9)
|
||||||
|
|
||||||
struct tKey {
|
struct tKey {
|
||||||
eKeys type;
|
eKeys type;
|
||||||
|
48
menu.c
48
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 1.220 2002/10/20 14:22:09 kls Exp $
|
* $Id: menu.c 1.221 2002/10/27 14:06:02 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -1226,6 +1226,7 @@ eOSState cMenuWhatsOn::ProcessKey(eKeys Key)
|
|||||||
|
|
||||||
if (state == osUnknown) {
|
if (state == osUnknown) {
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
|
case kRecord:
|
||||||
case kRed: return Record();
|
case kRed: return Record();
|
||||||
case kYellow: state = osBack;
|
case kYellow: state = osBack;
|
||||||
// continue with kGreen
|
// continue with kGreen
|
||||||
@ -1369,6 +1370,7 @@ eOSState cMenuSchedule::ProcessKey(eKeys Key)
|
|||||||
|
|
||||||
if (state == osUnknown) {
|
if (state == osUnknown) {
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
|
case kRecord:
|
||||||
case kRed: return Record();
|
case kRed: return Record();
|
||||||
case kGreen: if (schedules) {
|
case kGreen: if (schedules) {
|
||||||
if (!now && !next) {
|
if (!now && !next) {
|
||||||
@ -2162,7 +2164,12 @@ cMenuMain::cMenuMain(bool Replaying, eOSState State)
|
|||||||
// Initial submenus:
|
// Initial submenus:
|
||||||
|
|
||||||
switch (State) {
|
switch (State) {
|
||||||
|
case osSchedule: AddSubMenu(new cMenuSchedule); break;
|
||||||
|
case osChannels: AddSubMenu(new cMenuChannels); break;
|
||||||
|
case osTimers: AddSubMenu(new cMenuTimers); break;
|
||||||
case osRecordings: AddSubMenu(new cMenuRecordings(NULL, 0, true)); break;
|
case osRecordings: AddSubMenu(new cMenuRecordings(NULL, 0, true)); break;
|
||||||
|
case osSetup: AddSubMenu(new cMenuSetup); break;
|
||||||
|
case osCommands: AddSubMenu(new cMenuCommands(tr("Commands"), &Commands)); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2289,6 +2296,7 @@ eOSState cMenuMain::ProcessKey(eKeys Key)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default: switch (Key) {
|
default: switch (Key) {
|
||||||
|
case kRecord:
|
||||||
case kRed: if (!HasSubMenu())
|
case kRed: if (!HasSubMenu())
|
||||||
state = osRecord;
|
state = osRecord;
|
||||||
break;
|
break;
|
||||||
@ -2351,6 +2359,7 @@ cDisplayChannel::cDisplayChannel(eKeys FirstKey)
|
|||||||
:cOsdObject(true)
|
:cOsdObject(true)
|
||||||
{
|
{
|
||||||
group = -1;
|
group = -1;
|
||||||
|
lines = 0;
|
||||||
number = 0;
|
number = 0;
|
||||||
lastTime = time_ms();
|
lastTime = time_ms();
|
||||||
int EpgLines = Setup.ShowInfoOnChSwitch ? 5 : 1;
|
int EpgLines = Setup.ShowInfoOnChSwitch ? 5 : 1;
|
||||||
@ -2443,6 +2452,14 @@ void cDisplayChannel::DisplayInfo(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cDisplayChannel::Refresh(void)
|
||||||
|
{
|
||||||
|
Interface->Clear();
|
||||||
|
DisplayChannel(Channels.GetByNumber(cDevice::CurrentChannel()));
|
||||||
|
lastTime = time_ms();
|
||||||
|
lines = 0;
|
||||||
|
}
|
||||||
|
|
||||||
eOSState cDisplayChannel::ProcessKey(eKeys Key)
|
eOSState cDisplayChannel::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
@ -2490,6 +2507,18 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
|
|||||||
}
|
}
|
||||||
lastTime = time_ms();
|
lastTime = time_ms();
|
||||||
break;
|
break;
|
||||||
|
case kUp|k_Repeat:
|
||||||
|
case kUp:
|
||||||
|
case kDown|k_Repeat:
|
||||||
|
case kDown:
|
||||||
|
cDevice::SwitchChannel(NORMALKEY(Key) == kUp ? 1 : -1);
|
||||||
|
// no break here
|
||||||
|
case kChanUp|k_Repeat:
|
||||||
|
case kChanUp:
|
||||||
|
case kChanDn|k_Repeat:
|
||||||
|
case kChanDn:
|
||||||
|
Refresh();
|
||||||
|
break;
|
||||||
case kNone:
|
case kNone:
|
||||||
if (number && time_ms() - lastTime > DIRECTCHANNELTIMEOUT) {
|
if (number && time_ms() - lastTime > DIRECTCHANNELTIMEOUT) {
|
||||||
if (Channels.GetByNumber(number))
|
if (Channels.GetByNumber(number))
|
||||||
@ -2509,7 +2538,7 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
|
|||||||
case kOk: if (group >= 0)
|
case kOk: if (group >= 0)
|
||||||
Channels.SwitchTo(Channels.Get(Channels.GetNextNormal(group))->Number());
|
Channels.SwitchTo(Channels.Get(Channels.GetNextNormal(group))->Number());
|
||||||
return osEnd;
|
return osEnd;
|
||||||
default: if (NORMALKEY(Key) == kUp || NORMALKEY(Key) == kDown || (Key & (k_Repeat | k_Release)) == 0) {
|
default: if ((Key & (k_Repeat | k_Release)) == 0) {
|
||||||
cRemote::Put(Key);
|
cRemote::Put(Key);
|
||||||
return osEnd;
|
return osEnd;
|
||||||
}
|
}
|
||||||
@ -3080,19 +3109,23 @@ void cReplayControl::TimeSearchProcess(eKeys Key)
|
|||||||
TimeSearchDisplay();
|
TimeSearchDisplay();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case kFastRew:
|
||||||
case kLeft:
|
case kLeft:
|
||||||
|
case kFastFwd:
|
||||||
case kRight: {
|
case kRight: {
|
||||||
int dir = (Key == kRight ? 1 : -1);
|
int dir = ((Key == kRight || Key == kFastFwd) ? 1 : -1);
|
||||||
if (dir > 0)
|
if (dir > 0)
|
||||||
Seconds = min(Total - Current - STAY_SECONDS_OFF_END, Seconds);
|
Seconds = min(Total - Current - STAY_SECONDS_OFF_END, Seconds);
|
||||||
SkipSeconds(Seconds * dir);
|
SkipSeconds(Seconds * dir);
|
||||||
timeSearchActive = false;
|
timeSearchActive = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case kPlay:
|
||||||
case kUp:
|
case kUp:
|
||||||
|
case kPause:
|
||||||
case kDown:
|
case kDown:
|
||||||
Seconds = min(Total - STAY_SECONDS_OFF_END, Seconds);
|
Seconds = min(Total - STAY_SECONDS_OFF_END, Seconds);
|
||||||
Goto(Seconds * FRAMESPERSEC, Key == kDown);
|
Goto(Seconds * FRAMESPERSEC, Key == kDown || Key == kPause);
|
||||||
timeSearchActive = false;
|
timeSearchActive = false;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -3237,19 +3270,26 @@ eOSState cReplayControl::ProcessKey(eKeys Key)
|
|||||||
bool DoShowMode = true;
|
bool DoShowMode = true;
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
// Positioning:
|
// Positioning:
|
||||||
|
case kPlay:
|
||||||
case kUp: Play(); break;
|
case kUp: Play(); break;
|
||||||
|
case kPause:
|
||||||
case kDown: Pause(); break;
|
case kDown: Pause(); break;
|
||||||
|
case kFastRew|k_Release:
|
||||||
case kLeft|k_Release:
|
case kLeft|k_Release:
|
||||||
if (Setup.MultiSpeedMode) break;
|
if (Setup.MultiSpeedMode) break;
|
||||||
|
case kFastRew:
|
||||||
case kLeft: Backward(); break;
|
case kLeft: Backward(); break;
|
||||||
|
case kFastFwd|k_Release:
|
||||||
case kRight|k_Release:
|
case kRight|k_Release:
|
||||||
if (Setup.MultiSpeedMode) break;
|
if (Setup.MultiSpeedMode) break;
|
||||||
|
case kFastFwd:
|
||||||
case kRight: Forward(); break;
|
case kRight: Forward(); break;
|
||||||
case kRed: TimeSearch(); break;
|
case kRed: TimeSearch(); break;
|
||||||
case kGreen|k_Repeat:
|
case kGreen|k_Repeat:
|
||||||
case kGreen: SkipSeconds(-60); break;
|
case kGreen: SkipSeconds(-60); break;
|
||||||
case kYellow|k_Repeat:
|
case kYellow|k_Repeat:
|
||||||
case kYellow: SkipSeconds( 60); break;
|
case kYellow: SkipSeconds( 60); break;
|
||||||
|
case kStop:
|
||||||
case kBlue: Hide();
|
case kBlue: Hide();
|
||||||
Stop();
|
Stop();
|
||||||
return osEnd;
|
return osEnd;
|
||||||
|
3
menu.h
3
menu.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.h 1.48 2002/10/13 10:34:09 kls Exp $
|
* $Id: menu.h 1.49 2002/10/27 12:04:49 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MENU_H
|
#ifndef __MENU_H
|
||||||
@ -35,6 +35,7 @@ private:
|
|||||||
int number;
|
int number;
|
||||||
void DisplayChannel(const cChannel *Channel);
|
void DisplayChannel(const cChannel *Channel);
|
||||||
void DisplayInfo(void);
|
void DisplayInfo(void);
|
||||||
|
void Refresh(void);
|
||||||
public:
|
public:
|
||||||
cDisplayChannel(int Number, bool Switched);
|
cDisplayChannel(int Number, bool Switched);
|
||||||
cDisplayChannel(eKeys FirstKey);
|
cDisplayChannel(eKeys FirstKey);
|
||||||
|
182
vdr.c
182
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.cadsoft.de/people/kls/vdr
|
* The project's page is at http://www.cadsoft.de/people/kls/vdr
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 1.128 2002/10/20 12:09:45 kls Exp $
|
* $Id: vdr.c 1.129 2002/10/27 14:32:06 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -456,6 +456,25 @@ int main(int argc, char *argv[])
|
|||||||
Menu = new cMenuMain(cControl::Control());
|
Menu = new cMenuMain(cControl::Control());
|
||||||
Temp = NULL;
|
Temp = NULL;
|
||||||
break;
|
break;
|
||||||
|
#define DirectMainFunction(function)\
|
||||||
|
DELETENULL(Menu);\
|
||||||
|
if (cControl::Control())\
|
||||||
|
cControl::Control()->Hide();\
|
||||||
|
Menu = new cMenuMain(cControl::Control(), function);\
|
||||||
|
Temp = NULL;
|
||||||
|
case kSchedule: DirectMainFunction(osSchedule); break;
|
||||||
|
case kChannels: DirectMainFunction(osChannels); break;
|
||||||
|
case kTimers: DirectMainFunction(osTimers); break;
|
||||||
|
case kRecordings: DirectMainFunction(osRecordings); break;
|
||||||
|
case kSetup: DirectMainFunction(osSetup); break;
|
||||||
|
case kCommands: DirectMainFunction(osCommands); break;
|
||||||
|
// Channel up/down:
|
||||||
|
case kChanUp|k_Repeat:
|
||||||
|
case kChanUp:
|
||||||
|
case kChanDn|k_Repeat:
|
||||||
|
case kChanDn:
|
||||||
|
cDevice::SwitchChannel(NORMALKEY(key) == kChanUp ? 1 : -1);
|
||||||
|
break;
|
||||||
// Volume Control:
|
// Volume Control:
|
||||||
case kVolUp|k_Repeat:
|
case kVolUp|k_Repeat:
|
||||||
case kVolUp:
|
case kVolUp:
|
||||||
@ -487,81 +506,94 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
LastActivity = 1; // not 0, see below!
|
LastActivity = 1; // not 0, see below!
|
||||||
break;
|
break;
|
||||||
default:
|
default: break;
|
||||||
if (Interact) {
|
|
||||||
switch (Interact->ProcessKey(key)) {
|
|
||||||
case osRecord: DELETENULL(Menu);
|
|
||||||
Temp = NULL;
|
|
||||||
if (!cRecordControls::Start())
|
|
||||||
Interface->Error(tr("No free DVB device to record!"));
|
|
||||||
break;
|
|
||||||
case osRecordings:
|
|
||||||
DELETENULL(Menu);
|
|
||||||
cControl::Shutdown();
|
|
||||||
Temp = NULL;
|
|
||||||
Menu = new cMenuMain(false, osRecordings);
|
|
||||||
break;
|
|
||||||
case osReplay: DELETENULL(Menu);
|
|
||||||
cControl::Shutdown();
|
|
||||||
Temp = NULL;
|
|
||||||
cControl::Launch(new cReplayControl);
|
|
||||||
break;
|
|
||||||
case osStopReplay:
|
|
||||||
DELETENULL(Menu);
|
|
||||||
cControl::Shutdown();
|
|
||||||
Temp = NULL;
|
|
||||||
break;
|
|
||||||
case osSwitchDvb:
|
|
||||||
DELETENULL(Menu);
|
|
||||||
cControl::Shutdown();
|
|
||||||
Temp = NULL;
|
|
||||||
Interface->Info(tr("Switching primary DVB..."));
|
|
||||||
cDevice::SetPrimaryDevice(Setup.PrimaryDVB);
|
|
||||||
break;
|
|
||||||
case osBack:
|
|
||||||
case osEnd: if (Interact == Menu)
|
|
||||||
DELETENULL(Menu);
|
|
||||||
else
|
|
||||||
cControl::Shutdown();
|
|
||||||
Temp = NULL;
|
|
||||||
break;
|
|
||||||
default: ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Key functions in "normal" viewing mode:
|
|
||||||
switch (key) {
|
|
||||||
// Toggle channels:
|
|
||||||
case k0: {
|
|
||||||
int CurrentChannel = cDevice::CurrentChannel();
|
|
||||||
Channels.SwitchTo(PreviousChannel);
|
|
||||||
PreviousChannel = CurrentChannel;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// Direct Channel Select:
|
|
||||||
case k1 ... k9:
|
|
||||||
Menu = new cDisplayChannel(key);
|
|
||||||
break;
|
|
||||||
// Left/Right rotates trough channel groups:
|
|
||||||
case kLeft|k_Repeat:
|
|
||||||
case kLeft:
|
|
||||||
case kRight|k_Repeat:
|
|
||||||
case kRight:
|
|
||||||
Menu = new cDisplayChannel(NORMALKEY(key));
|
|
||||||
break;
|
|
||||||
// Up/Down Channel Select:
|
|
||||||
case kUp|k_Repeat:
|
|
||||||
case kUp:
|
|
||||||
case kDown|k_Repeat:
|
|
||||||
case kDown:
|
|
||||||
cDevice::SwitchChannel(NORMALKEY(key) == kUp ? 1 : -1);
|
|
||||||
break;
|
|
||||||
// Viewing Control:
|
|
||||||
case kOk: LastChannel = -1; break; // forces channel display
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Interact = Menu ? Menu : cControl::Control(); // might have been closed in the mean time
|
||||||
|
if (Interact) {
|
||||||
|
eOSState state = Interact->ProcessKey(key);
|
||||||
|
if (state == osUnknown && ISMODELESSKEY(key) && cControl::Control() && Interact != cControl::Control())
|
||||||
|
state = cControl::Control()->ProcessKey(key);
|
||||||
|
switch (state) {
|
||||||
|
case osRecord: DELETENULL(Menu);
|
||||||
|
Temp = NULL;
|
||||||
|
if (cRecordControls::Start())
|
||||||
|
Interface->Info(tr("Recording"));
|
||||||
|
else
|
||||||
|
Interface->Error(tr("No free DVB device to record!"));
|
||||||
|
break;
|
||||||
|
case osRecordings:
|
||||||
|
DELETENULL(Menu);
|
||||||
|
cControl::Shutdown();
|
||||||
|
Temp = NULL;
|
||||||
|
Menu = new cMenuMain(false, osRecordings);
|
||||||
|
break;
|
||||||
|
case osReplay: DELETENULL(Menu);
|
||||||
|
cControl::Shutdown();
|
||||||
|
Temp = NULL;
|
||||||
|
cControl::Launch(new cReplayControl);
|
||||||
|
break;
|
||||||
|
case osStopReplay:
|
||||||
|
DELETENULL(Menu);
|
||||||
|
cControl::Shutdown();
|
||||||
|
Temp = NULL;
|
||||||
|
break;
|
||||||
|
case osSwitchDvb:
|
||||||
|
DELETENULL(Menu);
|
||||||
|
cControl::Shutdown();
|
||||||
|
Temp = NULL;
|
||||||
|
Interface->Info(tr("Switching primary DVB..."));
|
||||||
|
cDevice::SetPrimaryDevice(Setup.PrimaryDVB);
|
||||||
|
break;
|
||||||
|
case osBack:
|
||||||
|
case osEnd: if (Interact == Menu)
|
||||||
|
DELETENULL(Menu);
|
||||||
|
else
|
||||||
|
cControl::Shutdown();
|
||||||
|
Temp = NULL;
|
||||||
|
break;
|
||||||
|
default: ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Key functions in "normal" viewing mode:
|
||||||
|
switch (key) {
|
||||||
|
// Toggle channels:
|
||||||
|
case k0: {
|
||||||
|
int CurrentChannel = cDevice::CurrentChannel();
|
||||||
|
Channels.SwitchTo(PreviousChannel);
|
||||||
|
PreviousChannel = CurrentChannel;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Direct Channel Select:
|
||||||
|
case k1 ... k9:
|
||||||
|
Menu = new cDisplayChannel(key);
|
||||||
|
break;
|
||||||
|
// Left/Right rotates trough channel groups:
|
||||||
|
case kLeft|k_Repeat:
|
||||||
|
case kLeft:
|
||||||
|
case kRight|k_Repeat:
|
||||||
|
case kRight:
|
||||||
|
Menu = new cDisplayChannel(NORMALKEY(key));
|
||||||
|
break;
|
||||||
|
// Up/Down Channel Select:
|
||||||
|
case kUp|k_Repeat:
|
||||||
|
case kUp:
|
||||||
|
case kDown|k_Repeat:
|
||||||
|
case kDown:
|
||||||
|
cDevice::SwitchChannel(NORMALKEY(key) == kUp ? 1 : -1);
|
||||||
|
break;
|
||||||
|
// Viewing Control:
|
||||||
|
case kOk: LastChannel = -1; break; // forces channel display
|
||||||
|
// Instant recording:
|
||||||
|
case kRecord:
|
||||||
|
if (cRecordControls::Start())
|
||||||
|
Interface->Info(tr("Recording"));
|
||||||
|
else
|
||||||
|
Interface->Error(tr("No free DVB device to record!"));
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!Menu) {
|
if (!Menu) {
|
||||||
EITScanner.Process();
|
EITScanner.Process();
|
||||||
if (!cCutter::Active() && cCutter::Ended()) {
|
if (!cCutter::Active() && cCutter::Ended()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user