From 94af5e7da59057d19b00037ad64b993c4823ffae Mon Sep 17 00:00:00 2001 From: Dorian Zedler Date: Sat, 18 Aug 2018 21:27:18 +0200 Subject: [PATCH] Made the Buzzer connection modular to be able to connect multiple devices to the app (like a startpad) --- qml/BuzzerConn.qml | 3 + qml/SettingsDialog.qml | 145 ++++++++++++++++++++++++++++------------- qml/main.qml | 17 +++-- 3 files changed, 115 insertions(+), 50 deletions(-) diff --git a/qml/BuzzerConn.qml b/qml/BuzzerConn.qml index fcd0491..1165201 100644 --- a/qml/BuzzerConn.qml +++ b/qml/BuzzerConn.qml @@ -38,4 +38,7 @@ Item { } } + function connect(){ + return(_cppBuzzerConn.connect()) + } } diff --git a/qml/SettingsDialog.qml b/qml/SettingsDialog.qml index 9d6d749..5995b5e 100644 --- a/qml/SettingsDialog.qml +++ b/qml/SettingsDialog.qml @@ -30,6 +30,56 @@ Popup { modal: true dim: false + property var connecting: { + 'active': false, 'ret': false + }; + + signal connectRequested(var type) + + function connect(type) { + connecting.active = true + root.closePolicy = Popup.NoAutoClose + options_stack.opacity = 0 + + prog.arcEnd = 0 + prog.colorCircle = "grey" + prog.opacity = 1 + prog.text = qsTr("connecting...") + prog_refresh.running = true + switch(type){ + case "buzzer": + connectRequested("buzzer") + break + } + if(connecting.ret){ + prog_refresh.running = false + prog.colorCircle = "green" + prog.text = qsTr("success") + prog.arcEnd = 360 + } + else { + prog_refresh.running = false + prog.colorCircle = "red" + prog.text = qsTr("error") + prog.arcEnd = 360 + } + //make a short delay and go back to normal options + shortDelay.start() + } + + Timer { + id: shortDelay + running: false + repeat: false + interval: 1000 + onTriggered: { + prog.opacity = 0; + options_stack.opacity = 1 + root.closePolicy = Popup.CloseOnPressOutside; + connecting.active = false + } + } + enter: Transition { NumberAnimation { properties: "scale"; from: 0; to: 1; duration: 300; easing.type: Easing.Linear } } @@ -80,6 +130,8 @@ Popup { arcBegin: 0 arcEnd: 0 + onColorCircleChanged: prog.repaint() + Timer { id: prog_refresh running: false @@ -110,6 +162,8 @@ Popup { } height: parent.height * 0.13 width:height + opacity: root.connecting.active === true ? 0:1 + enabled: opacity > 0 background: Rectangle { radius: width * 0.5 @@ -142,6 +196,7 @@ Popup { } } } + } StackView { @@ -150,6 +205,8 @@ Popup { initialItem: settings width: headlineUnderline.width + enabled: opacity !== 0 //disable when not visible + anchors { top: parent.top left: parent.left @@ -173,56 +230,24 @@ Popup { /*----Connect to buzzer----*/ ItemDelegate { id: connect_del - width: parent.width - text: _cppBuzzerConn.get("connected")===1 ? qsTr("connected to buzzer"):qsTr("connect to buzzer") + text: qsTr("connections") font.pixelSize: options_stack.text_pixelSize - Timer { - running: connect_del.scale === 1 - repeat: true - interval: 10 - onTriggered: { - connect_del.text = _cppBuzzerConn.get("connected")===1 ? qsTr("connected to buzzer"):qsTr("connect to buzzer") + width: parent.width + + Image { + id: connect_del_image + source: "qrc:/graphics/icons/back_black.png" + rotation: 180 + height: options_stack.text_pixelSize + width: height + anchors { + verticalCenter: parent.verticalCenter + right: parent.right + rightMargin: 10 } } - onClicked: { - root.closePolicy = Popup.NoAutoClose - options_stack.opacity = 0 - - prog.arcEnd = 0 - prog.colorCircle = "grey" - prog.opacity = 1 - prog.text = qsTr("connecting...") - prog_refresh.running = true - - if(_cppBuzzerConn.connect()){ - prog_refresh.running = false - prog.colorCircle = "green" - prog.text = qsTr("success") - prog.arcEnd = 360 - } - else { - prog_refresh.running = false - prog.colorCircle = "red" - prog.text = qsTr("error") - prog.arcEnd = 360 - } - - //make a short delay and go back to normal options - shortDelay.start() - } - - Timer { - id: shortDelay - running: false - repeat: false - interval: 1000 - onTriggered: { - connect_del.enabled = true; - prog.opacity = 0; - options_stack.opacity = 1 - root.closePolicy = Popup.CloseOnPressOutside; - } + options_stack.push(connect) } } @@ -262,6 +287,34 @@ Popup { } } + /*-----Page to connect to sensors like a startpad or buzzer-----*/ + Component { + id: connect + Column { + id: connect_col + property string title: "connections" + property int delegateHeight: height*0.18 + ItemDelegate { + id: connect_buzz_del + width: parent.width + text: _cppBuzzerConn.get("connected")===1 ? qsTr("connected to buzzer"):qsTr("connect to buzzer") + font.pixelSize: options_stack.text_pixelSize + Timer { + running: connect_buzz_del.scale === 1 + repeat: true + interval: 10 + onTriggered: { + connect_buzz_del.text = _cppBuzzerConn.get("connected")===1 ? qsTr("connected to buzzer"):qsTr("connect to buzzer") + } + } + + onClicked: { + root.connect("buzzer") + } + } + } + } + /*-----Page to setup automatc start sequence-----*/ Component { id: autostart diff --git a/qml/main.qml b/qml/main.qml index 362fd92..9e29398 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -33,7 +33,6 @@ Window { Page { - id:root anchors.fill: parent @@ -45,8 +44,8 @@ Window { property double last_button_pressed property var last_run : { - 'stopp_type': "", 'time': 0 - }; + 'stop_type': "", 'time': 0 + }; //set default state to IDLE state: "IDLE" @@ -63,6 +62,7 @@ Window { } BuzzerConn { + id: buzzerConn onPushed: { // the buzzer was pushed root.stop("buzzer") @@ -367,6 +367,15 @@ Window { ------*/ SettingsDialog{ id: settingsDialog + + onConnectRequested: { + switch(type){ + case "buzzer": + + settingsDialog.connecting.ret = buzzerConn.connect() + break + } + } } // ProfilesDialog { @@ -627,7 +636,7 @@ Window { console.log("STOPPED: "+root.stoppedTime) break case "manual": - //te stop button was pressed + //the stop button was pressed root.stoppedTime = new Date().getTime() - root.startTime time.text = ( root.stoppedTime / 1000 ).toFixed(3) + " sec" root.state = "STOPPED"