From 189bdf58c59bf04da3581f795224addb8cef21f9 Mon Sep 17 00:00:00 2001 From: dogmaphobic Date: Wed, 16 Mar 2016 06:59:52 -0400 Subject: [PATCH] Tweaking the SliderSwitch controller. --- qgcresources.qrc | 2 + resources/ArrowRight.svg | 17 +++++ resources/cancel.svg | 10 +++ .../FlightDisplayViewWidgets.qml | 65 ++++++++++++++----- src/QmlControls/SliderSwitch.qml | 31 ++++++++- 5 files changed, 107 insertions(+), 18 deletions(-) create mode 100644 resources/ArrowRight.svg create mode 100644 resources/cancel.svg diff --git a/qgcresources.qrc b/qgcresources.qrc index d7fbf236d..c3b12d2b2 100644 --- a/qgcresources.qrc +++ b/qgcresources.qrc @@ -136,8 +136,10 @@ resources/Antenna_RC.svg resources/Antenna_T.svg resources/ArrowDown.svg + resources/ArrowRight.svg resources/buttonLeft.svg resources/buttonRight.svg + resources/cancel.svg resources/gear.svg resources/JoystickBezel.png resources/JoystickBezelLight.png diff --git a/resources/ArrowRight.svg b/resources/ArrowRight.svg new file mode 100644 index 000000000..b67347b15 --- /dev/null +++ b/resources/ArrowRight.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/resources/cancel.svg b/resources/cancel.svg new file mode 100644 index 000000000..1b124e8ba --- /dev/null +++ b/resources/cancel.svg @@ -0,0 +1,10 @@ + + + + + + + diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml index bc9722211..a68660605 100644 --- a/src/FlightDisplay/FlightDisplayViewWidgets.qml +++ b/src/FlightDisplay/FlightDisplayViewWidgets.qml @@ -40,7 +40,7 @@ Item { property alias guidedModeBar: _guidedModeBar - property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property bool _isSatellite: _mainIsMap ? _flightMap ? _flightMap.isSatelliteMap : true : true readonly property real _margins: ScreenTools.defaultFontPixelHeight / 2 @@ -330,6 +330,13 @@ Item { } } + function rejectGuidedModeConfirm() { + guidedModeConfirm.visible = false + guidedModeBar.visible = true + altitudeSlider.visible = false + _flightMap._gotoHereCoordinate = QtPositioning.coordinate() + } + function confirmAction(actionCode) { confirmActionCode = actionCode switch (confirmActionCode) { @@ -374,32 +381,52 @@ Item { spacing: _margins QGCButton { - text: _activeVehicle.armed ? (_activeVehicle.flying ? "Emergency Stop" : "Disarm") : "Arm" - onClicked: _guidedModeBar.confirmAction(_activeVehicle.armed ? (_activeVehicle.flying ? _guidedModeBar.confirmEmergencyStop : _guidedModeBar.confirmDisarm) : _guidedModeBar.confirmArm) + text: _activeVehicle ? (_activeVehicle.armed ? (_activeVehicle.flying ? "Emergency Stop" : "Disarm") : "Arm") : "" + onClicked: { + if(_activeVehicle) { + _guidedModeBar.confirmAction(_activeVehicle.armed ? (_activeVehicle.flying ? _guidedModeBar.confirmEmergencyStop : _guidedModeBar.confirmDisarm) : _guidedModeBar.confirmArm) + } + } } QGCButton { text: "RTL" - visible: _activeVehicle.guidedModeSupported && _activeVehicle.flying - onClicked: _guidedModeBar.confirmAction(_guidedModeBar.confirmHome) + visible: _activeVehicle && _activeVehicle.guidedModeSupported && _activeVehicle.flying + onClicked: { + if(_activeVehicle) { + _guidedModeBar.confirmAction(_guidedModeBar.confirmHome) + } + } } QGCButton { - text: _activeVehicle.flying ? "Land" : "Takeoff" - visible: _activeVehicle.guidedModeSupported && _activeVehicle.armed - onClicked: _guidedModeBar.confirmAction(_activeVehicle.flying ? _guidedModeBar.confirmLand : _guidedModeBar.confirmTakeoff) + text: _activeVehicle ? (_activeVehicle.flying ? "Land" : "Takeoff") : "" + visible: _activeVehicle && _activeVehicle.guidedModeSupported && _activeVehicle.armed + onClicked: { + if(_activeVehicle) { + _guidedModeBar.confirmAction(_activeVehicle.flying ? _guidedModeBar.confirmLand : _guidedModeBar.confirmTakeoff) + } + } } QGCButton { text: "Pause" - visible: _activeVehicle.pauseVehicleSupported && _activeVehicle.flying - onClicked: _activeVehicle.pauseVehicle() + visible: _activeVehicle && _activeVehicle.pauseVehicleSupported && _activeVehicle.flying + onClicked: { + if(_activeVehicle) { + _activeVehicle.pauseVehicle() + } + } } QGCButton { text: "Change Altitude" - visible: _activeVehicle.guidedModeSupported && _activeVehicle.armed - onClicked: _guidedModeBar.confirmAction(_guidedModeBar.confirmChangeAlt) + visible: _activeVehicle && _activeVehicle.guidedModeSupported && _activeVehicle.armed + onClicked: { + if(_activeVehicle) { + _guidedModeBar.confirmAction(_guidedModeBar.confirmChangeAlt) + } + } } } @@ -439,12 +466,21 @@ Item { }*/ } // Rectangle - Guided mode buttons + MouseArea { + anchors.fill: parent + enabled: guidedModeConfirm.visible + onClicked: { + _guidedModeBar.rejectGuidedModeConfirm() + } + } + // Action confirmation control SliderSwitch { id: guidedModeConfirm anchors.top: _guidedModeBar.top anchors.bottom: _guidedModeBar.bottom anchors.horizontalCenter: parent.horizontalCenter + showReject: true visible: false z: QGroundControl.zOrderWidgets @@ -456,10 +492,7 @@ Item { } onReject: { - guidedModeConfirm.visible = false - guidedModeBar.visible = true - altitudeSlider.visible = false - _flightMap._gotoHereCoordinate = QtPositioning.coordinate() + _guidedModeBar.rejectGuidedModeConfirm() } } diff --git a/src/QmlControls/SliderSwitch.qml b/src/QmlControls/SliderSwitch.qml index 3d0e6d3a4..f45608a56 100644 --- a/src/QmlControls/SliderSwitch.qml +++ b/src/QmlControls/SliderSwitch.qml @@ -8,7 +8,7 @@ import QGroundControl.Palette 1.0 /// control on an iPhone. Rectangle { id: _root - width: label.contentWidth + (_diameter * 2) + (_border * 4) + width: label.contentWidth + (_diameter * 2.5) + (_border * 4) radius: height /2 color: qgcPal.window @@ -16,6 +16,7 @@ Rectangle { signal reject ///< Action rejected property string confirmText ///< Text for slider + property bool showReject: false property real _border: 4 property real _diameter: height - (_border * 2) @@ -39,11 +40,25 @@ Rectangle { color: qgcPal.windowShade opacity: 0.8 + QGCColoredImage { + anchors.centerIn: parent + width: parent.width * 0.8 + height: parent.height * 0.8 + fillMode: Image.PreserveAspectFit + smooth: false + mipmap: false + color: qgcPal.text + cache: false + source: "/res/ArrowRight.svg" + } + + /* QGCLabel { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter text: ">" } + */ MouseArea { id: sliderDragArea @@ -54,7 +69,7 @@ Rectangle { drag.minimumX: _border drag.maximumX: _maxXDrag - property real _maxXDrag: _root.width - ((_diameter + _border) * 2) + property real _maxXDrag: _root.width - ((_diameter + _border) * (showReject ? 2 : 1)) property bool dragActive: drag.active onDragActiveChanged: { @@ -78,12 +93,24 @@ Rectangle { radius: _diameter / 2 color: qgcPal.windowShade opacity: 0.8 + visible: showReject + + Image { + anchors.centerIn: parent + width: parent.width * 0.8 + height: parent.height * 0.8 + fillMode: Image.PreserveAspectFit + smooth: true + source: "/res/cancel.svg" + } + /* QGCLabel { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter text: "X" } + */ MouseArea { anchors.fill: parent -- 2.22.0