feat(tabs): update all tab views, dialogs, and session controller

This commit is contained in:
jack
2026-06-29 14:58:10 -07:00
parent db21f201f6
commit 5105ab1ab6
10 changed files with 507 additions and 307 deletions
+44 -12
View File
@@ -27,8 +27,7 @@ Item {
}
// ===== Settings Data Helpers =====
readonly property var masterFamilies: ["A", "B", "C", "D", "E", "F", "P", "X", "Z"]
// ListModel for master families defined inline in the ColumnLayout below
function masterPath(family) {
const table = settingsModel.masters;
return table && table[family] ? table[family] : "";
@@ -58,7 +57,7 @@ Item {
label: Label {
text: settingsGroup.title
color: Theme.panelTitleText
font.pixelSize: 16
font.pixelSize: Theme.fontLg
font.bold: true
}
}
@@ -75,6 +74,12 @@ Item {
color: Theme.fieldBackground
border.width: textInput.activeFocus ? Theme.borderStrong : Theme.borderThin
border.color: textInput.activeFocus ? Theme.fieldBorderFocus : Theme.fieldBorder
Behavior on color {
ColorAnimation { duration: Theme.durationFast }
}
Behavior on border.color {
ColorAnimation { duration: Theme.durationFast }
}
}
}
@@ -111,13 +116,23 @@ Item {
border.width: Theme.borderThin
border.color: toggle.checked ? Theme.primaryAccent : Theme.fieldBorder
Behavior on color {
ColorAnimation { duration: Theme.durationFast }
}
Behavior on border.color {
ColorAnimation { duration: Theme.durationFast }
}
Text {
anchors.centerIn: parent
text: "✓"
font.pixelSize: 14
font.pixelSize: Theme.fontMd
font.bold: true
color: Theme.panelBackground
visible: toggle.checked
opacity: toggle.checked ? 1.0 : 0.0
Behavior on opacity {
NumberAnimation { duration: Theme.durationFast }
}
// Small nudge to center the checkmark perfectly
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
@@ -129,7 +144,7 @@ Item {
color: Theme.headingColor
verticalAlignment: Text.AlignVCenter
leftPadding: toggle.indicator.width + toggle.spacing
font.pixelSize: 13
font.pixelSize: Theme.fontSm
}
}
@@ -159,6 +174,7 @@ Item {
anchors.top: settingsScroll.top
anchors.right: settingsScroll.right
anchors.bottom: settingsScroll.bottom
anchors.leftMargin: 6
policy: ScrollBar.AsNeeded
contentItem: Rectangle {
@@ -174,16 +190,19 @@ Item {
}
}
// Gap reserved between the centered content and the right-edge scrollbar.
readonly property int scrollGap: 100
ColumnLayout {
id: container
width: Math.min(settingsScroll.availableWidth, Theme.settingsPanelMaxWidth)
width: Math.min(settingsScroll.availableWidth - settingsScroll.scrollGap, Theme.settingsPanelMaxWidth)
x: (settingsScroll.availableWidth - width) / 2
spacing: Theme.settingsSectionSpacing
// ===== Page Title =====
Label {
text: "Settings"
font.pixelSize: 30
font.pixelSize: Theme.font3xl
font.bold: true
color: Theme.headingColor
}
@@ -241,11 +260,24 @@ Item {
anchors.fill: parent
spacing: Theme.settingsGridSpacing
ListModel {
id: masterModel
ListElement { letter: "A" }
ListElement { letter: "B" }
ListElement { letter: "C" }
ListElement { letter: "D" }
ListElement { letter: "E" }
ListElement { letter: "F" }
ListElement { letter: "P" }
ListElement { letter: "X" }
ListElement { letter: "Z" }
}
Repeater {
model: root.masterFamilies
model: masterModel
RowLayout {
property string family: modelData
property string family: model.letter
Layout.fillWidth: true
spacing: Theme.settingsRowSpacing
@@ -361,7 +393,7 @@ Item {
Label {
text: Theme.isDarkMode ? "Dark" : "Light"
color: Theme.bodyColor
font.pixelSize: 13
font.pixelSize: Theme.fontSm
Layout.alignment: Qt.AlignVCenter
Behavior on color {
@@ -423,7 +455,7 @@ Item {
Label {
anchors.centerIn: parent
text: "↓ Scroll for more"
font.pixelSize: 13
font.pixelSize: Theme.fontSm
font.bold: true
color: Theme.bodyColor
opacity: (settingsScroll.ScrollBar.vertical.position <= 0 && settingsScroll.contentHeight > settingsScroll.height) ? (scrollHintTimer.running ? 1 : 0) : 0