00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef SCANWIZARDHELPERS_H
00034 #define SCANWIZARDHELPERS_H
00035
00036 #include "settings.h"
00037
00038 class TransFreqTableSelector;
00039 class TransLabelSetting;
00040 class ScanWizardScanner;
00041 class ScanWizard;
00042 class OptionalTypeSetting;
00043 class VideoSourceSelector;
00044 class OFDMPane;
00045 class QPSKPane;
00046 class DVBS2Pane;
00047 class ATSCPane;
00048 class QAMPane;
00049 class AnalogPane;
00050 class STPane;
00051 class DVBUtilsImportPane;
00052
00053 class ScanSignalMeter: public ProgressSetting, public TransientStorage
00054 {
00055 public:
00056 ScanSignalMeter(int steps): ProgressSetting(this, steps) {};
00057 };
00058
00059 class ScanProgressPopup : public ConfigurationPopupDialog
00060 {
00061 Q_OBJECT
00062
00063 friend class QObject;
00064
00065 public:
00066 ScanProgressPopup(bool lock, bool strength, bool snr);
00067
00068 virtual DialogCode exec(void);
00069
00070 void SetStatusSignalToNoise(int value);
00071 void SetStatusSignalStrength(int value);
00072 void SetStatusLock(int value);
00073 void SetScanProgress(double value);
00074
00075 void SetStatusText(const QString &value);
00076 void SetStatusTitleText(const QString &value);
00077
00078 private slots:
00079 void PopupDone(int);
00080
00081 private:
00082 ~ScanProgressPopup();
00083
00084 bool done;
00085 QWaitCondition wait;
00086
00087 ScanSignalMeter *ss;
00088 ScanSignalMeter *sn;
00089 ScanSignalMeter *progressBar;
00090
00091 TransLabelSetting *sl;
00092 TransLabelSetting *sta;
00093 };
00094
00095 class ScannerEvent : public QCustomEvent
00096 {
00097 friend class QObject;
00098
00099 public:
00100 enum TYPE
00101 {
00102 ScanComplete,
00103 ScanShutdown,
00104 AppendTextToLog,
00105 SetStatusText,
00106 SetStatusTitleText,
00107 SetPercentComplete,
00108 SetStatusSignalToNoise,
00109 SetStatusSignalStrength,
00110 SetStatusSignalLock,
00111 };
00112
00113 ScannerEvent(TYPE t) : QCustomEvent(t + QEvent::User) { ; }
00114
00115 QString strValue() const { return str; }
00116 void strValue(const QString& _str) { str = _str; }
00117
00118 int intValue() const { return intvalue; }
00119 void intValue(int _intvalue) { intvalue = _intvalue; }
00120
00121 TYPE eventType() const { return (TYPE)(type()-QEvent::User); }
00122
00123 private:
00124 ~ScannerEvent() { }
00125
00126 private:
00127 QString str;
00128 int intvalue;
00129 };
00130
00131
00132
00133
00134
00135 class MultiplexSetting : public ComboBoxSetting, public TransientStorage
00136 {
00137 Q_OBJECT
00138
00139 public:
00140 MultiplexSetting() : ComboBoxSetting(this), sourceid(0)
00141 { setLabel(tr("Transport")); }
00142
00143 virtual void load(void);
00144
00145 void SetSourceID(uint _sourceid);
00146
00147 protected:
00148 uint sourceid;
00149 };
00150
00151 class IgnoreSignalTimeout : public CheckBoxSetting, public TransientStorage
00152 {
00153 public:
00154 IgnoreSignalTimeout() : CheckBoxSetting(this)
00155 {
00156 setLabel(QObject::tr("Ignore Signal Timeout"));
00157 setHelpText(
00158 QObject::tr("This option allows you to slow down the scan for "
00159 "broken drivers, such as the DVB drivers for the "
00160 "Leadtek LR6650 DVB card."));
00161 }
00162 };
00163
00164 class InputSelector : public ComboBoxSetting, public TransientStorage
00165 {
00166 Q_OBJECT
00167
00168 public:
00169 InputSelector(uint _default_cardid, const QString &_default_inputname);
00170
00171 virtual void load(void);
00172
00173 uint GetCardID(void) const;
00174
00175 QString GetInputName(void) const;
00176
00177 static bool Parse(const QString &cardid_inputname,
00178 uint &cardid,
00179 QString &inputname);
00180
00181 public slots:
00182 void SetSourceID(const QString &_sourceid);
00183
00184 private:
00185 uint sourceid;
00186 uint default_cardid;
00187 QString default_inputname;
00188 };
00189
00190 class ScanCountry : public ComboBoxSetting, public TransientStorage
00191 {
00192 Q_OBJECT
00193
00194 public:
00195 enum Country
00196 {
00197 AU,
00198 FI,
00199 SE,
00200 UK,
00201 DE,
00202 ES,
00203 NZ,
00204 FR,
00205 };
00206
00207 ScanCountry();
00208 };
00209
00210 class ScanTypeSetting : public ComboBoxSetting, public TransientStorage
00211 {
00212 Q_OBJECT
00213 public:
00214 enum Type
00215 {
00216 Error_Open = 0,
00217 Error_Probe,
00218
00219 FullScan_Analog,
00220 FullScan_ATSC,
00221 FullScan_OFDM,
00222
00223
00224 NITAddScan_OFDM,
00225 NITAddScan_QPSK,
00226 NITAddScan_QAM,
00227
00228 FullTransportScan,
00229
00230 TransportScan,
00231
00232 IPTVImport,
00233
00234 DVBUtilsImport,
00235 };
00236
00237 ScanTypeSetting() : ComboBoxSetting(this), hw_cardid(0)
00238 { setLabel(QObject::tr("Scan Type")); }
00239
00240 protected slots:
00241 void SetInput(const QString &cardids_inputname);
00242
00243 protected:
00244 uint hw_cardid;
00245 };
00246
00247 class ScanOptionalConfig : public TriggeredConfigurationGroup
00248 {
00249 Q_OBJECT
00250
00251 public:
00252 ScanOptionalConfig(ScanTypeSetting *_scan_type);
00253
00254 QString GetATSCFormat(const QString&) const;
00255 QString GetFrequencyStandard(void) const;
00256 QString GetModulation(void) const;
00257 QString GetFrequencyTable(void) const;
00258 bool DoIgnoreSignalTimeout(void) const;
00259 QString GetFilename(void) const;
00260 uint GetMultiplex(void) const;
00261 bool DoDeleteChannels(void) const;
00262 bool DoRenameChannels(void) const;
00263 QMap<QString,QString> GetStartChan(void) const;
00264
00265 void SetDefaultATSCFormat(const QString &atscFormat);
00266
00267 public slots:
00268 void SetSourceID(const QString&);
00269 void triggerChanged(const QString&);
00270
00271 private:
00272 ScanTypeSetting *scanType;
00273 ScanCountry *country;
00274 IgnoreSignalTimeout *ignoreSignalTimeoutAll;
00275 OFDMPane *paneOFDM;
00276 QPSKPane *paneQPSK;
00277 DVBS2Pane *paneDVBS2;
00278 ATSCPane *paneATSC;
00279 QAMPane *paneQAM;
00280 AnalogPane *paneAnalog;
00281 STPane *paneSingle;
00282 DVBUtilsImportPane *paneDVBUtilsImport;
00283 };
00284
00285 class ScanWizardConfig: public VerticalConfigurationGroup
00286 {
00287 Q_OBJECT
00288
00289 public:
00290 ScanWizardConfig(ScanWizard *_parent,
00291 uint default_sourceid,
00292 uint default_cardid,
00293 QString default_inputname);
00294
00295 uint GetSourceID(void) const;
00296 QString GetATSCFormat(void) const;
00297 QString GetModulation(void) const { return scanConfig->GetModulation(); }
00298 int GetScanType(void) const { return scanType->getValue().toInt();}
00299 uint GetCardID(void) const { return input->GetCardID(); }
00300 QString GetInputName(void) const { return input->GetInputName(); }
00301 QString GetFilename(void) const { return scanConfig->GetFilename(); }
00302 uint GetMultiplex(void) const { return scanConfig->GetMultiplex(); }
00303 bool DoDeleteChannels(void) const { return scanConfig->DoDeleteChannels();}
00304 bool DoRenameChannels(void) const { return scanConfig->DoRenameChannels();}
00305 QString GetFrequencyStandard(void) const
00306 { return scanConfig->GetFrequencyStandard(); }
00307 QString GetFrequencyTable(void) const
00308 { return scanConfig->GetFrequencyTable(); }
00309 QMap<QString,QString> GetStartChan(void) const
00310 { return scanConfig->GetStartChan(); }
00311 bool DoIgnoreSignalTimeout(void) const
00312 { return scanConfig->DoIgnoreSignalTimeout(); }
00313
00314 void SetDefaultATSCFormat(const QString &atscFormat)
00315 { scanConfig->SetDefaultATSCFormat(atscFormat); }
00316
00317 protected:
00318 VideoSourceSelector *videoSource;
00319 InputSelector *input;
00320 ScanTypeSetting *scanType;
00321 ScanOptionalConfig *scanConfig;
00322 };
00323
00324 class LogList: public ListBoxSetting, public TransientStorage
00325 {
00326 public:
00327 LogList();
00328
00329 void updateText(const QString& status);
00330 protected:
00331 int n;
00332 };
00333
00334 class ScanFrequencyTable: public ComboBoxSetting, public TransientStorage
00335 {
00336 public:
00337 ScanFrequencyTable() : ComboBoxSetting(this)
00338 {
00339 addSelection(QObject::tr("Broadcast"), "us", true);
00340 addSelection(QObject::tr("Cable") + " " +
00341 QObject::tr("High"), "uscablehigh", false);
00342 addSelection(QObject::tr("Cable HRC") + " " +
00343 QObject::tr("High"), "ushrchigh", false);
00344 addSelection(QObject::tr("Cable IRC") + " " +
00345 QObject::tr("High"), "usirchigh", false);
00346 addSelection(QObject::tr("Cable"), "uscable", false);
00347 addSelection(QObject::tr("Cable HRC"), "ushrc", false);
00348 addSelection(QObject::tr("Cable IRC"), "usirc", false);
00349
00350 setLabel(QObject::tr("Frequency Table"));
00351 setHelpText(QObject::tr("Frequency table to use.") + " " +
00352 QObject::tr(
00353 "The option of scanning only \"High\" "
00354 "frequency channels is useful because most "
00355 "digital channels are on the higher frequencies."));
00356 }
00357 };
00358
00359 class ScanATSCModulation: public ComboBoxSetting, public TransientStorage
00360 {
00361 public:
00362 ScanATSCModulation() : ComboBoxSetting(this)
00363 {
00364 addSelection(QObject::tr("Terrestrial")+" (8-VSB)","vsb8", true);
00365 addSelection(QObject::tr("Cable") + " (QAM-256)", "qam256", false);
00366 addSelection(QObject::tr("Cable") + " (QAM-128)", "qam128", false);
00367 addSelection(QObject::tr("Cable") + " (QAM-64)", "qam64", false);
00368
00369 setLabel(QObject::tr("Modulation"));
00370 setHelpText(
00371 QObject::tr("Modulation, 8-VSB, QAM-256, etc.") + " " +
00372 QObject::tr("Most cable systems in the United States use "
00373 "QAM-256 or QAM-64, but some mixed systems "
00374 "may use 8-VSB for over-the-air channels."));
00375 }
00376 };
00377
00378 class ScanATSCChannelFormat: public ComboBoxSetting, public TransientStorage
00379 {
00380 public:
00381 ScanATSCChannelFormat() : ComboBoxSetting(this)
00382 {
00383 addSelection(QObject::tr("(5_1) Underscore"), "%1_%2", true);
00384 addSelection(QObject::tr("(5-1) Minus"), "%1-%2", false);
00385 addSelection(QObject::tr("(5.1) Period"), "%1.%2", false);
00386 addSelection(QObject::tr("(501) Zero"), "%10%2", false);
00387 addSelection(QObject::tr("(51) None"), "%1%2", false);
00388 setLabel(QObject::tr("ATSC Channel Separator"));
00389 setHelpText(QObject::tr("What to use to separate ATSC major "
00390 "and minor channels."));
00391 }
00392 };
00393
00394 class ScanOldChannelTreatment: public ComboBoxSetting, public TransientStorage
00395 {
00396 public:
00397 ScanOldChannelTreatment(bool rename = true) : ComboBoxSetting(this)
00398 {
00399 addSelection(QObject::tr("Minimal Updates"), "minimal");
00400 if (rename)
00401 addSelection(QObject::tr("Rename to Match"), "rename");
00402 addSelection(QObject::tr("Delete"), "delete");
00403 setLabel(QObject::tr("Existing Channel Treatment"));
00404 setHelpText(QObject::tr("How to treat existing channels."));
00405 }
00406 };
00407
00408 class ScanFrequency: public LineEditSetting, public TransientStorage
00409 {
00410 public:
00411 ScanFrequency(bool in_kHz = false) : LineEditSetting(this)
00412 {
00413 QString units = (in_kHz) ? "kHz" : "Hz";
00414 setLabel(QObject::tr("Frequency (%1)").arg(units));
00415 setHelpText(
00416 QObject::tr(
00417 "Frequency (Option has no default).\n"
00418 "The frequency for this channel in %1.").arg(units));
00419 };
00420 };
00421
00422 class ScanSymbolRate: public ComboBoxSetting, public TransientStorage
00423 {
00424 public:
00425 ScanSymbolRate() : ComboBoxSetting(this, true)
00426 {
00427 setLabel(QObject::tr("Symbol Rate"));
00428 setHelpText(
00429 QObject::tr(
00430 "Symbol Rate (symbols/second).\n"
00431 "Most dvb-s transponders transmit at 27.5 "
00432 "million symbols per second."));
00433 addSelection("3333000");
00434 addSelection("22000000");
00435 addSelection("27500000", "27500000", true);
00436 addSelection("28000000");
00437 addSelection("28500000");
00438 addSelection("29900000");
00439 };
00440 };
00441
00442 class ScanPolarity: public ComboBoxSetting, public TransientStorage
00443 {
00444 public:
00445 ScanPolarity() : ComboBoxSetting(this)
00446 {
00447 setLabel(QObject::tr("Polarity"));
00448 setHelpText(QObject::tr("Polarity (Option has no default)"));
00449 addSelection(QObject::tr("Horizontal"), "h",true);
00450 addSelection(QObject::tr("Vertical"), "v");
00451 addSelection(QObject::tr("Right Circular"), "r");
00452 addSelection(QObject::tr("Left Circular"), "l");
00453 };
00454 };
00455
00456 class ScanInversion: public ComboBoxSetting, public TransientStorage
00457 {
00458 public:
00459 ScanInversion() : ComboBoxSetting(this)
00460 {
00461 setLabel(QObject::tr("Inversion"));
00462 setHelpText(QObject::tr(
00463 "Inversion (Default: Auto):\n"
00464 "Most cards can autodetect this now, so "
00465 "leave it at Auto unless it won't work."));
00466 addSelection(QObject::tr("Auto"), "a",true);
00467 addSelection(QObject::tr("On"), "1");
00468 addSelection(QObject::tr("Off"), "0");
00469 };
00470 };
00471
00472 class ScanBandwidth: public ComboBoxSetting, public TransientStorage
00473 {
00474 public:
00475 ScanBandwidth() : ComboBoxSetting(this)
00476 {
00477 setLabel(QObject::tr("Bandwidth"));
00478 setHelpText(QObject::tr("Bandwidth (Default: Auto)\n"));
00479 addSelection(QObject::tr("Auto"),"a",true);
00480 addSelection(QObject::tr("6 MHz"),"6");
00481 addSelection(QObject::tr("7 MHz"),"7");
00482 addSelection(QObject::tr("8 MHz"),"8");
00483 };
00484 };
00485
00486 class ScanModulationSetting: public ComboBoxSetting
00487 {
00488 public:
00489 ScanModulationSetting(Storage *_storage) : ComboBoxSetting(_storage)
00490 {
00491 addSelection(QObject::tr("Auto"),"auto",true);
00492 addSelection("QPSK","qpsk");
00493 #ifdef FE_GET_EXTENDED_INFO
00494 addSelection("8PSK","8psk");
00495 #endif
00496 addSelection("QAM 16","qam_16");
00497 addSelection("QAM 32","qam_32");
00498 addSelection("QAM 64","qam_64");
00499 addSelection("QAM 128","qam_128");
00500 addSelection("QAM 256","qam_256");
00501 };
00502 };
00503
00504 class ScanModulation: public ScanModulationSetting, public TransientStorage
00505 {
00506 public:
00507 ScanModulation() : ScanModulationSetting(this)
00508 {
00509 setLabel(QObject::tr("Modulation"));
00510 setHelpText(QObject::tr("Modulation (Default: Auto)"));
00511 };
00512 };
00513
00514 class ScanConstellation: public ScanModulationSetting,
00515 public TransientStorage
00516 {
00517 public:
00518 ScanConstellation() : ScanModulationSetting(this)
00519 {
00520 setLabel(QObject::tr("Constellation"));
00521 setHelpText(QObject::tr("Constellation (Default: Auto)"));
00522 };
00523 };
00524
00525 class ScanFecSetting: public ComboBoxSetting
00526 {
00527 public:
00528 ScanFecSetting(Storage *_storage) : ComboBoxSetting(_storage)
00529 {
00530 addSelection(QObject::tr("Auto"),"auto",true);
00531 addSelection(QObject::tr("None"),"none");
00532 addSelection("1/2");
00533 addSelection("2/3");
00534 addSelection("3/4");
00535 addSelection("4/5");
00536 addSelection("5/6");
00537 addSelection("6/7");
00538 addSelection("7/8");
00539 addSelection("8/9");
00540 }
00541 };
00542
00543 class ScanFec: public ScanFecSetting, public TransientStorage
00544 {
00545 public:
00546 ScanFec() : ScanFecSetting(this)
00547 {
00548 setLabel(QObject::tr("FEC"));
00549 setHelpText(QObject::tr(
00550 "Forward Error Correction (Default: Auto)"));
00551 }
00552 };
00553
00554 class ScanCodeRateLP: public ScanFecSetting, public TransientStorage
00555 {
00556 public:
00557 ScanCodeRateLP() : ScanFecSetting(this)
00558 {
00559 setLabel(QObject::tr("LP Coderate"));
00560 setHelpText(QObject::tr("Low Priority Code Rate (Default: Auto)"));
00561 }
00562 };
00563
00564 class ScanCodeRateHP: public ScanFecSetting, public TransientStorage
00565 {
00566 public:
00567 ScanCodeRateHP() : ScanFecSetting(this)
00568 {
00569 setLabel(QObject::tr("HP Coderate"));
00570 setHelpText(QObject::tr("High Priority Code Rate (Default: Auto)"));
00571 };
00572 };
00573
00574 class ScanGuardInterval: public ComboBoxSetting, public TransientStorage
00575 {
00576 public:
00577 ScanGuardInterval() : ComboBoxSetting(this)
00578 {
00579 setLabel(QObject::tr("Guard Interval"));
00580 setHelpText(QObject::tr("Guard Interval (Default: Auto)"));
00581 addSelection(QObject::tr("Auto"),"auto");
00582 addSelection("1/4");
00583 addSelection("1/8");
00584 addSelection("1/16");
00585 addSelection("1/32");
00586 };
00587 };
00588
00589 class ScanTransmissionMode: public ComboBoxSetting, public TransientStorage
00590 {
00591 public:
00592 ScanTransmissionMode() : ComboBoxSetting(this)
00593 {
00594 setLabel(QObject::tr("Trans. Mode"));
00595 setHelpText(QObject::tr("Transmission Mode (Default: Auto)"));
00596 addSelection(QObject::tr("Auto"),"a");
00597 addSelection("2K","2");
00598 addSelection("8K","8");
00599 };
00600 };
00601
00602 class ScanHierarchy: public ComboBoxSetting, public TransientStorage
00603 {
00604 public:
00605 ScanHierarchy() : ComboBoxSetting(this)
00606 {
00607 setLabel(QObject::tr("Hierarchy"));
00608 setHelpText(QObject::tr("Hierarchy (Default: Auto)"));
00609 addSelection(QObject::tr("Auto"),"a");
00610 addSelection(QObject::tr("None"), "n");
00611 addSelection("1");
00612 addSelection("2");
00613 addSelection("4");
00614 };
00615 };
00616
00617 class OFDMPane : public HorizontalConfigurationGroup
00618 {
00619 public:
00620 OFDMPane() : HorizontalConfigurationGroup(false, false, true, true)
00621 {
00622 setUseFrame(false);
00623 VerticalConfigurationGroup *left =
00624 new VerticalConfigurationGroup(false,true,true,false);
00625 VerticalConfigurationGroup *right =
00626 new VerticalConfigurationGroup(false,true,true,false);
00627 left->addChild(pfrequency = new ScanFrequency());
00628 left->addChild(pbandwidth = new ScanBandwidth());
00629 left->addChild(pinversion = new ScanInversion());
00630 left->addChild(pconstellation = new ScanConstellation());
00631 right->addChild(pcoderate_lp = new ScanCodeRateLP());
00632 right->addChild(pcoderate_hp = new ScanCodeRateHP());
00633 right->addChild(ptrans_mode = new ScanTransmissionMode());
00634 right->addChild(pguard_interval = new ScanGuardInterval());
00635 right->addChild(phierarchy = new ScanHierarchy());
00636 addChild(left);
00637 addChild(right);
00638 }
00639
00640 QString frequency(void) const { return pfrequency->getValue(); }
00641 QString bandwidth(void) const { return pbandwidth->getValue(); }
00642 QString inversion(void) const { return pinversion->getValue(); }
00643 QString constellation(void) const { return pconstellation->getValue(); }
00644 QString coderate_lp(void) const { return pcoderate_lp->getValue(); }
00645 QString coderate_hp(void) const { return pcoderate_hp->getValue(); }
00646 QString trans_mode(void) const { return ptrans_mode->getValue(); }
00647 QString guard_interval(void) const { return pguard_interval->getValue(); }
00648 QString hierarchy(void) const { return phierarchy->getValue(); }
00649
00650 protected:
00651 ScanFrequency *pfrequency;
00652 ScanInversion *pinversion;
00653 ScanBandwidth *pbandwidth;
00654 ScanConstellation *pconstellation;
00655 ScanCodeRateLP *pcoderate_lp;
00656 ScanCodeRateHP *pcoderate_hp;
00657 ScanTransmissionMode *ptrans_mode;
00658 ScanGuardInterval *pguard_interval;
00659 ScanHierarchy *phierarchy;
00660 };
00661
00662 class DVBS2Pane : public HorizontalConfigurationGroup
00663 {
00664 public:
00665 DVBS2Pane() : HorizontalConfigurationGroup(false,false,true,false)
00666 {
00667 setUseFrame(false);
00668 VerticalConfigurationGroup *left =
00669 new VerticalConfigurationGroup(false,true);
00670 VerticalConfigurationGroup *right =
00671 new VerticalConfigurationGroup(false,true);
00672 left->addChild( pfrequency = new ScanFrequency());
00673 left->addChild( ppolarity = new ScanPolarity());
00674 left->addChild( psymbolrate = new ScanSymbolRate());
00675 right->addChild(pfec = new ScanFec());
00676 right->addChild(pmodulation = new ScanModulation());
00677 right->addChild(pinversion = new ScanInversion());
00678 addChild(left);
00679 addChild(right);
00680 }
00681
00682 QString frequency(void) const { return pfrequency->getValue(); }
00683 QString symbolrate(void) const { return psymbolrate->getValue(); }
00684 QString inversion(void) const { return pinversion->getValue(); }
00685 QString fec(void) const { return pfec->getValue(); }
00686 QString polarity(void) const { return ppolarity->getValue(); }
00687 QString modulation(void) const { return pmodulation->getValue(); }
00688
00689 protected:
00690 ScanFrequency *pfrequency;
00691 ScanSymbolRate *psymbolrate;
00692 ScanInversion *pinversion;
00693 ScanFec *pfec;
00694 ScanPolarity *ppolarity;
00695 ScanModulation *pmodulation;
00696 };
00697
00698 class QPSKPane : public HorizontalConfigurationGroup
00699 {
00700 public:
00701 QPSKPane() : HorizontalConfigurationGroup(false, false, true, false)
00702 {
00703 setUseFrame(false);
00704 VerticalConfigurationGroup *left =
00705 new VerticalConfigurationGroup(false,true);
00706 VerticalConfigurationGroup *right =
00707 new VerticalConfigurationGroup(false,true);
00708 left->addChild(pfrequency = new ScanFrequency(true));
00709 left->addChild(ppolarity = new ScanPolarity());
00710 left->addChild(psymbolrate = new ScanSymbolRate());
00711 right->addChild(pfec = new ScanFec());
00712 right->addChild(pinversion = new ScanInversion());
00713 addChild(left);
00714 addChild(right);
00715 }
00716
00717 QString frequency(void) const { return pfrequency->getValue(); }
00718 QString symbolrate(void) const { return psymbolrate->getValue(); }
00719 QString inversion(void) const { return pinversion->getValue(); }
00720 QString fec(void) const { return pfec->getValue(); }
00721 QString polarity(void) const { return ppolarity->getValue(); }
00722
00723 protected:
00724 ScanFrequency *pfrequency;
00725 ScanSymbolRate *psymbolrate;
00726 ScanInversion *pinversion;
00727 ScanFec *pfec;
00728 ScanPolarity *ppolarity;
00729 };
00730
00731 class QAMPane : public HorizontalConfigurationGroup
00732 {
00733 public:
00734 QAMPane() : HorizontalConfigurationGroup(false, false, true, false)
00735 {
00736 setUseFrame(false);
00737 VerticalConfigurationGroup *left =
00738 new VerticalConfigurationGroup(false,true);
00739 VerticalConfigurationGroup *right =
00740 new VerticalConfigurationGroup(false,true);
00741 left->addChild(pfrequency = new ScanFrequency());
00742 left->addChild(psymbolrate = new ScanSymbolRate());
00743 left->addChild(pinversion = new ScanInversion());
00744 right->addChild(pmodulation = new ScanModulation());
00745 right->addChild(pfec = new ScanFec());
00746 addChild(left);
00747 addChild(right);
00748 }
00749
00750 QString frequency(void) const { return pfrequency->getValue(); }
00751 QString symbolrate(void) const { return psymbolrate->getValue(); }
00752 QString inversion(void) const { return pinversion->getValue(); }
00753 QString fec(void) const { return pfec->getValue(); }
00754 QString modulation(void) const { return pmodulation->getValue(); }
00755
00756 protected:
00757 ScanFrequency *pfrequency;
00758 ScanSymbolRate *psymbolrate;
00759 ScanInversion *pinversion;
00760 ScanModulation *pmodulation;
00761 ScanFec *pfec;
00762 };
00763
00764 class ATSCPane : public VerticalConfigurationGroup
00765 {
00766 public:
00767 ATSCPane() : VerticalConfigurationGroup(false, false, true, false)
00768 {
00769 addChild(atsc_table = new ScanFrequencyTable());
00770 addChild(atsc_modulation = new ScanATSCModulation());
00771 addChild(atsc_format = new ScanATSCChannelFormat());
00772 addChild(old_channel_treatment = new ScanOldChannelTreatment());
00773 }
00774
00775 QString atscFreqTable(void) const { return atsc_table->getValue(); }
00776 QString atscModulation(void) const { return atsc_modulation->getValue(); }
00777 QString GetATSCFormat(void) const { return atsc_format->getValue(); }
00778 bool DoDeleteChannels(void) const
00779 { return old_channel_treatment->getValue() == "delete"; }
00780 bool DoRenameChannels(void) const
00781 { return old_channel_treatment->getValue() == "rename"; }
00782
00783 void SetDefaultATSCFormat(const QString &d)
00784 {
00785 int val = atsc_format->getValueIndex(d);
00786 atsc_format->setValue(val);
00787 }
00788
00789 protected:
00790 ScanFrequencyTable *atsc_table;
00791 ScanATSCModulation *atsc_modulation;
00792 ScanATSCChannelFormat *atsc_format;
00793 ScanOldChannelTreatment *old_channel_treatment;
00794 };
00795
00796 class AnalogPane : public VerticalConfigurationGroup
00797 {
00798 public:
00799 AnalogPane();
00800
00801 void SetSourceID(uint sourceid);
00802
00803 QString GetFrequencyTable(void) const;
00804
00805 bool DoDeleteChannels(void) const
00806 { return old_channel_treatment->getValue() == "delete"; }
00807 bool DoRenameChannels(void) const
00808 { return old_channel_treatment->getValue() == "rename"; }
00809
00810 protected:
00811 TransFreqTableSelector *freq_table;
00812 ScanOldChannelTreatment *old_channel_treatment;
00813 };
00814
00815 class STPane : public VerticalConfigurationGroup
00816 {
00817 public:
00818 STPane() :
00819 VerticalConfigurationGroup(false, false, true, false),
00820 transport_setting(new MultiplexSetting()),
00821 atsc_format(new ScanATSCChannelFormat()),
00822 old_channel_treatment(new ScanOldChannelTreatment()),
00823 ignore_signal_timeout(new IgnoreSignalTimeout())
00824 {
00825 addChild(transport_setting);
00826 addChild(atsc_format);
00827 addChild(old_channel_treatment);
00828 addChild(ignore_signal_timeout);
00829 }
00830
00831 QString GetATSCFormat(void) const { return atsc_format->getValue(); }
00832 bool DoDeleteChannels(void) const
00833 { return old_channel_treatment->getValue() == "delete"; }
00834 bool DoRenameChannels(void) const
00835 { return old_channel_treatment->getValue() == "rename"; }
00836 int GetMultiplex(void) const
00837 { return transport_setting->getValue().toInt(); }
00838 bool ignoreSignalTimeout(void) const
00839 { return ignore_signal_timeout->getValue().toInt(); }
00840
00841 void SetDefaultATSCFormat(const QString &d)
00842 {
00843 int val = atsc_format->getValueIndex(d);
00844 atsc_format->setValue(val);
00845 }
00846
00847 void SetSourceID(uint sourceid)
00848 { transport_setting->SetSourceID(sourceid); }
00849
00850 protected:
00851 MultiplexSetting *transport_setting;
00852 ScanATSCChannelFormat *atsc_format;
00853 ScanOldChannelTreatment *old_channel_treatment;
00854 IgnoreSignalTimeout *ignore_signal_timeout;
00855 };
00856
00857 class DVBUtilsImportPane : public VerticalConfigurationGroup
00858 {
00859 Q_OBJECT
00860
00861 public:
00862 DVBUtilsImportPane() :
00863 VerticalConfigurationGroup(false,false,true,false),
00864 filename(new TransLineEditSetting()),
00865 atsc_format(new ScanATSCChannelFormat()),
00866 old_channel_treatment(new ScanOldChannelTreatment()),
00867 ignore_signal_timeout(new IgnoreSignalTimeout())
00868 {
00869 filename->setLabel(tr("File location"));
00870 filename->setHelpText(tr("Location of the channels.conf file."));
00871 addChild(filename);
00872
00873 addChild(atsc_format);
00874 addChild(old_channel_treatment);
00875 addChild(ignore_signal_timeout);
00876 }
00877
00878 QString GetFilename(void) const { return filename->getValue(); }
00879 QString GetATSCFormat(void) const { return atsc_format->getValue(); }
00880
00881 bool DoDeleteChannels(void) const
00882 { return old_channel_treatment->getValue() == "delete"; }
00883 bool DoRenameChannels(void) const
00884 { return old_channel_treatment->getValue() == "rename"; }
00885 bool DoIgnoreSignalTimeout(void) const
00886 { return ignore_signal_timeout->getValue().toInt(); }
00887
00888 void SetDefaultATSCFormat(const QString &d)
00889 {
00890 int val = atsc_format->getValueIndex(d);
00891 atsc_format->setValue(val);
00892 }
00893
00894 private:
00895 TransLineEditSetting *filename;
00896 ScanATSCChannelFormat *atsc_format;
00897 ScanOldChannelTreatment *old_channel_treatment;
00898 IgnoreSignalTimeout *ignore_signal_timeout;
00899 };
00900
00901 class ErrorPane : public HorizontalConfigurationGroup
00902 {
00903 public:
00904 ErrorPane(const QString &error) :
00905 HorizontalConfigurationGroup(false, false, true, false)
00906 {
00907 TransLabelSetting* label = new TransLabelSetting();
00908 label->setValue(error);
00909 addChild(label);
00910 }
00911 };
00912
00913 class BlankSetting: public TransLabelSetting
00914 {
00915 public:
00916 BlankSetting() : TransLabelSetting()
00917 {
00918 setLabel("");
00919 }
00920 };
00921
00922 #endif // SCANWIZARDHELPERS_H