From 354910faab19e9d32dd3f1a7492ba9f685923ba8 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 21 May 2017 13:18:26 +0200 Subject: If the Channel+/- keys are pressed while in the Schedules menu, the menu is now switched to the EPG of the new current channel --- HISTORY | 2 ++ menu.c | 29 ++++++++++++++++++++++++++--- vdr.c | 3 +-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index 354a5fb9..9593f5c3 100644 --- a/HISTORY +++ b/HISTORY @@ -9046,3 +9046,5 @@ Video Disk Recorder Revision History - 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 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. diff --git a/menu.c b/menu.c index ae65f2d5..246c4df3 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 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" @@ -1691,7 +1691,7 @@ eOSState cMenuWhatsOn::ProcessKey(eKeys Key) eOSState state = cOsdMenu::ProcessKey(Key); if (state == osUnknown) { - switch (Key) { + switch (int(Key)) { case kRecord: case kRed: return Record(); case kYellow: state = osBack; @@ -1707,6 +1707,20 @@ eOSState cMenuWhatsOn::ProcessKey(eKeys Key) case kBlue: if (canSwitch) return Switch(); 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 kOk: if (Count()) { LOCK_TIMERS_READ; @@ -1993,7 +2007,7 @@ eOSState cMenuSchedule::ProcessKey(eKeys Key) eOSState state = cOsdMenu::ProcessKey(Key); if (state == osUnknown) { - switch (Key) { + switch (int(Key)) { case k0: return Number(); case kRecord: case kRed: return Record(); @@ -2023,6 +2037,15 @@ eOSState cMenuSchedule::ProcessKey(eKeys Key) case kBlue: if (canSwitch) return Switch(); 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 kOk: if (Count()) { LOCK_TIMERS_READ; diff --git a/vdr.c b/vdr.c index 4fc2bf1e..41dbc8f4 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * 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 @@ -1282,7 +1282,6 @@ int main(int argc, char *argv[]) } else cDevice::SwitchChannel(NORMALKEY(key) == kChanUp ? 1 : -1); - key = kNone; // nobody else needs to see these keys break; // Volume control: case kVolUp|k_Repeat: -- cgit v1.2.3