Introduce the Settings page, reachable from the Discover gear and the header menu. Two sub-sections backed by the existing UI-agnostic stores. - Audio panel: backend, output device and sample-rate dropdowns; toggles for exclusive mode, DAC passthrough, PipeWire force bit-perfect, gapless, normalization and quality fallback - Playback panel: autoplay mode, show context icon, remember session and resume position - settings.rs controller owns AudioSettingsStore + PlaybackPreferencesStore at the shared global path; persists changes and applies audio ones to the live Player (reload_settings, plus reinit_device for routing- critical changes); a backend switch re-enumerates output devices - QbzToggle (switch) and QbzSelect (PopupWindow dropdown) primitives, SettingRow layout helper, chevron-down icon - SettingsState global, ContentView::settings, settings-bool / settings-select callbacks wired through the shell cc
32 lines
812 B
TOML
32 lines
812 B
TOML
[package]
|
|
name = "qbz-slint"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
description = "Slint functional MVP shell for QBZ (private branch only)"
|
|
|
|
[[bin]]
|
|
name = "qbz-slint"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
slint = "1"
|
|
log = { workspace = true }
|
|
env_logger = "0.11"
|
|
tokio = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
image = { version = "0.25", default-features = false, features = ["jpeg", "png"] }
|
|
urlencoding = "2"
|
|
open = "5"
|
|
qbz-app = { path = "../qbz-app" }
|
|
qbz-audio = { path = "../qbz-audio" }
|
|
qbz-core = { path = "../qbz-core" }
|
|
qbz-models = { path = "../qbz-models" }
|
|
qbz-cache = { path = "../qbz-cache" }
|
|
qbz-credentials = { path = "../qbz-credentials" }
|
|
|
|
[build-dependencies]
|
|
slint-build = "1"
|