This repository has been archived on 2024-06-03. You can view files and clone it, but cannot push or open issues or pull requests.
app/resources/qml/SettingsDialog/SettingsExtensionsPage.qml

107 lines
2.7 KiB
QML
Raw Normal View History

import QtQuick 2.9
import QtMultimedia 5.8
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.0
import QtQuick.Controls.Styles 1.4
import "../components"
ListView {
id: control
property string title: qsTr("extensions")
property var parentObj
spacing: parentObj.delegateHeight * 0.3
boundsBehavior: Flickable.StopAtBounds
clip: true
model: Object.keys(speedBackend.scStwClient.extensions)
header: Rectangle {
// for top spacing
width: parent.width
height: control.spacing
color: appTheme.theme.colors.view
}
delegate: Rectangle {
id: laneContainerRect
property string thisLane: modelData
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.98
height: parentObj.delegateHeight * extensionsList.model.length
radius: width * 0.05
border.width: 1
border.color: appTheme.theme.colors.line
color: appTheme.theme.colors.view
Rectangle {
id: laneLabelRect
anchors {
left: parent.left
leftMargin: parent.radius * 1
verticalCenter: parent.top
}
height: parentObj.delegateHeight * 0.5
width: laneLabel.font.pixelSize * 4
color: appTheme.theme.colors.view
Label {
id: laneLabel
height: parent.height
width: parent.width
leftPadding: laneContainerRect.width * 0.02
rightPadding: laneContainerRect.width * 0.02
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
fontSizeMode: Text.Fit
font.pixelSize: height * 0.5
color: appTheme.theme.colors.text
text: "Lane " + laneContainerRect.thisLane
}
}
ListView {
id: extensionsList
anchors.fill: parent
anchors.margins: width * 0.04
interactive: false
model: speedBackend.scStwClient.extensions[parent.thisLane]
delegate: ConnectionDelegate {
property var thisExtension: modelData
property var stateTranslations: ["disconnected", "connecting", "connecting", "connected"]
height: extensionsList.height / extensionsList.model.length
enabled: true
text: thisExtension["type"] === 0 ? "StartPad":"TopPad" // TODO: make dynamic with ScStw::extensionTypeToString()
status: {'status': stateTranslations[thisExtension["state"]]}
}
}
}
}