feat(qbz-slint): move QConnect diagnostics to Settings > Developer

Relocate the QConnect diagnostics launcher out of the now-playing bar flyout
into a new opt-in Settings > Developer section (the modal + DEV log/status code
is unchanged). Also make the status block selectable (read-only TextEdit) so
session_uuid etc. can be copied, and relabel the event log.

cc
This commit is contained in:
vicrodh committed 2026-06-03 00:36:59 -06:00
1 parent 44876d01be
commit b0274c39d4
4 files changed
+84 -28

No files matched your search

@@ -0,0 +1,61 @@
// Settings > Developer — opt-in home for developer/diagnostic tools. Same
// structure as the other settings panels (GroupHeader + SettingRow + a
// SecondaryButton). Currently launches the Qobuz Connect diagnostics modal
// (live session topology + rolling event log); more dev tools can land here.
import { Theme } from "../foundation/semantic-colors.slint";
import { Typography } from "../foundation/typography.slint";
import { Radius } from "../foundation/radius.slint";
import { QconnectDevState } from "../state.slint";
import { SettingRow } from "SettingRow.slint";
component GroupHeader inherits Text {
color: Theme.text-muted;
font-size: 11px;
letter-spacing: 1.5px;
font-weight: Typography.semibold;
}
component SecondaryButton inherits Rectangle {
in property <string> label;
callback clicked();
width: 160px;
height: 34px;
border-radius: Radius.sm;
border-width: 1px;
border-color: Theme.border-subtle;
background: ta.has-hover ? Theme.surface-hover : Theme.surface-elevated;
Text {
width: 100%;
height: 100%;
text: root.label;
color: Theme.text-secondary;
font-size: Typography.body;
font-weight: Typography.medium;
horizontal-alignment: center;
vertical-alignment: center;
}
ta := TouchArea {
mouse-cursor: pointer;
clicked => {
root.clicked();
}
}
}
export component DeveloperSettings inherits VerticalLayout {
spacing: 4px;
GroupHeader { text: @tr("QOBUZ CONNECT"); }
SettingRow {
label: @tr("Connect diagnostics");
description: @tr("Live session topology and a rolling event log for debugging Qobuz Connect at runtime.");
SecondaryButton {
label: @tr("Open diagnostics");
clicked => {
QconnectDevState.open = true;
}
}
}
}
@@ -16,6 +16,7 @@ import { PlaybackSettings } from "PlaybackSettings.slint";
import { AppearanceSettings } from "AppearanceSettings.slint";
import { OfflineSettings } from "OfflineSettings.slint";
import { LocalLibrarySettings } from "LocalLibrarySettings.slint";
import { DeveloperSettings } from "DeveloperSettings.slint";
import { ScrollView } from "std-widgets.slint";
component SubNavItem inherits Rectangle {
@@ -149,6 +150,14 @@ export component SettingsView inherits Rectangle {
SettingsState.section = 4;
}
}
SubNavItem {
icon: @image-url("../assets/icons/bug.svg");
label: @tr("Developer");
active: SettingsState.section == 5;
clicked => {
SettingsState.section = 5;
}
}
}
}
@@ -200,6 +209,7 @@ export component SettingsView inherits Rectangle {
if !SettingsState.loading && SettingsState.section == 2: AppearanceSettings { }
if !SettingsState.loading && SettingsState.section == 3: OfflineSettings { }
if !SettingsState.loading && SettingsState.section == 4: LocalLibrarySettings { }
if !SettingsState.loading && SettingsState.section == 5: DeveloperSettings { }
}
}
}