106 lines
2.7 KiB
QML
106 lines
2.7 KiB
QML
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"]]}
|
|
}
|
|
}
|
|
}
|
|
}
|