103 lines
3.2 KiB
QML
103 lines
3.2 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import ISC
|
|
|
|
// ── BOX 3: Hardware Status Footer ──────────────────────────
|
|
Rectangle {
|
|
Layout.fillWidth: true
|
|
Layout.preferredHeight: Theme.sideFooterConnection
|
|
visible: root.selectedTabIndex !== 1
|
|
radius: Theme.sidePanelRadius
|
|
border.color: Theme.sideBorder
|
|
border.width: 1
|
|
color: Theme.sidePanelBackground
|
|
clip: true
|
|
|
|
ColumnLayout {
|
|
anchors.fill: parent
|
|
anchors.margins: 14
|
|
spacing: 6
|
|
|
|
// Row 1: Title
|
|
Label {
|
|
text: "CONNECTION FLOW"
|
|
color: Theme.sideMutedText
|
|
font.family: Theme.uiFontFamily
|
|
font.pixelSize: Theme.fontSm
|
|
font.letterSpacing: 1.5
|
|
font.bold: true
|
|
Layout.fillWidth: true
|
|
elide: Text.ElideRight
|
|
}
|
|
|
|
// Row 2: Port / descriptive text
|
|
Label {
|
|
Layout.fillWidth: true
|
|
text: {
|
|
if (deviceController.connectionStatus === "Connected")
|
|
return deviceController.selectedPort || "Connected"
|
|
if (deviceController.selectedPort)
|
|
return deviceController.selectedPort
|
|
return "No port selected"
|
|
}
|
|
color: Theme.bodyColor
|
|
font.family: Theme.uiFontFamily
|
|
font.pixelSize: Theme.fontSm
|
|
elide: Text.ElideRight
|
|
}
|
|
|
|
Item { Layout.fillHeight: true }
|
|
|
|
// Row 3: Mode chip left, status badge bottom-right
|
|
RowLayout {
|
|
spacing: 6
|
|
Layout.fillWidth: true
|
|
|
|
Rectangle {
|
|
width: modeChipLabel.implicitWidth + 12
|
|
height: 18
|
|
radius: 4
|
|
color: Theme.fieldBackground
|
|
border.color: Theme.sideBorder
|
|
border.width: 1
|
|
|
|
Label {
|
|
id: modeChipLabel
|
|
anchors.centerIn: parent
|
|
text: streamController.mode
|
|
? streamController.mode.toUpperCase() : "REVIEW"
|
|
color: Theme.sideMutedText
|
|
font.family: Theme.uiFontFamily
|
|
font.pixelSize: Theme.fontXs
|
|
font.bold: true
|
|
font.letterSpacing: 0.8
|
|
}
|
|
}
|
|
|
|
Item { Layout.fillWidth: true }
|
|
|
|
Rectangle {
|
|
height: 18
|
|
width: badgeLabel.implicitWidth + 14
|
|
radius: 9
|
|
color: {
|
|
var s = deviceController.connectionStatus
|
|
if (s === "Connected") return Theme.statusSuccessColor
|
|
if (s === "Disconnected") return Theme.statusErrorColor
|
|
return Theme.statusWarningColor
|
|
}
|
|
|
|
Label {
|
|
id: badgeLabel
|
|
anchors.centerIn: parent
|
|
text: deviceController.connectionStatus || "Disconnected"
|
|
color: Theme.statusBadgeText
|
|
font.pixelSize: Theme.fontXs
|
|
font.bold: true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|