diff --git a/resources/qml/SettingsDialog/SettingsBaseStationPage.qml b/resources/qml/SettingsDialog/SettingsBaseStationPage.qml
index 1ab1d24..f82ef9b 100644
--- a/resources/qml/SettingsDialog/SettingsBaseStationPage.qml
+++ b/resources/qml/SettingsDialog/SettingsBaseStationPage.qml
@@ -226,7 +226,9 @@ Column {
text: qsTr("volume")
width: parent.width
- height: parentObj.delegateHeight
+ height: parentObj.delegateHeight * 0.8
+
+ font.pixelSize: height * 0.5
sliderValue: setting.value
@@ -236,6 +238,19 @@ Column {
enabled = true
}
}
+
+ NextPageDelegate {
+ text: qsTr("extensions")
+
+ width: parent.width
+ height: parentObj.delegateHeight * 0.8
+
+ font.pixelSize: height * 0.5
+
+ onClicked: {
+ parentObj.push(extensions)
+ }
+ }
}
}
}
diff --git a/resources/qml/SettingsDialog/SettingsExtensionsPage.qml b/resources/qml/SettingsDialog/SettingsExtensionsPage.qml
new file mode 100644
index 0000000..47940c9
--- /dev/null
+++ b/resources/qml/SettingsDialog/SettingsExtensionsPage.qml
@@ -0,0 +1,106 @@
+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"]]}
+ }
+ }
+ }
+}
diff --git a/resources/qml/SettingsDialog/SettingsStack.qml b/resources/qml/SettingsDialog/SettingsStack.qml
index af80d1a..e63725a 100644
--- a/resources/qml/SettingsDialog/SettingsStack.qml
+++ b/resources/qml/SettingsDialog/SettingsStack.qml
@@ -47,6 +47,14 @@ StackView {
}
+ Component {
+ id: extensions
+
+ SettingsExtensionsPage {
+ parentObj: control
+ }
+ }
+
/*-----Custom animations-----*/
pushEnter: Transition {
NumberAnimation {
diff --git a/resources/qml/components/ConnectionDelegate.qml b/resources/qml/components/ConnectionDelegate.qml
index f8c96d0..9285c81 100644
--- a/resources/qml/components/ConnectionDelegate.qml
+++ b/resources/qml/components/ConnectionDelegate.qml
@@ -6,7 +6,7 @@ SmoothItemDelegate {
property var status
property string oldState: ""
- property var connect
+ property var connect: null
property var disconnect
property string type
@@ -16,12 +16,14 @@ SmoothItemDelegate {
enabled: (status.status === "disconnected" && control.connect !== undefined) || ( status.status === "connected" && control.disconnect !== undefined )
onClicked: {
- if(status.status === "disconnected"){
+ if(connect == null)
+ return;
+
+ if(status.status === "disconnected")
connect()
- }
- else {
+ else
disconnect()
- }
+
}
onStatusChanged: {
diff --git a/resources/qml/main.qml b/resources/qml/main.qml
index 9d13f04..1f319f6 100644
--- a/resources/qml/main.qml
+++ b/resources/qml/main.qml
@@ -248,7 +248,7 @@ Window {
}
Row {
- id: connectedExtensionsRow
+ id: extensionStatusRow
anchors {
top: parent.top
@@ -257,49 +257,51 @@ Window {
leftMargin: 1
}
- height: parent.height
- width: parent.width
+ height: baseConnConnIcon.height * 0.4
+ spacing: 5
Repeater {
- id: connectedExtensionsRep
- anchors.fill: parent
- model: speedBackend.scStwClient.extensions.length
- delegate: ConnectionIcon {
- id: buzzerConnIcon
- status: speedBackend.scStwClient.extensions[index]["state"]
+ id: extensionStatusRep
- source: {
- var source
- switch(speedBackend.scStwClient.extensions[index]["type"]){
- case "STARTPAD":
- source = appTheme.theme.images.startpadIcon
- break
- case "TOPPAD":
- source = appTheme.theme.images.buzzerIcon
- break
- }
- }
+ model: Object.keys(speedBackend.scStwClient.extensions)
+ delegate: Rectangle {
+ property string thisLetter: modelData
- scale: 0
+ width: height
+ height: parent.height
- height: !app.landscape()? parent.height*0.17:parent.width*0.17
- width: status === "disconnected" ? 0:height
+ radius: width * 0.1
+
+ color: appTheme.theme.colors.success // TODO
Component.onCompleted: {
- scale = 1
+ refreshConnectionState()
}
- Behavior on scale {
- NumberAnimation {
- duration: 200
+ function refreshConnectionState() {
+ var extensions = speedBackend.scStwClient.extensions[modelData]
+
+ for(var i = 0; i < extensions.length; i++) {
+ console.log(JSON.stringify(extensions[i]))
+ // TODO!!
}
}
- Behavior on width {
- NumberAnimation {
- duration: 200
- }
+ Text {
+ anchors.fill: parent
+
+ text: parent.thisLetter
+
+ fontSizeMode: Text.Fit
+ font.pixelSize: height
+ font.bold: true
+
+ color: appTheme.theme.colors.background
+
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
}
+
}
}
}
diff --git a/resources/qml/qml.qrc b/resources/qml/qml.qrc
index 526b689..43f6541 100644
--- a/resources/qml/qml.qrc
+++ b/resources/qml/qml.qrc
@@ -21,5 +21,6 @@
SettingsDialog/StartPage.qml
SettingsDialog/SettingsStartSequencePage.qml
SettingsDialog/SettingsBaseStationPage.qml
+ SettingsDialog/SettingsExtensionsPage.qml