Commit Graph
37 Commits
Author SHA1 Message Date
Warry 75868b32d0 refactor: Restructure GUI components into separate modules for improved maintainability 2025-12-04 12:03:31 +01:00
Warry 0facd232dc Merge remote-tracking branch 'warry-github/master' into feature/refactor-settings-ui 2025-12-03 09:25:37 +01:00
Warry 121dbb788d feat: refactor settings UI with category navigation and add Delimiters page
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
2025-11-30 15:37:32 +01:00
E.J. Talevi 0e74ac32d6 Added clarity and grammar fixes to documentation and to some strings on the program itself. 2025-11-25 23:56:56 -03:00
exislowandGitHub b485292807 Merge pull request #596 from Winman486/fix/rate-limiting-playlist-downloads
Fix/rate limiting playlist downloads
2025-10-22 21:38:30 +02:00
Rikrdoga cb32c2fa8b Refactor Dolby Atmos Implementation 2025-10-20 20:23:14 -06:00
Winman486 3c835c2d19 Merge upstream/master and resolve conflicts
- Resolved conflict in dialog_settings.py (kept both cb_use_primary_album_artist and cb_mark_explicit checkboxes)
- Fixed code quality issues found by make check:
  * Removed duplicate on_download_album_from_track function (F811)
  * Updated isinstance calls to use X | Y syntax instead of (X, Y) (UP038)
  * Fixed unused loop variable album_stub (B007)
  * Applied automatic formatting fixes (black, prettier, trailing whitespace)
- Only remaining issue is C901 complexity warning in on_download_all_albums_from_playlist (expected per maintainer feedback)
2025-10-20 16:12:46 -05:00
Trubo 2402550884 Add a checkbox to settings that toggles the explicit symbol in track titles 2025-10-19 18:16:19 -05:00
Winman486 ac3bf51c56 feat(gui): add 'Download Full Album', 'Download All Albums', and 'Single album folder (primary artist)' preference 2025-10-17 15:17:02 -05:00
Robert Honz 107afd5e3a ✨ Config options created for symlinking tracks and playlist creation. 2024-12-16 08:14:39 +01:00
Robert Honz 5768edacc5 ✨ Multithreaded downloads implemented (for Playlists, Albums etc.). Fixes #180 2024-12-15 23:35:10 +01:00
Robert Honz b8091e233b ✨ Album track number padding can be set. Fixes #142 2024-12-15 20:37:06 +01:00
Robert Honz 33a30537e9 ✨ Merge with master. 2024-11-29 17:41:25 +01:00
Robert Honz 5f9cc39ba7 ✨ GUI login updated to device mode. 2024-11-13 13:26:46 +01:00
Robert Honz c1a102f646 ✨ Removed complex skipping options in favor of a faster duplicates check / skipping of already present items without download delay. 2024-11-13 09:09:00 +01:00
Robert Honz 618b16257b ✨ Backend and GUI changed to device login. Login dialog needs to be threaded / non blocking. 2024-11-12 19:15:33 +01:00
Robert Honz 24d75a7c20 ✨ Options for album art added to GUI. Fixes #125 2024-11-11 10:17:40 +01:00
Robert Honz f41d65d7d3 Since TIDAL has remove MQA (HI_RES), all traces of MQA have been removed here. 2024-11-06 15:01:18 +01:00
Robert Honz 5bd65a21bc Added default path as an alternative path for empty user setting of an option. FFmpeg path is whiched as an alternative path. 2024-11-06 10:03:41 +01:00
Robert Honz 26596ddd32 🛠️ Version Dialog: Behavior changed on auto / manual check. 2024-05-03 20:39:29 +02:00
Robert Honz 7f8912d83b 🛠️ Display dialog on manual version update check, if no new version available. 2024-04-25 23:13:48 +02:00
Robert Honz b07c3374b2 ✨ FLAC can be extracted from MP4 containers (see options). Downgrade on HI_RES download is possible (see options). Fixes #93 #86 2024-04-21 19:18:05 +02:00
Robert Honz d5dc32078b 👷 Lint checker fixes. 2024-04-03 07:09:15 +02:00
Robert Honz 007900eafe 👷 Converted all Enums to StrEnum 2024-04-02 16:16:38 +02:00
Robert Honz 77ef9ef75e ✨ Can explicitly set ffmpeg path. 2024-03-29 11:17:30 +01:00
Robert Honz 9e27dd39b9 ✨ Updates will be automatically checked on startup and can also be checked manually. Version dialog is used to display update information. Fixes #76 2024-03-28 07:44:47 +01:00
Robert Honz 6e050be9d6 ✨ Version is correctly shown in PyInstaller running mode. Running the app from source code points to dev config dir (~/.config/tidal_dl_ng-dev). 2024-03-26 07:10:01 +01:00
Robert Honz ad16589714 🛠️ Import fix. Fixes #69 2024-03-22 20:16:15 +01:00
Robert Honz 48fd379eba ✨ Search for artists is possible. 2024-03-22 17:31:33 +01:00
Robert Honz c7c8c12574 🛠️ Version will be shown correctly. 2024-03-22 16:20:29 +01:00
Robert Honz d331f93c91 ✨ Downloader will check for FFmpeg before converting video files. 2024-03-22 15:50:06 +01:00
Robert Honz 4ed2a67e4c ✨ GUI user lists can be reloaded. Logout is possible. 2024-02-05 06:31:18 +01:00
Robert Honz 0f8670ebba ✨ Settings will be saved to file. 2024-02-04 12:50:19 +01:00
Robert Honz c71a2bdb0b ✨ Preferences dialog added. Show settings. 2024-02-04 12:19:40 +01:00
Robert Honz c1442c8942 ✨ Login URL will get wrapped. 2024-02-03 09:56:02 +01:00
Robert Honz c1bf278fd7 ✨ Implemented login dialog for PKCE login method. Fixes #22. 2024-02-01 07:38:01 +01:00
Robert Honz 6cf723b2b8 ✨ Added version dialog. See File -> Version. 2024-01-19 10:00:27 +01:00