Commit Graph
12 Commits
Author SHA1 Message Date
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
Robert Honz d3164f48de ✨ Add Python 3.13 support and update dependencies
Extends Python version support to include 3.13 in CI workflows,
tox environments, and documentation. Updates dependencies to
ensure compatibility with the new Python version and resolves
legacy workarounds for macOS GitHub Actions runners.

Upgrades include:
- `pyside6` to version 6.9.1
- `click` to version 8.2.1
- Other relevant dependency updates for compatibility.

Re-enables `pyupgrade` pre-commit hook targeting Python 3.12+.

Fixed binary creation for Intel macOS.
2025-07-01 08:04:21 +02:00
Robert Honz a2e8be4114 ✨ Dependency update. pyproject.toml fixes. isort-seed removal. 2025-06-27 09:42:35 +02:00
Robert Honz b0bf71ccf5 👷 Run check on commit. 2025-02-01 08:58:36 +01:00
Robert Honz 757817deec 👷 Poetry update to v2 2025-01-31 08:51:38 +01:00
Robert Honz 6ef9c4ba1e 👷 Minimum Python version is now 3.12. 2024-12-17 09:45:10 +01:00
Robert Honz a30ee0550d 🛠️ Fixed GitHub action on push (tox). 2024-01-12 13:24:49 +01:00
Robert Honz 87091fb060 🛠️ Isort isn't used anymore due to conflicts with black. Black reformatting done. Pre-Commit-Hook version upgrades. 2024-01-12 11:12:47 +01:00
Robert Honz 8a46e96921 🛠️ Pre Commit Hooks adjusted. 2024-01-12 10:55:40 +01:00
Robert Honz 8196213247 🛠️ Isort refactoring. 2024-01-12 10:47:17 +01:00
Robert Honz a99c42ad02 ♻️ Ruff reformatting. 2024-01-12 08:15:54 +01:00
Robert Honz 0d4a9d6b87 🌟 Re-add all project files. 2023-12-19 23:58:57 +01:00