MythTV master
channelscanmiscsettings.h
Go to the documentation of this file.
1/* -*- Mode: c++ -*-
2 * vim: set expandtab tabstop=4 shiftwidth=4:
3 *
4 * Original Project
5 * MythTV http://www.mythtv.org
6 *
7 * Copyright (c) 2004, 2005 John Pullan <john@pullan.org>
8 * Copyright (c) 2005 - 2007 Daniel Kristjansson
9 *
10 * Description:
11 * Collection of classes to provide channel scanning functionallity
12 *
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version 2
16 * of the License, or (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
26 * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
27 *
28 */
29
30#ifndef CHANNEL_SCAN_MISC_SETTINGS_H
31#define CHANNEL_SCAN_MISC_SETTINGS_H
32
34#include "channelscantypes.h"
35
36class TransLabelSetting;
37class ScanWizard;
38class OptionalTypeSetting;
39class PaneDVBT;
40class PaneDVBS;
41class PaneDVBS2;
42class PaneATSC;
43class PaneDVBC;
44class PaneAnalog;
45class STPane;
46class DVBUtilsImportPane;
47
48// ///////////////////////////////
49// Settings Below Here
50// ///////////////////////////////
51
53{
54 public:
56 {
57 setLabel(QObject::tr("Ignore Signal Timeout"));
59 QObject::tr("This option allows you to slow down the scan for "
60 "broken drivers, such as the DVB drivers for the "
61 "Leadtek LR6650 DVB card."));
62 }
63};
64
66{
67 public:
69 {
70 setLabel(QObject::tr("Search new Transports"));
72 QObject::tr("Digital transmissions may signal other available "
73 "Transports. If this option is enabled the scanner "
74 "scans all signaled transports for new/updated "
75 "channels."));
76 }
77};
78
80{
81 public:
83 {
84 setLabel(QObject::tr("Desired Services"));
85 setHelpText(QObject::tr(
86 "TV - Adds A/V services only, "
87 "TV+Radio - Adds all services with audio, "
88 "All - Adds all services "
89 "(including data only services)."));
90 addSelection(QObject::tr("TV"), "tv", true);
91 addSelection(QObject::tr("TV+Radio"), "audio");
92 addSelection(QObject::tr("All"), "all");
93 };
94
96 {
97 QString val = getValue();
98 int ret = kRequireVideo | kRequireAudio;
99 if (val == "tv")
101 else if (val == "audio")
102 ret = kRequireAudio;
103 else if (val == "all")
104 ret = 0;
105 return (ServiceRequirements) ret;
106 }
107};
108
110{
111 public:
113 {
114 setLabel(QObject::tr("Unencrypted Only"));
116 QObject::tr(
117 "If set, only non-encrypted channels will be "
118 "added during the scan."));
119 setValue(true);
120 };
121};
122
124{
125 public:
127 {
128 setLabel(QObject::tr("Logical Channel Numbers required"));
130 QObject::tr(
131 "If set, only services with a Logical Channel Number will "
132 "be added during the scan. This will filter out services "
133 "for set-top-box firmware download and video-on-demand "
134 "that can be present on DVB-C networks."));
135 setValue(false);
136 };
137};
138
140{
141 public:
143 {
144 setLabel(QObject::tr("Complete scan data required"));
146 QObject::tr(
147 "If set, only services that are present in the PAT, the PMT "
148 "and the SDT and that have a name will be added during the scan. "
149 "On satellites there are many incomplete channels, "
150 "such as feeds and offline channels, "
151 "that are not useful in a MythTV system. "
152 "These are filtered out by this option."));
153 setValue(true);
154 };
155};
156
158{
159 public:
161 {
162 setLabel(QObject::tr("Full search for old channels"));
164 QObject::tr(
165 "If set, compare all channels in the database with the channels found in "
166 "the scan; otherwise only the channels in the same transport are compared. "
167 "This option is useful when you want to keep channel data such as "
168 "the xmltvid and the icon path when doing a rescan "
169 "after channels have been rearranged across transports."));
170 setValue(true);
171 };
172};
173
175{
176 public:
178 {
179 setLabel(QObject::tr("Remove duplicates"));
181 QObject::tr(
182 "If set, select the transport stream multiplex with the best signal "
183 "when identical transports are received on different frequencies. "
184 "This option is useful for DVB-T2 and ATSC/OTA when a transport "
185 "can sometimes be received from different transmitters."));
186 setValue(true);
187 };
188};
189
191{
192 public:
194 {
195 setLabel(QObject::tr("Add full Transport Stream channels"));
197 QObject::tr(
198 "If set, create MPTS channels, which allow "
199 "recording of the full, unaltered, transport stream."));
200 setValue(false);
201 };
202};
203
205{
206 public:
208 {
209 setLabel(QObject::tr("Test Decryptability"));
211 QObject::tr("Test all channels to see if they can be decrypted "
212 "with installed CAM/smartcard. Sometimes the encrypted "
213 "flag is set spuriously. Attention: Enabling this "
214 "option increases the scan time for each encrypted "
215 "channel by a couple of seconds."));
216 setValue(false);
217 }
218};
219
220// Scan data reference transponder
222{
223 public:
225 {
226 setLabel(QObject::tr("Satellite tuning data"));
228 QObject::tr(
229 "Select a satellite from this list for the "
230 "tuning data of the reference transponder."));
231 addSelection("(Select Satellite)", "Select", true);
232
233 // Satellite tuning data
234 m_tdm["1 TH"] = { .name="1 TH", .fullname="Thor 5/6/7 0.8W",
235 .frequency="10872000", .polarity="h",
236 .symbolrate="25000000", .modulation="8PSK",
237 .modSys="DVB-S2", .fec="3/4" };
238 m_tdm["2 E7"] = { .name="2 E7", .fullname="Eutelsat 7.0E",
239 .frequency="10721000", .polarity="h",
240 .symbolrate="22000000", .modulation="QPSK",
241 .modSys="DVB-S", .fec="3/4" };
242 m_tdm["3 HB"] = { .name="3 HB", .fullname="Hotbird 13.0E",
243 .frequency="12015000", .polarity="h",
244 .symbolrate="27500000", .modulation="8PSK",
245 .modSys="DVB-S2", .fec="3/4" };
246 m_tdm["4 A1"] = { .name="4 A1", .fullname="Astra-1 19.2E",
247 .frequency="11229000", .polarity="v",
248 .symbolrate="22000000", .modulation="8PSK",
249 .modSys="DVB-S2", .fec="2/3" };
250 m_tdm["5 A3"] = { .name="5 A3", .fullname="Astra-3 23.5E",
251 .frequency="12031500", .polarity="h",
252 .symbolrate="27500000", .modulation="QPSK",
253 .modSys="DVB-S2", .fec="auto"};
254 m_tdm["6 A2"] = { .name="6 A2", .fullname="Astra-2 28.2E",
255 .frequency="10773000", .polarity="h",
256 .symbolrate="23000000", .modulation="8PSK",
257 .modSys="DVB-S2", .fec="3/4" };
258 m_tdm["7 T3"] = { .name="7 T3", .fullname="Turksat-3A 42.0E",
259 .frequency="12610000", .polarity="h",
260 .symbolrate="20830000", .modulation="QPSK",
261 .modSys="DVB-S", .fec="3/4" };
262 m_tdm["8 T4"] = { .name="8 T4", .fullname="Turksat-4A 42.0E",
263 .frequency="11916000", .polarity="v",
264 .symbolrate="30000000", .modulation="QPSK",
265 .modSys="DVB-S", .fec="3/4" };
266 m_tdm["9 T8"] = { .name="9 T8", .fullname="Turksat-8K 42.0E",
267 .frequency="12605000", .polarity="v",
268 .symbolrate="34285000", .modulation="16APSK",
269 .modSys="DVB-S2", .fec="2/3" };
270
271 for (auto &td: m_tdm)
272 {
273 addSelection(td.fullname, td.name);
274 }
275 }
276
277 private:
278 struct tuningdata {
279 QString name;
280 QString fullname;
281 QString frequency;
282 QString polarity;
283 QString symbolrate;
284 QString modulation;
285 QString modSys;
286 QString fec;
287 };
288 QMap<QString, struct tuningdata> m_tdm;
289
290 public:
291 QString getFrequency (const QString &satname) {return m_tdm[satname].frequency; }
292 QString getPolarity (const QString &satname) {return m_tdm[satname].polarity; }
293 QString getSymbolrate(const QString &satname) {return m_tdm[satname].symbolrate;}
294 QString getModulation(const QString &satname) {return m_tdm[satname].modulation;}
295 QString getModSys (const QString &satname) {return m_tdm[satname].modSys; }
296 QString getFec (const QString &satname) {return m_tdm[satname].fec; }
297};
298
300{
301 public:
303 {
304 setLabel(QObject::tr("Frequency"));
305 setHelpText(QObject::tr("Frequency (Option has no default)\n"
306 "The frequency for this transport (multiplex) in kHz."));
307 };
308};
309
311{
312 public:
314 {
315 setLabel(QObject::tr("Frequency"));
316 setHelpText(QObject::tr("Frequency (Option has no default)\n"
317 "The frequency for this transport (multiplex) in Hz."));
318 };
319};
320
322{
323 public:
325 {
326 setLabel(QObject::tr("Symbol Rate"));
328 QObject::tr(
329 "Symbol Rate (symbols/second).\n"
330 "Most DVB-S transponders transmit at 27500000 "
331 "symbols per second."));
332 addSelection("3333000");
333 addSelection("22000000");
334 addSelection("22500000");
335 addSelection("23000000");
336 addSelection("27500000", "27500000", true);
337 addSelection("28000000");
338 addSelection("28500000");
339 addSelection("29500000");
340 addSelection("29700000");
341 addSelection("29900000");
342 }
343};
344
346{
347 public:
349 {
350 setLabel(QObject::tr("Symbol Rate"));
352 QObject::tr(
353 "Symbol Rate (symbols/second).\n"
354 "Most DVB-C transports transmit at 6900000 or 6875000 "
355 "symbols per second."));
356 addSelection("3450000");
357 addSelection("5000000");
358 addSelection("5900000");
359 addSelection("6875000");
360 addSelection("6900000", "6900000", true);
361 addSelection("6950000");
362 }
363};
364
366{
367 public:
369 {
370 setLabel(QObject::tr("Polarity"));
371 setHelpText(QObject::tr("Polarity (Option has no default)"));
372 addSelection(QObject::tr("Horizontal"), "h",true);
373 addSelection(QObject::tr("Vertical"), "v");
374 addSelection(QObject::tr("Right Circular"), "r");
375 addSelection(QObject::tr("Left Circular"), "l");
376 };
377};
378
380{
381 public:
383 {
384 setLabel(QObject::tr("Inversion"));
385 setHelpText(QObject::tr(
386 "Inversion (Default: Auto):\n"
387 "Most cards can autodetect this now, so "
388 "leave it at Auto unless it won't work."));
389 addSelection(QObject::tr("Auto"), "a",true);
390 addSelection(QObject::tr("On"), "1");
391 addSelection(QObject::tr("Off"), "0");
392 };
393};
394
396{
397 public:
399 {
400 setLabel(QObject::tr("Bandwidth"));
401 setHelpText(QObject::tr("Bandwidth (Default: Auto)\n"));
402 addSelection(QObject::tr("Auto"),"a",true);
403 addSelection(QObject::tr("6 MHz"),"6");
404 addSelection(QObject::tr("7 MHz"),"7");
405 addSelection(QObject::tr("8 MHz"),"8");
406 };
407};
408
410{
411 public:
413 {
414 addSelection(QObject::tr("Auto"),"auto",true);
415 addSelection(QObject::tr("None"),"none");
416 addSelection("1/2");
417 addSelection("2/3");
418 addSelection("3/4");
419 addSelection("4/5");
420 addSelection("5/6");
421 addSelection("6/7");
422 addSelection("7/8");
423 addSelection("8/9");
424 addSelection("3/5");
425 addSelection("9/10");
426 }
427};
428
430{
431 public:
433 {
434 setLabel(QObject::tr("FEC"));
435 setHelpText(QObject::tr(
436 "Forward Error Correction (Default: Auto)"));
437 }
438};
439
441{
442 public:
444 {
445 setLabel(QObject::tr("LP Coderate"));
446 setHelpText(QObject::tr("Low Priority Code Rate (Default: Auto)"));
447 }
448};
449
451{
452 public:
454 {
455 setLabel(QObject::tr("HP Coderate"));
456 setHelpText(QObject::tr("High Priority Code Rate (Default: Auto)"));
457 };
458};
459
461{
462 public:
464 {
465 setLabel(QObject::tr("Guard Interval"));
466 setHelpText(QObject::tr("Guard Interval (Default: Auto)"));
467 addSelection(QObject::tr("Auto"),"auto");
468 addSelection("1/4");
469 addSelection("1/8");
470 addSelection("1/16");
471 addSelection("1/32");
472 };
473};
474
476{
477 public:
479 {
480 setLabel(QObject::tr("Trans. Mode"));
481 setHelpText(QObject::tr("Transmission Mode (Default: Auto)"));
482 addSelection(QObject::tr("Auto"),"a");
483 addSelection("2K","2");
484 addSelection("8K","8");
485 };
486};
487
489{
490 public:
492 {
493 setLabel(QObject::tr("Hierarchy"));
494 setHelpText(QObject::tr("Hierarchy (Default: Auto)"));
495 addSelection(QObject::tr("Auto"),"a");
496 addSelection(QObject::tr("None"), "n");
497 addSelection("1");
498 addSelection("2");
499 addSelection("4");
500 };
501};
502
504{
505 public:
507 {
508 setLabel(QObject::tr("Modulation System"));
509 setHelpText(QObject::tr("Modulation system (Default: DVB-S2)"));
510 addSelection("DVB-S", "DVB-S");
511 addSelection("DVB-S2", "DVB-S2", true);
512 };
513};
514
516{
517 public:
519 {
520 setLabel(QObject::tr("Modulation System"));
521 setHelpText(QObject::tr("Modulation system (Default: DVB-T2)"));
522 addSelection("DVB-T", "DVB-T");
523 addSelection("DVB-T2", "DVB-T2", true);
524 };
525};
526
528{
529 public:
531 {
532 setLabel(QObject::tr("Modulation System"));
533 setHelpText(QObject::tr("Modulation System (Default: DVB-C/A)"));
534 addSelection("DVB-C/A", "DVB-C/A", true);
535 addSelection("DVB-C/B", "DVB-C/B");
536 addSelection("DVB-C/C", "DVB-C/C");
537 }
538};
539
541{
542 public:
544 {
545 setLabel(QObject::tr("Roll-off"));
546 setHelpText(QObject::tr("Roll-off factor (Default: 0.35)"));
547 addSelection("0.35");
548 addSelection("0.20");
549 addSelection("0.25");
550 addSelection(QObject::tr("Auto"),"auto");
551 };
552};
553
555{
556 public:
557 explicit PaneError(const QString &error)
558 {
559 auto* label = new TransTextEditSetting();
560 label->setValue(error);
561 addChild(label);
562 }
563};
564
565#endif // CHANNEL_SCAN_MISC_SETTINGS_H
ServiceRequirements
@ kRequireAudio
@ kRequireVideo
ServiceRequirements GetServiceRequirements(void) const
void setValue(const QString &newValue) override
virtual void addSelection(const QString &label, QString value=QString(), bool select=false)
PaneError(const QString &error)
QString getFec(const QString &satname)
QMap< QString, struct tuningdata > m_tdm
QString getPolarity(const QString &satname)
QString getModSys(const QString &satname)
QString getFrequency(const QString &satname)
QString getSymbolrate(const QString &satname)
QString getModulation(const QString &satname)
virtual void addChild(StandardSetting *child)
virtual void setHelpText(const QString &str)
virtual QString getValue(void) const
virtual void setLabel(QString str)
def error(message)
Definition: smolt.py:409
VERBOSE_PREAMBLE Most true
Definition: verbosedefs.h:86
VERBOSE_PREAMBLE false
Definition: verbosedefs.h:80