feat(slint): DAC wizard shell — 6-step modal + state + trigger (Slice 5)

DacWizardState/DacWizardActions/DacCandidateRow in state.slint (re-exported in
app.slint). DacWizardModal: scrim + 620px card + dot/label stepper rail +
Flickable body with if-step blocks + footer Back/Close/primary. Navigation is
inline state mutation (no Rust yet); the Actions callbacks (copy-command/
run-detect/query-caps/start-test) are declared for Slices 6-9. welcome step is
real (disclaimer + accept checkbox gating Start); steps 1-5 are titled
placeholders. Mounted in AppShell; "Open Wizard" 160x34 trigger added to Audio
settings, gated on PipeWire.

cc
This commit is contained in:
vicrodh committed 2026-06-15 20:09:35 -06:00
1 parent 5e57db7a0c
commit 9bb392c262
5 files changed
+366 -2

No files matched your search

+5
View File
@@ -31,6 +31,7 @@ import { FolderEditModal } from "../primitives/FolderEditModal.slint";
import { LibFolderEditModal } from "../settings/LibFolderEditModal.slint";
import { TagEditorModal } from "../primitives/TagEditorModal.slint";
import { PlaylistImportModal } from "../primitives/PlaylistImportModal.slint";
import { DacWizardModal } from "../primitives/DacWizardModal.slint";
import { TrackInfoModal } from "../album/TrackInfoModal.slint";
import { AlbumCreditsModal } from "../album/AlbumCreditsModal.slint";
import { ImmersiveView } from "../immersive/ImmersiveView.slint";
@@ -490,6 +491,10 @@ export component AppShell inherits Rectangle {
// `open`), keeping QconnectDevModal topmost.
PlaylistImportModal { }
// HiFi Wizard (DAC setup) — opened from Audio settings (PipeWire only).
// Overlay modal; playback keeps running underneath so the test step works.
DacWizardModal { }
// Track Info + Album Info (Credits/Review) modals — fed by crate::info_modals
// through TrackInfoState / AlbumInfoState. Conditional-mount on their own
// `open`; stacked above the feature modals (ADR-009/010).