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