summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schirrmacher <vdr.neutrinoepg@schirrmacher.eu>2013-04-22 18:13:17 +0200
committerMartin Schirrmacher <vdr.neutrinoepg@schirrmacher.eu>2013-04-22 18:13:17 +0200
commit3d4dd169f1f34a80976c735a43080f938991a0c7 (patch)
tree6e7c6beeda617fba8f6fe1191f42c891da9af882
parentb65b597effe30fc252de5b24620e69a08fe99cbd (diff)
downloadvdr-plugin-neutrinoepg-3d4dd169f1f34a80976c735a43080f938991a0c7.tar.gz
vdr-plugin-neutrinoepg-3d4dd169f1f34a80976c735a43080f938991a0c7.tar.bz2
add possibility to switch between schedules with left/right key
-rw-r--r--menuevent.c65
1 files changed, 61 insertions, 4 deletions
diff --git a/menuevent.c b/menuevent.c
index cf8a722..38abbea 100644
--- a/menuevent.c
+++ b/menuevent.c
@@ -183,15 +183,72 @@ eOSState myMenuEvent::ProcessKey(eKeys Key)
case kUp:
case kDown|k_Repeat:
case kDown:
- case kLeft|k_Repeat:
- case kLeft:
- case kRight|k_Repeat:
- case kRight:
DisplayMenu()->Scroll(
NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft,
NORMALKEY(Key) == kLeft || NORMALKEY(Key) == kRight);
cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp);
return osContinue;
+ case kLeft:
+ {
+ // previous event
+ cSchedulesLock schedulesLock;
+ const cSchedules *schedules;
+ schedules = cSchedules::Schedules(schedulesLock);
+ const cSchedule *Schedule = schedules->GetSchedule( channel->GetChannelID() );
+
+ if(Schedule)
+ {
+ // do not go before first schedule
+ if( event == Schedule->Events()->First() )
+ break;
+
+ const cEvent *prev = NULL, *e = NULL;
+ for( e = Schedule->Events()->First(); e; e = Schedule->Events()->Next(e) )
+ {
+ if( e == event )
+ break;
+ prev = e;
+ }
+ if( prev != e )
+ event = prev;
+ else
+ event = NULL;
+
+ Display();
+ }
+
+ return osContinue;
+ }
+ case kRight:
+ {
+ // next event
+ cSchedulesLock schedulesLock;
+ const cSchedules *schedules;
+ schedules = cSchedules::Schedules(schedulesLock);
+ const cSchedule *Schedule = schedules->GetSchedule( channel->GetChannelID() );
+ if(Schedule)
+ {
+ const cEvent *next, *e = NULL;
+ for( e = Schedule->Events()->First(); e; e = Schedule->Events()->Next(e) )
+ {
+ if( e == event )
+ break;
+ }
+ if( e )
+ {
+ next = Schedule->Events()->Next(e);
+ if( next )
+ event = next;
+ else
+ event = NULL;
+ }
+ else
+ event = NULL;
+
+ Display();
+ }
+ return osContinue;
+ }
default:
break;
}