11#include <QApplication>
18#include <QFontDatabase>
26#include "libmythbase/mythconfig.h"
64 gc->setLabel(PlaybackSettings::tr(
"Audio read ahead (ms)"));
68 gc->setHelpText(PlaybackSettings::tr(
69 "Increase this value if audio cuts out frequently. This is more "
70 "likely to occur when adjusting audio sync to a negative value. "
71 "If using high negative audio sync values you may need to set a large "
72 "value here. Default is 100."));
79 gc->setLabel(PlaybackSettings::tr(
"Primary colourspace conversion"));
83 gc->setHelpText(PlaybackSettings::tr(
84 "Converting between different primary colourspaces incurs a small "
85 "performance penalty but in some situations the difference in output is "
86 "negligible. The default ('Auto') behaviour is to only enforce "
87 "this conversion when there is a significant difference between source "
88 "colourspace primaries and the display."));
95 gc->setLabel(PlaybackSettings::tr(
"Enable Chroma Upsampling Filter when deinterlacing"));
96 gc->setHelpText(PlaybackSettings::tr(
97 "The 'Chroma upsampling error' affects the quality of interlaced material "
98 "for the most common, standard video formats and results in jagged/indistinct "
99 "edges to brightly coloured areas of video. This filter attempts to fix "
100 "the problem in the OpenGL shaders. It adds a small amount of overhead to "
101 "video rendering but may not be suitable in all cases. Enabled by default."));
111 ge->setLabel(MainGeneralSettings::tr(
"Decoder Device for VAAPI hardware decoding"));
115 QString
help = MainGeneralSettings::tr(
116 "Use this if your system does not detect the VAAPI device. "
117 "Example: '/dev/dri/renderD128'.");
119 ge->setHelpText(
help);
126 LOG(VB_GENERAL, LOG_INFO, QString(
"New VAAPI device (%1) - resetting profiles").arg(device));
138 gc->setLabel(PlaybackSettings::tr(
"Default group filter to apply"));
141 gc->addSelection(PlaybackSettings::tr(
"All Programs"), QString(
"All Programs"));
142 gc->addSelection(QCoreApplication::translate(
"(Common)",
"Default"),
146 query.
prepare(
"SELECT DISTINCT recgroup from recorded;");
152 if (query.
value(0).toString() !=
"Default")
154 QString recgroup = query.
value(0).toString();
155 gc->addSelection(recgroup, recgroup);
160 query.
prepare(
"SELECT DISTINCT category from recorded;");
166 QString key = query.
value(0).toString();
167 gc->addSelection(key, key);
171 gc->setHelpText(PlaybackSettings::tr(
"Default group filter to apply on the "
172 "View Recordings screen."));
180 gc->setLabel(PlaybackSettings::tr(
"Always prompt for initial group "
185 gc->setHelpText(PlaybackSettings::tr(
"If enabled, always prompt the user "
186 "for the initial filter to apply "
187 "when entering the Watch Recordings "
196 gc->setLabel(PlaybackSettings::tr(
"Save current group filter when "
201 gc->setHelpText(PlaybackSettings::tr(
"If enabled, remember the last "
202 "selected filter instead of "
203 "displaying the default filter "
204 "whenever you enter the playback "
213 gc->setLabel(PlaybackSettings::tr(
"Change Recording Group using the arrow "
218 gc->setHelpText(PlaybackSettings::tr(
"If enabled, change recording group "
219 "directly using the arrow keys "
220 "instead of having to use < and >. "
221 "Requires theme support for this "
231 gc->setLabel(PlaybackSettings::tr(
"Start in group list"));
235 gc->setHelpText(PlaybackSettings::tr(
"If enabled, the focus will start on "
236 "the group list, otherwise the focus "
237 "will default to the recordings."));
245 gc->setLabel(PlaybackSettings::tr(
"Smart fast forwarding"));
249 gc->setHelpText(PlaybackSettings::tr(
"If enabled, then immediately after "
250 "rewinding, only skip forward the "
251 "same amount as skipping backwards."));
259 bc->setLabel(GeneralSettings::tr(
"Commercial detection method"));
261 bc->setHelpText(GeneralSettings::tr(
"This determines the method used by "
262 "MythTV to detect when commercials "
277 gc->setLabel(GeneralSettings::tr(
"Enable experimental speedup of "
278 "commercial detection"));
282 gc->setHelpText(GeneralSettings::tr(
"If enabled, experimental commercial "
283 "detection speedups will be enabled."));
291 gc->setLabel(PlaybackSettings::tr(
"Automatically skip commercials"));
293 gc->addSelection(QCoreApplication::translate(
"(Common)",
"Off"),
"0");
294 gc->addSelection(PlaybackSettings::tr(
"Notify, but do not skip",
295 "Skip commercials"),
"2");
296 gc->addSelection(PlaybackSettings::tr(
"Automatically Skip",
297 "Skip commercials"),
"1");
299 gc->setHelpText(PlaybackSettings::tr(
"Automatically skip commercial breaks "
300 "that have been flagged during "
301 "automatic commercial detection "
302 "or by the mythcommflag program, or "
303 "just notify that a commercial has "
312 gs->setLabel(GeneralSettings::tr(
"Deferral days for auto transcode jobs"));
314 gs->setHelpText(GeneralSettings::tr(
"If non-zero, automatic transcode jobs "
315 "will be scheduled to run this many "
316 "days after a recording completes "
317 "instead of immediately afterwards."));
328 bc->setLabel(GeneralSettings::tr(
"Strict commercial detection"));
332 bc->setHelpText(GeneralSettings::tr(
"Enable stricter commercial detection "
333 "code. Disable if some commercials are "
334 "not being detected."));
342 gs->setLabel(PlaybackSettings::tr(
"Commercial skip automatic rewind amount "
345 gs->setHelpText(PlaybackSettings::tr(
"MythTV will automatically rewind "
346 "this many seconds after performing a "
347 "commercial skip."));
358 gs->setLabel(PlaybackSettings::tr(
"Commercial skip notify amount (secs)"));
360 gs->setHelpText(PlaybackSettings::tr(
"MythTV will act like a commercial "
361 "begins this many seconds early. This "
362 "can be useful when commercial "
363 "notification is used in place of "
364 "automatic skipping."));
375 bs->setLabel(PlaybackSettings::tr(
"Maximum commercial skip (secs)"));
377 bs->setHelpText(PlaybackSettings::tr(
"MythTV will discourage long manual "
378 "commercial skips. Skips which are "
379 "longer than this will require the "
380 "user to hit the SKIP key twice. "
381 "Automatic commercial skipping is "
382 "not affected by this limit."));
393 bs->setLabel(PlaybackSettings::tr(
"Merge short commercial breaks (secs)"));
395 bs->setHelpText(PlaybackSettings::tr(
"Treat consecutive commercial breaks "
396 "shorter than this as one break when "
397 "skipping forward. Useful if you have "
398 "to skip a few times during breaks. "
399 "Applies to automatic skipping as "
400 "well. Set to 0 to disable."));
411 bs->setLabel(GeneralSettings::tr(
"Extra disk space (GB)"));
413 bs->setHelpText(GeneralSettings::tr(
"Extra disk space (in gigabytes) "
414 "beyond what MythTV requires that "
415 "you want to keep free on the "
416 "recording file systems."));
428 cb->
setLabel(DeletedExpireOptions::tr(
"Auto-Expire instead of delete recording"));
432 cb->
setHelpText(DeletedExpireOptions::tr(
"If enabled, move deleted recordings to the "
433 "'Deleted' recgroup and turn on autoexpire "
434 "instead of deleting immediately."));
443 bs->setLabel(GeneralSettings::tr(
"Time to retain deleted recordings "
446 bs->setHelpText(GeneralSettings::tr(
"Determines the maximum number of days "
447 "before undeleting a recording will "
448 "become impossible. A value of zero "
449 "means the recording will be "
450 "permanently deleted between 5 and 20 "
451 "minutes later. A value of minus one "
452 "means recordings will be retained "
453 "until space is required. A recording "
454 "will always be removed before this "
455 "time if the space is needed for a new "
463class DeletedExpireOptions :
public TriggeredConfigurationGroup
466 DeletedExpireOptions() :
469 setLabel(
"DeletedExpireOptions");
470 Setting* enabled = AutoExpireInsteadOfDelete();
474 HorizontalConfigurationGroup* settings =
475 new HorizontalConfigurationGroup(
false);
477 addTarget(
"1", settings);
480 addTarget(
"0",
new HorizontalConfigurationGroup(
true));
489 bc->setLabel(GeneralSettings::tr(
"Auto-Expire method"));
491 bc->addSelection(GeneralSettings::tr(
"Oldest show first"),
"1");
492 bc->addSelection(GeneralSettings::tr(
"Lowest priority first"),
"2");
493 bc->addSelection(GeneralSettings::tr(
"Weighted time/priority combination"),
496 bc->setHelpText(GeneralSettings::tr(
"Method used to determine which "
497 "recorded shows to delete first. "
498 "Live TV recordings will always "
499 "expire before normal recordings."));
509 bc->setLabel(GeneralSettings::tr(
"Watched before unwatched"));
513 bc->setHelpText(GeneralSettings::tr(
"If enabled, programs that have been "
514 "marked as watched will be expired "
515 "before programs that have not "
524 bs->setLabel(GeneralSettings::tr(
"Priority weight"));
526 bs->setHelpText(GeneralSettings::tr(
"The number of days bonus a program "
527 "gets for each priority point. This "
528 "is only used when the Weighted "
529 "time/priority Auto-Expire method "
540 bs->setLabel(GeneralSettings::tr(
"Live TV max age (days)"));
542 bs->setHelpText(GeneralSettings::tr(
"Auto-Expire will force expiration of "
543 "Live TV recordings when they are this "
544 "many days old. Live TV recordings may "
545 "also be expired early if necessary to "
546 "free up disk space."));
558 bs->
setLabel(
"New recording free disk space threshold "
560 bs->
setHelpText(
"MythTV will stop scheduling new recordings on "
561 "a backend when its free disk space (in megabytes) falls "
562 "below this value.");
572 bc->setLabel(GeneralSettings::tr(
"Re-record watched"));
576 bc->setHelpText(GeneralSettings::tr(
"If enabled, programs that have been "
577 "marked as watched and are "
578 "Auto-Expired will be re-recorded if "
579 "they are shown again."));
587 bs->
setLabel(GeneralSettings::tr(
"Time to record before start of show "
590 bs->
setHelpText(GeneralSettings::tr(
"This global setting allows the "
591 "recorder to start before the "
592 "scheduled start time. It does not "
593 "affect the scheduler. It is ignored "
594 "when two shows have been scheduled "
595 "without enough time in between."));
605 bs->
setLabel(GeneralSettings::tr(
"Time to record past end of show (secs)"));
609 bs->
setHelpText(GeneralSettings::tr(
"This global setting allows the "
610 "recorder to record beyond the "
611 "scheduled end time. It does not "
612 "affect the scheduler. It is ignored "
613 "when two shows have been scheduled "
614 "without enough time in between."));
622 bs->
setLabel(GeneralSettings::tr(
"Maximum Start Gap (secs)"));
626 bs->
setHelpText(GeneralSettings::tr(
"If more than this number of seconds "
627 "is missing at the start of a recording "
628 "that will be regarded as a gap for "
629 "assessing recording quality. The recording "
630 "may be marked as damaged."));
638 bs->
setLabel(GeneralSettings::tr(
"Maximum End Gap (secs)"));
642 bs->
setHelpText(GeneralSettings::tr(
"If more than this number of seconds "
643 "is missing at the end of a recording "
644 "that will be regarded as a gap for "
645 "assessing recording quality. The recording "
646 "may be marked as damaged."));
654 bs->
setLabel(GeneralSettings::tr(
"Minimum Recording Quality (percent)"));
658 bs->
setHelpText(GeneralSettings::tr(
"If recording quality is below this value the "
659 "recording is marked as damaged."));
667 gc->setLabel(GeneralSettings::tr(
"Category of shows to be extended"));
669 gc->setHelpText(GeneralSettings::tr(
"For a special category (e.g. "
670 "\"Sports event\"), request that "
671 "shows be autoextended. Only works "
672 "if a show's category can be "
677 query.
prepare(
"SELECT DISTINCT category FROM program GROUP BY category;");
679 gc->addSelection(
"",
"");
684 QString key = query.
value(0).toString();
685 if (!key.trimmed().isEmpty())
686 gc->addSelection(key, key);
697 bs->
setLabel(GeneralSettings::tr(
"Record past end of show (mins)"));
701 bs->
setHelpText(GeneralSettings::tr(
"For the specified category, an "
702 "attempt will be made to extend "
703 "the recording by the specified "
704 "number of minutes. It is ignored "
705 "when two shows have been scheduled "
706 "without enough time in-between."));
714 vcg->setLabel(GeneralSettings::tr(
"Category record over-time"));
739 m_parentConfig(parent),
744 const QString rangeHelp(tr(
" Valid formats for the setting are "
745 "[nnnn - nnnn], [> nnnn], [>= nnnn], [< nnnn], "
746 "[<= nnnn]. Also [nnnn] for an exact match. "
747 "You can also use more than 1 expression with & between."));
748 const QString rangeHelpDec(tr(
"Numbers can have up to 3 decimal places."));
751 "to videos with a selected width range. ") + rangeHelp);
754 "to videos with a selected height range. ") + rangeHelp);
765 "to a video format or formats. You can also type in a format "
766 "or several formats separated by space. "
767 "To find the format for a video use ffprobe and look at the "
768 "word after \"Video:\". Also you can get a complete list "
769 "of available formats with ffmpeg -codecs."));
772 "to a range of frame rates. ") + rangeHelp +
" "+rangeHelpDec);
779 for (
const auto & scaler : scalers)
782 QString shaderdesc =
"\t" + tr(
"Prefer OpenGL deinterlacers");
783 QString driverdesc =
"\t" + tr(
"Prefer driver deinterlacers");
784 QString shaderhelp = tr(
"If possible, use GLSL shaders for deinterlacing in "
785 "preference to software deinterlacers. Note: Even if "
786 "disabled, shaders may be used if deinterlacing is "
787 "enabled but software deinterlacers are unavailable.");
788 QString driverhelp = tr(
"If possible, use hardware drivers (e.g. VDPAU, VAAPI) "
789 "for deinterlacing in preference to software and OpenGL "
790 "deinterlacers. Note: Even if disabled, driver deinterlacers "
791 "may be used if deinterlacing is enabled but other "
792 "deinterlacers are unavailable.");
806 tr(
"Set the quality for single rate deinterlacing. Use 'None' to disable. "
807 "Higher quality deinterlacers require more system processing and resources. "
808 "Software deinterlacers are used by default unless OpenGL or driver preferences "
811 tr(
"Set the quality for double rate deinterlacing - which is only used "
812 "if the display can support the required frame rate. Use 'None' to "
813 "disable double rate deinterlacing."));
821 for (
const auto & option : std::as_const(
options))
828 tr(
"Maximum number of CPU cores used for video decoding and filtering."));
831 tr(
"When unchecked the deblocking loopfilter will be disabled. ") +
"\n" +
832 tr(
"Disabling will significantly reduce the load on the CPU for software decoding of "
833 "H.264 and HEVC material but may significantly reduce video quality."));
836 "The default scaler provides good quality in the majority of situations. "
837 "Higher quality scalers may offer some benefit when scaling very low "
838 "resolution material but may not be as fast."));
883 QString height_value;
887 for (
uint i = 0; i < 2; ++i)
889 QString pcmp =
m_item.
Get(QString(
"pref_cmp%1").arg(i));
892 QStringList clist = pcmp.split(
" ");
894 if (clist.size() < 3)
896 if (!width_value.isEmpty())
898 width_value.append(
"&");
899 height_value.append(
"&");
901 width_value.append(clist[0]+clist[1]);
902 height_value.append(clist[0]+clist[2]);
908 if (!width_value.isEmpty())
909 width_value.append(
"&");
910 width_value.append(tmp);
915 if (!height_value.isEmpty())
916 height_value.append(
"&");
917 height_value.append(tmp);
923 if (codecs.isEmpty())
935 if (upscale.isEmpty())
942 QStringList::const_iterator itr = decr.cbegin();
943 QStringList::const_iterator itn = decn.cbegin();
946 for (; (itr != decr.cend()) && (itn != decn.cend()); ++itr, ++itn)
949 found |= (*itr == pdecoder);
951 if (!found && !pdecoder.isEmpty())
955 if (!pmax_cpus.isEmpty())
961 if (!prenderer.isEmpty())
995 ShowOkPopup(tr(
"Invalid width specification(%1), discarded").arg(val));
1009 ShowOkPopup(tr(
"Invalid height specification(%1), discarded").arg(val));
1023 ShowOkPopup(tr(
"Invalid frame rate specification(%1), discarded").arg(val));
1035 for (
const auto & rend : std::as_const(renderers))
1036 prenderer = (rend == vrenderer) ? vrenderer : prenderer;
1037 if (prenderer.isEmpty())
1041 for (
const auto & rend : std::as_const(renderers))
1043 if ((!rend.contains(
"null")))
1045 rend, (rend == prenderer));
1086 bool enabled =
true;
1117 QString quality = Deint->
getValue();
1119 values.append(quality);
1129 return values.join(
":");
1134 QStringList actions;
1139 if (actions.contains(
"DELETE"))
1150 QString message = tr(
"Remove this profile item?");
1154 if (confirmDelete->Create())
1162 delete confirmDelete;
1184 m_profileName(std::move(profilename))
1195 QStringList restrict;
1197 if (!width.isEmpty())
1198 restrict << tr(
"Width",
"video formats") +
" " + width;
1200 if (!height.isEmpty())
1201 restrict << tr(
"Height",
"video formats") +
" " + height;
1203 if (!codecsval.isEmpty())
1204 restrict << tr(
"Formats",
"video formats") +
" " + codecsval.toUpper();
1206 if (!framerateval.isEmpty())
1207 restrict << tr(
"framerate") +
" " + framerateval;
1210 if (!restrict.isEmpty())
1211 str += restrict.join(
" ") +
" -> ";
1213 str +=
" " + tr(
"&",
"and") +
' ';
1230 for (
size_t i = 0; i <
m_items.size(); ++i)
1239 m_items[i].Set(
"pref_priority", QString::number(i + 1));
1263 LOG(VB_GENERAL, LOG_ERR,
1264 "PlaybackProfileConfig::Save() -- failed to delete items");
1271 LOG(VB_GENERAL, LOG_ERR,
1272 "PlaybackProfileConfig::Save() -- failed to save items");
1321 QString pri_i = QString::number(
m_items[indexA].GetPriority());
1322 QString pri_j = QString::number(
m_items[indexB].GetPriority());
1328 m_items[indexA].Set(
"pref_priority", pri_i);
1329 m_items[indexB].Set(
"pref_priority", pri_j);
1337 grouptrigger->setLabel(
1338 QCoreApplication::translate(
"PlaybackProfileConfigs",
1339 "Current Video Playback Profile"));
1346 if (!profiles.contains(
profile))
1348 profile = (profiles.contains(
"Normal")) ?
"Normal" : profiles[0];
1352 for (
const auto & prof : std::as_const(profiles))
1355 grouptrigger->addTargetedChild(prof,
1359 return grouptrigger;
1364 QString msg = tr(
"Enter Playback Profile Name");
1371 if (settingdialog->Create())
1379 delete settingdialog;
1388 if (not_ok_list.contains(name) || name.isEmpty())
1390 QString msg = (name.isEmpty()) ?
1391 tr(
"Sorry, playback group\nname cannot be blank.") :
1392 tr(
"Sorry, playback group name\n"
1393 "'%1' is already being used.").arg(name);
1409 std::array<QString,4> str
1411 PlaybackSettings::tr(
"Sort all sub-titles/multi-titles Ascending"),
1412 PlaybackSettings::tr(
"Sort all sub-titles/multi-titles Descending"),
1413 PlaybackSettings::tr(
"Sort sub-titles Descending, multi-titles "
1415 PlaybackSettings::tr(
"Sort sub-titles Ascending, multi-titles Descending"),
1418 QString
help = PlaybackSettings::tr(
"Selects how to sort show episodes. "
1419 "Sub-titles refers to the episodes "
1420 "listed under a specific show title. "
1421 "Multi-title refers to sections (e.g. "
1422 "\"All Programs\") which list multiple "
1423 "titles. Sections in parentheses are "
1428 gc->setLabel(PlaybackSettings::tr(
"Episode sort orderings"));
1430 for (
size_t i = 0; i < str.size(); ++i)
1431 gc->addSelection(str[i], QString::number(i));
1434 gc->setHelpText(
help);
1443 gc->setLabel(PlaybackSettings::tr(
"Sort episodes"));
1445 gc->addSelection(PlaybackSettings::tr(
"Record date"),
"Date");
1446 gc->addSelection(PlaybackSettings::tr(
"Season/Episode"),
"Season");
1447 gc->addSelection(PlaybackSettings::tr(
"Original air date"),
"OrigAirDate");
1448 gc->addSelection(PlaybackSettings::tr(
"Program ID"),
"Id");
1450 gc->setHelpText(PlaybackSettings::tr(
"Selects how to sort a show's "
1460 gs->setLabel(PlaybackSettings::tr(
"Fast forward/rewind reposition amount"));
1464 gs->setHelpText(PlaybackSettings::tr(
"When exiting sticky keys fast "
1465 "forward/rewind mode, reposition "
1466 "this many 1/100th seconds before "
1467 "resuming normal playback. This "
1468 "compensates for the reaction time "
1469 "between seeing where to resume "
1470 "playback and actually exiting "
1479 gc->setLabel(PlaybackSettings::tr(
"Reverse direction in fast "
1484 gc->setHelpText(PlaybackSettings::tr(
"If enabled, pressing the sticky "
1485 "rewind key in fast forward mode "
1486 "switches to rewind mode, and "
1487 "vice versa. If disabled, it will "
1488 "decrease the current speed or "
1489 "switch to play mode if the speed "
1490 "can't be decreased further."));
1508 paint->setLabel(AppearanceSettings::tr(
"Paint engine"));
1509 for (
const auto & option :
options)
1510 paint->addSelection(option, option, option == pref);
1512 paint->setHelpText(AppearanceSettings::tr(
"This selects what MythTV uses to draw. "));
1520 gc->setLabel(AppearanceSettings::tr(
"Menu theme"));
1524 QList<ThemeInfo>::iterator it;
1525 for( it = themelist.begin(); it != themelist.end(); ++it )
1527 gc->addSelection((*it).GetName(), (*it).GetDirectoryName(),
1528 (*it).GetDirectoryName() ==
"defaultmenu");
1538 QString fmt = beVBI.toLower().left(4);
1539 int sel = (fmt ==
"pal ") ? 1 : ((fmt ==
"ntsc") ? 2 : 0);
1543 gc->
setLabel(OSDSettings::tr(
"Decode VBI format"));
1547 gc->
addSelection(OSDSettings::tr(
"PAL teletext"),
"pal_txt",
1549 gc->
addSelection(OSDSettings::tr(
"NTSC closed caption"),
"ntsc_cc",
1553 OSDSettings::tr(
"If enabled, this overrides the mythtv-setup setting "
1554 "used during recording when decoding captions."));
1562 static const QRegularExpression crlf {
"[\r\n]" };
1563 static const QRegularExpression suffix {
"(//.*)" };
1567 gc->
setLabel(OSDSettings::tr(
"Subtitle Codec"));
1571 QScopedPointer<MythSystem>
1575 QString
results = cmd->GetStandardOutputStream()->readAll();
1576 QStringList list =
results.toLower().split(crlf, Qt::SkipEmptyParts);
1577 list.replaceInStrings(suffix,
"");
1580 for (
const auto & codec : std::as_const(list))
1582 QString val = QString(codec);
1593 gc->
setLabel(GeneralSettings::tr(
"Channel ordering"));
1595 gc->
addSelection(GeneralSettings::tr(
"channel number"),
"channum");
1596 gc->
addSelection(GeneralSettings::tr(
"callsign"),
"callsign");
1605 gs->setLabel(PlaybackSettings::tr(
"Vertical scaling"));
1609 gs->setHelpText(PlaybackSettings::tr(
"Adjust this if the image does not "
1610 "fill your screen vertically. Range "
1619 gs->setLabel(PlaybackSettings::tr(
"Horizontal scaling"));
1623 gs->setHelpText(PlaybackSettings::tr(
"Adjust this if the image does not "
1624 "fill your screen horizontally. Range "
1633 gs->setLabel(PlaybackSettings::tr(
"Scan displacement (X)"));
1637 gs->setHelpText(PlaybackSettings::tr(
"Adjust this to move the image "
1647 gs->setLabel(PlaybackSettings::tr(
"Scan displacement (Y)"));
1651 gs->setHelpText(PlaybackSettings::tr(
"Adjust this to move the image "
1661 gc->
setLabel(OSDSettings::tr(
"Always display closed captioning or "
1666 gc->
setHelpText(OSDSettings::tr(
"If enabled, captions will be displayed "
1667 "when playing back recordings or watching "
1668 "Live TV. Closed Captioning can be turned "
1669 "on or off by pressing \"T\" during"
1678 gc->
setLabel(OSDSettings::tr(
"Enable interactive TV"));
1682 gc->
setHelpText(OSDSettings::tr(
"If enabled, interactive TV applications "
1683 "(MHEG) will be activated. This is used "
1684 "for teletext and logos for radio and "
1685 "channels that are currently off-air."));
1692 gc->
setLabel(OSDSettings::tr(
"Enable network access for interactive TV"));
1694 gc->
setHelpText(OSDSettings::tr(
"If enabled, interactive TV applications "
1695 "(MHEG) will be able to access interactive "
1696 "content over the Internet. This is used "
1697 "for BBC iPlayer."));
1704 combo->setLabel(OSDSettings::tr(
"Visualiser for audio only playback"));
1705 combo->setHelpText(OSDSettings::tr(
"Select a visualisation to use when there "
1706 "is no video. Defaults to none."));
1707 combo->addSelection(
"None",
"");
1709 for (
const auto & visual : std::as_const(visuals))
1710 combo->addSelection(visual, visual);
1718 gc->
setLabel(OSDSettings::tr(
"Always use browse mode in Live TV"));
1722 gc->
setHelpText(OSDSettings::tr(
"If enabled, browse mode will "
1723 "automatically be activated whenever "
1724 "you use channel up/down while watching "
1733 gc->
setLabel(OSDSettings::tr(
"Browse all channels"));
1737 gc->
setHelpText(OSDSettings::tr(
"If enabled, browse mode will show "
1738 "channels on all available recording "
1739 "devices, instead of showing channels "
1740 "on just the current recorder."));
1748 gc->
setLabel(PlaybackSettings::tr(
"Playback from start of program"));
1752 gc->
setHelpText(PlaybackSettings::tr(
"If enabled and no bookmark is set, "
1753 "playback starts at the program "
1754 "scheduled start time rather than "
1755 "the beginning of the recording. "
1756 "Useful for automatically skipping "
1757 "'start early' parts of a recording."));
1765 gc->
setLabel(PlaybackSettings::tr(
"Action on playback exit"));
1767 gc->
addSelection(PlaybackSettings::tr(
"Just exit"),
"0");
1768 gc->
addSelection(PlaybackSettings::tr(
"Clear last played position and exit"),
"16");
1769 gc->
addSelection(PlaybackSettings::tr(
"Always prompt (excluding Live TV)"),
1771 gc->
addSelection(PlaybackSettings::tr(
"Always prompt (including Live TV)"),
1773 gc->
addSelection(PlaybackSettings::tr(
"Prompt for Live TV only"),
"8");
1775 gc->
setHelpText(PlaybackSettings::tr(
"If set to prompt, a menu will be "
1776 "displayed when you exit playback "
1777 "mode. The options available will "
1778 "allow you delete the recording, "
1779 "continue watching, or exit."));
1787 gc->
setLabel(PlaybackSettings::tr(
"Prompt at end of recording"));
1791 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, a menu will be displayed "
1792 "allowing you to delete the recording "
1793 "when it has finished playing."));
1801 gc->
setLabel(PlaybackSettings::tr(
"Enable Music Choice"));
1805 gc->
setHelpText(PlaybackSettings::tr(
"Enable this to improve playing of Music Choice channels "
1806 "or recordings from those channels. "
1807 "These are audio channels with slide show "
1808 "from some cable providers. "
1809 "In unusual situations this could cause lip sync problems "
1810 "watching normal videos or TV shows."));
1818 gc->
setLabel(PlaybackSettings::tr(
"Jump to program OSD"));
1822 gc->
setHelpText(PlaybackSettings::tr(
"Set the choice between viewing the "
1823 "current recording group in the OSD, "
1824 "or showing the 'Watch Recording' "
1825 "screen when 'Jump to Program' is "
1826 "activated. If enabled, the "
1827 "recordings are shown in the OSD"));
1835 gc->
setLabel(PlaybackSettings::tr(
"Continue playback when embedded"));
1839 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, TV playback continues "
1840 "when the TV window is embedded in "
1841 "the upcoming program list or "
1842 "recorded list. The default is to "
1843 "pause the recorded show when "
1852 gc->
setLabel(PlaybackSettings::tr(
"Automatically mark a recording as "
1857 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, when you exit near the "
1858 "end of a recording it will be marked "
1859 "as watched. The automatic detection "
1860 "is not foolproof, so do not enable "
1861 "this setting if you don't want an "
1862 "unwatched recording marked as "
1871 gc->
setLabel(PlaybackSettings::tr(
"Always show watched percent progress bar"));
1875 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, shows the watched percent "
1876 "progress bar even if the recording or "
1877 "video is marked as watched. "
1878 "Having a watched percent progress bar at "
1879 "all depends on the currently used theme."));
1887 gs->setLabel(PlaybackSettings::tr(
"Live TV idle timeout (mins)"));
1891 gs->setHelpText(PlaybackSettings::tr(
"Exit Live TV automatically if left "
1892 "idle for the specified number of "
1893 "minutes. 0 disables the timeout."));
1934 gc->
setLabel(MainGeneralSettings::tr(
"Use line edit virtual keyboards"));
1938 gc->
setHelpText(MainGeneralSettings::tr(
"If enabled, you can use a virtual "
1939 "keyboard in MythTV's line edit "
1940 "boxes. To use, hit SELECT (Enter "
1941 "or Space) while a line edit is in "
1950 gs->setLabel(MainGeneralSettings::tr(
"Idle time before entering standby "
1955 gs->setHelpText(MainGeneralSettings::tr(
"Number of minutes to wait when "
1956 "the frontend is idle before "
1957 "entering standby mode. Standby "
1958 "mode allows the backend to power "
1959 "down if configured to do so. Any "
1960 "remote or mouse input will cause "
1961 "the countdown to start again "
1962 "and/or exit idle mode. Video "
1963 "playback suspends the countdown. "
1964 "A value of zero prevents the "
1965 "frontend automatically entering "
1973 checkbox->setLabel(MainGeneralSettings::tr(
"Confirm before suspending/shutting down"));
1974 checkbox->setHelpText(MainGeneralSettings::tr(
1975 "If enabled (the default) then the user will always be asked to confirm before the system "
1976 "is shutdown, suspended or rebooted."));
1977 checkbox->setValue(
true);
1985 gc->
setLabel(MainGeneralSettings::tr(
"Customize exit menu options"));
1987 gc->
addSelection(MainGeneralSettings::tr(
"Default"),
"0");
1988 gc->
addSelection(MainGeneralSettings::tr(
"Show quit"),
"1");
1989 gc->
addSelection(MainGeneralSettings::tr(
"Show quit and suspend"),
"9");
1990 gc->
addSelection(MainGeneralSettings::tr(
"Show quit and shutdown"),
"2");
1991 gc->
addSelection(MainGeneralSettings::tr(
"Show quit, reboot and shutdown"),
"3");
1992 gc->
addSelection(MainGeneralSettings::tr(
"Show quit, reboot, shutdown and suspend"),
"10");
1993 gc->
addSelection(MainGeneralSettings::tr(
"Show shutdown"),
"4");
1994 gc->
addSelection(MainGeneralSettings::tr(
"Show reboot"),
"5");
1995 gc->
addSelection(MainGeneralSettings::tr(
"Show reboot and shutdown"),
"6");
1996 gc->
addSelection(MainGeneralSettings::tr(
"Show standby"),
"7");
1997 gc->
addSelection(MainGeneralSettings::tr(
"Show suspend"),
"8");
1999 QString helptext = MainGeneralSettings::tr(
"By default, only remote frontends are shown "
2000 "the shutdown option on the exit menu. Here "
2001 "you can force specific shutdown, reboot and suspend "
2002 "options to be displayed.");
2006 if (!supported.isEmpty())
2008 helptext.prepend(MainGeneralSettings::tr(
2009 "This system supports '%1' without additional setup. ")
2010 .arg(supported.join(
", ")));
2014 helptext.append(MainGeneralSettings::tr(
2015 " This system appears to have no power options available. Try "
2016 "setting the Halt/Reboot/Suspend commands below."));
2028 ge->setLabel(MainGeneralSettings::tr(
"Reboot command"));
2030 QString
help = MainGeneralSettings::tr(
2031 "Optional. Script to run if you select the reboot option from the "
2032 "exit menu, if the option is displayed. You must configure an "
2033 "exit key to display the exit menu.");
2036 help.append(MainGeneralSettings::tr(
2037 " Note: This system appears to support reboot without using this setting."));
2039 ge->setHelpText(
help);
2046 suspend->setLabel(MainGeneralSettings::tr(
"Suspend command"));
2047 suspend->setValue(
"");
2048 QString
help = MainGeneralSettings::tr(
2049 "Optional: Script to run if you select the suspend option from the "
2050 "exit menu, if the option is displayed.");
2054 help.append(MainGeneralSettings::tr(
2055 " Note: This system appears to support suspend without using this setting."));
2057 suspend->setHelpText(
help);
2064 ge->setLabel(MainGeneralSettings::tr(
"Halt command"));
2066 QString
help = MainGeneralSettings::tr(
"Optional. Script to run if you "
2067 "select the shutdown option from "
2068 "the exit menu, if the option is "
2069 "displayed. You must configure an "
2070 "exit key to display the exit "
2074 help.append(MainGeneralSettings::tr(
2075 " Note: This system appears to support shutdown without using this setting."));
2078 ge->setHelpText(
help);
2087 ge->setLabel(MainGeneralSettings::tr(
"LIRC daemon socket"));
2090 QString lirc_socket =
"/dev/lircd";
2093 lirc_socket =
"/var/run/lirc/lircd";
2095 ge->setValue(lirc_socket);
2097 QString
help = MainGeneralSettings::tr(
"UNIX socket or IP address[:port] "
2098 "to connect in order to communicate "
2099 "with the LIRC Daemon.");
2100 ge->setHelpText(
help);
2110 ge->setLabel(MainGeneralSettings::tr(
"CEC Device"));
2112 ge->setValue(
"/dev/cec0");
2114 QString
help = MainGeneralSettings::tr(
"CEC Device. Default is /dev/cec0 "
2115 "if you have only 1 HDMI output "
2117 ge->setHelpText(
help);
2128 ge->setLabel(MainGeneralSettings::tr(
"Screen shot path"));
2130 ge->setValue(
"/tmp/");
2132 ge->setHelpText(MainGeneralSettings::tr(
"Path to screenshot storage "
2133 "location. Should be writable "
2134 "by the frontend"));
2143 ge->setLabel(MainGeneralSettings::tr(
"Setup PIN code"));
2145 ge->setHelpText(MainGeneralSettings::tr(
"This PIN is used to control "
2146 "access to the setup menus. "
2147 "If you want to use this feature, "
2148 "then setting the value to all "
2149 "numbers will make your life much "
2150 "easier. Set it to blank to "
2151 "disable. If enabled, you will not "
2152 "be able to return to this screen "
2153 "and reset the Setup PIN without "
2154 "first entering the current PIN."));
2161 gc->
setLabel(AppearanceSettings::tr(
"Display on screen"));
2163 gc->
setHelpText(AppearanceSettings::tr(
"Run on the specified screen or "
2164 "spanning all screens."));
2173 gc->
setLabel(AppearanceSettings::tr(
"Screen aspect ratio"));
2174 gc->
addSelection(AppearanceSettings::tr(
"Auto (Assume square pixels)"),
"-1.0");
2175 gc->
addSelection(AppearanceSettings::tr(
"Auto (Detect from display)"),
"0.0");
2184 gc->
addSelection(AppearanceSettings::tr(
"16:18 (16:9 Above and below)"),
"0.8888");
2185 gc->
addSelection(AppearanceSettings::tr(
"32:10 (16:10 Side by side)"),
"3.2");
2186 gc->
addSelection(AppearanceSettings::tr(
"16:20 (16:10 Above and below)"),
"0.8");
2188 "This setting applies to video playback only, not to the GUI. "
2189 "Most modern displays have square pixels and the aspect ratio of the screen can be "
2190 "computed from the resolution (default). "
2191 "The aspect ratio can also be automatically detected from the connected display "
2192 "- though this may be slightly less accurate. If automatic detection fails, the correct "
2193 "aspect ratio can be specified here. Note: Some values (e.g 32:10) are "
2194 "primarily intended for multiscreen setups."));
2202 gc->
setLabel(PlaybackSettings::tr(
"Letterboxing color"));
2207 gc->
setHelpText(PlaybackSettings::tr(
"By default MythTV uses black "
2208 "letterboxing to match broadcaster "
2209 "letterboxing, but those with plasma "
2210 "screens may prefer gray to minimize "
2218 cb->
setLabel(PlaybackSettings::tr(
"Discard 3D stereoscopic fields"));
2220 "If 'Side by Side' or 'Top and Bottom' 3D material is detected, "
2221 "enabling this setting will discard one field (enabled by default)."));
2230 gc->
setLabel(PlaybackSettings::tr(
"Video aspect override"));
2235 gc->
setHelpText(PlaybackSettings::tr(
"When enabled, these will override "
2236 "the aspect ratio specified by any "
2237 "broadcaster for all video streams."));
2245 gc->
setLabel(PlaybackSettings::tr(
"Zoom"));
2254 gc->
setHelpText(PlaybackSettings::tr(
"When enabled, these will apply a "
2255 "predefined zoom to all video "
2256 "playback in MythTV."));
2266 gs->setLabel(AppearanceSettings::tr(
"GUI width (pixels)"));
2270 gs->setHelpText(AppearanceSettings::tr(
"The width of the GUI. Do not make "
2271 "the GUI wider than your actual "
2272 "screen resolution. Set to 0 to "
2273 "automatically scale to "
2282 gs->setLabel(AppearanceSettings::tr(
"GUI height (pixels)"));
2286 gs->setHelpText(AppearanceSettings::tr(
"The height of the GUI. Do not make "
2287 "the GUI taller than your actual "
2288 "screen resolution. Set to 0 to "
2289 "automatically scale to "
2298 gs->setLabel(AppearanceSettings::tr(
"GUI X offset"));
2302 gs->setHelpText(AppearanceSettings::tr(
"The horizontal offset where the "
2303 "GUI will be displayed. May only "
2304 "work if run in a window."));
2312 gs->setLabel(AppearanceSettings::tr(
"GUI Y offset"));
2316 gs->setHelpText(AppearanceSettings::tr(
"The vertical offset where the "
2317 "GUI will be displayed."));
2325 gc->
setLabel(AppearanceSettings::tr(
"Use GUI size for TV playback"));
2329 gc->
setHelpText(AppearanceSettings::tr(
"If enabled, use the above size for "
2330 "TV, otherwise use full screen."));
2338 gc->
setLabel(AppearanceSettings::tr(
"Force Full Screen for GUI and TV playback"));
2343 "Use Full Screen for GUI and TV playback independent of the settings for "
2344 "the GUI dimensions. This does not change the values of the GUI dimensions "
2345 "so it is easy to switch from window mode to full screen and back."));
2353 gc->
setLabel(VideoModeSettings::tr(
"Separate video modes for GUI and "
2359 "Switch video modes for playback depending on the source "
2360 "resolution and frame rate."));
2369 gs->setLabel(VideoModeSettings::tr(
"In X",
"Video mode width"));
2373 gs->setHelpText(VideoModeSettings::tr(
"Horizontal resolution of video "
2374 "which needs a special output "
2384 gs->setLabel(VideoModeSettings::tr(
"In Y",
"Video mode height"));
2388 gs->setHelpText(VideoModeSettings::tr(
"Vertical resolution of video "
2389 "which needs a special output "
2398 gc->
setLabel(VideoModeSettings::tr(
"GUI"));
2400 gc->
setHelpText(VideoModeSettings::tr(
"Resolution of screen when not "
2401 "watching a video."));
2404 std::vector<MythDisplayMode> scr = display->
GetVideoModes();
2405 for (
auto & vmode : scr)
2407 int w = vmode.Width();
2408 int h = vmode.Height();
2409 QString sel = QString(
"%1x%2").arg(w).arg(h);
2419 if ((w <= 0) || (h <= 0))
2428 gc->
setValue((i >= 0) ? i : scr.size() - 1);
2436 QString dhelp = VideoModeSettings::tr(
"Default screen resolution "
2437 "when watching a video.");
2438 QString ohelp = VideoModeSettings::tr(
"Screen resolution when watching a "
2439 "video at a specific resolution.");
2441 QString qstr = (idx<0) ?
"TVVidModeResolution" :
2442 QString(
"TVVidModeResolution%1").arg(idx);
2444 QString lstr = (idx<0) ? VideoModeSettings::tr(
"Video output") :
2445 VideoModeSettings::tr(
"Output");
2446 QString hstr = (idx<0) ? dhelp : ohelp;
2453 std::vector<MythDisplayMode> scr = display->
GetVideoModes();
2454 for (
auto & vmode : scr)
2456 QString sel = QString(
"%1x%2").arg(vmode.Width()).arg(vmode.Height());
2465 const QString previousValue =
getValue();
2469 QString resolution = setting->
getValue();
2474 for (
size_t i = 0; i < list.size(); ++i)
2476 QString sel = QString::number((
double) list[i],
'f', 3);
2478 hz50 = (fabs(50.0 - list[i]) < 0.01) ? i : hz50;
2479 hz60 = (fabs(60.0 - list[i]) < 0.01) ? i : hz60;
2485 if (wasUnchanged && previousValue ==
getValue())
2489 if (
"640x480" == resolution ||
"720x480" == resolution)
2491 if (
"640x576" == resolution ||
"720x576" == resolution)
2500 QStringList slist = res.split(
"x");
2505 if (2 == slist.size())
2507 width = slist[0].toInt(&ok0);
2508 height = slist[1].toInt(&ok1);
2511 std::vector<double> result;
2514 QSize
size(width, height);
2523 QString dhelp = VideoModeSettings::tr(
"Default refresh rate when watching "
2524 "a video. Leave at \"Auto\" to "
2525 "automatically use the best "
2527 QString ohelp = VideoModeSettings::tr(
"Refresh rate when watching a "
2528 "video at a specific resolution. "
2529 "Leave at \"Auto\" to automatically "
2530 "use the best available");
2532 QString qstr = (idx<0) ?
"TVVidModeRefreshRate" :
2533 QString(
"TVVidModeRefreshRate%1").arg(idx);
2535 QString lstr = VideoModeSettings::tr(
"Rate");
2536 QString hstr = (idx<0) ? dhelp : ohelp;
2546 QString dhelp = VideoModeSettings::tr(
"Aspect ratio when watching a "
2547 "video. Leave at \"%1\" to "
2548 "use ratio reported by the monitor. "
2549 "Set to 16:9 or 4:3 to force a "
2550 "specific aspect ratio.");
2554 QString ohelp = VideoModeSettings::tr(
"Aspect ratio when watching a "
2555 "video at a specific resolution. "
2556 "Leave at \"%1\" to use ratio "
2557 "reported by the monitor. Set to "
2558 "16:9 or 4:3 to force a specific "
2561 QString qstr = (idx<0) ?
"TVVidModeForceAspect" :
2562 QString(
"TVVidModeForceAspect%1").arg(idx);
2566 gc->
setLabel(VideoModeSettings::tr(
"Aspect"));
2568 QString hstr = (idx<0) ? dhelp : ohelp;
2570 gc->
setHelpText(hstr.arg(VideoModeSettings::tr(
"Default")));
2572 gc->
addSelection(VideoModeSettings::tr(
"Default"),
"0.0");
2588 pause->setLabel(VideoModeSettings::tr(
"Pause while switching video modes (ms)"));
2589 pause->setHelpText(VideoModeSettings::tr(
2590 "For most displays, switching video modes takes time and content can be missed. "
2591 "If non-zero, this setting will pause playback while the video mode is changed. "
2592 "The required pause length (in ms) will be dependant on the display's characteristics."));
2613 overrides->setLabel(tr(
"Overrides for specific video sizes"));
2615 for (
int idx = 0; idx < 3; ++idx)
2636 gc->
setLabel(AppearanceSettings::tr(
"Hide mouse cursor in MythTV"));
2640 gc->
setHelpText(AppearanceSettings::tr(
"Toggles mouse cursor visibility "
2641 "for touchscreens. By default "
2642 "MythTV will auto-hide the cursor "
2643 "if the mouse doesn't move for a "
2644 "period, this setting disables the "
2645 "cursor entirely."));
2654 gc->
setLabel(AppearanceSettings::tr(
"Use window border"));
2658 gc->
setHelpText(AppearanceSettings::tr(
"Toggles between windowed and "
2659 "borderless operation."));
2667 gc->
setLabel(AppearanceSettings::tr(
"Always On Top"));
2671 gc->
setHelpText(AppearanceSettings::tr(
"If enabled, MythTV will always be "
2680 gc->
setLabel(AppearanceSettings::tr(
"Smooth Transitions"));
2684 gc->
setHelpText(AppearanceSettings::tr(
"Enable smooth transitions with fade-in and fade-out of menu pages and enable GUI animations. "
2685 "Disabling this can make the GUI respond faster especially on low-powered machines."));
2692 "Never show startup screen");
2694 gs->setLabel(AppearanceSettings::tr(
"Startup Screen Delay"));
2698 gs->setHelpText(AppearanceSettings::tr(
2699 "The Startup Screen will show the progress of starting the frontend "
2700 "if frontend startup takes longer than this number of seconds."));
2709 gs->setLabel(AppearanceSettings::tr(
"GUI text zoom percentage"));
2713 gs->setHelpText(AppearanceSettings::tr
2714 (
"Adjust the themed defined font size by this percentage. "
2715 "mythfrontend needs restart for this to take effect."));
2723 gc->
setLabel(AppearanceSettings::tr(
"Date format"));
2726 QString sampleStr = AppearanceSettings::tr(
"Samples are shown using "
2729 if (sampdate.month() == sampdate.day())
2731 sampdate = sampdate.addDays(1);
2732 sampleStr = AppearanceSettings::tr(
"Samples are shown using "
2733 "tomorrow's date.");
2738 gc->
addSelection(locale.toString(sampdate,
"ddd MMM d"),
"ddd MMM d");
2739 gc->
addSelection(locale.toString(sampdate,
"ddd d MMM"),
"ddd d MMM");
2740 gc->
addSelection(locale.toString(sampdate,
"ddd MMMM d"),
"ddd MMMM d");
2741 gc->
addSelection(locale.toString(sampdate,
"ddd d MMMM"),
"ddd d MMMM");
2742 gc->
addSelection(locale.toString(sampdate,
"dddd MMM d"),
"dddd MMM d");
2743 gc->
addSelection(locale.toString(sampdate,
"dddd d MMM"),
"dddd d MMM");
2744 gc->
addSelection(locale.toString(sampdate,
"MMM d"),
"MMM d");
2745 gc->
addSelection(locale.toString(sampdate,
"d MMM"),
"d MMM");
2746 gc->
addSelection(locale.toString(sampdate,
"MM/dd"),
"MM/dd");
2747 gc->
addSelection(locale.toString(sampdate,
"dd/MM"),
"dd/MM");
2748 gc->
addSelection(locale.toString(sampdate,
"MM.dd"),
"MM.dd");
2749 gc->
addSelection(locale.toString(sampdate,
"dd.MM"),
"dd.MM");
2750 gc->
addSelection(locale.toString(sampdate,
"M/d/yyyy"),
"M/d/yyyy");
2751 gc->
addSelection(locale.toString(sampdate,
"d/M/yyyy"),
"d/M/yyyy");
2752 gc->
addSelection(locale.toString(sampdate,
"MM.dd.yyyy"),
"MM.dd.yyyy");
2753 gc->
addSelection(locale.toString(sampdate,
"dd.MM.yyyy"),
"dd.MM.yyyy");
2754 gc->
addSelection(locale.toString(sampdate,
"yyyy-MM-dd"),
"yyyy-MM-dd");
2755 gc->
addSelection(locale.toString(sampdate,
"ddd MMM d yyyy"),
"ddd MMM d yyyy");
2756 gc->
addSelection(locale.toString(sampdate,
"ddd d MMM yyyy"),
"ddd d MMM yyyy");
2757 gc->
addSelection(locale.toString(sampdate,
"ddd yyyy-MM-dd"),
"ddd yyyy-MM-dd");
2759 QString cn_long = QString(
"dddd yyyy") + QChar(0x5E74) +
2760 "M" + QChar(0x6708) +
"d"+ QChar(0x65E5);
2761 gc->
addSelection(locale.toString(sampdate, cn_long), cn_long);
2762 QString cn_med = QString(
"dddd ") +
2763 "M" + QChar(0x6708) +
"d"+ QChar(0x65E5);
2765 gc->
addSelection(locale.toString(sampdate, cn_med), cn_med);
2768 gc->
setHelpText(AppearanceSettings::tr(
"Your preferred date format. %1")
2777 gc->
setLabel(AppearanceSettings::tr(
"Short date format"));
2781 QString sampleStr = AppearanceSettings::tr(
"Samples are shown using "
2784 if (sampdate.month() == sampdate.day())
2786 sampdate = sampdate.addDays(1);
2787 sampleStr = AppearanceSettings::tr(
"Samples are shown using "
2788 "tomorrow's date.");
2792 gc->
addSelection(locale.toString(sampdate,
"M/d"),
"M/d");
2793 gc->
addSelection(locale.toString(sampdate,
"d/M"),
"d/M");
2794 gc->
addSelection(locale.toString(sampdate,
"MM/dd"),
"MM/dd");
2795 gc->
addSelection(locale.toString(sampdate,
"dd/MM"),
"dd/MM");
2796 gc->
addSelection(locale.toString(sampdate,
"MM.dd"),
"MM.dd");
2797 gc->
addSelection(locale.toString(sampdate,
"dd.MM."),
"dd.MM.");
2798 gc->
addSelection(locale.toString(sampdate,
"M.d."),
"M.d.");
2799 gc->
addSelection(locale.toString(sampdate,
"d.M."),
"d.M.");
2800 gc->
addSelection(locale.toString(sampdate,
"MM-dd"),
"MM-dd");
2801 gc->
addSelection(locale.toString(sampdate,
"dd-MM"),
"dd-MM");
2802 gc->
addSelection(locale.toString(sampdate,
"MMM d"),
"MMM d");
2803 gc->
addSelection(locale.toString(sampdate,
"d MMM"),
"d MMM");
2804 gc->
addSelection(locale.toString(sampdate,
"ddd d"),
"ddd d");
2805 gc->
addSelection(locale.toString(sampdate,
"d ddd"),
"d ddd");
2806 gc->
addSelection(locale.toString(sampdate,
"ddd M/d"),
"ddd M/d");
2807 gc->
addSelection(locale.toString(sampdate,
"ddd d/M"),
"ddd d/M");
2808 gc->
addSelection(locale.toString(sampdate,
"ddd d.M"),
"ddd d.M");
2809 gc->
addSelection(locale.toString(sampdate,
"ddd dd.MM"),
"ddd dd.MM");
2810 gc->
addSelection(locale.toString(sampdate,
"M/d ddd"),
"M/d ddd");
2811 gc->
addSelection(locale.toString(sampdate,
"d/M ddd"),
"d/M ddd");
2813 QString cn_short1 = QString(
"M") + QChar(0x6708) +
"d" + QChar(0x65E5);
2815 gc->
addSelection(locale.toString(sampdate, cn_short1), cn_short1);
2817 QString cn_short2 = QString(
"ddd M") + QChar(0x6708) +
"d" + QChar(0x65E5);
2819 gc->
addSelection(locale.toString(sampdate, cn_short2), cn_short2);
2822 gc->
setHelpText(AppearanceSettings::tr(
"Your preferred short date format. %1")
2831 gc->
setLabel(AppearanceSettings::tr(
"Time format"));
2833 QTime samptime = QTime::currentTime();
2837 gc->
addSelection(locale.toString(samptime,
"h:mm AP"),
"h:mm AP");
2838 gc->
addSelection(locale.toString(samptime,
"h:mm ap"),
"h:mm ap");
2839 gc->
addSelection(locale.toString(samptime,
"hh:mm AP"),
"hh:mm AP");
2840 gc->
addSelection(locale.toString(samptime,
"hh:mm ap"),
"hh:mm ap");
2841 gc->
addSelection(locale.toString(samptime,
"h:mm"),
"h:mm");
2842 gc->
addSelection(locale.toString(samptime,
"hh:mm"),
"hh:mm");
2843 gc->
addSelection(locale.toString(samptime,
"hh.mm"),
"hh.mm");
2844 gc->
addSelection(locale.toString(samptime,
"AP h:mm"),
"AP h:mm");
2846 gc->
setHelpText(AppearanceSettings::tr(
"Your preferred time format. You "
2847 "must choose a format with \"AM\" "
2848 "or \"PM\" in it, otherwise your "
2849 "time display will be 24-hour or "
2850 "\"military\" time."));
2857 rgb->setLabel(AppearanceSettings::tr(
"Use full range RGB output"));
2858 rgb->setValue(
true);
2859 rgb->setHelpText(AppearanceSettings::tr(
2860 "Enable (recommended) to supply full range RGB output to your display device. "
2861 "Disable to supply limited range RGB output. This setting applies to both the "
2862 "GUI and media playback. Ideally the value of this setting should match a "
2863 "similar setting on your TV or monitor."));
2871 gc->
setLabel(GeneralSettings::tr(
"Channel format"));
2873 gc->
addSelection(GeneralSettings::tr(
"number"),
"<num>");
2874 gc->
addSelection(GeneralSettings::tr(
"number callsign"),
"<num> <sign>");
2875 gc->
addSelection(GeneralSettings::tr(
"number name"),
"<num> <name>");
2876 gc->
addSelection(GeneralSettings::tr(
"callsign"),
"<sign>");
2877 gc->
addSelection(GeneralSettings::tr(
"name"),
"<name>");
2879 gc->
setHelpText(GeneralSettings::tr(
"Your preferred channel format."));
2890 gc->
setLabel(GeneralSettings::tr(
"Long channel format"));
2892 gc->
addSelection(GeneralSettings::tr(
"number"),
"<num>");
2893 gc->
addSelection(GeneralSettings::tr(
"number callsign"),
"<num> <sign>");
2894 gc->
addSelection(GeneralSettings::tr(
"number name"),
"<num> <name>");
2895 gc->
addSelection(GeneralSettings::tr(
"callsign"),
"<sign>");
2896 gc->
addSelection(GeneralSettings::tr(
"name"),
"<name>");
2898 gc->
setHelpText(GeneralSettings::tr(
"Your preferred long channel format."));
2909 gc->
setLabel(ChannelGroupSettings::tr(
"Remember last channel group"));
2911 gc->
setHelpText(ChannelGroupSettings::tr(
"If enabled, the EPG will "
2912 "initially display only the "
2913 "channels from the last channel "
2914 "group selected. Pressing \"4\" "
2915 "will toggle channel group."));
2926 gc->
setLabel(ChannelGroupSettings::tr(
"Default channel group"));
2932 gc->
addSelection(ChannelGroupSettings::tr(
"All Channels"),
"-1");
2934 ChannelGroupList::iterator it;
2936 for (it = changrplist.begin(); it < changrplist.end(); ++it)
2937 gc->
addSelection(it->m_name, QString(
"%1").arg(it->m_grpId));
2939 gc->
setHelpText(ChannelGroupSettings::tr(
"Default channel group to be "
2940 "shown in the EPG. Pressing "
2941 "GUIDE key will toggle channel "
2952 gc->
setLabel(GeneralSettings::tr(
"Browse/change channels from Channel "
2955 gc->
setHelpText(GeneralSettings::tr(
"If enabled, Live TV will browse or "
2956 "change channels from the selected "
2957 "channel group. The \"All Channels\" "
2958 "channel group may be selected to "
2959 "browse all channels."));
2969 gc->
setLabel(GeneralSettings::tr(
"Case-sensitive sorting"));
2971 gc->
setHelpText(GeneralSettings::tr(
"If enabled, all sorting will be "
2972 "case-sensitive. This would mean "
2973 "that \"bee movie\" would sort after "
2974 "\"Sea World\" as lower case letters "
2975 "sort after uppercase letters."));
2984 gc->
setLabel(GeneralSettings::tr(
"Remove prefixes when sorting"));
2987 "If enabled, all sorting will remove the common "
2988 "prefixes (The, A, An) from a string prior to "
2989 "sorting. For example, this would sort the titles "
2990 "\"Earth 2\", \"The Flash\", and \"Kings\" in that "
2991 "order. If disabled, they would sort as \"Earth 2\", "
2992 "\"Kings\", \"The Flash\"."));
3000 gc->
setLabel(MainGeneralSettings::tr(
"Names exempt from prefix removal"));
3003 "This list of names will be exempt from removing "
3004 "the common prefixes (The, A, An) from a title or "
3005 "filename. Enter multiple names separated by "
3014 gc->
setLabel(GeneralSettings::tr(
"Starting channel for Manual Record"));
3015 gc->
addSelection(GeneralSettings::tr(
"Guide Starting Channel"),
"1",
true);
3016 gc->
addSelection(GeneralSettings::tr(
"Last Manual Record Channel"),
"2");
3018 "When entering a new Manual Record Rule, "
3019 "the starting channel will default to this."));
3029 bc->setLabel(GeneralRecPrioritiesSettings::tr(
"Avoid back to back "
3033 GeneralRecPrioritiesSettings::tr(
"Selects the situations where the "
3034 "scheduler will avoid assigning shows "
3035 "to the same card if their end time "
3036 "and start time match. This will be "
3037 "allowed when necessary in order to "
3038 "resolve conflicts."));
3040 bc->addSelection(GeneralRecPrioritiesSettings::tr(
"Never"),
"0");
3041 bc->addSelection(GeneralRecPrioritiesSettings::tr(
"Different Channels"),
3043 bc->addSelection(GeneralRecPrioritiesSettings::tr(
"Always"),
"2");
3054 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Preferred input priority"));
3056 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3057 "a showing matches the "
3058 "preferred input selected "
3059 "in the 'Scheduling "
3060 "Options' section of the "
3061 "recording rule."));
3071 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"HDTV recording priority"));
3073 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3074 "a showing is marked as an "
3075 "HDTV broadcast in the TV "
3087 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Widescreen recording "
3090 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3091 "a showing is marked as "
3092 "widescreen in the TV "
3104 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Sign language recording "
3107 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority "
3108 "when a showing is "
3122 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"In-vision Subtitles "
3123 "Recording Priority"));
3125 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority "
3126 "when a showing is marked "
3127 "as having in-vision "
3139 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Subtitles/CC recording "
3142 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3143 "a showing is marked as "
3144 "having subtitles or "
3145 "closed captioning (CC) "
3157 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Hard of hearing priority"));
3159 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3160 "a showing is marked as "
3161 "having support for "
3162 "viewers with impaired "
3174 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Audio described priority"));
3176 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3177 "a showing is marked as "
3178 "being Audio Described."));
3189 ge->setLabel(EPGSettings::tr(
"Guide starts at channel"));
3193 ge->setHelpText(EPGSettings::tr(
"The program guide starts on this channel "
3194 "if it is run from outside of Live TV "
3195 "mode. Leave blank to enable Live TV "
3196 "automatic start channel."));
3205 gs->setLabel(EPGSettings::tr(
"Record threshold"));
3209 gs->setHelpText(EPGSettings::tr(
"Pressing SELECT on a show that is at "
3210 "least this many minutes into the future "
3211 "will schedule a recording."));
3219 gc->
setLabel(AppearanceSettings::tr(
"Menu Language"));
3222 QStringList langs = langMap.values();
3226 if (langCode.isEmpty())
3231 for (
const auto & label : std::as_const(langs))
3233 QString value = langMap.key(label);
3234 gc->
addSelection(label, value, (value.toLower() == langCode));
3237 gc->
setHelpText(AppearanceSettings::tr(
"Your preferred language for the "
3238 "user interface."));
3246 gc->
setLabel(AppearanceSettings::tr(
"Audio Language"));
3249 QStringList langs = langMap.values();
3253 if (langCode.isEmpty())
3256 langCode = menuLangCode.isEmpty() ?
"en_US" : menuLangCode;
3261 for (
const auto & label : std::as_const(langs))
3263 QString value = langMap.key(label);
3264 gc->
addSelection(label, value, (value.toLower() == langCode));
3267 gc->
setHelpText(AppearanceSettings::tr(
"Preferred language for the "
3275 QString q = QString(
"ISO639Language%1").arg(i);
3278 if ((lang.isEmpty() || lang ==
"aar") &&
3287 for (; it != ite; ++it)
3289 QString desc = (*it);
3290 int idx = desc.indexOf(
";");
3292 desc = desc.left(idx);
3303 gc->
setLabel(AppearanceSettings::tr(
"Guide language #%1").arg(i+1));
3309 gc->
setHelpText(AppearanceSettings::tr(
"Your #%1 preferred language for "
3310 "Program Guide data and captions.")
3319 gc->
setLabel(MainGeneralSettings::tr(
"Enable Network Remote Control "
3322 gc->
setHelpText(MainGeneralSettings::tr(
"This enables support for "
3323 "controlling MythFrontend "
3324 "over the network."));
3335 gs->setLabel(MainGeneralSettings::tr(
"Network Remote Control port"));
3339 gs->setHelpText(MainGeneralSettings::tr(
"This specifies what port the "
3340 "Network Remote Control "
3341 "interface will listen on for "
3342 "new connections."));
3350 ge->setLabel(MainGeneralSettings::tr(
"UDP notify port"));
3352 ge->setValue(
"6948");
3354 ge->setHelpText(MainGeneralSettings::tr(
"MythTV will listen for "
3355 "connections from the "
3356 "\"mythutil\" program on "
3365 gc->
setLabel(MainGeneralSettings::tr(
"Enable CEC Control "
3367 gc->
setHelpText(MainGeneralSettings::tr(
"This enables "
3368 "controlling MythFrontend from a TV remote or powering the TV "
3369 "on and off from a MythTV remote "
3370 "if you have compatible hardware. "
3371 "These settings only take effect after a restart."));
3379 gc->
setLabel(MainGeneralSettings::tr(
"Allow Power On TV"));
3380 gc->
setHelpText(MainGeneralSettings::tr(
"Enables your TV to be powered "
3381 "on from MythTV remote or when MythTV starts "
3382 "if you have compatible hardware."));
3390 gc->
setLabel(MainGeneralSettings::tr(
"Allow Power Off TV"));
3391 gc->
setHelpText(MainGeneralSettings::tr(
"Enables your TV to be powered "
3392 "off from MythTV remote or when MythTV starts "
3393 "if you have compatible hardware."));
3401 gc->
setLabel(MainGeneralSettings::tr(
"Power on TV At Start"));
3403 "on your TV when you start MythTV "
3404 "if you have compatible hardware."));
3412 gc->
setLabel(MainGeneralSettings::tr(
"Power off TV At Exit"));
3414 "off your TV when you exit MythTV "
3415 "if you have compatible hardware."));
3428 gc->
setLabel(MainGeneralSettings::tr(
"Enable AirPlay"));
3430 gc->
setHelpText(MainGeneralSettings::tr(
"AirPlay lets you wirelessly view "
3431 "content on your TV from your "
3432 "iPhone, iPad, iPod Touch, or "
3433 "iTunes on your computer."));
3444 gc->
setLabel(MainGeneralSettings::tr(
"Only support AirTunes (no video)"));
3446 gc->
setHelpText(MainGeneralSettings::tr(
"Only stream audio from your "
3447 "iPhone, iPad, iPod Touch, or "
3448 "iTunes on your computer"));
3459 gc->
setLabel(MainGeneralSettings::tr(
"Require password"));
3463 gc->
setHelpText(MainGeneralSettings::tr(
"Require a password to use "
3464 "AirPlay. Your iPhone, iPad, iPod "
3465 "Touch, or iTunes on your computer "
3466 "will prompt you when required"));
3474 ge->setLabel(MainGeneralSettings::tr(
"Password"));
3476 ge->setValue(
"0000");
3478 ge->setHelpText(MainGeneralSettings::tr(
"Your iPhone, iPad, iPod Touch, or "
3479 "iTunes on your computer will "
3480 "prompt you for this password "
3489 hc->setLabel(MainGeneralSettings::tr(
"AirPlay - Password"));
3490 hc->addChild(AirPlayPasswordEnabled());
3491 hc->addChild(AirPlayPassword());
3500 gc->
setLabel(MainGeneralSettings::tr(
"AirPlay full screen playback"));
3504 gc->
setHelpText(MainGeneralSettings::tr(
"During music playback, displays "
3505 "album cover and various media "
3506 "information in full screen mode"));
3544 gc->
setLabel(PlaybackSettings::tr(
"Enable realtime priority threads"));
3546 gc->
setHelpText(PlaybackSettings::tr(
"When running mythfrontend with root "
3547 "privileges, some threads can be "
3548 "given enhanced priority. Disable "
3549 "this if MythFrontend freezes during "
3550 "video playback."));
3560 ge->setLabel(MainGeneralSettings::tr(
"Ignore devices"));
3564 ge->setHelpText(MainGeneralSettings::tr(
"If there are any devices that you "
3565 "do not want to be monitored, list "
3566 "them here with commas in-between. "
3567 "The plugins will ignore them. "
3568 "Requires restart."));
3576 gc->
setLabel(PlaybackSettings::tr(
"Sort titles"));
3578 gc->
addSelection(PlaybackSettings::tr(
"Alphabetically"),
3580 gc->
addSelection(PlaybackSettings::tr(
"By recording priority"),
3583 gc->
setHelpText(PlaybackSettings::tr(
"Sets the title sorting order when "
3584 "the view is set to Titles only."));
3592 gc->
setLabel(WatchListSettings::tr(
"Include the 'Watch List' group"));
3596 gc->
setHelpText(WatchListSettings::tr(
"The 'Watch List' is an abbreviated "
3597 "list of recordings sorted to "
3598 "highlight series and shows that "
3599 "need attention in order to keep up "
3608 gc->
setLabel(WatchListSettings::tr(
"Start from the Watch List view"));
3612 gc->
setHelpText(WatchListSettings::tr(
"If enabled, the 'Watch List' will "
3613 "be the initial view each time you "
3614 "enter the Watch Recordings screen"));
3622 gc->
setLabel(WatchListSettings::tr(
"Exclude recordings not set for "
3627 gc->
setHelpText(WatchListSettings::tr(
"Set this if you turn off "
3628 "Auto-Expire only for recordings "
3629 "that you've seen and intend to "
3630 "keep. This option will exclude "
3631 "these recordings from the "
3640 gs->setLabel(WatchListSettings::tr(
"Maximum days counted in the score"));
3644 gs->setHelpText(WatchListSettings::tr(
"The 'Watch List' scores are based "
3645 "on 1 point equals one day since "
3646 "recording. This option limits the "
3647 "maximum score due to age and "
3648 "affects other weighting factors."));
3656 gs->setLabel(WatchListSettings::tr(
"Days to exclude weekly episodes after "
3661 gs->setHelpText(WatchListSettings::tr(
"When an episode is deleted or "
3662 "marked as watched, other episodes "
3663 "of the series are excluded from the "
3664 "'Watch List' for this interval of "
3665 "time. Daily shows also have a "
3666 "smaller interval based on this "
3675 gc->
setLabel(MainGeneralSettings::tr(
"Media Monitor"));
3677 gc->
setHelpText(MainGeneralSettings::tr(
"This enables support for "
3678 "monitoring your CD/DVD drives for "
3679 "new disks and launching the "
3680 "proper plugin to handle them. "
3681 "Requires restart."));
3694 gc->
setLabel(LcdSettings::tr(
"Display time"));
3696 gc->
setHelpText(LcdSettings::tr(
"Display current time on idle LCD "
3708 gc->
setLabel(LcdSettings::tr(
"Display recording status"));
3710 gc->
setHelpText(LcdSettings::tr(
"Display current recordings information "
3711 "on LCD display."));
3722 gc->
setLabel(LcdSettings::tr(
"Display menus"));
3724 gc->
setHelpText(LcdSettings::tr(
"Display selected menu on LCD display. "));
3735 gs->setLabel(LcdSettings::tr(
"Menu pop-up time"));
3737 gs->setHelpText(LcdSettings::tr(
"How many seconds the menu will remain "
3738 "visible after navigation."));
3749 gc->
setLabel(LcdSettings::tr(
"Display music artist and title"));
3751 gc->
setHelpText(LcdSettings::tr(
"Display playing artist and song title in "
3752 "MythMusic on LCD display."));
3763 gc->
setLabel(LcdSettings::tr(
"Items"));
3765 gc->
addSelection(LcdSettings::tr(
"Artist - Title"),
"ArtistTitle");
3766 gc->
addSelection(LcdSettings::tr(
"Artist [Album] Title"),
3767 "ArtistAlbumTitle");
3769 gc->
setHelpText(LcdSettings::tr(
"Which items to show when playing music."));
3778 gc->
setLabel(LcdSettings::tr(
"Display channel information"));
3780 gc->
setHelpText(LcdSettings::tr(
"Display tuned channel information on LCD "
3792 gc->
setLabel(LcdSettings::tr(
"Display volume information"));
3794 gc->
setHelpText(LcdSettings::tr(
"Display volume level information "
3795 "on LCD display."));
3806 gc->
setLabel(LcdSettings::tr(
"Display generic information"));
3808 gc->
setHelpText(LcdSettings::tr(
"Display generic information on LCD display."));
3819 gc->
setLabel(LcdSettings::tr(
"Backlight always on"));
3821 gc->
setHelpText(LcdSettings::tr(
"Turn on the backlight permanently on the "
3832 gc->
setLabel(LcdSettings::tr(
"Heartbeat always on"));
3834 gc->
setHelpText(LcdSettings::tr(
"Turn on the LCD heartbeat."));
3845 gc->
setLabel(LcdSettings::tr(
"Display large clock"));
3847 gc->
setHelpText(LcdSettings::tr(
"On multiline displays try and display the "
3848 "time as large as possible."));
3859 ge->setLabel(LcdSettings::tr(
"LCD key order"));
3861 ge->setValue(
"ABCDEF");
3864 LcdSettings::tr(
"Enter the 6 Keypad Return Codes for your LCD keypad "
3865 "in the order in which you want the functions "
3866 "up/down/left/right/yes/no to operate. (See "
3867 "lcdproc/server/drivers/hd44780.c/keyMapMatrix[] "
3868 "or the matrix for your display)"));
3876 gc->
setLabel(LcdSettings::tr(
"Enable LCD device"));
3878 gc->
setHelpText(LcdSettings::tr(
"Use an LCD display to view MythTV status "
3904 gc->
setLabel(PlaybackSettings::tr(
"Enable gamma correction for video"));
3908 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, QuickTime will correct "
3909 "the gamma of the video to match "
3910 "your monitor. Turning this off can "
3911 "save some CPU cycles."));
3919 gc->
setLabel(PlaybackSettings::tr(
"Scale video as necessary"));
3923 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, video will be scaled to "
3924 "fit your window or screen. If "
3925 "unchecked, video will never be made "
3926 "larger than its actual pixel size."));
3934 gs->
setLabel(PlaybackSettings::tr(
"Frames to skip in fullscreen mode"));
3938 gs->
setHelpText(PlaybackSettings::tr(
"Video displayed in fullscreen or "
3939 "non-windowed mode will skip this "
3940 "many frames for each frame drawn. "
3941 "Set to 0 to show every frame. Only "
3942 "valid when either \"Use GUI size for "
3943 "TV playback\" or \"Run the frontend "
3944 "in a window\" is not checked."));
3952 gc->
setLabel(MacMainSettings::tr(
"Video in main window"));
3956 gc->
setHelpText(MacMainSettings::tr(
"If enabled, video will be displayed "
3957 "in the main GUI window. Disable this "
3958 "when you only want video on the "
3959 "desktop or in a floating window. Only "
3960 "valid when \"Use GUI size for TV "
3961 "playback\" and \"Run the frontend in "
3962 "a window\" are checked."));
3970 gs->
setLabel(MacMainSettings::tr(
"Frames to skip"));
3974 gs->
setHelpText(MacMainSettings::tr(
"Video in the main window will skip "
3975 "this many frames for each frame "
3976 "drawn. Set to 0 to show every "
3985 gs->
setLabel(MacMainSettings::tr(
"Opacity"));
3989 gs->
setHelpText(MacMainSettings::tr(
"The opacity of the main window. Set "
3990 "to 100 for completely opaque, set "
3991 "to 0 for completely transparent."));
3999 gc->
setLabel(MacFloatSettings::tr(
"Video in floating window"));
4003 gc->
setHelpText(MacFloatSettings::tr(
"If enabled, video will be displayed "
4004 "in a floating window. Only valid "
4005 "when \"Use GUI size for TV "
4006 "playback\" and \"Run the frontend "
4007 "in a window\" are checked."));
4015 gs->
setLabel(MacFloatSettings::tr(
"Frames to skip"));
4019 gs->
setHelpText(MacFloatSettings::tr(
"Video in the floating window will "
4020 "skip this many frames for each "
4021 "frame drawn. Set to 0 to show "
4030 gs->
setLabel(MacFloatSettings::tr(
"Opacity"));
4034 gs->
setHelpText(MacFloatSettings::tr(
"The opacity of the floating window. "
4035 "Set to 100 for completely opaque, "
4036 "set to 0 for completely "
4045 gc->
setLabel(MacDockSettings::tr(
"Video in the dock"));
4049 gc->
setHelpText(MacDockSettings::tr(
"If enabled, video will be displayed "
4050 "in the application's dock icon. Only "
4051 "valid when \"Use GUI size for TV "
4052 "playback\" and \"Run the frontend in "
4053 "a window\" are checked."));
4061 gs->
setLabel(MacDockSettings::tr(
"Frames to skip"));
4065 gs->
setHelpText(MacDockSettings::tr(
"Video in the dock icon will skip this "
4066 "many frames for each frame drawn. Set "
4067 "to 0 to show every frame."));
4075 gc->
setLabel(MacDesktopSettings::tr(
"Video on the desktop"));
4079 gc->
setHelpText(MacDesktopSettings::tr(
"If enabled, video will be "
4080 "displayed on the desktop, "
4081 "behind the Finder icons. "
4082 "Only valid when \"Use GUI "
4083 "size for TV playback\" and "
4084 "\"Run the frontend in a "
4085 "window\" are checked."));
4093 gs->
setLabel(MacDesktopSettings::tr(
"Frames to skip"));
4097 gs->
setHelpText(MacDesktopSettings::tr(
"Video on the desktop will skip "
4098 "this many frames for each frame "
4099 "drawn. Set to 0 to show every "
4124 setLabel(MainGeneralSettings::tr(
"Shutdown/Reboot Settings"));
4212 pin->setLabel(tr(
"Settings Access"));
4217 general->setLabel(tr(
"General"));
4222 if (sh->hasPrefixes()) {
4227 general->addChild(SortCaseSensitive());
4230 general->addChild(stripPrefixes);
4241 remotecontrol->setLabel(tr(
"Remote Control"));
4248 remotecontrol->addChild(cec);
4250 m_cecPowerOnTVAllowed = CECPowerOnTVAllowed();
4251 m_cecPowerOffTVAllowed = CECPowerOffTVAllowed();
4252 m_cecPowerOnTVOnStart = CECPowerOnTVOnStart();
4253 m_cecPowerOffTVOnExit = CECPowerOffTVOnExit();
4259 this, &MainGeneralSettings::cecChanged);
4261 this, &MainGeneralSettings::cecChanged);
4267 airplay->setLabel(tr(
"AirPlay Settings"));
4268 airplay->addChild(AirPlayEnabled());
4269 airplay->addChild(AirPlayFullScreen());
4270 airplay->addChild(AirPlayAudioOnly());
4271 airplay->addChild(AirPlayPasswordSettings());
4279void MainGeneralSettings::cecChanged(
bool )
4281 if (m_cecPowerOnTVAllowed->boolValue())
4282 m_cecPowerOnTVOnStart->setEnabled(
true);
4285 m_cecPowerOnTVOnStart->setEnabled(
false);
4286 m_cecPowerOnTVOnStart->setValue(
false);
4289 if (m_cecPowerOffTVAllowed->boolValue())
4290 m_cecPowerOffTVOnExit->setEnabled(
true);
4293 m_cecPowerOffTVOnExit->setEnabled(
false);
4294 m_cecPowerOffTVOnExit->setValue(
false);
4301 QStringList strlist( QString(
"REFRESH_BACKEND") );
4303 LOG(VB_GENERAL, LOG_ERR, QString(
"%1 called").arg(__FUNCTION__));
4326 setLabel(PlaybackSettings::tr(
"Scaling"));
4350 item->
SetText(PlaybackSettings::tr(
"No scaling"),
"value");
4354 item->
SetText(QString(
"%1%x%2%+%3%+%4%")
4387 auto *
menu =
new MythMenu(tr(
"Playback Profile Menu"),
this,
"mainmenu");
4399 menuPopup->SetReturnEvent(
this,
"mainmenu");
4401 if (menuPopup->Create())
4417 config->DecreasePriority();
4434 config->IncreasePriority();
4456 general->setLabel(tr(
"General Playback"));
4476 advanced->setLabel(tr(
"Advanced Playback Settings"));
4482 advanced->addChild(VAAPIDevice());
4497 pbox->setLabel(tr(
"View Recordings"));
4506 pbox2->setLabel(tr(
"Recording Groups"));
4512 pbox->addChild(pbox2);
4521 pbox->addChild(playbackWatchList);
4525 seek->setLabel(tr(
"Seeking"));
4533 comms->setLabel(tr(
"Commercial Skip"));
4544 mac->
setLabel(tr(
"Mac OS X Video Settings"));
4599 general->setLabel(tr(
"General (Basic)"));
4608 autoexp->setLabel(tr(
"General (Auto-Expire)"));
4626 jobs->setLabel(tr(
"General (Jobs)"));
4637 general2->setLabel(tr(
"General (Advanced)"));
4649 changrp->setLabel(tr(
"General (Channel Groups)"));
4670 sched->setLabel(tr(
"Scheduler Options"));
4681 access->setLabel(tr(
"Accessibility Options"));
4710 setLabel(AppearanceSettings::tr(
"GUI dimension"));
4733 item->
SetText(AppearanceSettings::tr(
"Fullscreen"),
"value");
4737 item->
SetText(QString(
"%1x%2+%3+%4")
4753 QCoreApplication::processEvents();
4760 QList screens = QGuiApplication::screens();
4761 for (QScreen *qscreen : std::as_const(screens))
4776 screen->setLabel(tr(
"Theme / Screen Settings"));
4802 screen->addChild(AirPlayFullScreen());
4808 std::vector<MythDisplayMode> scr = display->
GetVideoModes();
4815 dates->setLabel(tr(
"Localization"));
4837 gc->
setLabel(AppearanceSettings::tr(
"Select from Channel Group"));
4838 gc->addSelection(
"All Channels");
4842 for (
const auto &chgrp : list)
4844 gc->addSelection(chgrp.m_name);
4847 "Select the channel group to select channels from. "
4848 "\"All Channels\" lets you choose from all channels of all video sources. "
4849 "\"Priority\" lets you choose from all channels that have recording priority. "
4850 "The other values let you select a video source to choose channels from."));
4858 const QString &channum,
const QString &name);
4866 const QString &channum,
const QString &channame)
4867 : m_channelId(chanid)
4869 setLabel(QString(
"%1 %2").arg(channum, channame));
4870 setHelpText(ChannelGroupSettings::tr(
"Select/Unselect channels for this channel group"));
4875 : m_groupId(groupId),
4878 setLabel(groupName ==
"Favorites" ? tr(
"Favorites") : groupName);
4908 QList<StandardSetting *>::const_iterator i;
4909 for (i = children->constBegin(); i != children->constEnd(); ++i)
4911 if ((*i)->haveChanged())
4918 if (channel->boolValue())
4940 LOG(VB_GENERAL, LOG_INFO,
4941 QString(
"ChannelGroupSetting::LoadChannelGroup group:%1 groupId:%2")
4942 .arg(group).arg(groupId));
4948 it.second->setVisible(
false);
4965 if (fromGroupId == -1)
4968 "SELECT channel.chanid, channum, name, grpid FROM channel "
4969 "LEFT JOIN channelgroup "
4970 "ON (channel.chanid = channelgroup.chanid AND grpid = :GRPID) "
4971 "WHERE deleted IS NULL "
4973 "ORDER BY channum+0; ");
4979 "SELECT channel.chanid, channum, name, cg2.grpid FROM channel "
4980 "RIGHT JOIN channelgroup AS cg1 "
4981 "ON (channel.chanid = cg1.chanid AND cg1.grpid = :FROMGRPID) "
4982 "LEFT JOIN channelgroup AS cg2 "
4983 "ON (channel.chanid = cg2.chanid AND cg2.grpid = :GRPID) "
4984 "WHERE deleted IS NULL "
4986 "ORDER BY channum+0; ");
4988 query.
bindValue(
":FROMGRPID", fromGroupId);
4992 MythDB::DBError(
"ChannelGroupSetting::LoadChannelGroupChannels", query);
4995 while (query.
next())
4997 auto chanid = query.
value(0).toUInt();
4998 auto channum = query.
value(1).toString();
4999 auto name = query.
value(2).toString();
5000 auto checked = !query.
value(3).isNull();
5001 auto pair = std::make_pair(
m_groupId, chanid);
5007 checkBox = it->second;
5054 query.
prepare(
"DELETE FROM channelgroup WHERE grpid = :GRPID;");
5060 query.
prepare(
"DELETE FROM channelgroupnames WHERE grpid = :GRPID;");
5080 for (
auto it = list.begin(); it < list.end(); ++it)
5082 QString name = (it->m_name ==
"Favorites") ? tr(
"Favorites") : it->m_name;
5097 tr(
"Enter the name of the new channel group"));
5099 if (settingdialog->Create())
5107 delete settingdialog;
5114 button->setLabel(name);
std::vector< ChannelGroupItem > ChannelGroupList
void PopulateScreens(int Screens)
void applyChange() override
HostComboBoxSetting * m_screenAspect
HostComboBoxSetting * m_screen
uint getChannelId() const
ChannelCheckBoxSetting(uint chanid, const QString &channum, const QString &name)
TransTextEditSetting * m_groupName
ChannelGroupSetting(const QString &groupName, int groupId)
std::map< std::pair< int, uint >, TransMythUICheckBoxSetting * > m_boxMap
HostComboBoxSetting * m_groupSelection
void LoadChannelGroup(void)
void LoadChannelGroupChannels(void)
void deleteEntry(void) override
bool canDelete(void) override
static ChannelGroupList GetAutomaticChannelGroups(bool includeEmpty=true)
static bool AddChannel(uint chanid, int changrpid)
static ChannelGroupList GetChannelGroups(bool includeEmpty=true)
static bool DeleteChannel(uint chanid, int changrpid)
static ChannelGroupList GetManualChannelGroups(bool includeEmpty=true)
static int GetChannelGroupId(const QString &changroupname)
static int AddChannelGroup(const QString &groupName)
static bool UpdateChannelGroup(const QString &oldName, const QString &newName)
void ShowNewGroupDialog(void) const
void CreateNewGroup(const QString &name)
GeneralRecPrioritiesSettings()
void updateButton(MythUIButtonListItem *item) override
This method is called whenever the UI need to reflect a change Reimplement this If you widget need a ...
void updateButton(MythUIButtonListItem *item) override
This method is called whenever the UI need to reflect a change Reimplement this If you widget need a ...
StandardSetting * m_offsetX
StandardSetting * m_height
void childChanged(StandardSetting *) override
StandardSetting * m_offsetY
StandardSetting * m_width
static std::vector< double > GetRefreshRates(const QString &resolution)
virtual void ChangeResolution(StandardSetting *setting)
QSqlQuery wrapper that fetches a DB connection from the connection pool.
bool prepare(const QString &query)
QSqlQuery::prepare() is not thread safe in Qt <= 3.3.2.
QVariant value(int i) const
bool isActive(void) const
bool exec(void)
Wrap QSqlQuery::exec() so we can display SQL.
void bindValue(const QString &placeholder, const QVariant &val)
Add a single binding.
bool next(void)
Wrap QSqlQuery::next() so we can display the query results.
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
void applyChange() override
Dialog asking for user confirmation.
QString GetHostName(void)
QString GetSetting(const QString &key, const QString &defaultval="")
bool SendReceiveStringList(QStringList &strlist, bool quickTimeout=false, bool block=true)
Send a message to the backend and wait for a response.
QString GetLanguage(void)
Returns two character ISO-639 language descriptor for UI language.
void GetResolutionSetting(const QString &type, int &width, int &height, double &forced_aspect, double &refresh_rate, int index=-1)
static void DBError(const QString &where, const MSqlQuery &query)
Basic menu dialog, message and a list of options.
static int FindBestMatch(const MythDisplayModes &Modes, const MythDisplayMode &Mode, double &TargetRate)
MythDisplayRates GetRefreshRates(QSize Size)
virtual bool VideoModesAvailable()
void ScreenCountChanged(int Screens)
virtual const MythDisplayModes & GetVideoModes()
static QString GetExtraScreenInfo(QScreen *qScreen)
static int GetScreenCount()
MythDisplay * GetDisplay()
void JumpTo(const QString &Destination, bool Pop=true)
MythScreenStack * GetStack(const QString &Stackname)
static MUI_PUBLIC QStringList GetPainters()
static MUI_PUBLIC QString GetDefaultPainter()
bool IsFeatureSupported(Feature Supported)
static MythPower * AcquireRelease(void *Reference, bool Acquire, std::chrono::seconds MinimumDelay=0s)
QStringList GetFeatureList(void)
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
static MythSystem * Create(const QStringList &args, uint flags=kMSNone, const QString &startPath=QString(), Priority cpuPriority=kInheritPriority, Priority diskPriority=kInheritPriority)
Dialog prompting the user to enter a text string.
static QMap< QString, QString > getLanguages(void)
void setValue(const QString &newValue) override
void updateButton(MythUIButtonListItem *item) override
This method is called whenever the UI need to reflect a change Reimplement this If you widget need a ...
virtual int size(void) const
void addSelection(const QString &label, QString value=QString(), bool select=false)
void setValue(int value) override
static bool WindowIsAlwaysFullscreen()
Return true if the current platform only supports fullscreen windows.
QList< ThemeInfo > GetThemes(ThemeType Type)
static QString HaveVAAPI(bool ReCheck=false)
Check whether VAAPI is available and not emulated via VDPAU.
void Set(const QString &Value, const QString &Data)
bool CheckRange(const QString &Key, float Value, bool *Ok=nullptr) const
QString Get(const QString &Value) const
static QString GetDecoderHelp(const QString &Decoder=QString())
static QStringList GetDecoders()
static QString GetDefaultProfileName(const QString &HostName)
static void CreateProfiles(const QString &HostName)
static uint CreateProfileGroup(const QString &ProfileName, const QString &HostName)
static bool DeleteDB(uint GroupId, const std::vector< MythVideoProfileItem > &Items)
static bool SaveDB(uint GroupId, std::vector< MythVideoProfileItem > &Items)
static uint GetProfileGroupID(const QString &ProfileName, const QString &HostName)
static const QList< QPair< QString, QString > > & GetDeinterlacers()
static std::vector< std::pair< QString, QString > > GetUpscalers()
static void SetDefaultProfileName(const QString &ProfileName, const QString &HostName)
static void InitStatics(bool Reinit=false)
static QString GetPreferredVideoRenderer(const QString &Decoder)
static QStringList GetProfiles(const QString &HostName)
static std::vector< MythVideoProfileItem > LoadDB(uint GroupId)
static QStringList GetDecoderNames()
static bool DeleteProfileGroup(const QString &GroupName, const QString &HostName)
static QString GetVideoRendererName(const QString &Renderer)
static QStringList GetVideoRenderers(const QString &Decoder)
static QString GetVideoRendererHelp(const QString &Renderer)
static QString GetDecoderName(const QString &Decoder)
void childChanged(StandardSetting *) override
void updateButton(MythUIButtonListItem *item) override
This method is called whenever the UI need to reflect a change Reimplement this If you widget need a ...
StandardSetting * m_horizScan
StandardSetting * m_yScan
StandardSetting * m_vertScan
StandardSetting * m_xScan
std::vector< PlaybackProfileItemConfig * > m_profiles
PlaybackProfileConfig(QString profilename, StandardSetting *parent)
TransMythUICheckBoxSetting * m_markForDeletion
void swap(int indexA, int indexB)
std::vector< MythVideoProfileItem > m_items
void DeleteProfileItem(PlaybackProfileItemConfig *profile)
ButtonStandardSetting * m_addNewEntry
void InitUI(StandardSetting *parent)
std::vector< MythVideoProfileItem > m_delItems
void ReloadSettings(void)
StandardSetting * InitProfileItem(uint i, StandardSetting *parent)
void decoderChanged(const QString &dec)
TransTextEditSetting * m_heightRange
void framerateChanged(const QString &val)
TransMythUICheckBoxSetting * m_skipLoop
static QString GetQuality(TransMythUIComboBoxSetting *Deint, TransMythUICheckBoxSetting *Shader, TransMythUICheckBoxSetting *Driver)
TransMythUIComboBoxSetting * m_singleDeint
TransTextEditSetting * m_widthRange
TransTextEditSetting * m_framerate
void DoDeleteSlot(bool doDelete)
void DecreasePriority(void)
TransMythUICheckBoxSetting * m_doubleDriver
TransMythUIComboBoxSetting * m_upscaler
void DoubleQualityChanged(const QString &Quality)
MythVideoProfileItem & m_item
MythUIComboBoxSetting * m_codecs
PlaybackProfileConfig * m_parentConfig
void widthChanged(const QString &val)
TransMythUICheckBoxSetting * m_singleDriver
uint GetIndex(void) const
TransMythUICheckBoxSetting * m_singleShader
TransMythUICheckBoxSetting * m_doubleShader
static void LoadQuality(TransMythUIComboBoxSetting *Deint, TransMythUICheckBoxSetting *Shader, TransMythUICheckBoxSetting *Driver, QString &Value)
Parse the required deinterlacing quality and preferences.
bool keyPressEvent(QKeyEvent *e) override
PlaybackProfileItemConfig(PlaybackProfileConfig *parent, uint idx, MythVideoProfileItem &_item)
TransMythUIComboBoxSetting * m_doubleDeint
TransMythUISpinBoxSetting * m_maxCpus
TransMythUIComboBoxSetting * m_decoder
void vrenderChanged(const QString &renderer)
void heightChanged(const QString &val)
void ShowDeleteDialog(void) const
void IncreasePriority(void)
void SingleQualityChanged(const QString &Quality)
TransMythUIComboBoxSetting * m_vidRend
void DeleteProfileItem(void)
void MoveProfileItemDown(void)
void ShowPlaybackProfileMenu(MythUIButtonListItem *item)
void ShowMenu(void) override
void MoveProfileItemUp(void)
PlaybackSettingsDialog(MythScreenStack *stack)
void NewPlaybackProfileSlot(void) const
MythUIComboBoxSetting * m_playbackProfiles
void CreateNewPlaybackProfileSlot(const QString &name)
ButtonStandardSetting * m_newPlaybackProfileButton
static QString i18n(const QString &msg)
Translations for play,recording, & storage groups +.
void childChanged(StandardSetting *) override
StandardSetting * m_rebootCommand
StandardSetting * m_overrideExitMenu
StandardSetting * m_confirmCommand
StandardSetting * m_suspendCommand
StandardSetting * m_haltCommand
MythUIButtonList * m_buttonList
virtual void addChild(StandardSetting *child)
bool isVisible(void) const
virtual void setReadOnly(bool readonly)
void addTargetedChild(const QString &value, StandardSetting *setting)
virtual void clearSettings()
void settingsChanged(StandardSetting *selectedSetting=nullptr)
virtual void setHelpText(const QString &str)
QString getLabel(void) const
StandardSetting * getParent() const
void ShouldRedraw(StandardSetting *setting)
void setVisible(bool visible)
virtual QList< StandardSetting * > * getSubSettings()
bool haveChanged()
Return true if the setting have changed or any of its children.
virtual void setValue(const QString &newValue)
void removeTargetedChild(const QString &value, StandardSetting *child)
void valueChanged(const QString &newValue)
virtual QString getValue(void) const
virtual void setEnabled(bool enabled)
virtual void setLabel(QString str)
void setChanged(bool changed)
void updateButton(MythUIButtonListItem *item) override
This method is called whenever the UI need to reflect a change Reimplement this If you widget need a ...
VideoModeSettings(const char *c)
static QStringList GetVisualiserList(RenderType type)
static GlobalSpinBoxSetting * RecordPreRoll()
static HostCheckBoxSetting * LCDShowMusic()
static HostCheckBoxSetting * LCDShowVolume()
static HostCheckBoxSetting * LCDBigClock()
static GlobalSpinBoxSetting * DeletedMaxAge()
static HostSpinBoxSetting * GuiHeight()
static HostCheckBoxSetting * LCDShowRecStatus()
static HostSpinBoxSetting * LiveTVIdleTimeout()
static GlobalSpinBoxSetting * GRSignLangRecPriority()
static GlobalSpinBoxSetting * GROnScrSubRecPriority()
static HostSpinBoxSetting * StartupScreenDelay()
static HostCheckBoxSetting * LCDEnable()
static HostCheckBoxSetting * BrowseAllTuners()
static HostCheckBoxSetting * JumpToProgramOSD()
static HostCheckBoxSetting * PlaybackWatchList()
static GlobalSpinBoxSetting * GRHDTVRecPriority()
static GlobalSpinBoxSetting * MaximumCommercialSkip()
static HostCheckBoxSetting * SmartForward()
static GlobalSpinBoxSetting * MaxStartGap()
static HostCheckBoxSetting * AlwaysOnTop()
static HostTextEditSetting * LCDKeyString()
static GlobalComboBoxSetting * ISO639PreferredLanguage(uint i)
static GlobalComboBoxSetting * OverTimeCategory()
static HostCheckBoxSetting * EnableMHEG()
static HostComboBoxSetting * ChannelFormat()
static HostComboBoxSetting * MenuTheme()
static HostCheckBoxSetting * PersistentBrowseMode()
static HostComboBoxSetting * Visualiser()
static HostSpinBoxSetting * FrontendIdleTimeout()
static HostComboBoxSetting * ColourPrimaries()
static GlobalComboBoxSetting * MythLanguage()
static HostCheckBoxSetting * PlaybackWLStart()
static HostTextEditSetting * DefaultTVChannel()
static HostCheckBoxSetting * UseVirtualKeyboard()
static HostComboBoxSetting * ScreenSelection()
static HostCheckBoxSetting * EnableMHEGic()
static GlobalSpinBoxSetting * AutoExpireExtraSpace()
static HostCheckBoxSetting * EnableMediaMon()
static HostCheckBoxSetting * AutomaticSetWatched()
static HostCheckBoxSetting * LCDBacklightOn()
static HostTextEditSetting * ScreenShotPath()
static HostComboBoxSetting * AutomaticChannelGroupSelection()
static HostComboBoxSetting * GuiVidModeResolution()
static HostTextEditSetting * IgnoreMedia()
static HostSpinBoxSetting * PlaybackWLMaxAge()
static GlobalCheckBoxSetting * RerecordWatched()
static HostCheckBoxSetting * LCDShowChannel()
static HostCheckBoxSetting * ChannelGroupRememberLast()
static HostCheckBoxSetting * ChromaUpsampling()
static HostSpinBoxSetting * GuiWidth()
static GlobalSpinBoxSetting * GRCCRecPriority()
static HostTextEditSetting * HaltCommand(MythPower *Power)
static GlobalSpinBoxSetting * AutoExpireLiveTVMaxAge()
static GlobalSpinBoxSetting * GRWSRecPriority()
static HostComboBoxSetting * ChannelGroupDefault()
static HostComboBoxSetting * LCDShowMusicItems()
static GlobalComboBoxSetting * ManualRecordStartChanType()
static HostCheckBoxSetting * ForceFullScreen()
static HostCheckBoxSetting * ConfirmPowerEvent()
static GlobalSpinBoxSetting * RecordOverTime()
static GlobalComboBoxSetting * AutoExpireMethod()
static GlobalSpinBoxSetting * MergeShortCommBreaks()
static HostCheckBoxSetting * RecGroupMod()
static HostCheckBoxSetting * PBBStartInTitle()
static GlobalSpinBoxSetting * GRPrefInputRecPriority()
static HostComboBoxSetting * ScreenAspectRatio()
static HostCheckBoxSetting * LCDShowMenu()
static HostCheckBoxSetting * BrowseChannelGroup()
static HostComboBoxSetting * ChannelOrdering()
static HostCheckBoxSetting * LCDShowTime()
static GlobalSpinBoxSetting * GRHardHearRecPriority()
static HostComboBoxSetting * TVVidModeResolution(int idx=-1)
static HostSpinBoxSetting * VertScanPercentage()
static HostSpinBoxSetting * PlaybackWLBlackOut()
static HostComboBoxSetting * PlayBoxOrdering()
static HostComboBoxSetting * LongChannelFormat()
static HostSpinBoxSetting * XScanDisplacement()
static HostCheckBoxSetting * EndOfRecordingExitPrompt()
static HostCheckBoxSetting * RunInWindow()
static HostComboBoxSetting * AutoCommercialSkip()
static HostCheckBoxSetting * RealtimePriority()
static HostTextEditSetting * UDPNotifyPort()
static HostCheckBoxSetting * ContinueEmbeddedTVPlay()
static HostCheckBoxSetting * HideMouseCursor()
static HostTextEditSetting * SetupPinCode()
static HostTextEditSetting * SuspendCommand(MythPower *Power)
static HostRefreshRateComboBoxSetting * TVVidModeRefreshRate(int idx=-1)
static HostComboBoxSetting * DisplayRecGroup()
static GlobalComboBoxSetting * GRSchedOpenEnd()
static HostComboBoxSetting * LetterboxingColour()
static GlobalSpinBoxSetting * GRAudioDescRecPriority()
static HostComboBoxSetting * PlaybackExitPrompt()
static GroupSetting * CategoryOverTimeSettings()
static GlobalCheckBoxSetting * AggressiveCommDetect()
static HostTextEditSetting * LircDaemonDevice()
static HostComboBoxSetting * OverrideExitMenu(MythPower *Power)
static HostComboBoxSetting * TVVidModeForceAspect(int idx=-1)
static HostComboBoxSetting * MythTimeFormat()
static HostCheckBoxSetting * UseVideoModes()
static GlobalTextEditSetting * SortPrefixExceptions()
static HostSpinBoxSetting * AudioReadAhead()
static GlobalCheckBoxSetting * CommFlagFast()
static HostCheckBoxSetting * LCDHeartBeatOn()
static GlobalSpinBoxSetting * CategoryOverTime()
static HostCheckBoxSetting * LCDShowGeneric()
static HostSpinBoxSetting * NetworkControlPort()
static HostSpinBoxSetting * VidModeWidth(int idx)
static HostCheckBoxSetting * DefaultCCMode()
static void ISO639_fill_selections(MythUIComboBoxSetting *widget, uint i)
static HostComboBoxSetting * MythShortDateFormat()
static void AddPaintEngine(GroupSetting *Group)
static GlobalSpinBoxSetting * DeferAutoTranscodeDays()
static HostComboBoxSetting * AdjustFill()
static HostSpinBoxSetting * VideoModeChangePause(void)
static HostCheckBoxSetting * GUIRGBLevels()
static HostCheckBoxSetting * NetworkControlEnabled()
static HostSpinBoxSetting * VidModeHeight(int idx)
static HostCheckBoxSetting * MusicChoiceEnabled()
static HostSpinBoxSetting * FFRewReposTime()
static GlobalCheckBoxSetting * SortStripPrefixes()
static HostSpinBoxSetting * EPGRecThreshold()
static HostComboBoxSetting * DisplayGroupTitleSort()
static HostSpinBoxSetting * YScanDisplacement()
static HostCheckBoxSetting * StereoDiscard()
static GlobalComboBoxSetting * AudioLanguage()
static GlobalSpinBoxSetting * AutoExpireDayPriority()
static GlobalSpinBoxSetting * MinimumRecordingQuality()
static HostCheckBoxSetting * SmoothTransitions()
static HostComboBoxSetting * CurrentPlaybackProfile()
static HostSpinBoxSetting * GuiOffsetX()
static HostComboBoxSetting * AspectOverride()
static HostSpinBoxSetting * LCDPopupTime()
static HostCheckBoxSetting * UseProgStartMark()
static HostCheckBoxSetting * PlaybackWLAutoExpire()
static GlobalComboBoxSetting * CommercialSkipMethod()
static HostCheckBoxSetting * QueryInitialFilter()
static HostCheckBoxSetting * RememberRecGroup()
static HostSpinBoxSetting * CommRewindAmount()
static HostCheckBoxSetting * FFRewReverse()
static GlobalCheckBoxSetting * AutoExpireWatchedPriority()
static HostSpinBoxSetting * CommNotifyAmount()
static HostSpinBoxSetting * HorizScanPercentage()
static HostComboBoxSetting * PlayBoxEpisodeSort()
static HostTextEditSetting * RebootCommand(MythPower *Power)
static HostSpinBoxSetting * GuiOffsetY()
static HostComboBoxSetting * MythDateFormatCB()
static GlobalSpinBoxSetting * MaxEndGap()
static HostComboBoxSetting * SubtitleCodec()
static HostCheckBoxSetting * AlwaysShowWatchedProgress()
static HostSpinBoxSetting * GUIFontZoom()
static HostCheckBoxSetting * GuiSizeForTV()
QMap< int, QString > iso639_key_to_english_name
QString iso639_str2_to_str3(const QString &str2)
ISO 639-1 and ISO 639-2 support functions.
static QString iso639_key_to_str3(int code)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
MythConfirmationDialog * ShowOkPopup(const QString &message, bool showCancel)
Non-blocking version of MythPopupBox::showOkPopup()
static bool VERBOSE_LEVEL_CHECK(uint64_t mask, LogLevel_t level)
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
MythMainWindow * GetMythMainWindow(void)
std::shared_ptr< MythSortHelper > getMythSortHelper(void)
Get a pointer to the MythSortHelper singleton.
void resetMythSortHelper(void)
Delete the MythSortHelper singleton.
@ kMSStdOut
allow access to stdout
@ kMSDontDisableDrawing
avoid disabling UI drawing
QMap< QString, bool > Setting
static MythThemedMenu * menu
MythUIHelper * GetMythUI()
static constexpr const char * PREF_DEC
static constexpr const char * PREF_DEINT1X
static constexpr const char * DEINT_QUALITY_MEDIUM
static constexpr const char * DEINT_QUALITY_HIGH
static constexpr const char * DEINT_QUALITY_SHADER
static constexpr const char * PREF_LOOP
static constexpr const char * DEINT_QUALITY_LOW
static constexpr const char * PREF_UPSCALE
static constexpr const char * COND_RATE
static constexpr const char * COND_CODECS
static constexpr const char * PREF_CPUS
static constexpr const char * DEINT_QUALITY_NONE
static constexpr const char * COND_HEIGHT
static constexpr const char * PREF_RENDER
static constexpr const char * PREF_DEINT2X
static constexpr uint VIDEO_MAX_CPUS
static constexpr const char * UPSCALE_DEFAULT
static constexpr const char * DEINT_QUALITY_DRIVER
static constexpr const char * COND_WIDTH
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.
QDateTime current(bool stripped)
Returns current Date and Time in UTC.
std::deque< int > GetPreferredSkipTypeCombinations(void)
QString SkipTypeToString(int flags)
VERBOSE_PREAMBLE Most true
QString toDBString(PrimariesMode Mode)
@ kAdjustFill_AutoDetect_DefaultHalf
@ kAdjustFill_AutoDetect_DefaultOff
QString toUserString(PrimariesMode Mode)