Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: Prefermenu Plugin.



On Thu, 20 Feb 2003 09:13:13 +0100
"Olivier Jacques" <jacquesolivier@hotmail.com> wrote:

> Hello Dom, 
> 
> > If i have time i'll try to implement the use of channel ID.
> 
> Cool. Let me know when you are done (so that we don't do double work).

I made the changes to use the channel ID.
I attach a patch against the code i sent you few days ago.
I think we shoud rewrite the method cPreferedChannel::Parse(char *s)
because now the code works only with a valid prefermenu.conf containing
valid channel ID for the actual channels.conf.
Do we need a bit more robust parsing ?
What do you think about that ?

Bye,
   ANgelus :)




-- Attached file included as plaintext by Listar --
-- File: prefermenu.diff

diff -pur prefermenu-0.5.0/preferchannel.c prefermenu-0.5.0-channelID/preferchannel.c
--- prefermenu-0.5.0/preferchannel.c	2003-02-20 16:50:23.000000000 +0100
+++ prefermenu-0.5.0-channelID/preferchannel.c	2003-02-20 19:43:51.000000000 +0100
@@ -12,11 +12,12 @@ cPreferedChannels PreferedChannelsList;
 
 int number=0;
 int current=0;
-int preferchannels[255];
+tChannelID preferchannels[255];
 
 bool cPreferedChannel::Parse(char *s) {
-  Index = atoi(s);
-  if (Index > 0)
+  //let's use the tChannelID type
+  Index = tChannelID::FromString(s);
+  if ( Index.Valid() )
   {
     // Maybe control the uniqueness...
     return true;
@@ -27,12 +28,12 @@ bool cPreferedChannel::Parse(char *s) {
 
 bool cPreferedChannel::Save(FILE *f)
 {
-  if (PreferedChannelsList.channel_to_remove != GetIndex())
-       return fprintf(f, "%d\n",Index) > 0;
+  if (!(PreferedChannelsList.channel_to_remove == GetIndex()))
+       return fprintf(f, "%s\n", Index.ToString()) > 0;
      else return true;
 }
 
-int cPreferedChannels::channel_to_remove=-1;
+tChannelID cPreferedChannels::channel_to_remove = tChannelID::InvalidID;
 
 bool cPreferedChannels::Load(const char *filename, bool dummy)
 {
@@ -47,7 +48,7 @@ bool cPreferedChannels::Save(void)
 {
   if (cConfig<cPreferedChannel>::Save()) {
      isyslog("saved setup to %s", FileName());
-     channel_to_remove = -1;
+     channel_to_remove = tChannelID::InvalidID;
      cConfig<cPreferedChannel>::Load(FileName_,true);
      return true;
   }
@@ -61,7 +62,7 @@ cPreferedChannel *cPreferedChannels::Get
   return l;
 }
 
-void cPreferedChannels::AddPreferedChannel(int Index)
+void cPreferedChannels::AddPreferedChannel(tChannelID Index)
 {
   cPreferedChannel *PreferedChannel = new cPreferedChannel;
   PreferedChannel->SetIndex(Index);
@@ -69,7 +70,7 @@ void cPreferedChannels::AddPreferedChann
   PreferedChannelsList.Save();
 }
 
-void cPreferedChannels::RemovePreferedChannel(int removenumber)
+void cPreferedChannels::RemovePreferedChannel(tChannelID removenumber)
 {
   channel_to_remove = removenumber;
   PreferedChannelsList.Save();
diff -pur prefermenu-0.5.0/preferchannel.h prefermenu-0.5.0-channelID/preferchannel.h
--- prefermenu-0.5.0/preferchannel.h	2003-02-20 16:50:23.000000000 +0100
+++ prefermenu-0.5.0-channelID/preferchannel.h	2003-02-20 19:35:45.000000000 +0100
@@ -2,28 +2,28 @@
 #define __PREFERCHANNEL_H
 
 #include <vdr/plugin.h>
-//#include <vdr/config.h>
+#include <vdr/channels.h>
 
 class cPreferedChannel : public cListObject {
 private:
-  int Index;
+  tChannelID Index;
 public:
   bool Parse(char *s);
   bool Save(FILE *f);
-  int GetIndex() { return Index; }
-  void SetIndex(int index) { Index = index; }
+  const tChannelID GetIndex() { return Index; }
+  void SetIndex(tChannelID index) { Index = index; }
 };
 
 class cPreferedChannels : public cConfig<cPreferedChannel> {
 private:
   const char *FileName_;
 public:
-  static int channel_to_remove;
+  static tChannelID channel_to_remove;
   virtual bool Load(const char *filename, bool dummy=false);
   bool Save(void);
   cPreferedChannel *GetPreferedChannelNumber(int number);
-  void AddPreferedChannel(int Index);
-  void RemovePreferedChannel(int number);
+  void AddPreferedChannel(const tChannelID Index);
+  void RemovePreferedChannel(tChannelID number);
 };
 
 #endif //__PREFERCHANNEL_H
diff -pur prefermenu-0.5.0/prefermenu.h prefermenu-0.5.0-channelID/prefermenu.h
--- prefermenu-0.5.0/prefermenu.h	2003-02-20 16:50:23.000000000 +0100
+++ prefermenu-0.5.0-channelID/prefermenu.h	2003-02-20 16:50:48.000000000 +0100
@@ -3,7 +3,7 @@
 
 #include <vdr/plugin.h>
 
-static const char *VERSION        = "0.5.0pre";
+static const char *VERSION        = "0.5.0pre-channelID";
 static const char *DESCRIPTION    = "Prefer Channel Menu";
 static const char *MAINMENUENTRY  = "Prefermenu";
 
diff -pur prefermenu-0.5.0/preferosd.c prefermenu-0.5.0-channelID/preferosd.c
--- prefermenu-0.5.0/preferosd.c	2003-02-20 16:50:23.000000000 +0100
+++ prefermenu-0.5.0-channelID/preferosd.c	2003-02-20 20:15:06.000000000 +0100
@@ -20,7 +20,7 @@ extern int  alpha2;
 
 extern int number;
 extern int current;
-extern int preferchannels[255];
+extern tChannelID preferchannels[255];
 
 extern cPreferedChannels PreferedChannelsList;
 
@@ -28,7 +28,7 @@ cPreferOsd::cPreferOsd(void)
 {
   osd = NULL;
   
-  ////fptintf(stderr, "\nIn cPreferOsd Contructor\n");
+  //fprintf(stderr, "\nIn cPreferOsd Contructor\n");
 }
  
 cPreferOsd::~cPreferOsd(void)
@@ -39,25 +39,29 @@ cPreferOsd::~cPreferOsd(void)
 void cPreferOsd::Show()
 {
 
-  ////fptintf(stderr, "\nIn cPreferOsd::Show()\n");
+  //fprintf(stderr, "\nIn cPreferOsd::Show()\n");
 
   // Reading the preferList
  
-  ////fptintf(stderr,"\nBefore ReadPreferedCannels\n");
+  //fprintf(stderr,"\nBefore ReadPreferedCannels\n");
   ReadPreferedChannels();
-  ////fptintf(stderr,"\nAfter  ReadPreferedCannels\n");
+  //fprintf(stderr,"\nAfter  ReadPreferedCannels\n");
 
-  //FInd the actual current
-  int mycurrent = cDevice::PrimaryDevice()->CurrentChannel();
-  int i=0;    
-  ////fptintf(stderr,"\nmycurrent=%d\n", mycurrent);
-  while( (i < number) && (preferchannels[i] != mycurrent) ) {
-    //fptintf(stderr, "pref[%d]=%d\n", i, preferchannels[i]);
+  // find the actual current
+  cChannel *Channel = Channels.GetByNumber(cDevice::PrimaryDevice()->CurrentChannel());
+  if (Channel) {
+    tChannelID mycurrent = Channel->GetChannelID();
+    // do something with ChannelID...
+  
+    int i=0;    
+    //fprintf(stderr,"\nmycurrent=%d\n", mycurrent);
+    while( (i < number) && !(preferchannels[i] == mycurrent) ) {
+    //fprintf(stderr, "pref[%d]=%d\n", i, preferchannels[i]);
     i++;
-  }                
-  current = ( (number != 0) && (i != number) ) ? i+1 : 1;
-  //fptintf(stderr, "\ni=%d current=%d\n",i, current);
-  
+    }                
+    current = ( (number != 0) && (i != number) ) ? i+1 : 1;
+    //fprintf(stderr, "\ni=%d current=%d\n",i, current);
+  }
   osd = cOsd::OpenRaw(0, 0);
    if (osd) {
      WindowHandle = osd->Create(originx, originy, width, height, 4);
@@ -107,10 +111,10 @@ void cPreferOsd::ReadPreferedChannels() 
     number += 1;
     i++;    
     
-    //fptintf(stderr,"\nReadPreferedChannels i=%d number=%d preferedchannels[%d]=%d", i, number, i, preferchannels[i]);    
+    //fprintf(stderr,"\nReadPreferedChannels i=%d number=%d preferedchannels[%d]=%d", i, number, i, preferchannels[i]);    
     PreferedChannel = PreferedChannelsList.GetPreferedChannelNumber(i);
   }
-  //fptintf(stderr,"\n\nnumber=%d\n\n", number);
+  //fprintf(stderr,"\n\nnumber=%d\n\n", number);
 }
 
 
@@ -165,31 +169,30 @@ void cPreferOsd::ClearBitmap() {
 
 void cPreferOsd::DrawChannelsNames(int delta) {
 
-  //fptintf(stderr, "\n In DrawChannelNames - Begin \n");
+  fprintf(stderr, "\n In DrawChannelNames - Begin \n");
 
   if ( (number > 0) && (current > 0) ) {
     int d = 50;
      
     if (current > 3)  
-      bitmap->DrawText(d, 3+delta,  (Channels.GetByNumber(preferchannels[current-4]))->Name(), eDvbColor(pal[6]));
+      bitmap->DrawText(d, 3+delta,  (Channels.GetByChannelID(preferchannels[current-4]))->Name(), eDvbColor(pal[6]));
     if (current > 2)  
-      bitmap->DrawText(d, 36+delta, (Channels.GetByNumber(preferchannels[current-3]))->Name(), eDvbColor(pal[6]));
+      bitmap->DrawText(d, 36+delta, (Channels.GetByChannelID(preferchannels[current-3]))->Name(), eDvbColor(pal[6]));
     if (current > 1)  
-      bitmap->DrawText(d, 69+delta, (Channels.GetByNumber(preferchannels[current-2]))->Name(), eDvbColor(pal[6]));
+      bitmap->DrawText(d, 69+delta, (Channels.GetByChannelID(preferchannels[current-2]))->Name(), eDvbColor(pal[6]));
     
-    //fptintf(stderr, "\n In DrawChannelNames - Before Current: %d\n", current);
+    fprintf(stderr, "\n In DrawChannelNames - Before Current: %d\n", current);
 
-    bitmap->DrawText(d, 102+delta, (Channels.GetByNumber(preferchannels[current-1]))->Name(), eDvbColor(pal[7]));
+    bitmap->DrawText(d, 102+delta, (Channels.GetByChannelID(preferchannels[current-1]))->Name(), eDvbColor(pal[7]));
  
-    //fptintf(stderr, "\n In DrawChannelNames - After  Current: %d\n", current);
+    fprintf(stderr, "\n In DrawChannelNames - After  Current: %d\n", current);
   
     if (current < number) 
-      bitmap->DrawText(d, 135+delta, (Channels.GetByNumber(preferchannels[current]))->Name(), eDvbColor(pal[6]));
+      bitmap->DrawText(d, 135+delta, (Channels.GetByChannelID(preferchannels[current]))->Name(), eDvbColor(pal[6]));
     if (current < number-1)
-      bitmap->DrawText(d, 168+delta, (Channels.GetByNumber(preferchannels[current+1]))->Name(), eDvbColor(pal[6]));
+      bitmap->DrawText(d, 168+delta, (Channels.GetByChannelID(preferchannels[current+1]))->Name(), eDvbColor(pal[6]));
     if (current < number-2)
-      bitmap->DrawText(d, 201+delta, (Channels.GetByNumber(preferchannels[current+2]))->Name(), eDvbColor(pal[6]));
-  
+      bitmap->DrawText(d, 201+delta, (Channels.GetByChannelID(preferchannels[current+2]))->Name(), eDvbColor(pal[6]));
   }
 }
 
@@ -223,26 +226,34 @@ void cPreferOsd::CursorDown() {
 void cPreferOsd::CursorOK() {
   DrawMenu(0,2);
   DisplayBitmap();
-  if (preferchannels[current-1]!=0)
-    cDevice::PrimaryDevice()->SwitchChannel(Channels.GetByNumber(preferchannels[current-1]),true);
+  if ( preferchannels[current-1].Valid() ){
+    cChannel *Channel =  Channels.GetByChannelID(preferchannels[current-1]);
+    if (Channel){
+      cDevice::PrimaryDevice()->SwitchChannel(Channel, true);
+    }
+  }
 }
 
 
 void cPreferOsd::AddChannel() {
   if (number < 255)
   {
-    int current_channel = cDevice::PrimaryDevice()->CurrentChannel();
-    for (int i=0; i<number; i++)
+    cChannel *Channel = Channels.GetByNumber(cDevice::PrimaryDevice()->CurrentChannel());
+    if (Channel)
     {
-      //fptintf(stderr, "\ncurrent_channel: %d preferchannels[%d]: %d\n",current_channel, i, preferchannels[i] );
-      if (current_channel == preferchannels[i]) 
-        return;
+      tChannelID current_channel = Channel->GetChannelID();
+      // do something with ChannelID...
+      for (int i=0; i<number; i++)
+      {
+        //fprintf(stderr, "\ncurrent_channel: %d preferchannels[%d]: %d\n",current_channel, i, preferchannels[i] );
+        if (current_channel == preferchannels[i]) 
+          return;
+      }
+      PreferedChannelsList.AddPreferedChannel(current_channel);
+      ReadPreferedChannels();
+      current = number;
+      //fprintf(stderr, "\ncurrent: %d\n",current);
     }
-    PreferedChannelsList.AddPreferedChannel(current_channel);
-    ReadPreferedChannels();
-    current = number;
-    //fptintf(stderr, "\ncurrent: %d\n",current);
-
   }
 }
 
@@ -251,7 +262,7 @@ void cPreferOsd::RemoveChannel() {
   if (number > 0)
   {
     PreferedChannelsList.RemovePreferedChannel(preferchannels[current-1]);
-    preferchannels[current-1]=0;
+    //preferchannels[current-1]=0;
     current = 1;
     ReadPreferedChannels();
   }
@@ -261,7 +272,7 @@ void cPreferOsd::RemoveChannel() {
 
 void cPreferOsd::DrawMenu(int delta, int highlight) {
 
-  //fptintf(stderr, "\n In DrawMenu - Begin \n");
+  //fprintf(stderr, "\n In DrawMenu - Begin \n");
   
   ClearBitmap();
 
@@ -301,7 +312,7 @@ void cPreferOsd::DrawMenu(int delta, int
   bitmap->DrawSymbol(10, 102+29+3, 1,(highlight==-1) ? eDvbColor(pal[7]):eDvbColor(pal[6]));
   bitmap->DrawText(4, 102, "OK",(highlight==2) ? eDvbColor(pal[7]):eDvbColor(pal[6]));
 
-  //fptintf(stderr, "\n In DrawMenu - Before DrawChannelNames \n");
+  //fprintf(stderr, "\n In DrawMenu - Before DrawChannelNames \n");
   
   DrawChannelsNames(delta);
 
@@ -311,7 +322,7 @@ void cPreferOsd::DrawMenu(int delta, int
   //help instructions Remove Channel Red
   bitmap->DrawText(50, 330, tr("RemoveChannel"), eDvbColor(pal[9]));
   
-  //fptintf(stderr, "\n In DrawMenu - After  DrawChannelNames \n");
+  //fprintf(stderr, "\n In DrawMenu - After  DrawChannelNames \n");
   
 }
 



-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index