If the Channel+/- keys are pressed while in the Schedules menu, the menu is now switched to the EPG of the new current channel

This commit is contained in:
Klaus Schmidinger 2017-05-21 13:18:26 +02:00
parent 0f1f277819
commit 354910faab
3 changed files with 29 additions and 5 deletions

View File

@ -9046,3 +9046,5 @@ Video Disk Recorder Revision History
- Fixed setting the local machine's SVDRP host name (was overwritten if setup.conf - Fixed setting the local machine's SVDRP host name (was overwritten if setup.conf
contained an empty string). The SVDRP host name is now only written to setup.conf contained an empty string). The SVDRP host name is now only written to setup.conf
if it differs from the system's host name. if it differs from the system's host name.
- If the Channel+/- keys are pressed while in the Schedules menu, the menu is now
switched to the EPG of the new current channel.

29
menu.c
View File

@ -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 4.28 2017/05/20 13:00:21 kls Exp $ * $Id: menu.c 4.29 2017/05/21 13:18:26 kls Exp $
*/ */
#include "menu.h" #include "menu.h"
@ -1691,7 +1691,7 @@ eOSState cMenuWhatsOn::ProcessKey(eKeys Key)
eOSState state = cOsdMenu::ProcessKey(Key); eOSState state = cOsdMenu::ProcessKey(Key);
if (state == osUnknown) { if (state == osUnknown) {
switch (Key) { switch (int(Key)) {
case kRecord: case kRecord:
case kRed: return Record(); case kRed: return Record();
case kYellow: state = osBack; case kYellow: state = osBack;
@ -1707,6 +1707,20 @@ eOSState cMenuWhatsOn::ProcessKey(eKeys Key)
case kBlue: if (canSwitch) case kBlue: if (canSwitch)
return Switch(); return Switch();
break; break;
case kChanUp|k_Repeat:
case kChanUp:
case kChanDn|k_Repeat:
case kChanDn: if (!HasSubMenu()) {
for (cOsdItem *item = First(); item; item = Next(item)) {
if (((cMenuScheduleItem *)item)->channel->Number() == cDevice::CurrentChannel()) {
SetCurrent(item);
Display();
SetHelpKeys();
break;
}
}
}
break;
case kInfo: case kInfo:
case kOk: if (Count()) { case kOk: if (Count()) {
LOCK_TIMERS_READ; LOCK_TIMERS_READ;
@ -1993,7 +2007,7 @@ eOSState cMenuSchedule::ProcessKey(eKeys Key)
eOSState state = cOsdMenu::ProcessKey(Key); eOSState state = cOsdMenu::ProcessKey(Key);
if (state == osUnknown) { if (state == osUnknown) {
switch (Key) { switch (int(Key)) {
case k0: return Number(); case k0: return Number();
case kRecord: case kRecord:
case kRed: return Record(); case kRed: return Record();
@ -2023,6 +2037,15 @@ eOSState cMenuSchedule::ProcessKey(eKeys Key)
case kBlue: if (canSwitch) case kBlue: if (canSwitch)
return Switch(); return Switch();
break; break;
case kChanUp|k_Repeat:
case kChanUp:
case kChanDn|k_Repeat:
case kChanDn: if (!HasSubMenu()) {
LOCK_CHANNELS_READ;
if (const cChannel *Channel = Channels->GetByNumber(cDevice::CurrentChannel()))
Set(Channel, true);
}
break;
case kInfo: case kInfo:
case kOk: if (Count()) { case kOk: if (Count()) {
LOCK_TIMERS_READ; LOCK_TIMERS_READ;

3
vdr.c
View File

@ -22,7 +22,7 @@
* *
* The project's page is at http://www.tvdr.de * The project's page is at http://www.tvdr.de
* *
* $Id: vdr.c 4.13 2017/05/01 13:00:51 kls Exp $ * $Id: vdr.c 4.14 2017/05/21 12:31:37 kls Exp $
*/ */
#include <getopt.h> #include <getopt.h>
@ -1282,7 +1282,6 @@ int main(int argc, char *argv[])
} }
else else
cDevice::SwitchChannel(NORMALKEY(key) == kChanUp ? 1 : -1); cDevice::SwitchChannel(NORMALKEY(key) == kChanUp ? 1 : -1);
key = kNone; // nobody else needs to see these keys
break; break;
// Volume control: // Volume control:
case kVolUp|k_Repeat: case kVolUp|k_Repeat: