Closes #640 ## Changes ### UI Refactoring - Replace monolithic settings dialog with category-based navigation - Add QListWidget (lw_categories) for category selection on the left - Add QStackedWidget (sw_categories) for content pages on the right - Organize settings into 5 distinct pages: - Flags (14 checkboxes) - Quality (3 combo boxes) - Numbers (2 spin boxes) - Paths & Formats (7 line edits + 2 browse buttons) - Delimiters (4 line edits) — NEW ### New Feature: Delimiters Category - Add customizable separators for artists in metadata and filenames: - metadata_delimiter_artist - metadata_delimiter_album_artist - filename_delimiter_artist - filename_delimiter_album_artist - Auto-integration with DialogPreferences via parameters_line_edit - Line edits with max width 100px for compact display ### Styling - Apply dark theme to settings dialog: - Category list: #2b2b2b background, #3d5a80 selection, #3a3a3a hover - Settings area: #333333 background, styled GroupBoxes (#3a3a3a) - Light text (#e0e0e0) for better contrast - Add spacing property (6px) to category list for better readability - Style QListWidget items with padding (4px 3px) and margin (2px 0px) ### Testing - Add comprehensive test suite (61 tests total): - test_settings_ui.py: UI and basic integration (14 tests) - test_settings_dialog_structure.py: detailed structure validation (20 tests) - test_dialog_preferences_integration.py: DialogPreferences integration (14 tests) - test_delimiters_category.py: new Delimiters page validation (13 tests) - Fix ruff issues (F841, S108) in test files - All tests passing with 100% success rate ### Documentation - Add docs/refactor_settings_ui.md: comprehensive refactor overview - Add docs/delimiters_category.md: Delimiters feature documentation - Add docs/ui_styles.md: dark theme style guide - Add docs/testing_summary.md: testing overview and commands ### Code Quality - Apply ruff/black/pyupgrade via pre-commit hooks - Fix F841 (unused variable) in test_dialog_preferences_integration.py - Fix S108 (insecure temp path) using Path.home() in test_settings_ui.py - End-of-file fixes applied automatically ## Files Modified - tidal_dl_ng/ui/dialog_settings.ui (complete restructure) - tidal_dl_ng/ui/dialog_settings.py (auto-generated from .ui) - tidal_dl_ng/dialog.py (add 4 delimiter params + Delimiters category) - tests/* (4 new test files with 61 tests) - docs/* (4 new documentation files) ## Impact - Improved UX: intuitive category navigation, better visual organization - Extensibility: easy to add new settings pages/categories - Quality: comprehensive test coverage ensures robustness - User flexibility: customizable separators for metadata and filenames ## Technical Notes - QStackedWidget pages indexed 0-4 matching category list order - Navigation via QListWidget::currentRowChanged signal - Automatic save/load through existing DialogPreferences methods - No breaking changes to existing settings or configuration ## Testing Commands ```powershell poetry run pre-commit run -a poetry run pytest -q
1293 lines
47 KiB
XML
1293 lines
47 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<ui version="4.0">
|
|
<class>DialogSettings</class>
|
|
<widget class="QDialog" name="DialogSettings">
|
|
<property name="geometry">
|
|
<rect>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<width>808</width>
|
|
<height>379</height>
|
|
</rect>
|
|
</property>
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
|
<horstretch>100</horstretch>
|
|
<verstretch>100</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>Preferences</string>
|
|
</property>
|
|
<property name="sizeGripEnabled">
|
|
<bool>true</bool>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="lv_dialog_settings">
|
|
<property name="leftMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>0</number>
|
|
</property>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_main">
|
|
<property name="leftMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_main_content">
|
|
<item>
|
|
<widget class="QListWidget" name="lw_categories">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>150</width>
|
|
<height>0</height>
|
|
</size>
|
|
</property>
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>200</width>
|
|
<height>16777215</height>
|
|
</size>
|
|
</property>
|
|
<property name="styleSheet">
|
|
<string notr="true">QListWidget {
|
|
background-color: #2b2b2b;
|
|
border: 1px solid #3d3d3d;
|
|
border-radius: 4px;
|
|
padding: 4px;
|
|
outline: none;
|
|
}
|
|
|
|
QListWidget::item {
|
|
padding: 4px 3px;
|
|
border-radius: 3px;
|
|
margin: 2px 0px;
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
QListWidget::item:selected {
|
|
background-color: #3d5a80;
|
|
color: white;
|
|
font-weight: bold;
|
|
}
|
|
|
|
QListWidget::item:hover:!selected {
|
|
background-color: #3a3a3a;
|
|
color: white;
|
|
}
|
|
|
|
QListWidget::item:focus {
|
|
outline: none;
|
|
}</string>
|
|
</property>
|
|
<property name="frameShape">
|
|
<enum>QFrame::Shape::StyledPanel</enum>
|
|
</property>
|
|
<property name="frameShadow">
|
|
<enum>QFrame::Shadow::Raised</enum>
|
|
</property>
|
|
<property name="midLineWidth">
|
|
<number>-1</number>
|
|
</property>
|
|
<property name="resizeMode">
|
|
<enum>QListView::ResizeMode::Adjust</enum>
|
|
</property>
|
|
<property name="spacing">
|
|
<number>0</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QStackedWidget" name="sw_categories">
|
|
<property name="styleSheet">
|
|
<string notr="true">QStackedWidget {
|
|
background-color: #333333;
|
|
border: 1px solid #3d3d3d;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
QWidget {
|
|
background-color: transparent;
|
|
}
|
|
|
|
QGroupBox {
|
|
background-color: #3a3a3a;
|
|
border: 1px solid #4a4a4a;
|
|
border-radius: 6px;
|
|
margin-top: 12px;
|
|
padding-top: 12px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
QGroupBox::title {
|
|
subcontrol-origin: margin;
|
|
subcontrol-position: top left;
|
|
padding: 4px 8px;
|
|
background-color: #3a3a3a;
|
|
border-radius: 4px;
|
|
}</string>
|
|
</property>
|
|
<property name="frameShape">
|
|
<enum>QFrame::Shape::StyledPanel</enum>
|
|
</property>
|
|
<property name="frameShadow">
|
|
<enum>QFrame::Shadow::Plain</enum>
|
|
</property>
|
|
<property name="midLineWidth">
|
|
<number>1</number>
|
|
</property>
|
|
<property name="currentIndex">
|
|
<number>0</number>
|
|
</property>
|
|
<widget class="QWidget" name="page_flags">
|
|
<layout class="QVBoxLayout" name="lv_page_flags">
|
|
<item>
|
|
<widget class="QGroupBox" name="gb_flags">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>100</horstretch>
|
|
<verstretch>100</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="title">
|
|
<string>Flags</string>
|
|
</property>
|
|
<property name="flat">
|
|
<bool>false</bool>
|
|
</property>
|
|
<property name="checkable">
|
|
<bool>false</bool>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="lv_flags">
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_flags_1">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_video_download">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_video_download">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>100</horstretch>
|
|
<verstretch>100</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_video_convert">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_video_convert_mp4">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>100</horstretch>
|
|
<verstretch>100</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_flags_2">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_lyrics_embed">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_lyrics_embed">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="whatsThis">
|
|
<string/>
|
|
</property>
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_lyrics_file">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_lyrics_file">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>100</horstretch>
|
|
<verstretch>100</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_flag_3">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_download_delay">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_download_delay">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>100</horstretch>
|
|
<verstretch>100</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_extract_flac">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_extract_flac">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_flags_4">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_metadata_cover_embed">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_metadata_cover_embed">
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_cover_album_file">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_cover_album_file">
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_flag_skip_existing">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_skip_existing">
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_symlink_to_track">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_symlink_to_track">
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_12">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_playlist_create">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_playlist_create">
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_mark_explicit">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_mark_explicit">
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_use_primary_album_artist">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_use_primary_album_artist">
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="lv_download_dolby_atmos">
|
|
<item>
|
|
<widget class="QCheckBox" name="cb_download_dolby_atmos">
|
|
<property name="text">
|
|
<string>CheckBox</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="vs_page_flags">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QWidget" name="page_quality">
|
|
<layout class="QVBoxLayout" name="lv_page_quality">
|
|
<item>
|
|
<widget class="QGroupBox" name="gb_choices">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="title">
|
|
<string>Choices</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="lv_choices">
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_choices_quality_audio" stretch="0,0,50">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_quality_audio">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_quality_audio">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QComboBox" name="c_quality_audio"/>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_choices_quality_video" stretch="0,0,50">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_quality_video">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_quality_video">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QComboBox" name="c_quality_video"/>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_choices_cover_dimension" stretch="0,0,50">
|
|
<property name="sizeConstraint">
|
|
<enum>QLayout::SizeConstraint::SetDefaultConstraint</enum>
|
|
</property>
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_metadata_cover_dimension">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_metadata_cover_dimension">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QComboBox" name="c_metadata_cover_dimension">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>10</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="vs_page_quality">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QWidget" name="page_numbers">
|
|
<layout class="QVBoxLayout" name="lv_page_numbers">
|
|
<item>
|
|
<widget class="QGroupBox" name="gb_numbers">
|
|
<property name="title">
|
|
<string>Numbers</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout_8">
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
|
<item>
|
|
<widget class="QLabel" name="l_album_track_num_pad_min">
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_album_track_num_pad_min">
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QSpinBox" name="sb_album_track_num_pad_min">
|
|
<property name="maximum">
|
|
<number>4</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
|
<item>
|
|
<widget class="QLabel" name="l_downloads_concurrent_max">
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_downloads_concurrent_max">
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QSpinBox" name="sb_downloads_concurrent_max">
|
|
<property name="minimum">
|
|
<number>1</number>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>5</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="vs_page_numbers">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QWidget" name="page_paths">
|
|
<layout class="QVBoxLayout" name="lv_page_paths">
|
|
<item>
|
|
<widget class="QGroupBox" name="gb_path">
|
|
<property name="title">
|
|
<string>Path</string>
|
|
</property>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,50">
|
|
<item>
|
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_path_base">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_download_base_path">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_download_base_path">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_path_fmt_track">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_format_track">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_format_track">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_path_fmt_video">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_format_video">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_format_video">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_path_fmt_album">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_format_album">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_format_album">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_fpath_mt_playlist">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_format_playlist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_format_playlist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_path_fmt_mix">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_format_mix">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_format_mix">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_path_binary_ffmpeg">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_path_binary_ffmpeg">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_path_binary_ffmpeg">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QVBoxLayout" name="verticalLayout">
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
|
<item>
|
|
<widget class="QLineEdit" name="le_download_base_path">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="dragEnabled">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QPushButton" name="pb_download_base_path">
|
|
<property name="text">
|
|
<string>...</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
|
<item>
|
|
<widget class="QLineEdit" name="le_format_track"/>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
|
<item>
|
|
<widget class="QLineEdit" name="le_format_video"/>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
|
<item>
|
|
<widget class="QLineEdit" name="le_format_album"/>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
|
<item>
|
|
<widget class="QLineEdit" name="le_format_playlist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
|
<item>
|
|
<widget class="QLineEdit" name="le_format_mix"/>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
<item>
|
|
<widget class="QLineEdit" name="le_path_binary_ffmpeg">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="dragEnabled">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QPushButton" name="pb_path_binary_ffmpeg">
|
|
<property name="text">
|
|
<string>...</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="vs_page_paths">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QWidget" name="page_delimiters">
|
|
<layout class="QVBoxLayout" name="lv_page_delimiters">
|
|
<item>
|
|
<widget class="QGroupBox" name="gb_delimiters">
|
|
<property name="title">
|
|
<string>Delimiters</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="lv_delimiters">
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_metadata_delimiter_artist">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_metadata_delimiter_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_metadata_delimiter_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLineEdit" name="le_metadata_delimiter_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>100</width>
|
|
<height>16777215</height>
|
|
</size>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="hs_metadata_delimiter_artist">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Horizontal</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>40</width>
|
|
<height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_metadata_delimiter_album_artist">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_metadata_delimiter_album_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_metadata_delimiter_album_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLineEdit" name="le_metadata_delimiter_album_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>100</width>
|
|
<height>16777215</height>
|
|
</size>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="hs_metadata_delimiter_album_artist">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Horizontal</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>40</width>
|
|
<height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_filename_delimiter_artist">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_filename_delimiter_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_filename_delimiter_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLineEdit" name="le_filename_delimiter_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>100</width>
|
|
<height>16777215</height>
|
|
</size>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="hs_filename_delimiter_artist">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Horizontal</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>40</width>
|
|
<height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="lh_filename_delimiter_album_artist">
|
|
<item>
|
|
<widget class="QLabel" name="l_icon_filename_delimiter_album_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="l_filename_delimiter_album_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="text">
|
|
<string>TextLabel</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLineEdit" name="le_filename_delimiter_album_artist">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>100</width>
|
|
<height>16777215</height>
|
|
</size>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="hs_filename_delimiter_album_artist">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Horizontal</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>40</width>
|
|
<height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="vs_page_delimiters">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<widget class="QDialogButtonBox" name="bb_dialog">
|
|
<property name="orientation">
|
|
<enum>Qt::Orientation::Horizontal</enum>
|
|
</property>
|
|
<property name="standardButtons">
|
|
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<resources/>
|
|
<connections>
|
|
<connection>
|
|
<sender>bb_dialog</sender>
|
|
<signal>accepted()</signal>
|
|
<receiver>DialogSettings</receiver>
|
|
<slot>accept()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>319</x>
|
|
<y>661</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>319</x>
|
|
<y>340</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
<connection>
|
|
<sender>bb_dialog</sender>
|
|
<signal>rejected()</signal>
|
|
<receiver>DialogSettings</receiver>
|
|
<slot>reject()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>319</x>
|
|
<y>661</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>319</x>
|
|
<y>340</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
</connections>
|
|
</ui>
|