diff options
-rw-r--r-- | HISTORY | 11 | ||||
-rw-r--r-- | osdmenu.c | 20 |
2 files changed, 21 insertions, 10 deletions
@@ -1,11 +1,16 @@ VDR Plugin 'neutrinoepg' Revision History -2013-04-XX: Version 0.3.2 +2013-04-12: Version 0.3.3 - [Fix] komplette Neuimplementierung der Kanal- und Gruppenbehandlung innerhalb des Plugins. weniger Speicherverbrauch, schneller, keine SegFaults mehr! - Es werden die Kanal-Indexe genommen und nicht mehr die Kanal-Nummern. -- [Fix] Hide Radio Channels Fehler behoben (hatte zuvor zu viele Kanäle gefiltert) + Es werden Kanal-Indexe genommen und nicht mehr die Kanal-Nummern. +- [Fix] Implementierung der Option 'MiddleMenuEntry' komplett Neu. + Dadurch effizienter, es werden nicht mehr alle Kanäle durchlaufen wenn die Option gesetzt ist. +- [Fix] 'HideRadioChannels' Fehler behoben (hatte zuvor zu viele Kanäle gefiltert) +- [Fix] Die Einstellungen 'HideRadioChannels' & 'HideEncrytedChannels' wurden nur beim + Start des Plugins geladen und auf die Anzeige gesetzt. Jetzt bei jeder Änderung. - [Fix] Fehler behoben beim behandeln der channels.conf (wenn der erste Eintrag keine Kanalgruppe ist) +- [Fix] Wenn die erste oder letzte Kanalgruppe keine Kanäle hat - [Fix] kleinere Fehler behoben - [Fix] Parameter 'switchgroupkey' wurde nicht richtig geladen - [Fix] Bewegung links/rechts hoch/runter innerhalb der Liste @@ -76,7 +76,7 @@ myOsdMenu::myOsdMenu() : cOsdMenu("") LastGroupChannel[i] = -1; } } - + // what is the current watching channel? int CurrentChannelNr = cDevice::CurrentChannel(); cChannel *CurrentChannel = Channels.GetByNumber(CurrentChannelNr); @@ -90,6 +90,8 @@ myOsdMenu::myOsdMenu() : cOsdMenu("") CurrentGroup = GetGroupFromChannel( CurrentChannel->Index() ); CurrentGroupChannel[CurrentGroup] = CurrentChannel->Index(); + //syslog(LOG_ERR, "neutrinoepg: Group %d Channel %d", CurrentGroup, CurrentGroupChannel[CurrentGroup]); + for( int Group = 0; Group < MaxGroup; Group++) { if( CurrentGroupChannel[Group] == -1 ) @@ -115,6 +117,9 @@ myOsdMenu::~myOsdMenu() int myOsdMenu::GetGroupIndex(int Group) { + if( Group < 0 ) + return -1; + if( FirstChannelsHasGroup() == false && Group == 0) return -1; @@ -176,10 +181,10 @@ int myOsdMenu::GetFirstChannelOfGroup(int Group) if( !(isRadio && hideradiochannels) && !(Channel->Ca() && hideencryptedchannels) ) return Channel->Index(); - return GetNextChannel( Channel->Index() ); + return GetNextChannelOfGroup( Channel->Index(), Group ); } - return GetNextChannel( GetGroupIndex(Group) ); + return GetNextChannelOfGroup( GetGroupIndex(Group), Group ); } int myOsdMenu::GetLastChannelOfGroup(int Group) @@ -187,18 +192,21 @@ int myOsdMenu::GetLastChannelOfGroup(int Group) int NextGroup = Channels.GetNextGroup( GetGroupIndex(Group) ); // next group -> get prev channel of next group if( NextGroup != -1 ) - return GetPrevChannel(NextGroup); + return GetPrevChannelOfGroup(NextGroup, Group); else // no next group -> get last channel { cChannel *Channel; Channel = Channels.Last(); if( Channel == NULL ) return -1; + if( isChannelInGroup( Channel->Index(), Group ) == false ) + return -1; + bool isRadio = ( (!Channel->Vpid()) && (Channel->Apid(0)) ) ? true : false; if( !(isRadio && hideradiochannels) && !(Channel->Ca() && hideencryptedchannels) ) return Channel->Index(); - return GetPrevChannel( Channel->Index() ); + return GetPrevChannelOfGroup( Channel->Index(), Group ); } } @@ -718,8 +726,6 @@ eOSState myOsdMenu::ProcessKey(eKeys Key) } } - //syslog(LOG_ERR, "neutrinoepg: left after Group: %d Channel: %d", CurrentGroup, CurrentGroupChannel[CurrentGroup]); - if( middlemenuentry ) // if middlemenuentry hack is set do own page up { LoadSchedules(0); |