11 #include <QApplication>
18 #include <QFontDatabase>
27 #include "libmythbase/mythconfig.h"
63 gc->setLabel(PlaybackSettings::tr(
"Audio read ahead (ms)"));
67 gc->setHelpText(PlaybackSettings::tr(
68 "Increase this value if audio cuts out frequently. This is more "
69 "likely to occur when adjusting audio sync to a negative value. "
70 "If using high negative audio sync values you may need to set a large "
71 "value here. Default is 100."));
78 gc->setLabel(PlaybackSettings::tr(
"Primary colourspace conversion"));
82 gc->setHelpText(PlaybackSettings::tr(
83 "Converting between different primary colourspaces incurs a small "
84 "performance penalty but in some situations the difference in output is "
85 "negligible. The default ('Auto') behaviour is to only enforce "
86 "this conversion when there is a significant difference between source "
87 "colourspace primaries and the display."));
94 gc->setLabel(PlaybackSettings::tr(
"Enable Chroma Upsampling Filter when deinterlacing"));
95 gc->setHelpText(PlaybackSettings::tr(
96 "The 'Chroma upsampling error' affects the quality of interlaced material "
97 "for the most common, standard video formats and results in jagged/indistinct "
98 "edges to brightly coloured areas of video. This filter attempts to fix "
99 "the problem in the OpenGL shaders. It adds a small amount of overhead to "
100 "video rendering but may not be suitable in all cases. Enabled by default."));
110 ge->setLabel(MainGeneralSettings::tr(
"Decoder Device for VAAPI hardware decoding"));
114 QString
help = MainGeneralSettings::tr(
115 "Use this if your system does not detect the VAAPI device. "
116 "Example: '/dev/dri/renderD128'.");
118 ge->setHelpText(
help);
125 LOG(VB_GENERAL, LOG_INFO, QString(
"New VAAPI device (%1) - resetting profiles").arg(device));
137 gc->setLabel(PlaybackSettings::tr(
"Use FFmpeg's original MPEG-TS demuxer"));
141 gc->setHelpText(PlaybackSettings::tr(
"Experimental: Enable this setting to "
142 "use FFmpeg's native demuxer. "
143 "Try this when encountering playback issues."));
151 gc->setLabel(PlaybackSettings::tr(
"Default group filter to apply"));
154 gc->addSelection(PlaybackSettings::tr(
"All Programs"), QString(
"All Programs"));
155 gc->addSelection(QCoreApplication::translate(
"(Common)",
"Default"),
159 query.
prepare(
"SELECT DISTINCT recgroup from recorded;");
165 if (query.
value(0).toString() !=
"Default")
167 QString recgroup = query.
value(0).toString();
168 gc->addSelection(recgroup, recgroup);
173 query.
prepare(
"SELECT DISTINCT category from recorded;");
179 QString key = query.
value(0).toString();
180 gc->addSelection(key, key);
184 gc->setHelpText(PlaybackSettings::tr(
"Default group filter to apply on the "
185 "View Recordings screen."));
193 gc->setLabel(PlaybackSettings::tr(
"Always prompt for initial group "
198 gc->setHelpText(PlaybackSettings::tr(
"If enabled, always prompt the user "
199 "for the initial filter to apply "
200 "when entering the Watch Recordings "
209 gc->setLabel(PlaybackSettings::tr(
"Save current group filter when "
214 gc->setHelpText(PlaybackSettings::tr(
"If enabled, remember the last "
215 "selected filter instead of "
216 "displaying the default filter "
217 "whenever you enter the playback "
226 gc->setLabel(PlaybackSettings::tr(
"Change Recording Group using the arrow "
231 gc->setHelpText(PlaybackSettings::tr(
"If enabled, change recording group "
232 "directly using the arrow keys "
233 "instead of having to use < and >. "
234 "Requires theme support for this "
244 gc->setLabel(PlaybackSettings::tr(
"Start in group list"));
248 gc->setHelpText(PlaybackSettings::tr(
"If enabled, the focus will start on "
249 "the group list, otherwise the focus "
250 "will default to the recordings."));
258 gc->setLabel(PlaybackSettings::tr(
"Smart fast forwarding"));
262 gc->setHelpText(PlaybackSettings::tr(
"If enabled, then immediately after "
263 "rewinding, only skip forward the "
264 "same amount as skipping backwards."));
272 bc->setLabel(GeneralSettings::tr(
"Commercial detection method"));
274 bc->setHelpText(GeneralSettings::tr(
"This determines the method used by "
275 "MythTV to detect when commercials "
290 gc->setLabel(GeneralSettings::tr(
"Enable experimental speedup of "
291 "commercial detection"));
295 gc->setHelpText(GeneralSettings::tr(
"If enabled, experimental commercial "
296 "detection speedups will be enabled."));
304 gc->setLabel(PlaybackSettings::tr(
"Automatically skip commercials"));
306 gc->addSelection(QCoreApplication::translate(
"(Common)",
"Off"),
"0");
307 gc->addSelection(PlaybackSettings::tr(
"Notify, but do not skip",
308 "Skip commercials"),
"2");
309 gc->addSelection(PlaybackSettings::tr(
"Automatically Skip",
310 "Skip commercials"),
"1");
312 gc->setHelpText(PlaybackSettings::tr(
"Automatically skip commercial breaks "
313 "that have been flagged during "
314 "automatic commercial detection "
315 "or by the mythcommflag program, or "
316 "just notify that a commercial has "
325 gs->setLabel(GeneralSettings::tr(
"Deferral days for auto transcode jobs"));
327 gs->setHelpText(GeneralSettings::tr(
"If non-zero, automatic transcode jobs "
328 "will be scheduled to run this many "
329 "days after a recording completes "
330 "instead of immediately afterwards."));
341 bc->setLabel(GeneralSettings::tr(
"Strict commercial detection"));
345 bc->setHelpText(GeneralSettings::tr(
"Enable stricter commercial detection "
346 "code. Disable if some commercials are "
347 "not being detected."));
355 gs->setLabel(PlaybackSettings::tr(
"Commercial skip automatic rewind amount "
358 gs->setHelpText(PlaybackSettings::tr(
"MythTV will automatically rewind "
359 "this many seconds after performing a "
360 "commercial skip."));
371 gs->setLabel(PlaybackSettings::tr(
"Commercial skip notify amount (secs)"));
373 gs->setHelpText(PlaybackSettings::tr(
"MythTV will act like a commercial "
374 "begins this many seconds early. This "
375 "can be useful when commercial "
376 "notification is used in place of "
377 "automatic skipping."));
388 bs->setLabel(PlaybackSettings::tr(
"Maximum commercial skip (secs)"));
390 bs->setHelpText(PlaybackSettings::tr(
"MythTV will discourage long manual "
391 "commercial skips. Skips which are "
392 "longer than this will require the "
393 "user to hit the SKIP key twice. "
394 "Automatic commercial skipping is "
395 "not affected by this limit."));
406 bs->setLabel(PlaybackSettings::tr(
"Merge short commercial breaks (secs)"));
408 bs->setHelpText(PlaybackSettings::tr(
"Treat consecutive commercial breaks "
409 "shorter than this as one break when "
410 "skipping forward. Useful if you have "
411 "to skip a few times during breaks. "
412 "Applies to automatic skipping as "
413 "well. Set to 0 to disable."));
424 bs->setLabel(GeneralSettings::tr(
"Extra disk space (GB)"));
426 bs->setHelpText(GeneralSettings::tr(
"Extra disk space (in gigabytes) "
427 "beyond what MythTV requires that "
428 "you want to keep free on the "
429 "recording file systems."));
441 cb->
setLabel(DeletedExpireOptions::tr(
"Auto-Expire instead of delete recording"));
445 cb->
setHelpText(DeletedExpireOptions::tr(
"If enabled, move deleted recordings to the "
446 "'Deleted' recgroup and turn on autoexpire "
447 "instead of deleting immediately."));
456 bs->setLabel(GeneralSettings::tr(
"Time to retain deleted recordings "
459 bs->setHelpText(GeneralSettings::tr(
"Determines the maximum number of days "
460 "before undeleting a recording will "
461 "become impossible. A value of zero "
462 "means the recording will be "
463 "permanently deleted between 5 and 20 "
464 "minutes later. A value of minus one "
465 "means recordings will be retained "
466 "until space is required. A recording "
467 "will always be removed before this "
468 "time if the space is needed for a new "
476 class DeletedExpireOptions :
public TriggeredConfigurationGroup
479 DeletedExpireOptions() :
482 setLabel(
"DeletedExpireOptions");
483 Setting* enabled = AutoExpireInsteadOfDelete();
487 HorizontalConfigurationGroup* settings =
488 new HorizontalConfigurationGroup(
false);
490 addTarget(
"1", settings);
493 addTarget(
"0",
new HorizontalConfigurationGroup(
true));
502 bc->setLabel(GeneralSettings::tr(
"Auto-Expire method"));
504 bc->addSelection(GeneralSettings::tr(
"Oldest show first"),
"1");
505 bc->addSelection(GeneralSettings::tr(
"Lowest priority first"),
"2");
506 bc->addSelection(GeneralSettings::tr(
"Weighted time/priority combination"),
509 bc->setHelpText(GeneralSettings::tr(
"Method used to determine which "
510 "recorded shows to delete first. "
511 "Live TV recordings will always "
512 "expire before normal recordings."));
522 bc->setLabel(GeneralSettings::tr(
"Watched before unwatched"));
526 bc->setHelpText(GeneralSettings::tr(
"If enabled, programs that have been "
527 "marked as watched will be expired "
528 "before programs that have not "
537 bs->setLabel(GeneralSettings::tr(
"Priority weight"));
539 bs->setHelpText(GeneralSettings::tr(
"The number of days bonus a program "
540 "gets for each priority point. This "
541 "is only used when the Weighted "
542 "time/priority Auto-Expire method "
553 bs->setLabel(GeneralSettings::tr(
"Live TV max age (days)"));
555 bs->setHelpText(GeneralSettings::tr(
"Auto-Expire will force expiration of "
556 "Live TV recordings when they are this "
557 "many days old. Live TV recordings may "
558 "also be expired early if necessary to "
559 "free up disk space."));
571 bs->
setLabel(
"New recording free disk space threshold "
573 bs->
setHelpText(
"MythTV will stop scheduling new recordings on "
574 "a backend when its free disk space (in megabytes) falls "
575 "below this value.");
585 bc->setLabel(GeneralSettings::tr(
"Re-record watched"));
589 bc->setHelpText(GeneralSettings::tr(
"If enabled, programs that have been "
590 "marked as watched and are "
591 "Auto-Expired will be re-recorded if "
592 "they are shown again."));
600 bs->
setLabel(GeneralSettings::tr(
"Time to record before start of show "
603 bs->
setHelpText(GeneralSettings::tr(
"This global setting allows the "
604 "recorder to start before the "
605 "scheduled start time. It does not "
606 "affect the scheduler. It is ignored "
607 "when two shows have been scheduled "
608 "without enough time in between."));
618 bs->
setLabel(GeneralSettings::tr(
"Time to record past end of show (secs)"));
622 bs->
setHelpText(GeneralSettings::tr(
"This global setting allows the "
623 "recorder to record beyond the "
624 "scheduled end time. It does not "
625 "affect the scheduler. It is ignored "
626 "when two shows have been scheduled "
627 "without enough time in between."));
635 bs->
setLabel(GeneralSettings::tr(
"Maximum Start Gap (secs)"));
639 bs->
setHelpText(GeneralSettings::tr(
"If more than this number of seconds "
640 "is missing at the start of a recording "
641 "that will be regarded as a gap for "
642 "assessing recording quality. The recording "
643 "may be marked as damaged."));
651 bs->
setLabel(GeneralSettings::tr(
"Maximum End Gap (secs)"));
655 bs->
setHelpText(GeneralSettings::tr(
"If more than this number of seconds "
656 "is missing at the end of a recording "
657 "that will be regarded as a gap for "
658 "assessing recording quality. The recording "
659 "may be marked as damaged."));
667 bs->
setLabel(GeneralSettings::tr(
"Minimum Recording Quality (percent)"));
671 bs->
setHelpText(GeneralSettings::tr(
"If recording quality is below this value the "
672 "recording is marked as damaged."));
680 gc->setLabel(GeneralSettings::tr(
"Category of shows to be extended"));
682 gc->setHelpText(GeneralSettings::tr(
"For a special category (e.g. "
683 "\"Sports event\"), request that "
684 "shows be autoextended. Only works "
685 "if a show's category can be "
690 query.
prepare(
"SELECT DISTINCT category FROM program GROUP BY category;");
692 gc->addSelection(
"",
"");
697 QString key = query.
value(0).toString();
698 if (!key.trimmed().isEmpty())
699 gc->addSelection(key, key);
710 bs->
setLabel(GeneralSettings::tr(
"Record past end of show (mins)"));
714 bs->
setHelpText(GeneralSettings::tr(
"For the specified category, an "
715 "attempt will be made to extend "
716 "the recording by the specified "
717 "number of minutes. It is ignored "
718 "when two shows have been scheduled "
719 "without enough time in-between."));
727 vcg->setLabel(GeneralSettings::tr(
"Category record over-time"));
737 m_item(_item), m_parentConfig(parent), m_index(idx)
755 const QString rangeHelp(tr(
" Valid formats for the setting are "
756 "[nnnn - nnnn], [> nnnn], [>= nnnn], [< nnnn], "
757 "[<= nnnn]. Also [nnnn] for an exact match. "
758 "You can also use more than 1 expression with & between."));
759 const QString rangeHelpDec(tr(
"Numbers can have up to 3 decimal places."));
762 "to videos with a selected width range. ") + rangeHelp);
765 "to videos with a selected height range. ") + rangeHelp);
776 "to a video format or formats. You can also type in a format "
777 "or several formats separated by space. "
778 "To find the format for a video use ffprobe and look at the "
779 "word after \"Video:\". Also you can get a complete list "
780 "of available formats with ffmpeg -codecs."));
783 "to a range of frame rates. ") + rangeHelp +
" "+rangeHelpDec);
790 for (
const auto & scaler : scalers)
793 QString shaderdesc =
"\t" + tr(
"Prefer OpenGL deinterlacers");
794 QString driverdesc =
"\t" + tr(
"Prefer driver deinterlacers");
795 QString shaderhelp = tr(
"If possible, use GLSL shaders for deinterlacing in "
796 "preference to software deinterlacers. Note: Even if "
797 "disabled, shaders may be used if deinterlacing is "
798 "enabled but software deinterlacers are unavailable.");
799 QString driverhelp = tr(
"If possible, use hardware drivers (e.g. VDPAU, VAAPI) "
800 "for deinterlacing in preference to software and OpenGL "
801 "deinterlacers. Note: Even if disabled, driver deinterlacers "
802 "may be used if deinterlacing is enabled but other "
803 "deinterlacers are unavailable.");
817 tr(
"Set the quality for single rate deinterlacing. Use 'None' to disable. "
818 "Higher quality deinterlacers require more system processing and resources. "
819 "Software deinterlacers are used by default unless OpenGL or driver preferences "
822 tr(
"Set the quality for double rate deinterlacing - which is only used "
823 "if the display can support the required frame rate. Use 'None' to "
824 "disable double rate deinterlacing."));
832 for (
const auto & option : qAsConst(
options))
839 tr(
"Maximum number of CPU cores used for video decoding and filtering.") +
841 tr(
" Multithreaded decoding disabled-only one CPU "
842 "will be used, please recompile with "
843 "--enable-ffmpeg-pthreads to enable.")));
846 tr(
"When unchecked the deblocking loopfilter will be disabled. ") +
"\n" +
847 tr(
"Disabling will significantly reduce the load on the CPU for software decoding of "
848 "H.264 and HEVC material but may significantly reduce video quality."));
851 "The default scaler provides good quality in the majority of situations. "
852 "Higher quality scalers may offer some benefit when scaling very low "
853 "resolution material but may not be as fast."));
898 QString height_value;
902 for (
uint i = 0; i < 2; ++i)
904 QString pcmp =
m_item.
Get(QString(
"pref_cmp%1").arg(i));
907 QStringList clist = pcmp.split(
" ");
909 if (clist.size() < 3)
911 if (!width_value.isEmpty())
913 width_value.append(
"&");
914 height_value.append(
"&");
916 width_value.append(clist[0]+clist[1]);
917 height_value.append(clist[0]+clist[2]);
923 if (!width_value.isEmpty())
924 width_value.append(
"&");
925 width_value.append(
tmp);
930 if (!height_value.isEmpty())
931 height_value.append(
"&");
932 height_value.append(
tmp);
938 if (codecs.isEmpty())
950 if (upscale.isEmpty())
957 QStringList::const_iterator itr = decr.cbegin();
958 QStringList::const_iterator itn = decn.cbegin();
961 for (; (itr != decr.cend()) && (itn != decn.cend()); ++itr, ++itn)
964 found |= (*itr == pdecoder);
966 if (!found && !pdecoder.isEmpty())
970 if (!pmax_cpus.isEmpty())
976 if (!prenderer.isEmpty())
1010 ShowOkPopup(tr(
"Invalid width specification(%1), discarded").arg(val));
1024 ShowOkPopup(tr(
"Invalid height specification(%1), discarded").arg(val));
1038 ShowOkPopup(tr(
"Invalid frame rate specification(%1), discarded").arg(val));
1050 for (
const auto & rend : qAsConst(renderers))
1051 prenderer = (rend == vrenderer) ? vrenderer : prenderer;
1052 if (prenderer.isEmpty())
1056 for (
const auto & rend : qAsConst(renderers))
1058 if ((!rend.contains(
"null")))
1060 rend, (rend == prenderer));
1101 bool enabled =
true;
1132 QString quality = Deint->
getValue();
1134 values.append(quality);
1144 return values.join(
":");
1149 QStringList actions;
1154 if (std::any_of(actions.cbegin(), actions.cend(),
1155 [](
const QString &
action) { return action ==
"DELETE"; } ))
1166 QString message = tr(
"Remove this profile item?");
1170 if (confirmDelete->Create())
1177 delete confirmDelete;
1198 m_profileName(
std::move(profilename))
1209 QStringList restrict;
1211 if (!width.isEmpty())
1212 restrict << tr(
"Width",
"video formats") +
" " + width;
1214 if (!height.isEmpty())
1215 restrict << tr(
"Height",
"video formats") +
" " + height;
1217 if (!codecsval.isEmpty())
1218 restrict << tr(
"Formats",
"video formats") +
" " + codecsval.toUpper();
1220 if (!framerateval.isEmpty())
1221 restrict << tr(
"framerate") +
" " + framerateval;
1224 if (!restrict.isEmpty())
1225 str += restrict.join(
" ") +
" -> ";
1227 str +=
" " + tr(
"&",
"and") +
' ';
1244 for (
size_t i = 0; i <
m_items.size(); ++i)
1253 m_items[i].Set(
"pref_priority", QString::number(i + 1));
1277 LOG(VB_GENERAL, LOG_ERR,
1278 "PlaybackProfileConfig::Save() -- failed to delete items");
1285 LOG(VB_GENERAL, LOG_ERR,
1286 "PlaybackProfileConfig::Save() -- failed to save items");
1333 QString pri_i = QString::number(
m_items[indexA].GetPriority());
1334 QString pri_j = QString::number(
m_items[indexB].GetPriority());
1340 m_items[indexA].Set(
"pref_priority", pri_i);
1341 m_items[indexB].Set(
"pref_priority", pri_j);
1349 grouptrigger->setLabel(
1350 QCoreApplication::translate(
"PlaybackProfileConfigs",
1351 "Current Video Playback Profile"));
1358 if (!profiles.contains(
profile))
1360 profile = (profiles.contains(
"Normal")) ?
"Normal" : profiles[0];
1364 for (
const auto & prof : qAsConst(profiles))
1367 grouptrigger->addTargetedChild(prof,
1371 return grouptrigger;
1376 QString msg = tr(
"Enter Playback Profile Name");
1383 if (settingdialog->Create())
1390 delete settingdialog;
1398 if (not_ok_list.contains(name) || name.isEmpty())
1400 QString msg = (name.isEmpty()) ?
1401 tr(
"Sorry, playback group\nname cannot be blank.") :
1402 tr(
"Sorry, playback group name\n"
1403 "'%1' is already being used.").arg(name);
1419 std::array<QString,4> str
1421 PlaybackSettings::tr(
"Sort all sub-titles/multi-titles Ascending"),
1422 PlaybackSettings::tr(
"Sort all sub-titles/multi-titles Descending"),
1423 PlaybackSettings::tr(
"Sort sub-titles Descending, multi-titles "
1425 PlaybackSettings::tr(
"Sort sub-titles Ascending, multi-titles Descending"),
1428 QString
help = PlaybackSettings::tr(
"Selects how to sort show episodes. "
1429 "Sub-titles refers to the episodes "
1430 "listed under a specific show title. "
1431 "Multi-title refers to sections (e.g. "
1432 "\"All Programs\") which list multiple "
1433 "titles. Sections in parentheses are "
1438 gc->setLabel(PlaybackSettings::tr(
"Episode sort orderings"));
1440 for (
size_t i = 0; i < str.size(); ++i)
1441 gc->addSelection(str[i], QString::number(i));
1444 gc->setHelpText(
help);
1453 gc->setLabel(PlaybackSettings::tr(
"Sort episodes"));
1455 gc->addSelection(PlaybackSettings::tr(
"Record date"),
"Date");
1456 gc->addSelection(PlaybackSettings::tr(
"Season/Episode"),
"Season");
1457 gc->addSelection(PlaybackSettings::tr(
"Original air date"),
"OrigAirDate");
1458 gc->addSelection(PlaybackSettings::tr(
"Program ID"),
"Id");
1460 gc->setHelpText(PlaybackSettings::tr(
"Selects how to sort a show's "
1470 gs->setLabel(PlaybackSettings::tr(
"Fast forward/rewind reposition amount"));
1474 gs->setHelpText(PlaybackSettings::tr(
"When exiting sticky keys fast "
1475 "forward/rewind mode, reposition "
1476 "this many 1/100th seconds before "
1477 "resuming normal playback. This "
1478 "compensates for the reaction time "
1479 "between seeing where to resume "
1480 "playback and actually exiting "
1489 gc->setLabel(PlaybackSettings::tr(
"Reverse direction in fast "
1494 gc->setHelpText(PlaybackSettings::tr(
"If enabled, pressing the sticky "
1495 "rewind key in fast forward mode "
1496 "switches to rewind mode, and "
1497 "vice versa. If disabled, it will "
1498 "decrease the current speed or "
1499 "switch to play mode if the speed "
1500 "can't be decreased further."));
1518 paint->setLabel(AppearanceSettings::tr(
"Paint engine"));
1519 for (
const auto & option :
options)
1520 paint->addSelection(option, option, option == pref);
1522 paint->setHelpText(AppearanceSettings::tr(
"This selects what MythTV uses to draw. "));
1530 gc->setLabel(AppearanceSettings::tr(
"Menu theme"));
1534 QList<ThemeInfo>::iterator it;
1535 for( it = themelist.begin(); it != themelist.end(); ++it )
1537 gc->addSelection((*it).GetName(), (*it).GetDirectoryName(),
1538 (*it).GetDirectoryName() ==
"defaultmenu");
1548 QString fmt = beVBI.toLower().left(4);
1549 int sel = (fmt ==
"pal ") ? 1 : ((fmt ==
"ntsc") ? 2 : 0);
1553 gc->
setLabel(OSDSettings::tr(
"Decode VBI format"));
1557 gc->
addSelection(OSDSettings::tr(
"PAL teletext"),
"pal_txt",
1559 gc->
addSelection(OSDSettings::tr(
"NTSC closed caption"),
"ntsc_cc",
1563 OSDSettings::tr(
"If enabled, this overrides the mythtv-setup setting "
1564 "used during recording when decoding captions."));
1574 gc->
setLabel(OSDSettings::tr(
"Subtitle Codec"));
1576 QList<QByteArray> list = QTextCodec::availableCodecs();
1578 for (
const auto & codec : qAsConst(list))
1580 QString val = QString(codec);
1591 gc->
setLabel(GeneralSettings::tr(
"Channel ordering"));
1593 gc->
addSelection(GeneralSettings::tr(
"channel number"),
"channum");
1594 gc->
addSelection(GeneralSettings::tr(
"callsign"),
"callsign");
1603 gs->setLabel(PlaybackSettings::tr(
"Vertical scaling"));
1607 gs->setHelpText(PlaybackSettings::tr(
"Adjust this if the image does not "
1608 "fill your screen vertically. Range "
1617 gs->setLabel(PlaybackSettings::tr(
"Horizontal scaling"));
1621 gs->setHelpText(PlaybackSettings::tr(
"Adjust this if the image does not "
1622 "fill your screen horizontally. Range "
1631 gs->setLabel(PlaybackSettings::tr(
"Scan displacement (X)"));
1635 gs->setHelpText(PlaybackSettings::tr(
"Adjust this to move the image "
1645 gs->setLabel(PlaybackSettings::tr(
"Scan displacement (Y)"));
1649 gs->setHelpText(PlaybackSettings::tr(
"Adjust this to move the image "
1659 gc->
setLabel(OSDSettings::tr(
"Always display closed captioning or "
1664 gc->
setHelpText(OSDSettings::tr(
"If enabled, captions will be displayed "
1665 "when playing back recordings or watching "
1666 "Live TV. Closed Captioning can be turned "
1667 "on or off by pressing \"T\" during"
1676 gc->
setLabel(OSDSettings::tr(
"Enable interactive TV"));
1680 gc->
setHelpText(OSDSettings::tr(
"If enabled, interactive TV applications "
1681 "(MHEG) will be activated. This is used "
1682 "for teletext and logos for radio and "
1683 "channels that are currently off-air."));
1690 gc->
setLabel(OSDSettings::tr(
"Enable network access for interactive TV"));
1692 gc->
setHelpText(OSDSettings::tr(
"If enabled, interactive TV applications "
1693 "(MHEG) will be able to access interactive "
1694 "content over the Internet. This is used "
1695 "for BBC iPlayer."));
1702 combo->setLabel(OSDSettings::tr(
"Visualiser for audio only playback"));
1703 combo->setHelpText(OSDSettings::tr(
"Select a visualisation to use when there "
1704 "is no video. Defaults to none."));
1705 combo->addSelection(
"None",
"");
1707 for (
const auto & visual : qAsConst(visuals))
1708 combo->addSelection(visual, visual);
1716 gc->
setLabel(OSDSettings::tr(
"Always use browse mode in Live TV"));
1720 gc->
setHelpText(OSDSettings::tr(
"If enabled, browse mode will "
1721 "automatically be activated whenever "
1722 "you use channel up/down while watching "
1731 gc->
setLabel(OSDSettings::tr(
"Browse all channels"));
1735 gc->
setHelpText(OSDSettings::tr(
"If enabled, browse mode will show "
1736 "channels on all available recording "
1737 "devices, instead of showing channels "
1738 "on just the current recorder."));
1746 gc->
setLabel(PlaybackSettings::tr(
"Playback from start of program"));
1750 gc->
setHelpText(PlaybackSettings::tr(
"If enabled and no bookmark is set, "
1751 "playback starts at the program "
1752 "scheduled start time rather than "
1753 "the beginning of the recording. "
1754 "Useful for automatically skipping "
1755 "'start early' parts of a recording."));
1763 gc->
setLabel(PlaybackSettings::tr(
"Action on playback exit"));
1765 gc->
addSelection(PlaybackSettings::tr(
"Just exit"),
"0");
1766 gc->
addSelection(PlaybackSettings::tr(
"Clear last played position and exit"),
"16");
1767 gc->
addSelection(PlaybackSettings::tr(
"Always prompt (excluding Live TV)"),
1769 gc->
addSelection(PlaybackSettings::tr(
"Always prompt (including Live TV)"),
1771 gc->
addSelection(PlaybackSettings::tr(
"Prompt for Live TV only"),
"8");
1773 gc->
setHelpText(PlaybackSettings::tr(
"If set to prompt, a menu will be "
1774 "displayed when you exit playback "
1775 "mode. The options available will "
1776 "allow you delete the recording, "
1777 "continue watching, or exit."));
1785 gc->
setLabel(PlaybackSettings::tr(
"Prompt at end of recording"));
1789 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, a menu will be displayed "
1790 "allowing you to delete the recording "
1791 "when it has finished playing."));
1799 gc->
setLabel(PlaybackSettings::tr(
"Enable Music Choice"));
1803 gc->
setHelpText(PlaybackSettings::tr(
"Enable this to improve playing of Music Choice channels "
1804 "or recordings from those channels. "
1805 "These are audio channels with slide show "
1806 "from some cable providers. "
1807 "In unusual situations this could cause lip sync problems "
1808 "watching normal videos or TV shows."));
1816 gc->
setLabel(PlaybackSettings::tr(
"Jump to program OSD"));
1820 gc->
setHelpText(PlaybackSettings::tr(
"Set the choice between viewing the "
1821 "current recording group in the OSD, "
1822 "or showing the 'Watch Recording' "
1823 "screen when 'Jump to Program' is "
1824 "activated. If enabled, the "
1825 "recordings are shown in the OSD"));
1833 gc->
setLabel(PlaybackSettings::tr(
"Continue playback when embedded"));
1837 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, TV playback continues "
1838 "when the TV window is embedded in "
1839 "the upcoming program list or "
1840 "recorded list. The default is to "
1841 "pause the recorded show when "
1850 gc->
setLabel(PlaybackSettings::tr(
"Automatically mark a recording as "
1855 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, when you exit near the "
1856 "end of a recording it will be marked "
1857 "as watched. The automatic detection "
1858 "is not foolproof, so do not enable "
1859 "this setting if you don't want an "
1860 "unwatched recording marked as "
1869 gs->setLabel(PlaybackSettings::tr(
"Live TV idle timeout (mins)"));
1873 gs->setHelpText(PlaybackSettings::tr(
"Exit Live TV automatically if left "
1874 "idle for the specified number of "
1875 "minutes. 0 disables the timeout."));
1916 gc->
setLabel(MainGeneralSettings::tr(
"Use line edit virtual keyboards"));
1920 gc->
setHelpText(MainGeneralSettings::tr(
"If enabled, you can use a virtual "
1921 "keyboard in MythTV's line edit "
1922 "boxes. To use, hit SELECT (Enter "
1923 "or Space) while a line edit is in "
1932 gs->setLabel(MainGeneralSettings::tr(
"Idle time before entering standby "
1937 gs->setHelpText(MainGeneralSettings::tr(
"Number of minutes to wait when "
1938 "the frontend is idle before "
1939 "entering standby mode. Standby "
1940 "mode allows the backend to power "
1941 "down if configured to do so. Any "
1942 "remote or mouse input will cause "
1943 "the countdown to start again "
1944 "and/or exit idle mode. Video "
1945 "playback suspends the countdown. "
1946 "A value of zero prevents the "
1947 "frontend automatically entering "
1955 checkbox->setValue(
true);
1956 checkbox->setLabel(MainGeneralSettings::tr(
"Confirm before suspending/shutting down"));
1957 checkbox->setHelpText(MainGeneralSettings::tr(
1958 "If enabled (the default) then the user will always be asked to confirm before the system "
1959 "is shutdown, suspended or rebooted."));
1967 gc->
setLabel(MainGeneralSettings::tr(
"Customize exit menu options"));
1969 gc->
addSelection(MainGeneralSettings::tr(
"Default"),
"0");
1970 gc->
addSelection(MainGeneralSettings::tr(
"Show quit"),
"1");
1971 gc->
addSelection(MainGeneralSettings::tr(
"Show quit and suspend"),
"9");
1972 gc->
addSelection(MainGeneralSettings::tr(
"Show quit and shutdown"),
"2");
1973 gc->
addSelection(MainGeneralSettings::tr(
"Show quit, reboot and shutdown"),
"3");
1974 gc->
addSelection(MainGeneralSettings::tr(
"Show quit, reboot, shutdown and suspend"),
"10");
1975 gc->
addSelection(MainGeneralSettings::tr(
"Show shutdown"),
"4");
1976 gc->
addSelection(MainGeneralSettings::tr(
"Show reboot"),
"5");
1977 gc->
addSelection(MainGeneralSettings::tr(
"Show reboot and shutdown"),
"6");
1978 gc->
addSelection(MainGeneralSettings::tr(
"Show standby"),
"7");
1979 gc->
addSelection(MainGeneralSettings::tr(
"Show suspend"),
"8");
1981 QString helptext = MainGeneralSettings::tr(
"By default, only remote frontends are shown "
1982 "the shutdown option on the exit menu. Here "
1983 "you can force specific shutdown, reboot and suspend "
1984 "options to be displayed.");
1988 if (!supported.isEmpty())
1990 helptext.prepend(MainGeneralSettings::tr(
1991 "This system supports '%1' without additional setup. ")
1992 .arg(supported.join(
", ")));
1996 helptext.append(MainGeneralSettings::tr(
1997 " This system appears to have no power options available. Try "
1998 "setting the Halt/Reboot/Suspend commands below."));
2006 #ifndef Q_OS_ANDROID
2010 ge->setLabel(MainGeneralSettings::tr(
"Reboot command"));
2012 QString
help = MainGeneralSettings::tr(
2013 "Optional. Script to run if you select the reboot option from the "
2014 "exit menu, if the option is displayed. You must configure an "
2015 "exit key to display the exit menu.");
2018 help.append(MainGeneralSettings::tr(
2019 " Note: This system appears to support reboot without using this setting."));
2021 ge->setHelpText(
help);
2028 suspend->setLabel(MainGeneralSettings::tr(
"Suspend command"));
2029 suspend->setValue(
"");
2030 QString
help = MainGeneralSettings::tr(
2031 "Optional: Script to run if you select the suspend option from the "
2032 "exit menu, if the option is displayed.");
2036 help.append(MainGeneralSettings::tr(
2037 " Note: This system appears to support suspend without using this setting."));
2039 suspend->setHelpText(
help);
2046 ge->setLabel(MainGeneralSettings::tr(
"Halt command"));
2048 QString
help = MainGeneralSettings::tr(
"Optional. Script to run if you "
2049 "select the shutdown option from "
2050 "the exit menu, if the option is "
2051 "displayed. You must configure an "
2052 "exit key to display the exit "
2056 help.append(MainGeneralSettings::tr(
2057 " Note: This system appears to support shutdown without using this setting."));
2060 ge->setHelpText(
help);
2069 ge->setLabel(MainGeneralSettings::tr(
"LIRC daemon socket"));
2072 QString lirc_socket =
"/dev/lircd";
2074 if (!QFile::exists(lirc_socket))
2075 lirc_socket =
"/var/run/lirc/lircd";
2077 ge->setValue(lirc_socket);
2079 QString
help = MainGeneralSettings::tr(
"UNIX socket or IP address[:port] "
2080 "to connect in order to communicate "
2081 "with the LIRC Daemon.");
2082 ge->setHelpText(
help);
2091 ge->setLabel(MainGeneralSettings::tr(
"Screen shot path"));
2093 ge->setValue(
"/tmp/");
2095 ge->setHelpText(MainGeneralSettings::tr(
"Path to screenshot storage "
2096 "location. Should be writable "
2097 "by the frontend"));
2106 ge->setLabel(MainGeneralSettings::tr(
"Setup PIN code"));
2108 ge->setHelpText(MainGeneralSettings::tr(
"This PIN is used to control "
2109 "access to the setup menus. "
2110 "If you want to use this feature, "
2111 "then setting the value to all "
2112 "numbers will make your life much "
2113 "easier. Set it to blank to "
2114 "disable. If enabled, you will not "
2115 "be able to return to this screen "
2116 "and reset the Setup PIN without "
2117 "first entering the current PIN."));
2124 gc->
setLabel(AppearanceSettings::tr(
"Display on screen"));
2126 gc->
setHelpText(AppearanceSettings::tr(
"Run on the specified screen or "
2127 "spanning all screens."));
2136 gc->
setLabel(AppearanceSettings::tr(
"Screen aspect ratio"));
2137 gc->
addSelection(AppearanceSettings::tr(
"Auto (Assume square pixels)"),
"-1.0");
2138 gc->
addSelection(AppearanceSettings::tr(
"Auto (Detect from display)"),
"0.0");
2147 gc->
addSelection(AppearanceSettings::tr(
"16:18 (16:9 Above and below)"),
"0.8888");
2148 gc->
addSelection(AppearanceSettings::tr(
"32:10 (16:10 Side by side)"),
"3.2");
2149 gc->
addSelection(AppearanceSettings::tr(
"16:20 (16:10 Above and below)"),
"0.8");
2151 "Most modern displays have square pixels and the aspect ratio of the screen can be "
2152 "computed from the resolution (default). "
2153 "The aspect ratio can also be automatically detected from the connected display "
2154 "- though this may be slightly less accurate. If automatic detection fails, the correct "
2155 "aspect ratio can be specified here. Note: Some values (e.g 32:10) are "
2156 "primarily intended for multiscreen setups."));
2164 gc->
setLabel(PlaybackSettings::tr(
"Letterboxing color"));
2169 gc->
setHelpText(PlaybackSettings::tr(
"By default MythTV uses black "
2170 "letterboxing to match broadcaster "
2171 "letterboxing, but those with plasma "
2172 "screens may prefer gray to minimize "
2181 cb->
setLabel(
"Discard 3D stereoscopic fields");
2183 "If 'Side by Side' or 'Top and Bottom' 3D material is detected, "
2184 "enabling this setting will discard one field (enabled by default)."));
2192 gc->
setLabel(PlaybackSettings::tr(
"Video aspect override"));
2197 gc->
setHelpText(PlaybackSettings::tr(
"When enabled, these will override "
2198 "the aspect ratio specified by any "
2199 "broadcaster for all video streams."));
2207 gc->
setLabel(PlaybackSettings::tr(
"Zoom"));
2216 gc->
setHelpText(PlaybackSettings::tr(
"When enabled, these will apply a "
2217 "predefined zoom to all video "
2218 "playback in MythTV."));
2228 gs->setLabel(AppearanceSettings::tr(
"GUI width (pixels)"));
2232 gs->setHelpText(AppearanceSettings::tr(
"The width of the GUI. Do not make "
2233 "the GUI wider than your actual "
2234 "screen resolution. Set to 0 to "
2235 "automatically scale to "
2244 gs->setLabel(AppearanceSettings::tr(
"GUI height (pixels)"));
2248 gs->setHelpText(AppearanceSettings::tr(
"The height of the GUI. Do not make "
2249 "the GUI taller than your actual "
2250 "screen resolution. Set to 0 to "
2251 "automatically scale to "
2260 gs->setLabel(AppearanceSettings::tr(
"GUI X offset"));
2264 gs->setHelpText(AppearanceSettings::tr(
"The horizontal offset where the "
2265 "GUI will be displayed. May only "
2266 "work if run in a window."));
2274 gs->setLabel(AppearanceSettings::tr(
"GUI Y offset"));
2278 gs->setHelpText(AppearanceSettings::tr(
"The vertical offset where the "
2279 "GUI will be displayed."));
2287 gc->
setLabel(AppearanceSettings::tr(
"Use GUI size for TV playback"));
2291 gc->
setHelpText(AppearanceSettings::tr(
"If enabled, use the above size for "
2292 "TV, otherwise use full screen."));
2300 gc->
setLabel(VideoModeSettings::tr(
"Separate video modes for GUI and "
2306 "Switch video modes for playback depending on the source "
2307 "resolution and frame rate."));
2316 gs->setLabel(VideoModeSettings::tr(
"In X",
"Video mode width"));
2320 gs->setHelpText(VideoModeSettings::tr(
"Horizontal resolution of video "
2321 "which needs a special output "
2331 gs->setLabel(VideoModeSettings::tr(
"In Y",
"Video mode height"));
2335 gs->setHelpText(VideoModeSettings::tr(
"Vertical resolution of video "
2336 "which needs a special output "
2345 gc->
setLabel(VideoModeSettings::tr(
"GUI"));
2347 gc->
setHelpText(VideoModeSettings::tr(
"Resolution of screen when not "
2348 "watching a video."));
2351 std::vector<MythDisplayMode> scr = display->
GetVideoModes();
2352 for (
auto & vmode : scr)
2354 int w = vmode.Width();
2355 int h = vmode.Height();
2356 QString sel = QString(
"%1x%2").arg(w).arg(h);
2366 if ((w <= 0) || (h <= 0))
2375 gc->
setValue((i >= 0) ? i : scr.size() - 1);
2383 QString dhelp = VideoModeSettings::tr(
"Default screen resolution "
2384 "when watching a video.");
2385 QString ohelp = VideoModeSettings::tr(
"Screen resolution when watching a "
2386 "video at a specific resolution.");
2388 QString qstr = (idx<0) ?
"TVVidModeResolution" :
2389 QString(
"TVVidModeResolution%1").arg(idx);
2391 QString lstr = (idx<0) ? VideoModeSettings::tr(
"Video output") :
2392 VideoModeSettings::tr(
"Output");
2393 QString hstr = (idx<0) ? dhelp : ohelp;
2400 std::vector<MythDisplayMode> scr = display->
GetVideoModes();
2401 for (
auto & vmode : scr)
2403 QString sel = QString(
"%1x%2").arg(vmode.Width()).arg(vmode.Height());
2412 const QString previousValue =
getValue();
2416 QString resolution = setting->
getValue();
2421 for (
size_t i = 0; i < list.size(); ++i)
2423 QString sel = QString::number((
double) list[i],
'f', 3);
2425 hz50 = (fabs(50.0 - list[i]) < 0.01) ? i : hz50;
2426 hz60 = (fabs(60.0 - list[i]) < 0.01) ? i : hz60;
2432 if (wasUnchanged && previousValue ==
getValue())
2436 if (
"640x480" == resolution ||
"720x480" == resolution)
2438 if (
"640x576" == resolution ||
"720x576" == resolution)
2447 QStringList slist = res.split(
"x");
2452 if (2 == slist.size())
2454 width = slist[0].toInt(&ok0);
2455 height = slist[1].toInt(&ok1);
2458 std::vector<double> result;
2461 QSize
size(width, height);
2470 QString dhelp = VideoModeSettings::tr(
"Default refresh rate when watching "
2471 "a video. Leave at \"Auto\" to "
2472 "automatically use the best "
2474 QString ohelp = VideoModeSettings::tr(
"Refresh rate when watching a "
2475 "video at a specific resolution. "
2476 "Leave at \"Auto\" to automatically "
2477 "use the best available");
2479 QString qstr = (idx<0) ?
"TVVidModeRefreshRate" :
2480 QString(
"TVVidModeRefreshRate%1").arg(idx);
2482 QString lstr = VideoModeSettings::tr(
"Rate");
2483 QString hstr = (idx<0) ? dhelp : ohelp;
2493 QString dhelp = VideoModeSettings::tr(
"Aspect ratio when watching a "
2494 "video. Leave at \"%1\" to "
2495 "use ratio reported by the monitor. "
2496 "Set to 16:9 or 4:3 to force a "
2497 "specific aspect ratio.");
2501 QString ohelp = VideoModeSettings::tr(
"Aspect ratio when watching a "
2502 "video at a specific resolution. "
2503 "Leave at \"%1\" to use ratio "
2504 "reported by the monitor. Set to "
2505 "16:9 or 4:3 to force a specific "
2508 QString qstr = (idx<0) ?
"TVVidModeForceAspect" :
2509 QString(
"TVVidModeForceAspect%1").arg(idx);
2513 gc->
setLabel(VideoModeSettings::tr(
"Aspect"));
2515 QString hstr = (idx<0) ? dhelp : ohelp;
2517 gc->
setHelpText(hstr.arg(VideoModeSettings::tr(
"Default")));
2519 gc->
addSelection(VideoModeSettings::tr(
"Default"),
"0.0");
2535 pause->setLabel(VideoModeSettings::tr(
"Pause while switching video modes (ms)"));
2536 pause->setHelpText(VideoModeSettings::tr(
2537 "For most displays, switching video modes takes time and content can be missed. "
2538 "If non-zero, this setting will pause playback while the video mode is changed. "
2539 "The required pause length (in ms) will be dependant on the display's characteristics."));
2560 overrides->setLabel(tr(
"Overrides for specific video sizes"));
2562 for (
int idx = 0; idx < 3; ++idx)
2583 gc->
setLabel(AppearanceSettings::tr(
"Hide mouse cursor in MythTV"));
2587 gc->
setHelpText(AppearanceSettings::tr(
"Toggles mouse cursor visibility "
2588 "for touchscreens. By default "
2589 "MythTV will auto-hide the cursor "
2590 "if the mouse doesn't move for a "
2591 "period, this setting disables the "
2592 "cursor entirely."));
2601 gc->
setLabel(AppearanceSettings::tr(
"Use window border"));
2605 gc->
setHelpText(AppearanceSettings::tr(
"Toggles between windowed and "
2606 "borderless operation."));
2614 gc->
setLabel(AppearanceSettings::tr(
"Always On Top"));
2618 gc->
setHelpText(AppearanceSettings::tr(
"If enabled, MythTV will always be "
2626 "Never show startup screen");
2628 gs->setLabel(AppearanceSettings::tr(
"Startup Screen Delay"));
2632 gs->setHelpText(AppearanceSettings::tr(
2633 "The Startup Screen will show the progress of starting the frontend "
2634 "if frontend startup takes longer than this number of seconds."));
2643 gs->setLabel(AppearanceSettings::tr(
"GUI text zoom percentage"));
2647 gs->setHelpText(AppearanceSettings::tr
2648 (
"Adjust the themed defined font size by this percentage. "
2649 "mythfrontend needs restart for this to take effect."));
2657 gc->
setLabel(AppearanceSettings::tr(
"Date format"));
2660 QString sampleStr = AppearanceSettings::tr(
"Samples are shown using "
2663 if (sampdate.month() == sampdate.day())
2665 sampdate = sampdate.addDays(1);
2666 sampleStr = AppearanceSettings::tr(
"Samples are shown using "
2667 "tomorrow's date.");
2672 gc->
addSelection(locale.toString(sampdate,
"ddd MMM d"),
"ddd MMM d");
2673 gc->
addSelection(locale.toString(sampdate,
"ddd d MMM"),
"ddd d MMM");
2674 gc->
addSelection(locale.toString(sampdate,
"ddd MMMM d"),
"ddd MMMM d");
2675 gc->
addSelection(locale.toString(sampdate,
"ddd d MMMM"),
"ddd d MMMM");
2676 gc->
addSelection(locale.toString(sampdate,
"dddd MMM d"),
"dddd MMM d");
2677 gc->
addSelection(locale.toString(sampdate,
"dddd d MMM"),
"dddd d MMM");
2678 gc->
addSelection(locale.toString(sampdate,
"MMM d"),
"MMM d");
2679 gc->
addSelection(locale.toString(sampdate,
"d MMM"),
"d MMM");
2680 gc->
addSelection(locale.toString(sampdate,
"MM/dd"),
"MM/dd");
2681 gc->
addSelection(locale.toString(sampdate,
"dd/MM"),
"dd/MM");
2682 gc->
addSelection(locale.toString(sampdate,
"MM.dd"),
"MM.dd");
2683 gc->
addSelection(locale.toString(sampdate,
"dd.MM"),
"dd.MM");
2684 gc->
addSelection(locale.toString(sampdate,
"M/d/yyyy"),
"M/d/yyyy");
2685 gc->
addSelection(locale.toString(sampdate,
"d/M/yyyy"),
"d/M/yyyy");
2686 gc->
addSelection(locale.toString(sampdate,
"MM.dd.yyyy"),
"MM.dd.yyyy");
2687 gc->
addSelection(locale.toString(sampdate,
"dd.MM.yyyy"),
"dd.MM.yyyy");
2688 gc->
addSelection(locale.toString(sampdate,
"yyyy-MM-dd"),
"yyyy-MM-dd");
2689 gc->
addSelection(locale.toString(sampdate,
"ddd MMM d yyyy"),
"ddd MMM d yyyy");
2690 gc->
addSelection(locale.toString(sampdate,
"ddd d MMM yyyy"),
"ddd d MMM yyyy");
2691 gc->
addSelection(locale.toString(sampdate,
"ddd yyyy-MM-dd"),
"ddd yyyy-MM-dd");
2693 QString cn_long = QString(
"dddd yyyy") + QChar(0x5E74) +
2694 "M" + QChar(0x6708) +
"d"+ QChar(0x65E5);
2695 gc->
addSelection(locale.toString(sampdate, cn_long), cn_long);
2696 QString cn_med = QString(
"dddd ") +
2697 "M" + QChar(0x6708) +
"d"+ QChar(0x65E5);
2699 gc->
addSelection(locale.toString(sampdate, cn_med), cn_med);
2702 gc->
setHelpText(AppearanceSettings::tr(
"Your preferred date format. %1")
2711 gc->
setLabel(AppearanceSettings::tr(
"Short date format"));
2715 QString sampleStr = AppearanceSettings::tr(
"Samples are shown using "
2718 if (sampdate.month() == sampdate.day())
2720 sampdate = sampdate.addDays(1);
2721 sampleStr = AppearanceSettings::tr(
"Samples are shown using "
2722 "tomorrow's date.");
2726 gc->
addSelection(locale.toString(sampdate,
"M/d"),
"M/d");
2727 gc->
addSelection(locale.toString(sampdate,
"d/M"),
"d/M");
2728 gc->
addSelection(locale.toString(sampdate,
"MM/dd"),
"MM/dd");
2729 gc->
addSelection(locale.toString(sampdate,
"dd/MM"),
"dd/MM");
2730 gc->
addSelection(locale.toString(sampdate,
"MM.dd"),
"MM.dd");
2731 gc->
addSelection(locale.toString(sampdate,
"dd.MM."),
"dd.MM.");
2732 gc->
addSelection(locale.toString(sampdate,
"M.d."),
"M.d.");
2733 gc->
addSelection(locale.toString(sampdate,
"d.M."),
"d.M.");
2734 gc->
addSelection(locale.toString(sampdate,
"MM-dd"),
"MM-dd");
2735 gc->
addSelection(locale.toString(sampdate,
"dd-MM"),
"dd-MM");
2736 gc->
addSelection(locale.toString(sampdate,
"MMM d"),
"MMM d");
2737 gc->
addSelection(locale.toString(sampdate,
"d MMM"),
"d MMM");
2738 gc->
addSelection(locale.toString(sampdate,
"ddd d"),
"ddd d");
2739 gc->
addSelection(locale.toString(sampdate,
"d ddd"),
"d ddd");
2740 gc->
addSelection(locale.toString(sampdate,
"ddd M/d"),
"ddd M/d");
2741 gc->
addSelection(locale.toString(sampdate,
"ddd d/M"),
"ddd d/M");
2742 gc->
addSelection(locale.toString(sampdate,
"ddd d.M"),
"ddd d.M");
2743 gc->
addSelection(locale.toString(sampdate,
"ddd dd.MM"),
"ddd dd.MM");
2744 gc->
addSelection(locale.toString(sampdate,
"M/d ddd"),
"M/d ddd");
2745 gc->
addSelection(locale.toString(sampdate,
"d/M ddd"),
"d/M ddd");
2747 QString cn_short1 = QString(
"M") + QChar(0x6708) +
"d" + QChar(0x65E5);
2749 gc->
addSelection(locale.toString(sampdate, cn_short1), cn_short1);
2751 QString cn_short2 = QString(
"ddd M") + QChar(0x6708) +
"d" + QChar(0x65E5);
2753 gc->
addSelection(locale.toString(sampdate, cn_short2), cn_short2);
2756 gc->
setHelpText(AppearanceSettings::tr(
"Your preferred short date format. %1")
2765 gc->
setLabel(AppearanceSettings::tr(
"Time format"));
2767 QTime samptime = QTime::currentTime();
2771 gc->
addSelection(locale.toString(samptime,
"h:mm AP"),
"h:mm AP");
2772 gc->
addSelection(locale.toString(samptime,
"h:mm ap"),
"h:mm ap");
2773 gc->
addSelection(locale.toString(samptime,
"hh:mm AP"),
"hh:mm AP");
2774 gc->
addSelection(locale.toString(samptime,
"hh:mm ap"),
"hh:mm ap");
2775 gc->
addSelection(locale.toString(samptime,
"h:mm"),
"h:mm");
2776 gc->
addSelection(locale.toString(samptime,
"hh:mm"),
"hh:mm");
2777 gc->
addSelection(locale.toString(samptime,
"hh.mm"),
"hh.mm");
2778 gc->
addSelection(locale.toString(samptime,
"AP h:mm"),
"AP h:mm");
2780 gc->
setHelpText(AppearanceSettings::tr(
"Your preferred time format. You "
2781 "must choose a format with \"AM\" "
2782 "or \"PM\" in it, otherwise your "
2783 "time display will be 24-hour or "
2784 "\"military\" time."));
2791 rgb->setLabel(AppearanceSettings::tr(
"Use full range RGB output"));
2792 rgb->setValue(
true);
2793 rgb->setHelpText(
"Enable (recommended) to supply full range RGB output to your display device. "
2794 "Disable to supply limited range RGB output. This setting applies to both the "
2795 "GUI and media playback. Ideally the value of this setting should match a "
2796 "similar setting on your TV or monitor.");
2804 gc->
setLabel(GeneralSettings::tr(
"Channel format"));
2806 gc->
addSelection(GeneralSettings::tr(
"number"),
"<num>");
2807 gc->
addSelection(GeneralSettings::tr(
"number callsign"),
"<num> <sign>");
2808 gc->
addSelection(GeneralSettings::tr(
"number name"),
"<num> <name>");
2809 gc->
addSelection(GeneralSettings::tr(
"callsign"),
"<sign>");
2810 gc->
addSelection(GeneralSettings::tr(
"name"),
"<name>");
2812 gc->
setHelpText(GeneralSettings::tr(
"Your preferred channel format."));
2823 gc->
setLabel(GeneralSettings::tr(
"Long channel format"));
2825 gc->
addSelection(GeneralSettings::tr(
"number"),
"<num>");
2826 gc->
addSelection(GeneralSettings::tr(
"number callsign"),
"<num> <sign>");
2827 gc->
addSelection(GeneralSettings::tr(
"number name"),
"<num> <name>");
2828 gc->
addSelection(GeneralSettings::tr(
"callsign"),
"<sign>");
2829 gc->
addSelection(GeneralSettings::tr(
"name"),
"<name>");
2831 gc->
setHelpText(GeneralSettings::tr(
"Your preferred long channel format."));
2842 gc->
setLabel(ChannelGroupSettings::tr(
"Remember last channel group"));
2844 gc->
setHelpText(ChannelGroupSettings::tr(
"If enabled, the EPG will "
2845 "initially display only the "
2846 "channels from the last channel "
2847 "group selected. Pressing \"4\" "
2848 "will toggle channel group."));
2859 gc->
setLabel(ChannelGroupSettings::tr(
"Default channel group"));
2865 gc->
addSelection(ChannelGroupSettings::tr(
"All Channels"),
"-1");
2867 ChannelGroupList::iterator it;
2869 for (it = changrplist.begin(); it < changrplist.end(); ++it)
2870 gc->
addSelection(it->m_name, QString(
"%1").arg(it->m_grpId));
2872 gc->
setHelpText(ChannelGroupSettings::tr(
"Default channel group to be "
2873 "shown in the EPG. Pressing "
2874 "GUIDE key will toggle channel "
2885 gc->
setLabel(GeneralSettings::tr(
"Browse/change channels from Channel "
2888 gc->
setHelpText(GeneralSettings::tr(
"If enabled, Live TV will browse or "
2889 "change channels from the selected "
2890 "channel group. The \"All Channels\" "
2891 "channel group may be selected to "
2892 "browse all channels."));
2902 gc->
setLabel(GeneralSettings::tr(
"Case-sensitive sorting"));
2904 gc->
setHelpText(GeneralSettings::tr(
"If enabled, all sorting will be "
2905 "case-sensitive. This would mean "
2906 "that \"bee movie\" would sort after "
2907 "\"Sea World\" as lower case letters "
2908 "sort after uppercase letters."));
2917 gc->
setLabel(GeneralSettings::tr(
"Remove prefixes when sorting"));
2920 "If enabled, all sorting will remove the common "
2921 "prefixes (The, A, An) from a string prior to "
2922 "sorting. For example, this would sort the titles "
2923 "\"Earth 2\", \"The Flash\", and \"Kings\" in that "
2924 "order. If disabled, they would sort as \"Earth 2\", "
2925 "\"Kings\", \"The Flash\"."));
2933 gc->
setLabel(MainGeneralSettings::tr(
"Names exempt from prefix removal"));
2936 "This list of names will be exempt from removing "
2937 "the common prefixes (The, A, An) from a title or "
2938 "filename. Enter multiple names separated by "
2949 bc->setLabel(GeneralRecPrioritiesSettings::tr(
"Avoid back to back "
2953 GeneralRecPrioritiesSettings::tr(
"Selects the situations where the "
2954 "scheduler will avoid assigning shows "
2955 "to the same card if their end time "
2956 "and start time match. This will be "
2957 "allowed when necessary in order to "
2958 "resolve conflicts."));
2960 bc->addSelection(GeneralRecPrioritiesSettings::tr(
"Never"),
"0");
2961 bc->addSelection(GeneralRecPrioritiesSettings::tr(
"Different Channels"),
2963 bc->addSelection(GeneralRecPrioritiesSettings::tr(
"Always"),
"2");
2974 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Preferred input priority"));
2976 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
2977 "a showing matches the "
2978 "preferred input selected "
2979 "in the 'Scheduling "
2980 "Options' section of the "
2981 "recording rule."));
2991 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"HDTV recording priority"));
2993 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
2994 "a showing is marked as an "
2995 "HDTV broadcast in the TV "
3007 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Widescreen recording "
3010 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3011 "a showing is marked as "
3012 "widescreen in the TV "
3024 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Sign language recording "
3027 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority "
3028 "when a showing is "
3042 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"In-vision Subtitles "
3043 "Recording Priority"));
3045 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority "
3046 "when a showing is marked "
3047 "as having in-vision "
3059 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Subtitles/CC recording "
3062 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3063 "a showing is marked as "
3064 "having subtitles or "
3065 "closed captioning (CC) "
3077 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Hard of hearing priority"));
3079 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3080 "a showing is marked as "
3081 "having support for "
3082 "viewers with impaired "
3094 bs->
setLabel(GeneralRecPrioritiesSettings::tr(
"Audio described priority"));
3096 bs->
setHelpText(GeneralRecPrioritiesSettings::tr(
"Additional priority when "
3097 "a showing is marked as "
3098 "being Audio Described."));
3109 ge->setLabel(EPGSettings::tr(
"Guide starts at channel"));
3113 ge->setHelpText(EPGSettings::tr(
"The program guide starts on this channel "
3114 "if it is run from outside of Live TV "
3115 "mode. Leave blank to enable Live TV "
3116 "automatic start channel."));
3125 gs->setLabel(EPGSettings::tr(
"Record threshold"));
3129 gs->setHelpText(EPGSettings::tr(
"Pressing SELECT on a show that is at "
3130 "least this many minutes into the future "
3131 "will schedule a recording."));
3139 gc->
setLabel(AppearanceSettings::tr(
"Language"));
3142 QStringList langs = langMap.values();
3146 if (langCode.isEmpty())
3151 for (
const auto & label : qAsConst(langs))
3153 QString value = langMap.key(label);
3154 gc->
addSelection(label, value, (value.toLower() == langCode));
3157 gc->
setHelpText(AppearanceSettings::tr(
"Your preferred language for the "
3158 "user interface."));
3165 QString q = QString(
"ISO639Language%1").arg(i);
3168 if ((lang.isEmpty() || lang ==
"aar") &&
3177 for (; it != ite; ++it)
3179 QString desc = (*it);
3180 int idx = desc.indexOf(
";");
3182 desc = desc.left(idx);
3193 gc->
setLabel(AppearanceSettings::tr(
"Guide language #%1").arg(i+1));
3199 gc->
setHelpText(AppearanceSettings::tr(
"Your #%1 preferred language for "
3200 "Program Guide data and captions.")
3209 gc->
setLabel(MainGeneralSettings::tr(
"Enable Network Remote Control "
3212 gc->
setHelpText(MainGeneralSettings::tr(
"This enables support for "
3213 "controlling MythFrontend "
3214 "over the network."));
3225 gs->setLabel(MainGeneralSettings::tr(
"Network Remote Control port"));
3229 gs->setHelpText(MainGeneralSettings::tr(
"This specifies what port the "
3230 "Network Remote Control "
3231 "interface will listen on for "
3232 "new connections."));
3240 ge->setLabel(MainGeneralSettings::tr(
"UDP notify port"));
3242 ge->setValue(
"6948");
3244 ge->setHelpText(MainGeneralSettings::tr(
"MythTV will listen for "
3245 "connections from the "
3246 "\"mythutil\" program on "
3255 gc->
setLabel(MainGeneralSettings::tr(
"Enable CEC Control "
3257 gc->
setHelpText(MainGeneralSettings::tr(
"This enables "
3258 "controlling MythFrontend from a TV remote or powering the TV "
3259 "on and off from a MythTV remote "
3260 "if you have compatible hardware. "
3261 "These settings only take effect after a restart."));
3269 gc->
setLabel(MainGeneralSettings::tr(
"Allow Power On TV"));
3270 gc->
setHelpText(MainGeneralSettings::tr(
"Enables your TV to be powered "
3271 "on from MythTV remote or when MythTV starts "
3272 "if you have compatible hardware."));
3280 gc->
setLabel(MainGeneralSettings::tr(
"Allow Power Off TV"));
3281 gc->
setHelpText(MainGeneralSettings::tr(
"Enables your TV to be powered "
3282 "off from MythTV remote or when MythTV starts "
3283 "if you have compatible hardware."));
3291 gc->
setLabel(MainGeneralSettings::tr(
"Power on TV At Start"));
3293 "on your TV when you start MythTV "
3294 "if you have compatible hardware."));
3302 gc->
setLabel(MainGeneralSettings::tr(
"Power off TV At Exit"));
3304 "off your TV when you exit MythTV "
3305 "if you have compatible hardware."));
3310 #endif //USING_LIBCEC
3312 #ifdef USING_AIRPLAY
3318 gc->
setLabel(MainGeneralSettings::tr(
"Enable AirPlay"));
3320 gc->
setHelpText(MainGeneralSettings::tr(
"AirPlay lets you wirelessly view "
3321 "content on your TV from your "
3322 "iPhone, iPad, iPod Touch, or "
3323 "iTunes on your computer."));
3334 gc->
setLabel(MainGeneralSettings::tr(
"Only support AirTunes (no video)"));
3336 gc->
setHelpText(MainGeneralSettings::tr(
"Only stream audio from your "
3337 "iPhone, iPad, iPod Touch, or "
3338 "iTunes on your computer"));
3349 gc->
setLabel(MainGeneralSettings::tr(
"Require password"));
3353 gc->
setHelpText(MainGeneralSettings::tr(
"Require a password to use "
3354 "AirPlay. Your iPhone, iPad, iPod "
3355 "Touch, or iTunes on your computer "
3356 "will prompt you when required"));
3364 ge->setLabel(MainGeneralSettings::tr(
"Password"));
3366 ge->setValue(
"0000");
3368 ge->setHelpText(MainGeneralSettings::tr(
"Your iPhone, iPad, iPod Touch, or "
3369 "iTunes on your computer will "
3370 "prompt you for this password "
3379 hc->setLabel(MainGeneralSettings::tr(
"AirPlay - Password"));
3380 hc->addChild(AirPlayPasswordEnabled());
3381 hc->addChild(AirPlayPassword());
3390 gc->
setLabel(MainGeneralSettings::tr(
"AirPlay full screen playback"));
3394 gc->
setHelpText(MainGeneralSettings::tr(
"During music playback, displays "
3395 "album cover and various media "
3396 "information in full screen mode"));
3434 gc->
setLabel(PlaybackSettings::tr(
"Enable realtime priority threads"));
3436 gc->
setHelpText(PlaybackSettings::tr(
"When running mythfrontend with root "
3437 "privileges, some threads can be "
3438 "given enhanced priority. Disable "
3439 "this if MythFrontend freezes during "
3440 "video playback."));
3450 ge->setLabel(MainGeneralSettings::tr(
"Ignore devices"));
3454 ge->setHelpText(MainGeneralSettings::tr(
"If there are any devices that you "
3455 "do not want to be monitored, list "
3456 "them here with commas in-between. "
3457 "The plugins will ignore them. "
3458 "Requires restart."));
3466 gc->
setLabel(PlaybackSettings::tr(
"Sort titles"));
3468 gc->
addSelection(PlaybackSettings::tr(
"Alphabetically"),
3470 gc->
addSelection(PlaybackSettings::tr(
"By recording priority"),
3473 gc->
setHelpText(PlaybackSettings::tr(
"Sets the title sorting order when "
3474 "the view is set to Titles only."));
3482 gc->
setLabel(WatchListSettings::tr(
"Include the 'Watch List' group"));
3486 gc->
setHelpText(WatchListSettings::tr(
"The 'Watch List' is an abbreviated "
3487 "list of recordings sorted to "
3488 "highlight series and shows that "
3489 "need attention in order to keep up "
3498 gc->
setLabel(WatchListSettings::tr(
"Start from the Watch List view"));
3502 gc->
setHelpText(WatchListSettings::tr(
"If enabled, the 'Watch List' will "
3503 "be the initial view each time you "
3504 "enter the Watch Recordings screen"));
3512 gc->
setLabel(WatchListSettings::tr(
"Exclude recordings not set for "
3517 gc->
setHelpText(WatchListSettings::tr(
"Set this if you turn off "
3518 "Auto-Expire only for recordings "
3519 "that you've seen and intend to "
3520 "keep. This option will exclude "
3521 "these recordings from the "
3530 gs->setLabel(WatchListSettings::tr(
"Maximum days counted in the score"));
3534 gs->setHelpText(WatchListSettings::tr(
"The 'Watch List' scores are based "
3535 "on 1 point equals one day since "
3536 "recording. This option limits the "
3537 "maximum score due to age and "
3538 "affects other weighting factors."));
3546 gs->setLabel(WatchListSettings::tr(
"Days to exclude weekly episodes after "
3551 gs->setHelpText(WatchListSettings::tr(
"When an episode is deleted or "
3552 "marked as watched, other episodes "
3553 "of the series are excluded from the "
3554 "'Watch List' for this interval of "
3555 "time. Daily shows also have a "
3556 "smaller interval based on this "
3565 gc->
setLabel(MainGeneralSettings::tr(
"Media Monitor"));
3567 gc->
setHelpText(MainGeneralSettings::tr(
"This enables support for "
3568 "monitoring your CD/DVD drives for "
3569 "new disks and launching the "
3570 "proper plugin to handle them. "
3571 "Requires restart."));
3584 gc->
setLabel(LcdSettings::tr(
"Display time"));
3586 gc->
setHelpText(LcdSettings::tr(
"Display current time on idle LCD "
3598 gc->
setLabel(LcdSettings::tr(
"Display recording status"));
3600 gc->
setHelpText(LcdSettings::tr(
"Display current recordings information "
3601 "on LCD display."));
3612 gc->
setLabel(LcdSettings::tr(
"Display menus"));
3614 gc->
setHelpText(LcdSettings::tr(
"Display selected menu on LCD display. "));
3625 gs->setLabel(LcdSettings::tr(
"Menu pop-up time"));
3627 gs->setHelpText(LcdSettings::tr(
"How many seconds the menu will remain "
3628 "visible after navigation."));
3639 gc->
setLabel(LcdSettings::tr(
"Display music artist and title"));
3641 gc->
setHelpText(LcdSettings::tr(
"Display playing artist and song title in "
3642 "MythMusic on LCD display."));
3653 gc->
setLabel(LcdSettings::tr(
"Items"));
3655 gc->
addSelection(LcdSettings::tr(
"Artist - Title"),
"ArtistTitle");
3656 gc->
addSelection(LcdSettings::tr(
"Artist [Album] Title"),
3657 "ArtistAlbumTitle");
3659 gc->
setHelpText(LcdSettings::tr(
"Which items to show when playing music."));
3668 gc->
setLabel(LcdSettings::tr(
"Display channel information"));
3670 gc->
setHelpText(LcdSettings::tr(
"Display tuned channel information on LCD "
3682 gc->
setLabel(LcdSettings::tr(
"Display volume information"));
3684 gc->
setHelpText(LcdSettings::tr(
"Display volume level information "
3685 "on LCD display."));
3696 gc->
setLabel(LcdSettings::tr(
"Display generic information"));
3698 gc->
setHelpText(LcdSettings::tr(
"Display generic information on LCD display."));
3709 gc->
setLabel(LcdSettings::tr(
"Backlight always on"));
3711 gc->
setHelpText(LcdSettings::tr(
"Turn on the backlight permanently on the "
3722 gc->
setLabel(LcdSettings::tr(
"Heartbeat always on"));
3724 gc->
setHelpText(LcdSettings::tr(
"Turn on the LCD heartbeat."));
3735 gc->
setLabel(LcdSettings::tr(
"Display large clock"));
3737 gc->
setHelpText(LcdSettings::tr(
"On multiline displays try and display the "
3738 "time as large as possible."));
3749 ge->setLabel(LcdSettings::tr(
"LCD key order"));
3751 ge->setValue(
"ABCDEF");
3754 LcdSettings::tr(
"Enter the 6 Keypad Return Codes for your LCD keypad "
3755 "in the order in which you want the functions "
3756 "up/down/left/right/yes/no to operate. (See "
3757 "lcdproc/server/drivers/hd44780.c/keyMapMatrix[] "
3758 "or the matrix for your display)"));
3766 gc->
setLabel(LcdSettings::tr(
"Enable LCD device"));
3768 gc->
setHelpText(LcdSettings::tr(
"Use an LCD display to view MythTV status "
3794 gc->
setLabel(PlaybackSettings::tr(
"Enable gamma correction for video"));
3798 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, QuickTime will correct "
3799 "the gamma of the video to match "
3800 "your monitor. Turning this off can "
3801 "save some CPU cycles."));
3809 gc->
setLabel(PlaybackSettings::tr(
"Scale video as necessary"));
3813 gc->
setHelpText(PlaybackSettings::tr(
"If enabled, video will be scaled to "
3814 "fit your window or screen. If "
3815 "unchecked, video will never be made "
3816 "larger than its actual pixel size."));
3824 gs->
setLabel(PlaybackSettings::tr(
"Frames to skip in fullscreen mode"));
3828 gs->
setHelpText(PlaybackSettings::tr(
"Video displayed in fullscreen or "
3829 "non-windowed mode will skip this "
3830 "many frames for each frame drawn. "
3831 "Set to 0 to show every frame. Only "
3832 "valid when either \"Use GUI size for "
3833 "TV playback\" or \"Run the frontend "
3834 "in a window\" is not checked."));
3842 gc->
setLabel(MacMainSettings::tr(
"Video in main window"));
3846 gc->
setHelpText(MacMainSettings::tr(
"If enabled, video will be displayed "
3847 "in the main GUI window. Disable this "
3848 "when you only want video on the "
3849 "desktop or in a floating window. Only "
3850 "valid when \"Use GUI size for TV "
3851 "playback\" and \"Run the frontend in "
3852 "a window\" are checked."));
3860 gs->
setLabel(MacMainSettings::tr(
"Frames to skip"));
3864 gs->
setHelpText(MacMainSettings::tr(
"Video in the main window will skip "
3865 "this many frames for each frame "
3866 "drawn. Set to 0 to show every "
3875 gs->
setLabel(MacMainSettings::tr(
"Opacity"));
3879 gs->
setHelpText(MacMainSettings::tr(
"The opacity of the main window. Set "
3880 "to 100 for completely opaque, set "
3881 "to 0 for completely transparent."));
3889 gc->
setLabel(MacFloatSettings::tr(
"Video in floating window"));
3893 gc->
setHelpText(MacFloatSettings::tr(
"If enabled, video will be displayed "
3894 "in a floating window. Only valid "
3895 "when \"Use GUI size for TV "
3896 "playback\" and \"Run the frontend "
3897 "in a window\" are checked."));
3905 gs->
setLabel(MacFloatSettings::tr(
"Frames to skip"));
3909 gs->
setHelpText(MacFloatSettings::tr(
"Video in the floating window will "
3910 "skip this many frames for each "
3911 "frame drawn. Set to 0 to show "
3920 gs->
setLabel(MacFloatSettings::tr(
"Opacity"));
3924 gs->
setHelpText(MacFloatSettings::tr(
"The opacity of the floating window. "
3925 "Set to 100 for completely opaque, "
3926 "set to 0 for completely "
3935 gc->
setLabel(MacDockSettings::tr(
"Video in the dock"));
3939 gc->
setHelpText(MacDockSettings::tr(
"If enabled, video will be displayed "
3940 "in the application's dock icon. Only "
3941 "valid when \"Use GUI size for TV "
3942 "playback\" and \"Run the frontend in "
3943 "a window\" are checked."));
3951 gs->
setLabel(MacDockSettings::tr(
"Frames to skip"));
3955 gs->
setHelpText(MacDockSettings::tr(
"Video in the dock icon will skip this "
3956 "many frames for each frame drawn. Set "
3957 "to 0 to show every frame."));
3965 gc->
setLabel(MacDesktopSettings::tr(
"Video on the desktop"));
3969 gc->
setHelpText(MacDesktopSettings::tr(
"If enabled, video will be "
3970 "displayed on the desktop, "
3971 "behind the Finder icons. "
3972 "Only valid when \"Use GUI "
3973 "size for TV playback\" and "
3974 "\"Run the frontend in a "
3975 "window\" are checked."));
3983 gs->
setLabel(MacDesktopSettings::tr(
"Frames to skip"));
3987 gs->
setHelpText(MacDesktopSettings::tr(
"Video on the desktop will skip "
3988 "this many frames for each frame "
3989 "drawn. Set to 0 to show every "
4014 setLabel(MainGeneralSettings::tr(
"Shutdown/Reboot Settings"));
4018 #ifndef Q_OS_ANDROID
4102 pin->setLabel(tr(
"Settings Access"));
4107 general->setLabel(tr(
"General"));
4112 if (sh->hasPrefixes()) {
4117 general->addChild(SortCaseSensitive());
4120 general->addChild(stripPrefixes);
4130 remotecontrol->setLabel(tr(
"Remote Control"));
4137 remotecontrol->addChild(cec);
4138 m_cecPowerOnTVAllowed = CECPowerOnTVAllowed();
4139 m_cecPowerOffTVAllowed = CECPowerOffTVAllowed();
4140 m_cecPowerOnTVOnStart = CECPowerOnTVOnStart();
4141 m_cecPowerOffTVOnExit = CECPowerOffTVOnExit();
4147 this, &MainGeneralSettings::cecChanged);
4149 this, &MainGeneralSettings::cecChanged);
4150 #endif // USING_LIBCEC
4153 #ifdef USING_AIRPLAY
4155 airplay->setLabel(tr(
"AirPlay Settings"));
4156 airplay->addChild(AirPlayEnabled());
4157 airplay->addChild(AirPlayFullScreen());
4158 airplay->addChild(AirPlayAudioOnly());
4159 airplay->addChild(AirPlayPasswordSettings());
4167 void MainGeneralSettings::cecChanged(
bool )
4169 if (m_cecPowerOnTVAllowed->boolValue())
4170 m_cecPowerOnTVOnStart->setEnabled(
true);
4173 m_cecPowerOnTVOnStart->setEnabled(
false);
4174 m_cecPowerOnTVOnStart->setValue(
false);
4177 if (m_cecPowerOffTVAllowed->boolValue())
4178 m_cecPowerOffTVOnExit->setEnabled(
true);
4181 m_cecPowerOffTVOnExit->setEnabled(
false);
4182 m_cecPowerOffTVOnExit->setValue(
false);
4185 #endif // USING_LIBCEC
4189 QStringList strlist( QString(
"REFRESH_BACKEND") );
4191 LOG(VB_GENERAL, LOG_ERR, QString(
"%1 called").arg(__FUNCTION__));
4214 setLabel(PlaybackSettings::tr(
"Scaling"));
4238 item->
SetText(PlaybackSettings::tr(
"No scaling"),
"value");
4242 item->
SetText(QString(
"%1%x%2%+%3%+%4%")
4275 auto *
menu =
new MythMenu(tr(
"Playback Profile Menu"),
this,
"mainmenu");
4287 menuPopup->SetReturnEvent(
this,
"mainmenu");
4289 if (menuPopup->Create())
4305 config->DecreasePriority();
4322 config->IncreasePriority();
4344 general->setLabel(tr(
"General Playback"));
4365 advanced->setLabel(tr(
"Advanced Playback Settings"));
4386 pbox->setLabel(tr(
"View Recordings"));
4395 pbox2->setLabel(tr(
"Recording Groups"));
4401 pbox->addChild(pbox2);
4410 pbox->addChild(playbackWatchList);
4414 seek->setLabel(tr(
"Seeking"));
4422 comms->setLabel(tr(
"Commercial Skip"));
4433 mac->
setLabel(tr(
"Mac OS X Video Settings"));
4488 general->setLabel(tr(
"General (Basic)"));
4497 autoexp->setLabel(tr(
"General (Auto-Expire)"));
4515 jobs->setLabel(tr(
"General (Jobs)"));
4526 general2->setLabel(tr(
"General (Advanced)"));
4538 changrp->setLabel(tr(
"General (Channel Groups)"));
4559 sched->setLabel(tr(
"Scheduler Options"));
4570 access->setLabel(tr(
"Accessibility Options"));
4599 setLabel(AppearanceSettings::tr(
"GUI dimension"));
4622 item->
SetText(AppearanceSettings::tr(
"Fullscreen"),
"value");
4626 item->
SetText(QString(
"%1x%2+%3+%4")
4642 QCoreApplication::processEvents();
4649 QList screens = QGuiApplication::screens();
4650 for (QScreen *qscreen : qAsConst(screens))
4662 screen->setLabel(tr(
"Theme / Screen Settings"));
4688 #ifdef USING_AIRPLAY
4689 screen->addChild(AirPlayFullScreen());
4695 std::vector<MythDisplayMode> scr = display->
GetVideoModes();
4702 dates->setLabel(tr(
"Localization"));
4724 const QString &channum,
const QString &name);
4732 const QString &channum,
const QString &channame)
4733 : m_channelId(chanid)
4735 setLabel(QString(
"%1 %2").arg(channum, channame));
4736 setHelpText(ChannelGroupSettings::tr(
"Select/Unselect channels for this channel group"));
4741 : m_groupId(groupId)
4760 "INSERT INTO channelgroupnames (name) VALUE (:NEWNAME);";
4769 QString qstr2 =
"SELECT grpid FROM channelgroupnames "
4770 "WHERE name = :NEWNAME;";
4783 QString qstr =
"UPDATE channelgroupnames set name = :NEWNAME "
4784 " WHERE name = :OLDNAME ;";
4804 QList<StandardSetting *>::const_iterator i;
4805 for (i = children->constBegin(); i != children->constEnd(); ++i)
4807 if ((*i)->haveChanged())
4814 if (channel->boolValue())
4844 "SELECT channel.chanid, channum, name, grpid FROM channel "
4845 "LEFT JOIN channelgroup "
4846 "ON (channel.chanid = channelgroup.chanid AND grpid = :GRPID) "
4847 "WHERE deleted IS NULL "
4848 "ORDER BY channum+0; ";
4858 while (query.
next())
4860 auto *channelCheckBox =
4862 query.
value(1).toString(),
4863 query.
value(2).toString());
4864 channelCheckBox->setValue(!query.
value(3).isNull());
4882 query.
prepare(
"DELETE FROM channelgroup WHERE grpid = :GRPID;");
4888 query.
prepare(
"DELETE FROM channelgroupnames WHERE grpid = :GRPID;");
4908 for (
auto it = list.begin(); it < list.end(); ++it)
4911 (it->m_name ==
"Favorites") ? tr(
"Favorites") :
4912 (it->m_name ==
"Priority" ) ? tr(
"Priority" ) : it->m_name;
4927 tr(
"Enter the name of the new channel group"));
4929 if (settingdialog->Create())
4937 delete settingdialog;
4944 button->setLabel(name);