From 6eb12043e3fc0fe1891956dbf57f6bb0512c196a Mon Sep 17 00:00:00 2001 From: oop7 <110548351+oop7@users.noreply.github.com> Date: Sat, 25 Apr 2026 10:32:35 +0300 Subject: [PATCH] Add default video quality & subtitles settings Introduce a "Default Selection Settings" group in the Download Settings dialog to let users specify a default video resolution (height) and default subtitle language(s). Adds labeled QLineEdit inputs with placeholders and explanatory help text, uses localized strings for labels, and persists values to ConfigManager under keys "default_video_quality" and "default_subtitle_language" when saving. --- .../ytsage_dialogs_settings.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/ytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py b/ytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py index 76f727b..59d6e6b 100644 --- a/ytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py +++ b/ytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py @@ -376,6 +376,39 @@ class DownloadSettingsDialog(QDialog): audio_format_group_box.setLayout(audio_format_layout) format_layout.addWidget(audio_format_group_box) + + # --- Default Quality and Subtitles Section --- + defaults_group_box = QGroupBox(_("settings.defaults_settings", default="Default Selection Settings")) + defaults_layout = QVBoxLayout() + + # Default Video Quality + vid_qual_layout = QHBoxLayout() + vid_qual_label = QLabel(_("settings.default_video_quality", default="Default Video Resolution (Height):")) + vid_qual_label.setStyleSheet("color: #ffffff; margin-top: 5px;") + self.default_vid_qual_input = QLineEdit(str(ConfigManager.get("default_video_quality") or "")) + self.default_vid_qual_input.setPlaceholderText("e.g. 1080 or 720") + vid_qual_layout.addWidget(vid_qual_label) + vid_qual_layout.addWidget(self.default_vid_qual_input) + defaults_layout.addLayout(vid_qual_layout) + + # Default Subtitles + sub_layout = QHBoxLayout() + sub_label = QLabel(_("settings.default_subtitle_language", default="Default Subtitle Language(s):")) + sub_label.setStyleSheet("color: #ffffff; margin-top: 5px;") + self.default_sub_input = QLineEdit(ConfigManager.get("default_subtitle_language") or "") + self.default_sub_input.setPlaceholderText("e.g. en, es") + sub_layout.addWidget(sub_label) + sub_layout.addWidget(self.default_sub_input) + defaults_layout.addLayout(sub_layout) + + defaults_help = QLabel(_("settings.defaults_help", default="Set your preferred video height and subtitle languages (comma-separated). They will be auto-selected if available.")) + defaults_help.setWordWrap(True) + defaults_help.setStyleSheet("color: #cccccc; margin: 5px; font-size: 11px;") + defaults_layout.addWidget(defaults_help) + + defaults_group_box.setLayout(defaults_layout) + format_layout.addWidget(defaults_group_box) + format_layout.addStretch() # === File Tab === @@ -580,6 +613,12 @@ class DownloadSettingsDialog(QDialog): ConfigManager.set("preferred_audio_format", preferred_audio_format) ConfigManager.set("audio_normalization", audio_normalization) + # Save defaults + default_vid = self.default_vid_qual_input.text().strip() + ConfigManager.set("default_video_quality", default_vid if default_vid else None) + default_sub = self.default_sub_input.text().strip() + ConfigManager.set("default_subtitle_language", default_sub if default_sub else None) + # Save filename format filename_format = self.get_filename_format() if filename_format: