00001 #ifndef VIDEOSOURCE_H
00002 #define VIDEOSOURCE_H
00003
00004 #include <vector>
00005 using namespace std;
00006
00007 #include "mthread.h"
00008 #include "settings.h"
00009 #include "datadirect.h"
00010
00011 class SignalTimeout;
00012 class ChannelTimeout;
00013 class UseEIT;
00014 class VideoSource;
00015 class CaptureCard;
00016 class VBIDevice;
00017 class CardInput;
00018 class CardID;
00019 class InputName;
00020 class SourceID;
00021 class DiSEqCDevTree;
00022 class DiSEqCDevSettings;
00023 class InputGroup;
00024
00025 static inline bool is_grabber_external(const QString &grabber)
00026 {
00027 return !(grabber == "datadirect" ||
00028 grabber == "eitonly" ||
00029 grabber == "schedulesdirect1" ||
00030 grabber == "/bin/true");
00031 }
00032
00033 static inline bool is_grabber_datadirect(const QString &grabber)
00034 {
00035 return (grabber == "datadirect") || (grabber == "schedulesdirect1");
00036 }
00037
00038 static inline int get_datadirect_provider(const QString &grabber)
00039 {
00040 if (grabber == "datadirect")
00041 return DD_ZAP2IT;
00042 else if (grabber == "schedulesdirect1")
00043 return DD_SCHEDULES_DIRECT;
00044 else
00045 return -1;
00046 }
00047
00048 static inline bool is_grabber_labs(const QString &grabber)
00049 {
00050 return grabber == "datadirect";
00051 }
00052
00053 class VideoSourceDBStorage : public SimpleDBStorage
00054 {
00055 protected:
00056 VideoSourceDBStorage(StorageUser *_user,
00057 const VideoSource &_parent,
00058 const QString &name) :
00059 SimpleDBStorage(_user, "videosource", name), m_parent(_parent)
00060 {
00061 }
00062
00063 virtual QString GetSetClause(MSqlBindings &bindings) const;
00064 virtual QString GetWhereClause(MSqlBindings &bindings) const;
00065
00066 const VideoSource& m_parent;
00067 };
00068
00069 class VideoSourceSelector : public ComboBoxSetting, public TransientStorage
00070 {
00071 Q_OBJECT
00072
00073 public:
00074 VideoSourceSelector(uint _initial_sourceid,
00075 const QString &_card_types,
00076 bool _must_have_mplexid);
00077
00078 virtual void Load(void);
00079
00080 uint GetSourceID(void) const { return getValue().toUInt(); }
00081
00082 private:
00083 uint initial_sourceid;
00084 QString card_types;
00085 bool must_have_mplexid;
00086 };
00087
00088 class FreqTableSelector :
00089 public ComboBoxSetting, public VideoSourceDBStorage
00090 {
00091 Q_OBJECT
00092 public:
00093 FreqTableSelector(const VideoSource& parent);
00094 protected:
00095 QString freq;
00096 };
00097
00098 class TransFreqTableSelector : public ComboBoxSetting, public TransientStorage
00099 {
00100 public:
00101 TransFreqTableSelector(uint _sourceid);
00102
00103 virtual void Load(void);
00104 virtual void Save(void);
00105
00106 void SetSourceID(uint _sourceid);
00107
00108 private:
00109 uint sourceid;
00110 QString loaded_freq_table;
00111 };
00112
00113 class DataDirectLineupSelector :
00114 public ComboBoxSetting, public VideoSourceDBStorage
00115 {
00116 Q_OBJECT
00117 public:
00118 DataDirectLineupSelector(const VideoSource& parent) :
00119 ComboBoxSetting(this), VideoSourceDBStorage(this, parent, "lineupid")
00120 {
00121 setLabel(QObject::tr("Data Direct lineup"));
00122 };
00123
00124 public slots:
00125 void fillSelections(const QString& uid, const QString& pwd, int source);
00126 };
00127
00128 class DataDirectButton : public TransButtonSetting
00129 {
00130 public:
00131 DataDirectButton() { setLabel(QObject::tr("Retrieve Lineups")); }
00132 };
00133
00134 class DataDirectUserID;
00135 class DataDirectPassword;
00136
00137 class DataDirect_config: public VerticalConfigurationGroup
00138 {
00139 Q_OBJECT
00140 public:
00141 DataDirect_config(const VideoSource& _parent, int _ddsource);
00142
00143 virtual void Load(void);
00144
00145 QString getLineupID(void) const { return lineupselector->getValue(); };
00146
00147 protected slots:
00148 void fillDataDirectLineupSelector(void);
00149
00150 protected:
00151 const VideoSource &parent;
00152 DataDirectUserID *userid;
00153 DataDirectPassword *password;
00154 DataDirectButton *button;
00155 DataDirectLineupSelector *lineupselector;
00156 QString lastloadeduserid;
00157 QString lastloadedpassword;
00158 int source;
00159 };
00160
00161 class XMLTV_generic_config: public VerticalConfigurationGroup
00162 {
00163 Q_OBJECT
00164
00165 public:
00166 XMLTV_generic_config(const VideoSource& _parent, QString _grabber);
00167
00168 virtual void Save(void);
00169 virtual void Save(QString) { Save(); }
00170
00171 public slots:
00172 void RunConfig(void);
00173
00174 protected:
00175 const VideoSource &parent;
00176 QString grabber;
00177 QStringList grabberArgs;
00178 };
00179
00180 class EITOnly_config: public VerticalConfigurationGroup
00181 {
00182 public:
00183 EITOnly_config(const VideoSource& _parent);
00184 virtual void Save();
00185 virtual void Save(QString) { Save(); }
00186
00187 protected:
00188 UseEIT *useeit;
00189 };
00190
00191 class NoGrabber_config: public VerticalConfigurationGroup
00192 {
00193 public:
00194 NoGrabber_config(const VideoSource& _parent);
00195
00196 virtual void Save(void);
00197 virtual void Save(QString) { Save(); }
00198
00199 protected:
00200 UseEIT *useeit;
00201 };
00202
00203
00204 class XMLTVGrabber;
00205 class XMLTVConfig : public TriggeredConfigurationGroup
00206 {
00207 Q_OBJECT
00208
00209 public:
00210 XMLTVConfig(const VideoSource &aparent);
00211
00212 virtual void Load(void);
00213 virtual void Save(void);
00214
00215 private:
00216 const VideoSource &parent;
00217 XMLTVGrabber *grabber;
00218
00219 void LoadXMLTVGrabbers(QStringList name_list, QStringList prog_list);
00220 };
00221
00222 class VideoSource : public ConfigurationWizard {
00223 public:
00224 VideoSource();
00225
00226 int getSourceID(void) const { return id->intValue(); };
00227
00228 void loadByID(int id);
00229
00230 static void fillSelections(SelectSetting* setting);
00231 static QString idToName(int id);
00232
00233 QString getSourceName(void) const { return name->getValue(); };
00234
00235 virtual void Save(void)
00236 {
00237 if (name)
00238 ConfigurationWizard::Save();
00239 }
00240
00241 virtual void Save(QString destination)
00242 {
00243 if (name)
00244 ConfigurationWizard::Save(destination);
00245 }
00246
00247 private:
00248 class ID: public AutoIncrementDBSetting
00249 {
00250 public:
00251 ID() : AutoIncrementDBSetting("videosource", "sourceid")
00252 {
00253 setName("VideoSourceName");
00254 setVisible(false);
00255 };
00256 };
00257
00258 class Name : public LineEditSetting, public VideoSourceDBStorage
00259 {
00260 public:
00261 Name(const VideoSource &parent) :
00262 LineEditSetting(this), VideoSourceDBStorage(this, parent, "name")
00263 {
00264 setLabel(QObject::tr("Video source name"));
00265 }
00266 };
00267
00268 private:
00269 ID *id;
00270 Name *name;
00271 XMLTVConfig *xmltv;
00272 };
00273
00274 class CaptureCardDBStorage : public SimpleDBStorage
00275 {
00276 protected:
00277 CaptureCardDBStorage(StorageUser *_user,
00278 const CaptureCard &_parent,
00279 const QString &_name) :
00280 SimpleDBStorage(_user, "capturecard", _name), m_parent(_parent)
00281 {
00282 }
00283
00284 int getCardID(void) const;
00285
00286 protected:
00287 virtual QString GetSetClause(MSqlBindings &bindings) const;
00288 virtual QString GetWhereClause(MSqlBindings &bindings) const;
00289 private:
00290 const CaptureCard& m_parent;
00291 };
00292
00293 class TunerCardAudioInput : public ComboBoxSetting, public CaptureCardDBStorage
00294 {
00295 Q_OBJECT
00296 public:
00297 TunerCardAudioInput(const CaptureCard &parent,
00298 QString dev = QString::null,
00299 QString type = QString::null);
00300
00301 public slots:
00302 void fillSelections(const QString &device);
00303
00304 private:
00305 QString last_device;
00306 QString last_cardtype;
00307 };
00308
00309 class EmptyAudioDevice : public LineEditSetting, public CaptureCardDBStorage
00310 {
00311 Q_OBJECT
00312 public:
00313 EmptyAudioDevice(const CaptureCard &parent) :
00314 LineEditSetting(this),
00315 CaptureCardDBStorage(this, parent, "audiodevice")
00316 {
00317 setVisible(false);
00318 }
00319
00320 void Save(void)
00321 {
00322 SetSaveRequired();
00323 settingValue = "";
00324 SimpleDBStorage::Save();
00325 }
00326 void Save(QString destination)
00327 {
00328 SetSaveRequired();
00329 settingValue = "";
00330 SimpleDBStorage::Save(destination);
00331 }
00332 };
00333
00334 class EmptyVBIDevice : public LineEditSetting, public CaptureCardDBStorage
00335 {
00336 Q_OBJECT
00337
00338 public:
00339 EmptyVBIDevice(const CaptureCard &parent) :
00340 LineEditSetting(this),
00341 CaptureCardDBStorage(this, parent, "vbidevice")
00342 {
00343 setVisible(false);
00344 };
00345 void Save(void)
00346 {
00347 SetSaveRequired();
00348 settingValue = "";
00349 SimpleDBStorage::Save();
00350 }
00351 void Save(QString destination)
00352 {
00353 SetSaveRequired();
00354 settingValue = "";
00355 SimpleDBStorage::Save(destination);
00356 }
00357 };
00358
00359 class CardType : public ComboBoxSetting, public CaptureCardDBStorage
00360 {
00361 public:
00362 CardType(const CaptureCard& parent);
00363 static void fillSelections(SelectSetting* setting);
00364 };
00365
00366 class HDHomeRunDevice
00367 {
00368 public:
00369 QString mythdeviceid;
00370 QString deviceid;
00371 QString desc;
00372 QString cardip;
00373 QString cardtuner;
00374 bool inuse;
00375 bool discovered;
00376 };
00377
00378 typedef QMap<QString, HDHomeRunDevice> HDHomeRunDeviceList;
00379
00380 class HDHomeRunDeviceIDList;
00381 class HDHomeRunDeviceID;
00382 class HDHomeRunIP;
00383 class HDHomeRunTunerIndex;
00384 class HDHomeRunConfigurationGroup : public VerticalConfigurationGroup
00385 {
00386 Q_OBJECT
00387
00388 friend class HDHomeRunExtra;
00389
00390 public:
00391 HDHomeRunConfigurationGroup(CaptureCard &parent);
00392
00393 public slots:
00394 void HDHomeRunExtraPanel(void);
00395
00396 private:
00397 void FillDeviceList(void);
00398 bool ProbeCard(HDHomeRunDevice&);
00399
00400 private:
00401 CaptureCard &parent;
00402 TransLabelSetting *desc;
00403 HDHomeRunDeviceIDList *deviceidlist;
00404 HDHomeRunDeviceID *deviceid;
00405 HDHomeRunIP *cardip;
00406 HDHomeRunTunerIndex *cardtuner;
00407 HDHomeRunDeviceList devicelist;
00408 };
00409
00410
00411 class CetonDeviceID;
00412 class CetonSetting;
00413 class CetonConfigurationGroup : public VerticalConfigurationGroup
00414 {
00415 Q_OBJECT
00416
00417 public:
00418 CetonConfigurationGroup(CaptureCard &parent);
00419
00420 private:
00421 CaptureCard &parent;
00422 TransLabelSetting *desc;
00423 CetonDeviceID *deviceid;
00424 CetonSetting *ip;
00425 CetonSetting *card;
00426 CetonSetting *tuner;
00427 };
00428
00429
00430
00431 class V4LConfigurationGroup : public VerticalConfigurationGroup
00432 {
00433 Q_OBJECT
00434
00435 public:
00436 V4LConfigurationGroup(CaptureCard &parent);
00437
00438 public slots:
00439 void probeCard(const QString &device);
00440
00441 private:
00442 CaptureCard &parent;
00443 TransLabelSetting *cardinfo;
00444 VBIDevice *vbidev;
00445 };
00446
00447 class VideoDevice;
00448 class VBIDevice;
00449
00450 class MPEGConfigurationGroup: public VerticalConfigurationGroup
00451 {
00452 Q_OBJECT
00453
00454 public:
00455 MPEGConfigurationGroup(CaptureCard &parent);
00456
00457 public slots:
00458 void probeCard(const QString &device);
00459
00460 private:
00461 CaptureCard &parent;
00462 VideoDevice *device;
00463 VBIDevice *vbidevice;
00464 TransLabelSetting *cardinfo;
00465 };
00466
00467 class HDPVRConfigurationGroup: public VerticalConfigurationGroup
00468 {
00469 Q_OBJECT
00470
00471 public:
00472 HDPVRConfigurationGroup(CaptureCard &parent);
00473
00474 public slots:
00475 void probeCard(const QString &device);
00476
00477 private:
00478 CaptureCard &parent;
00479 TransLabelSetting *cardinfo;
00480 TunerCardAudioInput *audioinput;
00481 };
00482
00483 class InstanceCount;
00484 class ASIDevice;
00485
00486 class ASIConfigurationGroup: public VerticalConfigurationGroup
00487 {
00488 Q_OBJECT
00489
00490 public:
00491 ASIConfigurationGroup(CaptureCard &parent);
00492
00493 public slots:
00494 void probeCard(const QString &device);
00495
00496 private:
00497 CaptureCard &parent;
00498 ASIDevice *device;
00499 TransLabelSetting *cardinfo;
00500 InstanceCount *instances;
00501 };
00502
00503 class InstanceCount;
00504
00505 class ImportConfigurationGroup: public VerticalConfigurationGroup
00506 {
00507 Q_OBJECT
00508
00509 public:
00510 ImportConfigurationGroup(CaptureCard &parent);
00511
00512 public slots:
00513 void probeCard(const QString &device);
00514
00515 private:
00516 CaptureCard &parent;
00517 TransLabelSetting *info;
00518 TransLabelSetting *size;
00519 };
00520
00521 class DemoConfigurationGroup: public VerticalConfigurationGroup
00522 {
00523 Q_OBJECT
00524
00525 public:
00526 DemoConfigurationGroup(CaptureCard &parent);
00527
00528 public slots:
00529 void probeCard(const QString &device);
00530
00531 private:
00532 CaptureCard &parent;
00533 TransLabelSetting *info;
00534 TransLabelSetting *size;
00535 };
00536
00537 class DVBCardNum;
00538 class DVBCardName;
00539 class DVBCardType;
00540 class DVBTuningDelay;
00541
00542 class DVBConfigurationGroup : public VerticalConfigurationGroup
00543 {
00544 Q_OBJECT
00545
00546 friend class DVBExtra;
00547
00548 public:
00549 DVBConfigurationGroup(CaptureCard& a_parent);
00550 ~DVBConfigurationGroup();
00551
00552 virtual void Load(void);
00553 virtual void Save(void);
00554
00555 public slots:
00556 void probeCard(const QString& cardNumber);
00557 void DiSEqCPanel(void);
00558 void DVBExtraPanel(void);
00559
00560 private:
00561 CaptureCard &parent;
00562
00563 DVBCardNum *cardnum;
00564 DVBCardName *cardname;
00565 DVBCardType *cardtype;
00566 SignalTimeout *signal_timeout;
00567 ChannelTimeout *channel_timeout;
00568 TransButtonSetting *buttonAnalog;
00569 DVBTuningDelay *tuning_delay;
00570 DiSEqCDevTree *diseqc_tree;
00571 TransButtonSetting *diseqc_btn;
00572 };
00573
00574 class FirewireGUID;
00575 class FirewireModel : public ComboBoxSetting, public CaptureCardDBStorage
00576 {
00577 Q_OBJECT
00578
00579 public:
00580 FirewireModel(const CaptureCard &parent, const FirewireGUID*);
00581
00582 public slots:
00583 void SetGUID(const QString&);
00584
00585 private:
00586 const FirewireGUID *guid;
00587 };
00588
00589 class FirewireDesc : public TransLabelSetting
00590 {
00591 Q_OBJECT
00592
00593 public:
00594 FirewireDesc(const FirewireGUID *_guid) :
00595 TransLabelSetting(), guid(_guid) { }
00596
00597 public slots:
00598 void SetGUID(const QString&);
00599
00600 private:
00601 const FirewireGUID *guid;
00602 };
00603
00604 class CaptureCardGroup : public TriggeredConfigurationGroup
00605 {
00606 Q_OBJECT
00607 public:
00608 CaptureCardGroup(CaptureCard& parent);
00609
00610 protected slots:
00611 virtual void triggerChanged(const QString& value);
00612 };
00613
00614 class CaptureCard : public QObject, public ConfigurationWizard
00615 {
00616 Q_OBJECT
00617 public:
00618 CaptureCard(bool use_card_group = true);
00619
00620 int getCardID(void) const { return id->intValue(); }
00621 QString GetRawCardType(void) const;
00622
00623 void loadByID(int id);
00624
00625 static void fillSelections(SelectSetting* setting);
00626
00627 void reload(void);
00628
00629 virtual void Save(void);
00630
00631 uint GetInstanceCount(void) const { return instance_count; }
00632
00633 public slots:
00634 void SetInstanceCount(uint cnt) { instance_count = cnt; }
00635
00636 void SetInstanceCount(int cnt) { instance_count = (uint)cnt; }
00637
00638 private:
00639
00640 class ID: public AutoIncrementDBSetting {
00641 public:
00642 ID():
00643 AutoIncrementDBSetting("capturecard", "cardid") {
00644 setVisible(false);
00645 setName("ID");
00646 };
00647 };
00648
00649 class Hostname : public HostnameSetting, public CaptureCardDBStorage
00650 {
00651 public:
00652 Hostname(const CaptureCard &parent) :
00653 HostnameSetting(this),
00654 CaptureCardDBStorage(this, parent, "hostname") { }
00655 };
00656
00657 private:
00658 ID *id;
00659 uint instance_count;
00660 };
00661
00662 class CardInputDBStorage : public SimpleDBStorage
00663 {
00664 protected:
00665 CardInputDBStorage(StorageUser *_user,
00666 const CardInput &_parent,
00667 QString _name) :
00668 SimpleDBStorage(_user, "cardinput", _name), m_parent(_parent)
00669 {
00670 }
00671
00672 int getInputID(void) const;
00673
00674 void fillSelections();
00675
00676 protected:
00677 virtual QString GetSetClause(MSqlBindings &bindings) const;
00678 virtual QString GetWhereClause(MSqlBindings &bindings) const;
00679 private:
00680 const CardInput& m_parent;
00681 };
00682
00683 class MTV_PUBLIC CaptureCardEditor : public QObject, public ConfigurationDialog
00684 {
00685 Q_OBJECT
00686
00687 public:
00688 CaptureCardEditor();
00689
00690 virtual MythDialog* dialogWidget(MythMainWindow* parent,
00691 const char* widgetName=0);
00692 virtual DialogCode exec(void);
00693 virtual void Load(void);
00694 virtual void Save(void) { }
00695
00696 public slots:
00697 void menu(void);
00698 void edit(void);
00699 void del(void);
00700
00701 private:
00702 ListBoxSetting *listbox;
00703 };
00704
00705 class MTV_PUBLIC VideoSourceEditor : public QObject, public ConfigurationDialog
00706 {
00707 Q_OBJECT
00708
00709 public:
00710 VideoSourceEditor();
00711
00712 virtual MythDialog* dialogWidget(MythMainWindow* parent,
00713 const char* widgetName=0);
00714
00715 bool cardTypesInclude(const int& SourceID,
00716 const QString& thecardtype);
00717
00718 virtual DialogCode exec(void);
00719 virtual void Load(void);
00720 virtual void Save(void) { }
00721
00722 public slots:
00723 void menu(void);
00724 void edit(void);
00725 void del(void);
00726
00727 private:
00728 ListBoxSetting *listbox;
00729 };
00730
00731 class MTV_PUBLIC CardInputEditor : public QObject, public ConfigurationDialog
00732 {
00733 Q_OBJECT
00734
00735 public:
00736 CardInputEditor();
00737
00738 virtual DialogCode exec(void);
00739 virtual void Load(void);
00740 virtual void Save(void) { }
00741
00742 private:
00743 vector<CardInput*> cardinputs;
00744 ListBoxSetting *listbox;
00745 };
00746
00747 class StartingChannel : public ComboBoxSetting, public CardInputDBStorage
00748 {
00749 Q_OBJECT
00750 public:
00751 StartingChannel(const CardInput &parent) :
00752 ComboBoxSetting(this, false, 1),
00753 CardInputDBStorage(this, parent, "startchan")
00754 {
00755 setLabel(QObject::tr("Starting channel"));
00756 setHelpText(QObject::tr("Starting Live TV channel.") + " " +
00757 QObject::tr("This is updated on every successful "
00758 "channel change."));
00759 }
00760 void fillSelections(void) {;}
00761 public slots:
00762 void SetSourceID(const QString &sourceid);
00763 };
00764
00765 class CardInput : public QObject, public ConfigurationWizard
00766 {
00767 Q_OBJECT
00768 public:
00769 CardInput(bool is_dtv_card, bool is_dvb_card,
00770 bool is_new_input, int cardid);
00771 ~CardInput();
00772
00773 int getInputID(void) const { return id->intValue(); };
00774
00775 void loadByID(int id);
00776 void loadByInput(int cardid, QString input);
00777 QString getSourceName(void) const;
00778
00779 virtual void Save(void);
00780 virtual void Save(QString ) { Save(); }
00781
00782 public slots:
00783 void CreateNewInputGroup();
00784 void channelScanner();
00785 void sourceFetch();
00786 void SetSourceID(const QString &sourceid);
00787
00788 private:
00789 class ID: public AutoIncrementDBSetting
00790 {
00791 public:
00792 ID() : AutoIncrementDBSetting("cardinput", "cardid")
00793 {
00794 setVisible(false);
00795 setName("CardInputID");
00796 }
00797 };
00798
00799 ID *id;
00800 CardID *cardid;
00801 InputName *inputname;
00802 SourceID *sourceid;
00803 StartingChannel *startchan;
00804 TransButtonSetting *scan;
00805 TransButtonSetting *srcfetch;
00806 DiSEqCDevSettings *externalInputSettings;
00807 InputGroup *inputgrp0;
00808 InputGroup *inputgrp1;
00809 };
00810
00811 class HDHomeRunDeviceID;
00812 class HDHomeRunTunerIndex;
00813
00814 class HDHomeRunIP : public TransLineEditSetting
00815 {
00816 Q_OBJECT
00817
00818 public:
00819 HDHomeRunIP();
00820
00821 virtual void setEnabled(bool e);
00822 void SetOldValue(const QString &s)
00823 { _oldValue = s; _oldValue.detach(); };
00824
00825 signals:
00826 void NewIP(const QString&);
00827
00828 public slots:
00829 void UpdateDevices(const QString&);
00830
00831 private:
00832 QString _oldValue;
00833 };
00834
00835 class HDHomeRunTunerIndex : public TransLineEditSetting
00836 {
00837 Q_OBJECT
00838
00839 public:
00840 HDHomeRunTunerIndex();
00841
00842 virtual void setEnabled(bool e);
00843 void SetOldValue(const QString &s)
00844 { _oldValue = s; _oldValue.detach(); };
00845
00846 signals:
00847 void NewTuner(const QString&);
00848
00849 public slots:
00850 void UpdateDevices(const QString&);
00851
00852 private:
00853 QString _oldValue;
00854 };
00855
00856
00857 class HDHomeRunDeviceIDList : public TransComboBoxSetting
00858 {
00859 Q_OBJECT
00860
00861 public:
00862 HDHomeRunDeviceIDList(HDHomeRunDeviceID *deviceid,
00863 TransLabelSetting *desc,
00864 HDHomeRunIP *cardip,
00865 HDHomeRunTunerIndex *cardtuner,
00866 HDHomeRunDeviceList *devicelist);
00867
00868 void fillSelections(const QString ¤t);
00869
00870 virtual void Load(void);
00871
00872 public slots:
00873 void UpdateDevices(const QString&);
00874
00875 private:
00876 HDHomeRunDeviceID *_deviceid;
00877 TransLabelSetting *_desc;
00878 HDHomeRunIP *_cardip;
00879 HDHomeRunTunerIndex *_cardtuner;
00880 HDHomeRunDeviceList *_devicelist;
00881
00882 QString _oldValue;
00883 };
00884
00885 class HDHomeRunDeviceID : public LabelSetting, public CaptureCardDBStorage
00886 {
00887 Q_OBJECT
00888
00889 public:
00890 HDHomeRunDeviceID(const CaptureCard &parent);
00891
00892 virtual void Load(void);
00893
00894 public slots:
00895 void SetIP(const QString&);
00896 void SetTuner(const QString&);
00897 void SetOverrideDeviceID(const QString&);
00898
00899 private:
00900 QString _ip;
00901 QString _tuner;
00902 QString _overridedeviceid;
00903 };
00904
00905 class CetonSetting : public TransLineEditSetting
00906 {
00907 Q_OBJECT
00908
00909 public:
00910 CetonSetting(const char* label, const char* helptext);
00911
00912 signals:
00913 void NewValue(const QString&);
00914
00915 public slots:
00916 void UpdateDevices(const QString&);
00917 void LoadValue(const QString&);
00918 };
00919
00920 class CetonDeviceID : public LabelSetting, public CaptureCardDBStorage
00921 {
00922 Q_OBJECT
00923
00924 public:
00925 CetonDeviceID(const CaptureCard &parent);
00926
00927 virtual void Load(void);
00928 void UpdateValues();
00929
00930 signals:
00931 void LoadedIP(const QString&);
00932 void LoadedCard(const QString&);
00933 void LoadedTuner(const QString&);
00934
00935
00936 public slots:
00937 void SetIP(const QString&);
00938 void SetCard(const QString&);
00939 void SetTuner(const QString&);
00940
00941 private:
00942 QString _ip;
00943 QString _card;
00944 QString _tuner;
00945 };
00946
00947 #endif