Implemented page mode for menus

This commit is contained in:
Klaus Schmidinger 2000-07-26 17:42:48 +02:00
parent 2260fc9615
commit 59237584e9
3 changed files with 25 additions and 5 deletions

View File

@ -9,3 +9,6 @@ Carsten Koch <Carsten.Koch@icem.de>
Plamen Ganev <pganev@com-it.net> Plamen Ganev <pganev@com-it.net>
for fixing the frequency offset for Hotbird channels for fixing the frequency offset for Hotbird channels
for adding the 'xtvrc2vdr' tool (see Tools/xtvrc2vdr) for adding the 'xtvrc2vdr' tool (see Tools/xtvrc2vdr)
Heino Goldenstein <heino.goldenstein@microplex.de>
for modifying scrolling through lists to make it page up and down

View File

@ -99,3 +99,8 @@ Video Disk Recorder Revision History
pressing "Ok". The summary field can only be filled in directly by editing pressing "Ok". The summary field can only be filled in directly by editing
the 'timers.conf' file with a text editor, or by defining/modifying the timer the 'timers.conf' file with a text editor, or by defining/modifying the timer
via the SVDRP interface. via the SVDRP interface.
2000-07-26:
- When scrolling through a list it now moves a full page up or down when the
cursor reaches the top or bottom of the menu (thanks to Heino Goldenstein!).

22
osd.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: osd.c 1.4 2000/04/24 09:44:31 kls Exp $ * $Id: osd.c 1.5 2000/07/26 17:35:09 kls Exp $
*/ */
#include "osd.h" #include "osd.h"
@ -166,32 +166,44 @@ void cOsdMenu::CursorUp(void)
{ {
if (current > 0) { if (current > 0) {
DisplayCurrent(false); DisplayCurrent(false);
if (--current < first) { if (current == first) {
first -= MAXOSDITEMS; first -= MAXOSDITEMS;
if (first < 0) if (first < 0)
first = 0; first = 0;
if (current - MAXOSDITEMS > 0)
current -= MAXOSDITEMS;
else
current--;
Display(); Display();
} }
else else {
current--;
DisplayCurrent(true); DisplayCurrent(true);
} }
} }
}
void cOsdMenu::CursorDown(void) void cOsdMenu::CursorDown(void)
{ {
int count = Count(); int count = Count();
if (current < count - 1) { if (current < count - 1) {
DisplayCurrent(false); DisplayCurrent(false);
if (++current >= first + MAXOSDITEMS) { if (current == first + MAXOSDITEMS - 1) {
first += MAXOSDITEMS; first += MAXOSDITEMS;
if (first > count - MAXOSDITEMS) if (first > count - MAXOSDITEMS)
first = count - MAXOSDITEMS; first = count - MAXOSDITEMS;
if (current + MAXOSDITEMS < count)
current += MAXOSDITEMS;
else
current++;
Display(); Display();
} }
else else {
current++;
DisplayCurrent(true); DisplayCurrent(true);
} }
} }
}
void cOsdMenu::Mark(void) void cOsdMenu::Mark(void)
{ {