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
- ✅ **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**
- 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
- Added stopQueueAutoRefresh() before navigation to prevent conflicting UI updates
- Result: Instant button response on Windows (was 1-3 second lag)
- Reported by: contributor
- Reported by: user report
- ✅ **Main Menu Performance**
- 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 browser user agent to prevent rejection
- Resolves "invalid archive" error on Windows 11
- Reported by: contributor
- Reported by: user report
### Technical Improvements
- ✅ **Responsive Design Pattern**
@ -476,7 +476,7 @@ This file tracks completed features, fixes, and milestones.
- Preserved window size before/after SetContent() calls
- User retains full control via manual resize or maximize
- Improves professional appearance and stability
- Reported by: contributor
- Reported by: user report
### Features (2025-12-18 Session)
- ✅ **History Sidebar Enhancements**

View File

@ -2,6 +2,11 @@
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
**Priority:** High

View File

@ -245,7 +245,7 @@ The `scripts/test-cross-platform.sh` script provides:
## 🎯 Benefits Achieved
### For You (Arch Linux)
### Arch Linux Notes
- ✅ **Perfect Arch Integration**: Detects your exact setup
- ✅ **GPU Optimization**: Proper driver recommendations
- ✅ **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}
content.Add(header)
content.Add(widget.NewLabel("Preferences panel - Coming soon"))
content.Add(widget.NewLabel("This will include settings for:"))
content.Add(widget.NewLabel("• Default output directories"))
content.Add(widget.NewLabel("• Default encoding presets"))
content.Add(widget.NewLabel("• UI theme preferences"))
content.Add(widget.NewLabel("• Automatic updates"))
// Language selection (persisted UI language)
langLabel := widget.NewLabel("Language")
langSelect := widget.NewSelect([]string{"System", "en", "es", "fr", "de", "ja", "zh"}, func(selected string) {
state.convert.Language = selected
state.persistConvertConfig()
})
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
}