From 30957bfb0f89ffa7cafaab36f25d5f83a582f196 Mon Sep 17 00:00:00 2001 From: louis Date: Mon, 15 Jul 2013 17:27:55 +0200 Subject: [PATCH] changed channel jump logic --- HISTORY | 1 + channelcolumn.c | 2 +- tvguideosd.c | 17 ++++++++++------- tvguideosd.h | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/HISTORY b/HISTORY index 207e7cc..67410f8 100644 --- a/HISTORY +++ b/HISTORY @@ -49,3 +49,4 @@ VDR Plugin 'tvguide' Revision History - display of additional EPG pictures in detailed epg view - Introduction of "Search & Recording" Menu - added possibility to replace original VDR schedules menu +- changed channel jump logic diff --git a/channelcolumn.c b/channelcolumn.c index 8ed34b0..b0a1c0a 100644 --- a/channelcolumn.c +++ b/channelcolumn.c @@ -357,7 +357,7 @@ void cChannelColumn::SetTimers() { } void cChannelColumn::dumpGrids() { - esyslog("tvguide: ------Channel %s: %d entires ---------", channel->Name(), grids.Count()); + esyslog("tvguide: ------Channel %s %d: %d entires ---------", channel->Name(), num, grids.Count()); int i=1; for (cGrid *grid = grids.First(); grid; grid = grids.Next(grid)) { esyslog("tvguide: grid %d: start: %s, stop: %s", i, *cMyTime::printTime(grid->StartTime()), *cMyTime::printTime(grid->EndTime())); diff --git a/tvguideosd.c b/tvguideosd.c index cbd364a..a0ac921 100644 --- a/tvguideosd.c +++ b/tvguideosd.c @@ -187,10 +187,10 @@ void cTvGuideOsd::readChannels(const cChannel *channelStart) { } } -void cTvGuideOsd::drawGridsChannelJump() { +void cTvGuideOsd::drawGridsChannelJump(int offset) { if (columns.Count() == 0) return; - activeGrid = columns.First()->getActive(); + activeGrid = columns.Get(offset)->getActive(); if (activeGrid) activeGrid->SetActive(); if (tvguideConfig.displayStatusHeader) { @@ -465,6 +465,8 @@ void cTvGuideOsd::processKeyGreen() { return; const cChannel *currentChannel = activeGrid->column->getChannel(); + const cChannel *firstChannel = columns.First()->getChannel(); + int currentCol = activeGrid->column->GetNum(); const cChannel *prev = NULL; if (tvguideConfig.channelJumpMode == eGroupJump) { @@ -474,7 +476,7 @@ void cTvGuideOsd::processKeyGreen() { } } else if (tvguideConfig.channelJumpMode == eNumJump) { int i = tvguideConfig.jumpChannels + 1; - for (const cChannel *channel = currentChannel; channel; channel = Channels.Prev(channel)) { + for (const cChannel *channel = firstChannel; channel; channel = Channels.Prev(channel)) { if (!channel->GroupSep()) { prev = channel; i--; @@ -486,7 +488,7 @@ void cTvGuideOsd::processKeyGreen() { if (prev) { readChannels(prev); if (columns.Count() > 0) { - drawGridsChannelJump(); + drawGridsChannelJump(currentCol); } osdManager.flush(); } @@ -495,8 +497,9 @@ void cTvGuideOsd::processKeyGreen() { void cTvGuideOsd::processKeyYellow() { if (activeGrid == NULL) return; - const cChannel *currentChannel = activeGrid->column->getChannel(); + int currentCol = activeGrid->column->GetNum(); + const cChannel *firstChannel = columns.First()->getChannel(); const cChannel *next = NULL; if (tvguideConfig.channelJumpMode == eGroupJump) { @@ -506,7 +509,7 @@ void cTvGuideOsd::processKeyYellow() { } } else if (tvguideConfig.channelJumpMode == eNumJump) { int i=0; - for (const cChannel *channel = currentChannel; channel; channel = Channels.Next(channel)) { + for (const cChannel *channel = firstChannel; channel; channel = Channels.Next(channel)) { if (channelGroups->IsInLastGroup(channel)) { break; } @@ -522,7 +525,7 @@ void cTvGuideOsd::processKeyYellow() { if (next) { readChannels(next); if (columns.Count() > 0) { - drawGridsChannelJump(); + drawGridsChannelJump(currentCol); } osdManager.flush(); } diff --git a/tvguideosd.h b/tvguideosd.h index 717ce10..82a8193 100644 --- a/tvguideosd.h +++ b/tvguideosd.h @@ -17,7 +17,7 @@ private: bool detailViewActive; void drawOsd(); void readChannels(const cChannel *channelStart); - void drawGridsChannelJump(); + void drawGridsChannelJump(int offset = 0); void drawGridsTimeJump(); void processKeyUp(); void processKeyDown();