summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2003-06-13 14:44:31 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2003-06-13 14:44:31 +0200
commitbc16b8af539b3653a95e6345a8dddd444a4cab1e (patch)
treef8d3797865443e1e321a26a3d5decd3065b80e07
parent68002f00378378a87dd7416959c1e1347e27a99d (diff)
downloadvdr-bc16b8af539b3653a95e6345a8dddd444a4cab1e.tar.gz
vdr-bc16b8af539b3653a95e6345a8dddd444a4cab1e.tar.bz2
Improved channel switching in case of numerical input
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY2
-rw-r--r--menu.c20
3 files changed, 23 insertions, 1 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index c1f5eb80..cccbc040 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -525,6 +525,8 @@ Jaakko Hyvätti <jaakko@hyvatti.iki.fi>
for fixing recording overlapping timers on the same channel in case
DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and/or DO_MULTIPLE_RECORDINGS is not defined
for fixing the minimum lifespan of deleted recordings
+ for suggesting to improve channel switching in case of numerical input by switching
+ as soon as the channel is unique
Dennis Noordsij <dennis.noordsij@wiral.com>
for reporting a small glitch when switching channels
diff --git a/HISTORY b/HISTORY
index 1ecb381c..c4299054 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2258,3 +2258,5 @@ Video Disk Recorder Revision History
- Fixed a bug in channel switching after Left/Right has been pressed (thanks to
Michael Walle for reporting this one).
+- Improved channel switching in case of numerical input by switching as soon as
+ the channel is unique (suggested by Jaakko Hyvätti).
diff --git a/menu.c b/menu.c
index 44e23f5f..32db4170 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.257 2003/06/12 16:11:32 kls Exp $
+ * $Id: menu.c 1.258 2003/06/13 14:31:15 kls Exp $
*/
#include "menu.h"
@@ -2742,6 +2742,24 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
cChannel *channel = Channels.GetByNumber(number);
DisplayChannel(channel);
lastTime = time_ms();
+ // Lets see if there can be any useful further input:
+ int n = channel ? number : 0;
+ while (channel && (channel = Channels.Next(channel)) != NULL) {
+ if (!channel->GroupSep()) {
+ if (channel->Number() > n)
+ n *= 10;
+ if (n <= channel->Number() && channel->Number() <= n + 9) {
+ n = 0;
+ break;
+ }
+ }
+ }
+ if (n > 0) {
+ // This channel is the only one that fits the input, so let's take it right away:
+ Interface->Flush(); // makes sure the user sees his last input
+ Channels.SwitchTo(number);
+ return osEnd;
+ }
}
}
break;