MythTV  0.27pre
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Groups Pages
videosource.h
Go to the documentation of this file.
1 #ifndef VIDEOSOURCE_H
2 #define VIDEOSOURCE_H
3 
4 #include <vector>
5 using namespace std;
6 
7 #include "mthread.h"
8 #include "settings.h"
9 #include "datadirect.h"
10 
11 class SignalTimeout;
12 class ChannelTimeout;
13 class UseEIT;
14 class VideoSource;
15 class CaptureCard;
16 class VBIDevice;
17 class CardInput;
18 class CardID;
19 class InputName;
20 class SourceID;
21 class DiSEqCDevTree;
22 class DiSEqCDevSettings;
23 class InputGroup;
24 
25 static inline bool is_grabber_external(const QString &grabber)
26 {
27  return !(grabber == "datadirect" ||
28  grabber == "eitonly" ||
29  grabber == "schedulesdirect1" ||
30  grabber == "/bin/true");
31 }
32 
33 static inline bool is_grabber_datadirect(const QString &grabber)
34 {
35  return (grabber == "datadirect") || (grabber == "schedulesdirect1");
36 }
37 
38 static inline int get_datadirect_provider(const QString &grabber)
39 {
40  if (grabber == "datadirect")
41  return DD_ZAP2IT;
42  else if (grabber == "schedulesdirect1")
43  return DD_SCHEDULES_DIRECT;
44  else
45  return -1;
46 }
47 
48 static inline bool is_grabber_labs(const QString &grabber)
49 {
50  return grabber == "datadirect";
51 }
52 
54 {
55  protected:
57  const VideoSource &_parent,
58  const QString &name) :
59  SimpleDBStorage(_user, "videosource", name), m_parent(_parent)
60  {
61  }
62 
63  virtual QString GetSetClause(MSqlBindings &bindings) const;
64  virtual QString GetWhereClause(MSqlBindings &bindings) const;
65 
67 };
68 
70 {
71  Q_OBJECT
72 
73  public:
74  VideoSourceSelector(uint _initial_sourceid,
75  const QString &_card_types,
76  bool _must_have_mplexid);
77 
78  virtual void Load(void);
79 
80  uint GetSourceID(void) const { return getValue().toUInt(); }
81 
82  private:
84  QString card_types;
86 };
87 
90 {
91  Q_OBJECT
92 public:
93  FreqTableSelector(const VideoSource& parent);
94 protected:
95  QString freq;
96 };
97 
99 {
100  public:
101  TransFreqTableSelector(uint _sourceid);
102 
103  virtual void Load(void);
104 
105  virtual void Save(void);
106  virtual void Save(QString /*destination*/) { Save(); }
107 
108  void SetSourceID(uint _sourceid);
109 
110  private:
113 };
114 
117 {
118  Q_OBJECT
119 public:
121  ComboBoxSetting(this), VideoSourceDBStorage(this, parent, "lineupid")
122  {
123  setLabel(QObject::tr("Data Direct lineup"));
124  };
125 
126  public slots:
127  void fillSelections(const QString& uid, const QString& pwd, int source);
128 };
129 
131 {
132  public:
133  DataDirectButton() { setLabel(QObject::tr("Retrieve Lineups")); }
134 };
135 
136 class DataDirectUserID;
137 class DataDirectPassword;
138 
140 {
141  Q_OBJECT
142  public:
143  DataDirect_config(const VideoSource& _parent, int _ddsource);
144 
145  virtual void Load(void);
146 
147  QString getLineupID(void) const { return lineupselector->getValue(); };
148 
149  protected slots:
150  void fillDataDirectLineupSelector(void);
151 
152  protected:
160  int source;
161 };
162 
164 {
165  Q_OBJECT
166 
167  public:
168  XMLTV_generic_config(const VideoSource& _parent, QString _grabber);
169 
170  virtual void Save(void);
171  virtual void Save(QString) { Save(); }
172 
173  public slots:
174  void RunConfig(void);
175 
176  protected:
178  QString grabber;
179  QStringList grabberArgs;
180 };
181 
183 {
184 public:
185  EITOnly_config(const VideoSource& _parent);
186 
187  virtual void Save();
188  virtual void Save(QString) { Save(); }
189 
190 protected:
192 };
193 
195 {
196 public:
197  NoGrabber_config(const VideoSource& _parent);
198 
199  virtual void Save(void);
200  virtual void Save(QString) { Save(); }
201 
202 protected:
204 };
205 
206 
207 class XMLTVGrabber;
209 {
210  Q_OBJECT
211 
212  public:
213  XMLTVConfig(const VideoSource &aparent);
214 
215  virtual void Load(void);
216  virtual void Save(void);
217  virtual void Save(QString /*destination*/) { Save(); }
218 
219  private:
222 
223  void LoadXMLTVGrabbers(QStringList name_list, QStringList prog_list);
224 };
225 
227 public:
228  VideoSource();
229 
230  int getSourceID(void) const { return id->intValue(); };
231 
232  void loadByID(int id);
233 
234  static void fillSelections(SelectSetting* setting);
235  static QString idToName(int id);
236 
237  QString getSourceName(void) const { return name->getValue(); };
238 
239  virtual void Save(void)
240  {
241  if (name)
243  }
244 
245  virtual void Save(QString destination)
246  {
247  if (name)
248  ConfigurationWizard::Save(destination);
249  }
250 
251  private:
253  {
254  public:
255  ID() : AutoIncrementDBSetting("videosource", "sourceid")
256  {
257  setName("VideoSourceName");
258  setVisible(false);
259  };
260  };
261 
263  {
264  public:
265  Name(const VideoSource &parent) :
266  LineEditSetting(this), VideoSourceDBStorage(this, parent, "name")
267  {
268  setLabel(QObject::tr("Video source name"));
269  }
270  };
271 
272 private:
273  ID *id;
276 };
277 
279 {
280  protected:
282  const CaptureCard &_parent,
283  const QString &_name) :
284  SimpleDBStorage(_user, "capturecard", _name), m_parent(_parent)
285  {
286  }
287 
288  int getCardID(void) const;
289 
290 protected:
291  virtual QString GetSetClause(MSqlBindings &bindings) const;
292  virtual QString GetWhereClause(MSqlBindings &bindings) const;
293 private:
295 };
296 
298 {
299  Q_OBJECT
300  public:
301  TunerCardAudioInput(const CaptureCard &parent,
302  QString dev = QString::null,
303  QString type = QString::null);
304 
305  public slots:
306  void fillSelections(const QString &device);
307 
308  private:
309  QString last_device;
310  QString last_cardtype;
311 };
312 
314 {
315  Q_OBJECT
316  public:
317  EmptyAudioDevice(const CaptureCard &parent) :
318  LineEditSetting(this),
319  CaptureCardDBStorage(this, parent, "audiodevice")
320  {
321  setVisible(false);
322  }
323 
324  void Save(void)
325  {
326  SetSaveRequired();
327  settingValue = "";
329  }
330  void Save(QString destination)
331  {
332  SetSaveRequired();
333  settingValue = "";
334  SimpleDBStorage::Save(destination);
335  }
336 };
337 
339 {
340  Q_OBJECT
341 
342  public:
343  EmptyVBIDevice(const CaptureCard &parent) :
344  LineEditSetting(this),
345  CaptureCardDBStorage(this, parent, "vbidevice")
346  {
347  setVisible(false);
348  };
349 
350  void Save(void)
351  {
352  SetSaveRequired();
353  settingValue = "";
355  }
356  void Save(QString destination)
357  {
358  SetSaveRequired();
359  settingValue = "";
360  SimpleDBStorage::Save(destination);
361  }
362 };
363 
365 {
366 public:
367  CardType(const CaptureCard& parent);
368  static void fillSelections(SelectSetting* setting);
369 };
370 
372 {
373  public:
374  QString mythdeviceid;
375  QString deviceid;
376  QString desc;
377  QString cardip;
378  QString cardtuner;
379  bool inuse;
381 };
382 
383 typedef QMap<QString, HDHomeRunDevice> HDHomeRunDeviceList;
384 
386 class HDHomeRunDeviceID;
387 class HDHomeRunIP;
388 class HDHomeRunTunerIndex;
390 {
391  Q_OBJECT
392 
393  friend class HDHomeRunExtra;
394 
395  public:
397 
398  public slots:
399  void HDHomeRunExtraPanel(void);
400 
401  private:
402  void FillDeviceList(void);
403  bool ProbeCard(HDHomeRunDevice&);
404 
405  private:
413 };
414 
415 
416 class CetonDeviceID;
417 class CetonSetting;
419 {
420  Q_OBJECT
421 
422  public:
424 
425  private:
431 };
432 
433 
434 
436 {
437  Q_OBJECT
438 
439  public:
441 
442  public slots:
443  void probeCard(const QString &device);
444 
445  private:
449 };
450 
451 class VideoDevice;
452 class VBIDevice;
453 
455 {
456  Q_OBJECT
457 
458  public:
460 
461  public slots:
462  void probeCard(const QString &device);
463 
464  private:
469 };
470 
472 {
473  Q_OBJECT
474 
475  public:
477 
478  public slots:
479  void probeCard(const QString &device);
480 
481  private:
485 };
486 
487 class InstanceCount;
488 class ASIDevice;
489 
491 {
492  Q_OBJECT
493 
494  public:
496 
497  public slots:
498  void probeCard(const QString &device);
499 
500  private:
505 };
506 
507 class InstanceCount;
508 
510 {
511  Q_OBJECT
512 
513  public:
515 
516  public slots:
517  void probeCard(const QString &device);
518 
519  private:
523 };
524 
526 {
527  Q_OBJECT
528 
529  public:
531 
532  public slots:
533  void probeCard(const QString &device);
534 
535  private:
539 };
540 
541 class DVBCardNum;
542 class DVBCardName;
543 class DVBCardType;
544 class DVBTuningDelay;
545 
547 {
548  Q_OBJECT
549 
550  friend class DVBExtra;
551 
552  public:
555 
556  virtual void Load(void);
557 
558  virtual void Save(void);
559  virtual void Save(QString /*destination*/) { Save(); }
560 
561  public slots:
562  void probeCard(const QString& cardNumber);
563  void DiSEqCPanel(void);
564  void DVBExtraPanel(void);
565 
566  private:
568 
578 };
579 
580 class FirewireGUID;
582 {
583  Q_OBJECT
584 
585  public:
586  FirewireModel(const CaptureCard &parent, const FirewireGUID*);
587 
588  public slots:
589  void SetGUID(const QString&);
590 
591  private:
593 };
594 
596 {
597  Q_OBJECT
598 
599  public:
600  FirewireDesc(const FirewireGUID *_guid) :
601  TransLabelSetting(), guid(_guid) { }
602 
603  public slots:
604  void SetGUID(const QString&);
605 
606  private:
608 };
609 
611 {
612  Q_OBJECT
613 public:
614  CaptureCardGroup(CaptureCard& parent);
615 
616 protected slots:
617  virtual void triggerChanged(const QString& value);
618 };
619 
620 class CaptureCard : public QObject, public ConfigurationWizard
621 {
622  Q_OBJECT
623 public:
624  CaptureCard(bool use_card_group = true);
625 
626  int getCardID(void) const { return id->intValue(); }
627  QString GetRawCardType(void) const;
628 
629  void loadByID(int id);
630 
631  static void fillSelections(SelectSetting* setting);
632 
633  void reload(void);
634 
635  virtual void Save(void);
636  virtual void Save(QString /*destination*/) { Save(); }
637 
638  uint GetInstanceCount(void) const { return instance_count; }
639 
640 public slots:
641  void SetInstanceCount(uint cnt) { instance_count = cnt; }
642  // this is needed to connect valueChanged() signal from legacy settings
643  void SetInstanceCount(int cnt) { instance_count = (uint)cnt; }
644 
645 private:
646 
647  class ID: public AutoIncrementDBSetting {
648  public:
649  ID():
650  AutoIncrementDBSetting("capturecard", "cardid") {
651  setVisible(false);
652  setName("ID");
653  };
654  };
655 
657  {
658  public:
659  Hostname(const CaptureCard &parent) :
660  HostnameSetting(this),
661  CaptureCardDBStorage(this, parent, "hostname") { }
662  };
663 
664 private:
665  ID *id;
667 };
668 
670 {
671  protected:
673  const CardInput &_parent,
674  QString _name) :
675  SimpleDBStorage(_user, "cardinput", _name), m_parent(_parent)
676  {
677  }
678 
679  int getInputID(void) const;
680 
681  void fillSelections();
682 
683 protected:
684  virtual QString GetSetClause(MSqlBindings &bindings) const;
685  virtual QString GetWhereClause(MSqlBindings &bindings) const;
686 private:
688 };
689 
690 class MTV_PUBLIC CaptureCardEditor : public QObject, public ConfigurationDialog
691 {
692  Q_OBJECT
693 
694  public:
696 
697  virtual MythDialog* dialogWidget(MythMainWindow* parent,
698  const char* widgetName=0);
699  virtual DialogCode exec(void);
700  virtual DialogCode exec(bool /*saveOnExec*/, bool /*doLoad*/)
701  { return exec(); }
702  virtual void Load(void);
703 
704  virtual void Save(void) { }
705  virtual void Save(QString destination) { }
706 
707  public slots:
708  void menu(void);
709  void edit(void);
710  void del(void);
711 
712  private:
714 };
715 
716 class MTV_PUBLIC VideoSourceEditor : public QObject, public ConfigurationDialog
717 {
718  Q_OBJECT
719 
720  public:
722 
723  virtual MythDialog* dialogWidget(MythMainWindow* parent,
724  const char* widgetName=0);
725 
726  bool cardTypesInclude(const int& SourceID,
727  const QString& thecardtype);
728 
729  virtual DialogCode exec(void);
730  virtual DialogCode exec(bool /*saveOnExec*/, bool /*doLoad*/)
731  { return exec(); }
732  virtual void Load(void);
733  virtual void Save(void) { }
734  virtual void Save(QString /*destination*/) { }
735 
736  public slots:
737  void menu(void);
738  void edit(void);
739  void del(void);
740 
741  private:
743 };
744 
745 class MTV_PUBLIC CardInputEditor : public QObject, public ConfigurationDialog
746 {
747  Q_OBJECT
748 
749  public:
750  CardInputEditor();
751 
752  virtual DialogCode exec(void);
753  virtual DialogCode exec(bool /*saveOnExec*/, bool /*doLoad*/)
754  { return exec(); }
755  virtual void Load(void);
756  virtual void Save(void) { }
757  virtual void Save(QString /*destination*/) { }
758 
759  private:
760  vector<CardInput*> cardinputs;
762 };
763 
765 {
766  Q_OBJECT
767  public:
768  StartingChannel(const CardInput &parent) :
769  ComboBoxSetting(this, false, 1),
770  CardInputDBStorage(this, parent, "startchan")
771  {
772  setLabel(QObject::tr("Starting channel"));
773  setHelpText(QObject::tr("Starting Live TV channel.") + " " +
774  QObject::tr("This is updated on every successful "
775  "channel change."));
776  }
777  void fillSelections(void) {;}
778  public slots:
779  void SetSourceID(const QString &sourceid);
780 };
781 
782 class CardInput : public QObject, public ConfigurationWizard
783 {
784  Q_OBJECT
785  public:
786  CardInput(bool is_dtv_card, bool is_dvb_card,
787  bool is_new_input, int cardid);
788  ~CardInput();
789 
790  int getInputID(void) const { return id->intValue(); };
791 
792  void loadByID(int id);
793  void loadByInput(int cardid, QString input);
794  QString getSourceName(void) const;
795 
796  virtual void Save(void);
797  virtual void Save(QString /*destination*/) { Save(); }
798 
799  public slots:
800  void CreateNewInputGroup();
801  void channelScanner();
802  void sourceFetch();
803  void SetSourceID(const QString &sourceid);
804 
805  private:
807  {
808  public:
809  ID() : AutoIncrementDBSetting("cardinput", "cardid")
810  {
811  setVisible(false);
812  setName("CardInputID");
813  }
814  };
815 
816  ID *id;
826 };
827 
828 class HDHomeRunDeviceID;
829 class HDHomeRunTunerIndex;
830 
832 {
833  Q_OBJECT
834 
835  public:
836  HDHomeRunIP();
837 
838  virtual void setEnabled(bool e);
839  void SetOldValue(const QString &s)
840  { _oldValue = s; _oldValue.detach(); };
841 
842  signals:
843  void NewIP(const QString&);
844 
845  public slots:
846  void UpdateDevices(const QString&);
847 
848  private:
849  QString _oldValue;
850 };
851 
853 {
854  Q_OBJECT
855 
856  public:
858 
859  virtual void setEnabled(bool e);
860  void SetOldValue(const QString &s)
861  { _oldValue = s; _oldValue.detach(); };
862 
863  signals:
864  void NewTuner(const QString&);
865 
866  public slots:
867  void UpdateDevices(const QString&);
868 
869  private:
870  QString _oldValue;
871 };
872 
873 
875 {
876  Q_OBJECT
877 
878  public:
880  TransLabelSetting *desc,
881  HDHomeRunIP *cardip,
882  HDHomeRunTunerIndex *cardtuner,
883  HDHomeRunDeviceList *devicelist);
884 
885  void fillSelections(const QString &current);
886 
887  virtual void Load(void);
888 
889  public slots:
890  void UpdateDevices(const QString&);
891 
892  private:
898 
899  QString _oldValue;
900 };
901 
903 {
904  Q_OBJECT
905 
906  public:
907  HDHomeRunDeviceID(const CaptureCard &parent);
908 
909  virtual void Load(void);
910 
911  public slots:
912  void SetIP(const QString&);
913  void SetTuner(const QString&);
914  void SetOverrideDeviceID(const QString&);
915 
916  private:
917  QString _ip;
918  QString _tuner;
920 };
921 
923 {
924  Q_OBJECT
925 
926  public:
927  CetonSetting(const char* label, const char* helptext);
928 
929  signals:
930  void NewValue(const QString&);
931 
932  public slots:
933  void UpdateDevices(const QString&);
934  void LoadValue(const QString&);
935 };
936 
938 {
939  Q_OBJECT
940 
941  public:
942  CetonDeviceID(const CaptureCard &parent);
943 
944  virtual void Load(void);
945  void UpdateValues();
946 
947  signals:
948  void LoadedIP(const QString&);
949  void LoadedCard(const QString&);
950  void LoadedTuner(const QString&);
951 
952 
953  public slots:
954  void SetIP(const QString&);
955  void SetTuner(const QString&);
956 
957  private:
958  QString _ip;
959  QString _card;
960  QString _tuner;
961 };
962 
963 #endif