app/resources/qml/components/ExtensionOverview.qml

111 lines
3.0 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 int delegateHeight: 40
property color backgroundColor: "transparent"
spacing: control.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: control.backgroundColor
}
delegate: Rectangle {
id: laneContainerRect
property string thisLane: modelData
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.98
height: control.delegateHeight * extensionsList.model
radius: width * 0.05
border.width: 1
border.color: appTheme.theme.colors.line
color: control.backgroundColor
Rectangle {
id: laneLabelRect
anchors {
left: parent.left
leftMargin: parent.radius * 1
verticalCenter: parent.top
}
height: control.delegateHeight * 0.5
width: laneLabel.font.pixelSize * 4
color: control.backgroundColor
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].length
delegate: ConnectionDelegate {
property var thisExtension: speedBackend.scStwClient.extensions[laneContainerRect.thisLane][index]
property var stateTranslations: ["disconnected", "connecting", "connecting", "connected"]
property var batteryStateStrings: ["critical", "warning", "fine", "charging", "notCharging"]
color: control.backgroundColor
batteryState: thisExtension["batteryState"] === -1 ? "unknown":batteryStateStrings[thisExtension["batteryState"]]
height: extensionsList.height / extensionsList.model
enabled: true
text: thisExtension["type"] === 0 ? "StartPad":"TopPad" // TODO: make dynamic with ScStw::extensionTypeToString()
status: {'status': stateTranslations[thisExtension["state"]]}
}
}
}
}