Rotor plugins and patches

Message ID 424A8902.8000605@ventoso.org
State New
Headers

Commit Message

Luca Olivetti March 30, 2005, 11:09 a.m. UTC
  mc8647 wrote:
> I also remember an announce for a patch that adds new found channels in 
> appropriate zones in channels.conf, one zone for one satellite.

Attached.

Bye
  

Comments

Thomas Bergwinkl March 30, 2005, 4:40 p.m. UTC | #1
Luca Olivetti wrote:

>
> mc8647 wrote:
> > I also remember an announce for a patch that adds new found
> channels in
> > appropriate zones in channels.conf, one zone for one satellite.
>
> Attached.
>

The attached patch separates also free-tv from paytv and tv from radio
channels. So newly found channels are subdivided like this:

:New FreeTV-Channels @ S13E
...
:New PayTV-Channels @ 13E
...
:New Free Radio-Channels @ S13E
...
:New PayRadio-Channels @ 13E
...

Perhaps someone like it.


Thomas
  

Patch

--- channels.c.newchannels	2005-02-06 10:44:53.000000000 +0100
+++ channels.c	2005-02-13 16:48:07.825253533 +0100
@@ -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;
      }
--- channels.h.newchannels	2005-01-16 14:46:41.000000000 +0100
+++ channels.h	2005-02-13 16:45:39.327608385 +0100
@@ -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--; }