summaryrefslogtreecommitdiff
path: root/osdmenu.c
diff options
context:
space:
mode:
Diffstat (limited to 'osdmenu.c')
-rw-r--r--osdmenu.c144
1 files changed, 71 insertions, 73 deletions
diff --git a/osdmenu.c b/osdmenu.c
index 328a85e..4a6ae6a 100644
--- a/osdmenu.c
+++ b/osdmenu.c
@@ -9,6 +9,8 @@ int *CurrentGroupChannel;
int *FirstGroupChannel;
int *LastGroupChannel;
+int LastMaxGroup;
+
int ChannelsShown;
int ChannelsBefore;
int ChannelsAfter;
@@ -67,85 +69,81 @@ myOsdMenu::myOsdMenu() : cOsdMenu("")
ChannelsAfter = (ChannelsShown / 2)-1;
}
- // Count the groups and channels
- int GroupCount = 0;
- for(cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel))
- {
- if( Channel->GroupSep() )
- GroupCount++;
- }
- MaxGroup = GroupCount;
-
- if( !Channels.First()->GroupSep() )
- MaxGroup++;
-
- //syslog(LOG_ERR, "neutrinoepg: MaxGroup %d", MaxGroup);
-
- // Hide Groups?
- if( HideGroupsAt > MaxGroup )
- HideGroupsAt = MaxGroup;
- if( HideGroupsAt < 1 )
- HideGroupsAt = 0;
- if( HideGroupsAt > 0 )
- {
- MaxGroup -= MaxGroup - HideGroupsAt;
- }
-
- //syslog(LOG_ERR, "neutrinoepg: HideGroup %d MaxGroup %d", HideGroupsAt, MaxGroup);
+ // Count the groups and channels
+ int GroupCount = 0;
+ for(cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel))
+ {
+ if( Channel->GroupSep() )
+ GroupCount++;
+ }
+ MaxGroup = GroupCount;
+
+ if( !Channels.First()->GroupSep() )
+ MaxGroup++;
+ //syslog(LOG_ERR, "neutrinoepg: MaxGroup %d", MaxGroup);
+ // Hide Groups?
+ if( HideGroupsAt > MaxGroup )
+ HideGroupsAt = MaxGroup;
+ if( HideGroupsAt < 1 )
+ HideGroupsAt = 0;
+ if( HideGroupsAt > 0 )
+ MaxGroup -= MaxGroup - HideGroupsAt;
+
+ // test for different group count
+ if( LastMaxGroup != MaxGroup )
+ {
+ //:(LOG_ERR, "neutrinoepg: HideGroup %d MaxGroup %d", HideGroupsAt, MaxGroup);
- if( GroupIndex != NULL )
- delete[] GroupIndex;
- if( CurrentGroupChannel != NULL )
- delete[] CurrentGroupChannel;
- if( FirstGroupChannel != NULL )
- delete[] FirstGroupChannel;
- if( LastGroupChannel != NULL )
- delete[] LastGroupChannel;
-
- // store max group count and add a little reserve
- GroupIndex = new int[MaxGroup+1];
- CurrentGroupChannel = new int[MaxGroup+1];
- FirstGroupChannel = new int[MaxGroup+1];
- LastGroupChannel = new int[MaxGroup+1];
-
- for( int i = 0; i < MaxGroup; i++)
- {
- CurrentGroupChannel[i] = -1;
- FirstGroupChannel[i] = -1;
- LastGroupChannel[i] = -1;
- }
+ if( GroupIndex != NULL )
+ delete[] GroupIndex;
+ if( CurrentGroupChannel != NULL )
+ delete[] CurrentGroupChannel;
+ if( FirstGroupChannel != NULL )
+ delete[] FirstGroupChannel;
+ if( LastGroupChannel != NULL )
+ delete[] LastGroupChannel;
+
+ // store max group count and add a little reserve
+ GroupIndex = new int[MaxGroup+1];
+ CurrentGroupChannel = new int[MaxGroup+1];
+ FirstGroupChannel = new int[MaxGroup+1];
+ LastGroupChannel = new int[MaxGroup+1];
+
+ for( int i = 0; i < MaxGroup; i++)
+ {
+ CurrentGroupChannel[i] = -1;
+ FirstGroupChannel[i] = -1;
+ LastGroupChannel[i] = -1;
+ }
- int index = 0;
- if( FirstChannelsHasGroup() == false )
- {
- GroupIndex[0] = -1;
- index = 1;
- }
- for( cChannel *Channel = Channels.First(); Channel && index < MaxGroup; Channel = Channels.Next(Channel) )
+ int index = 0;
+ if( FirstChannelsHasGroup() == false )
+ {
+ GroupIndex[0] = -1;
+ index = 1;
+ }
+ for( cChannel *Channel = Channels.First(); Channel && index < MaxGroup; Channel = Channels.Next(Channel) )
+ {
+ if( Channel->GroupSep() )
{
- if( Channel->GroupSep() )
- {
- GroupIndex[index] = Channel->Index();
- index++;
- }
+ GroupIndex[index] = Channel->Index();
+ index++;
}
+ }
- for( int Group = 0; Group < MaxGroup; Group++)
- {
- if( CurrentGroupChannel[Group] == -1 )
- {
- CurrentGroupChannel[Group] = GetFirstChannelOfGroup(Group);
- }
- if( FirstGroupChannel[Group] == -1 )
- {
- FirstGroupChannel[Group] = GetFirstChannelOfGroup(Group);
- }
- if( LastGroupChannel[Group] == -1 )
- {
- LastGroupChannel[Group] = GetLastChannelOfGroup(Group);
- }
- }
+ for( int Group = 0; Group < MaxGroup; Group++)
+ {
+ if( CurrentGroupChannel[Group] == -1 )
+ CurrentGroupChannel[Group] = GetFirstChannelOfGroup(Group);
+ if( FirstGroupChannel[Group] == -1 )
+ FirstGroupChannel[Group] = GetFirstChannelOfGroup(Group);
+ if( LastGroupChannel[Group] == -1 )
+ LastGroupChannel[Group] = GetLastChannelOfGroup(Group);
+ }
+ LastMaxGroup = MaxGroup;
+
+ }
// what is the current watching channel?
int CurrentChannelNr = cDevice::CurrentChannel();
cChannel *CurrentChannel = Channels.GetByNumber(CurrentChannelNr);