Commit Message
Uwe Ortner wrote:
> I know this isnt on the top priority list ...
>
> I have about 2500 channels available, if I could fade out or switch
> between radio and tv channels this would be a great help managing the
> channel list
This is how I do it (I include the source-dependent patch because
otherwise the channel filter patch wouldn't apply).
You have to go to the dvb setup to select if you want to see only tv,
only radio or all channels. In spite of the name they both apply to
1.3.21/1.3.22
Bye
Comments
Am So, den 06.03.2005 schrieb Luca Olivetti um 11:48:
> Uwe Ortner wrote:
> > I know this isnt on the top priority list ...
> >
> > I have about 2500 channels available, if I could fade out or switch
> > between radio and tv channels this would be a great help managing the
> > channel list
>
> This is how I do it (I include the source-dependent patch because
> otherwise the channel filter patch wouldn't apply).
> You have to go to the dvb setup to select if you want to see only tv,
> only radio or all channels. In spite of the name they both apply to
> 1.3.21/1.3.22
>
> Bye
Thank you, but I forget to mention Im working with 1.3.20 ;)
Nethertheless could this function be applied to the next vdr?
uwe
@@ -536,6 +536,11 @@
refChannel = RefChannel;
}
+void cChannel::SetGroupSep(bool Sep)
+{
+ groupSep = Sep;
+}
+
static int PrintParameter(char *p, char Name, int Value)
{
return Value >= 0 && Value != 999 ? sprintf(p, "%c%d", Name, Value) : 0;
@@ -909,6 +914,16 @@
return NULL;
}
+cChannel *cChannels::GetByName(char *Name)
+{
+ for (cChannel *channel = First(); channel; channel = Next(channel))
+ {
+ if (strcmp(channel->Name(), Name)==0)
+ return channel;
+ }
+ return NULL;
+}
+
bool cChannels::HasUniqueChannelID(cChannel *NewChannel, cChannel *OldChannel)
{
tChannelID NewChannelID = NewChannel->GetChannelID();
@@ -944,7 +959,33 @@
cChannel *NewChannel = new cChannel(*Transponder);
NewChannel->SetId(Nid, Tid, Sid, Rid);
NewChannel->SetName(Name, ShortName, Provider);
+#if 0
Add(NewChannel);
+#else
+ /* find group separator for the source of this channel */
+ {
+ char buffer[64];
+ snprintf(buffer, sizeof(buffer), "New Channels @ %s",
+ *cSource::ToString(NewChannel->Source()) );
+ cChannel *groupSep = GetByName(buffer);
+ if(!groupSep) // group separator for this source doesn't exist, so lets create it
+ {
+ groupSep = new cChannel();
+ groupSep->SetName(buffer, "", "");
+ groupSep->SetGroupSep(true);
+ Add(groupSep);
+ } else // find next separator or last channel
+ {
+ cChannel *nextChannel=Next(groupSep);
+ while (nextChannel && !nextChannel->GroupSep())
+ {
+ groupSep=nextChannel;
+ nextChannel=Next(nextChannel);
+ }
+ }
+ Add(NewChannel, groupSep);
+ }
+#endif
ReNumber();
return NewChannel;
}
@@ -191,6 +191,7 @@
void SetCaDescriptors(int Level);
void SetLinkChannels(cLinkChannels *LinkChannels);
void SetRefChannel(cChannel *RefChannel);
+ void SetGroupSep(bool Sep = true);
};
class cChannels : public cRwLock, public cConfig<cChannel> {
@@ -208,6 +209,7 @@
cChannel *GetByNumber(int Number, int SkipGap = 0);
cChannel *GetByServiceID(int Source, int Transponder, unsigned short ServiceID);
cChannel *GetByChannelID(tChannelID ChannelID, bool TryWithoutRid = false, bool TryWithoutPolarization = false);
+ cChannel *GetByName(char *Name);
int BeingEdited(void) { return beingEdited; }
void IncBeingEdited(void) { beingEdited++; }
void DecBeingEdited(void) { beingEdited--; }