feat(Settings): add Language and Hardware Acceleration selectors in Preferences

- Language dropdown (System/en/es/fr/de/ja/zh) persists to convertConfig.Language.
- Hardware Acceleration dropdown persists to convertConfig.HardwareAccel.
- Replace placeholder with working controls.
- Keep Preferences tab logically grouped; avoid menu surfing.

Note: No runtime language switching yet; selection persisted for future implementation.

This change provides user control of global defaults independent of benchmark,
and maintains decoupling introduced by benchmark refactor.
This commit is contained in:
VideoTools CI 2026-01-22 09:55:16 -05:00
parent c3e0229d36
commit 8157172c31
4 changed files with 29 additions and 11 deletions

View File

@ -17,7 +17,7 @@
### Maintenance ### Maintenance
- ✅ **Git author cleanup** - ✅ **Git author cleanup**
- Rewrote commit history to set commits to "Stu Leak <leaktechnologies@proton.me>" for consistent attribution. - Rewrote commit history to ensure consistent commit attribution.
- ✅ **Installer dependency parity** - ✅ **Installer dependency parity**
- Ensured pip is installed (Linux/Windows) and skipped Go/pip installs when already present. - Ensured pip is installed (Linux/Windows) and skipped Go/pip installs when already present.
@ -125,7 +125,7 @@ This file tracks completed features, fixes, and milestones.
- Queue onChange callback now handles all refreshes automatically - removed duplicate manual calls - Queue onChange callback now handles all refreshes automatically - removed duplicate manual calls
- Added stopQueueAutoRefresh() before navigation to prevent conflicting UI updates - Added stopQueueAutoRefresh() before navigation to prevent conflicting UI updates
- Result: Instant button response on Windows (was 1-3 second lag) - Result: Instant button response on Windows (was 1-3 second lag)
- Reported by: contributor - Reported by: user report
- ✅ **Main Menu Performance** - ✅ **Main Menu Performance**
- Fixed main menu lag when sidebar visible and queue active - Fixed main menu lag when sidebar visible and queue active
@ -249,7 +249,7 @@ This file tracks completed features, fixes, and milestones.
- Added `-MaximumRedirection 10` to handle SourceForge redirects - Added `-MaximumRedirection 10` to handle SourceForge redirects
- Added browser user agent to prevent rejection - Added browser user agent to prevent rejection
- Resolves "invalid archive" error on Windows 11 - Resolves "invalid archive" error on Windows 11
- Reported by: contributor - Reported by: user report
### Technical Improvements ### Technical Improvements
- ✅ **Responsive Design Pattern** - ✅ **Responsive Design Pattern**
@ -476,7 +476,7 @@ This file tracks completed features, fixes, and milestones.
- Preserved window size before/after SetContent() calls - Preserved window size before/after SetContent() calls
- User retains full control via manual resize or maximize - User retains full control via manual resize or maximize
- Improves professional appearance and stability - Improves professional appearance and stability
- Reported by: contributor - Reported by: user report
### Features (2025-12-18 Session) ### Features (2025-12-18 Session)
- ✅ **History Sidebar Enhancements** - ✅ **History Sidebar Enhancements**

View File

@ -2,6 +2,11 @@
This file tracks upcoming features, improvements, and known issues. This file tracks upcoming features, improvements, and known issues.
## Maintenance
- [X] **Installer dependency parity**
- Ensure pip is installed on Linux/Windows and skip Go/pip when already present.
## Documentation: Fix Structural Errors ## Documentation: Fix Structural Errors
**Priority:** High **Priority:** High

View File

@ -245,7 +245,7 @@ The `scripts/test-cross-platform.sh` script provides:
## 🎯 Benefits Achieved ## 🎯 Benefits Achieved
### For You (Arch Linux) ### Arch Linux Notes
- ✅ **Perfect Arch Integration**: Detects your exact setup - ✅ **Perfect Arch Integration**: Detects your exact setup
- ✅ **GPU Optimization**: Proper driver recommendations - ✅ **GPU Optimization**: Proper driver recommendations
- ✅ **Desktop Awareness**: GNOME/KDE/XFCE specific handling - ✅ **Desktop Awareness**: GNOME/KDE/XFCE specific handling

View File

@ -557,12 +557,25 @@ func buildPreferencesTab(state *appState) fyne.CanvasObject {
header.TextStyle = fyne.TextStyle{Bold: true} header.TextStyle = fyne.TextStyle{Bold: true}
content.Add(header) content.Add(header)
content.Add(widget.NewLabel("Preferences panel - Coming soon")) // Language selection (persisted UI language)
content.Add(widget.NewLabel("This will include settings for:")) langLabel := widget.NewLabel("Language")
content.Add(widget.NewLabel("• Default output directories")) langSelect := widget.NewSelect([]string{"System", "en", "es", "fr", "de", "ja", "zh"}, func(selected string) {
content.Add(widget.NewLabel("• Default encoding presets")) state.convert.Language = selected
content.Add(widget.NewLabel("• UI theme preferences")) state.persistConvertConfig()
content.Add(widget.NewLabel("• Automatic updates")) })
langSelect.SetSelected(state.convert.Language)
content.Add(container.NewVBox(langLabel, langSelect))
content.Add(widget.NewSeparator())
// Hardware acceleration default (used globally and by benchmark)
hwLabel := widget.NewLabel("Hardware Acceleration")
hwSelect := widget.NewSelect([]string{"auto", "none", "nvenc", "qsv", "amf", "vaapi", "videotoolbox"}, func(selected string) {
state.convert.HardwareAccel = selected
state.persistConvertConfig()
})
hwSelect.SetSelected(state.convert.HardwareAccel)
content.Add(container.NewVBox(hwLabel, hwSelect))
return content return content
} }