00001
00002
00003 #ifndef CHANNELBASE_H
00004 #define CHANNELBASE_H
00005
00006
00007 #include <qmap.h>
00008 #include <qstringlist.h>
00009
00010
00011 #include "channelutil.h"
00012 #include "inputinfo.h"
00013 #include "tv.h"
00014
00015 class TVRec;
00016
00025 class ChannelBase
00026 {
00027 public:
00028 ChannelBase(TVRec *parent);
00029 virtual ~ChannelBase();
00030
00031 virtual bool Init(QString &inputname, QString &startchannel, bool setchan);
00032 virtual bool IsTunable(const QString &input, const QString &channum) const;
00033
00034
00036 virtual bool Open(void) = 0;
00038 virtual void Close(void) = 0;
00039 virtual bool SetChannelByString(const QString &chan) = 0;
00041 virtual bool IsOpen(void) const = 0;
00042
00043
00045 virtual void SetFd(int fd) { (void)fd; };
00047 virtual int GetFd(void) const { return -1; };
00048
00049
00050 virtual uint GetNextChannel(uint chanid, int direction) const;
00051 virtual uint GetNextChannel(const QString &channum, int direction) const;
00052 virtual int GetInputByName(const QString &input) const;
00053 virtual QString GetInputByNum(int capchannel) const;
00054 virtual QString GetCurrentName(void) const
00055 { return curchannelname; }
00056 virtual int GetChanID(void) const;
00057 virtual int GetCurrentInputNum(void) const
00058 { return currentInputID; }
00059 virtual QString GetCurrentInput(void) const
00060 { return inputs[GetCurrentInputNum()]->name; }
00061 virtual int GetNextInputNum(void) const;
00062 virtual QString GetNextInput(void) const
00063 { return inputs[GetNextInputNum()]->name; }
00064 virtual QString GetNextInputStartChan(void)
00065 { return inputs[GetNextInputNum()]->startChanNum; }
00066 virtual uint GetCurrentSourceID(void) const
00067 { return inputs[GetCurrentInputNum()]->sourceid; }
00068 virtual uint GetInputCardID(int inputNum) const;
00069 virtual DBChanList GetChannels(int inputNum) const;
00070 virtual DBChanList GetChannels(const QString &inputname) const;
00071 virtual vector<InputInfo> GetFreeInputs(
00072 const vector<uint> &excluded_cards) const;
00073 virtual QStringList GetConnectedInputs(void) const;
00074
00076
00077 bool IsCommercialFree(void) const { return commfree; }
00079 virtual QString GetDevice(void) const { return ""; }
00080
00081
00082 virtual void Renumber(uint srcid, const QString &oldChanNum,
00083 const QString &newChanNum);
00084
00085
00086 virtual bool SwitchToInput(const QString &input);
00087 virtual bool SwitchToInput(const QString &input, const QString &chan);
00088
00089 virtual bool InitializeInputs(void);
00090
00091
00092 virtual bool Retune(void) { return false; }
00093
00095 virtual void StoreInputChannels(void)
00096 { StoreInputChannels(inputs);
00097 StoreDefaultInput(GetCardID(), GetCurrentInput()); }
00098
00099
00100 virtual bool InitPictureAttributes(void) { return false; }
00101 virtual int GetPictureAttribute(PictureAttribute) const { return -1; }
00102 virtual int ChangePictureAttribute(
00103 PictureAdjustType, PictureAttribute, bool up) { return -1; }
00104
00105 bool CheckChannel(const QString &channum, QString& inputName) const;
00106
00107
00108 void SetCardID(uint _cardid) { cardid = _cardid; }
00109
00110 protected:
00113 virtual bool SwitchToInput(int inputNum, bool setstarting);
00114 virtual bool IsInputAvailable(
00115 int inputNum, uint &mplexid_restriction) const;
00116
00117 virtual int GetCardID(void) const;
00118 virtual bool ChangeExternalChannel(const QString &newchan);
00119 static void StoreInputChannels(const InputMap&);
00120 static void StoreDefaultInput(uint cardid, const QString &input);
00121
00122 TVRec *pParent;
00123 QString curchannelname;
00124 int currentInputID;
00125 bool commfree;
00126 uint cardid;
00127 InputMap inputs;
00128 DBChanList allchannels;
00129 };
00130
00131 #endif
00132