From 0f974ebc7665c5f90a9df80157b1e6f451b41f3e Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Tue, 27 Aug 2019 21:16:29 -0400 Subject: [PATCH] Moving pairing UI to custom-example as this is where it will reside for the time being. --- custom-example/custom.qrc | 7 +- custom-example/res/Images/PairingButton.svg | 23 + custom-example/res/Images/PairingConnected.svg | 44 ++ custom-example/res/Images/PairingError.svg | 11 + custom-example/res/Images/PairingIcon.svg | 31 ++ custom-example/res/Images/PairingIconLight.svg | 29 ++ .../MainToolbar/CustomMainToolBarIndicators.qml | 2 +- custom-example/res/PairingIndicator.qml | 518 +++++++++++++++++++++ .../src/FirmwarePlugin/CustomFirmwarePlugin.cc | 2 +- qgcimages.qrc | 4 - qgroundcontrol.qrc | 1 - src/PairingManager/Images/PairingButton.svg | 23 - src/PairingManager/Images/PairingConnected.svg | 44 -- src/PairingManager/Images/PairingError.svg | 11 - src/PairingManager/Images/PairingIcon.svg | 31 -- src/PairingManager/Images/PairingIconLight.svg | 29 -- src/ui/toolbar/PairingIndicator.qml | 518 --------------------- 17 files changed, 664 insertions(+), 664 deletions(-) create mode 100644 custom-example/res/Images/PairingButton.svg create mode 100644 custom-example/res/Images/PairingConnected.svg create mode 100644 custom-example/res/Images/PairingError.svg create mode 100644 custom-example/res/Images/PairingIcon.svg create mode 100644 custom-example/res/Images/PairingIconLight.svg create mode 100644 custom-example/res/PairingIndicator.qml delete mode 100644 src/PairingManager/Images/PairingButton.svg delete mode 100644 src/PairingManager/Images/PairingConnected.svg delete mode 100644 src/PairingManager/Images/PairingError.svg delete mode 100644 src/PairingManager/Images/PairingIcon.svg delete mode 100644 src/PairingManager/Images/PairingIconLight.svg delete mode 100644 src/ui/toolbar/PairingIndicator.qml diff --git a/custom-example/custom.qrc b/custom-example/custom.qrc index 08de536..1c8f6a9 100644 --- a/custom-example/custom.qrc +++ b/custom-example/custom.qrc @@ -10,6 +10,7 @@ res/MainToolbar/CustomModeIndicator.qml res/MainToolbar/CustomMultiVehicleSelector.qml res/MainToolbar/CustomRCRSSIIndicator.qml + res/PairingIndicator.qml res/PreFlightCheckList.qml @@ -25,12 +26,16 @@ res/Images/compass_pointer.svg res/Images/distance.svg res/Images/gimbal_icon.svg - res/Images/gimbal_position.svg res/Images/gimbal_pitch_indoors.svg res/Images/gimbal_pitch_outdoors.svg + res/Images/gimbal_position.svg res/Images/horizontal_speed.svg res/Images/microSD.svg res/Images/odometer.svg + res/Images/PairingButton.svg + res/Images/PairingConnected.svg + res/Images/PairingError.svg + res/Images/PairingIcon.svg res/Images/thermal-brightness.svg res/Images/thermal-palette.svg res/Images/thermal-pip.svg diff --git a/custom-example/res/Images/PairingButton.svg b/custom-example/res/Images/PairingButton.svg new file mode 100644 index 0000000..1166e20 --- /dev/null +++ b/custom-example/res/Images/PairingButton.svg @@ -0,0 +1,23 @@ + + + + + + + diff --git a/custom-example/res/Images/PairingConnected.svg b/custom-example/res/Images/PairingConnected.svg new file mode 100644 index 0000000..02ac3be --- /dev/null +++ b/custom-example/res/Images/PairingConnected.svg @@ -0,0 +1,44 @@ + + + + + + + + + + diff --git a/custom-example/res/Images/PairingError.svg b/custom-example/res/Images/PairingError.svg new file mode 100644 index 0000000..db18451 --- /dev/null +++ b/custom-example/res/Images/PairingError.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/custom-example/res/Images/PairingIcon.svg b/custom-example/res/Images/PairingIcon.svg new file mode 100644 index 0000000..aff3e41 --- /dev/null +++ b/custom-example/res/Images/PairingIcon.svg @@ -0,0 +1,31 @@ + + + + + + + diff --git a/custom-example/res/Images/PairingIconLight.svg b/custom-example/res/Images/PairingIconLight.svg new file mode 100644 index 0000000..76a193c --- /dev/null +++ b/custom-example/res/Images/PairingIconLight.svg @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/custom-example/res/MainToolbar/CustomMainToolBarIndicators.qml b/custom-example/res/MainToolbar/CustomMainToolBarIndicators.qml index 858bb85..a86c52d 100644 --- a/custom-example/res/MainToolbar/CustomMainToolBarIndicators.qml +++ b/custom-example/res/MainToolbar/CustomMainToolBarIndicators.qml @@ -87,7 +87,7 @@ Item { anchors.top: parent.top anchors.bottom: parent.bottom anchors.margins: _indicatorMargins - source: "/toolbar/PairingIndicator.qml" + source: "/custom/PairingIndicator.qml" } } //------------------------------------------------------------------------- diff --git a/custom-example/res/PairingIndicator.qml b/custom-example/res/PairingIndicator.qml new file mode 100644 index 0000000..e003dc0 --- /dev/null +++ b/custom-example/res/PairingIndicator.qml @@ -0,0 +1,518 @@ +/**************************************************************************** + * + * (c) 2009-2016 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +import QtQuick 2.11 +import QtQuick.Controls 2.4 +import QtQuick.Layouts 1.11 +import QtQuick.Dialogs 1.3 + +import QGroundControl 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.MultiVehicleManager 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Palette 1.0 + +//------------------------------------------------------------------------- +//-- GPS Indicator +Item { + id: _root + width: pairingRow.width * 1.1 + anchors.top: parent.top + anchors.bottom: parent.bottom + + property bool _light: qgcPal.globalTheme === QGCPalette.Light && !activeVehicle + property real _contentWidth: ScreenTools.defaultFontPixelWidth * 34 + property real _contentSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + property real _rectWidth: _contentWidth + property real _rectHeight: _contentWidth * 0.75 + + property string kPairingManager: qsTr("Pairing Manager") + + function runPairing() { + QGroundControl.pairingManager.firstBoot = false + if(QGroundControl.pairingManager.pairedDeviceNameList.length > 0) { + connectionPopup.open() + } else { + mhPopup.open() + } + } + + Connections { + target: QGroundControl.pairingManager + //-- Connect automatically once paired + onPairingStatusChanged: { + if(QGroundControl.pairingManager.pairingStatus === PairingManager.PairingSuccess) { + if(QGroundControl.pairingManager.pairedVehicle !== "") { + QGroundControl.pairingManager.connectToPairedDevice(QGroundControl.pairingManager.pairedVehicle) + } + } + } + } + + Row { + id: pairingRow + spacing: ScreenTools.defaultFontPixelWidth + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + QGCColoredImage { + id: pairingIcon + height: parent.height + width: height + color: qgcPal.text + source: "/custom/img/PairingIcon.svg" + sourceSize.width: width + fillMode: Image.PreserveAspectFit + smooth: true + mipmap: true + antialiasing: true + anchors.verticalCenter: parent.verticalCenter + } + QGCLabel { + text: qsTr("Pair Vehicle") + width: !activeVehicle ? (ScreenTools.defaultFontPixelWidth * 12) : 0 + visible: !activeVehicle + font.family: ScreenTools.demiboldFontFamily + anchors.verticalCenter: parent.verticalCenter + } + } + MouseArea { + anchors.fill: parent + onClicked: { + runPairing() + } + } + //------------------------------------------------------------------------- + //-- Microhard + Popup { + id: mhPopup + width: mhBody.width + height: mhBody.height + modal: true + focus: true + parent: Overlay.overlay + x: Math.round((mainWindow.width - width) * 0.5) + y: Math.round((mainWindow.height - height) * 0.5) + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside + background: Rectangle { + anchors.fill: parent + color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) + radius: ScreenTools.defaultFontPixelWidth * 0.25 + } + Item { + id: mhBody + width: mhCol.width + (ScreenTools.defaultFontPixelWidth * 8) + height: mhCol.height + (ScreenTools.defaultFontPixelHeight * 2) + anchors.centerIn: parent + Column { + id: mhCol + spacing: _contentSpacing + anchors.centerIn: parent + Item { width: 1; height: 1; } + QGCLabel { + text: kPairingManager + font.family: ScreenTools.demiboldFontFamily + font.pointSize: ScreenTools.mediumFontPointSize + anchors.horizontalCenter: parent.horizontalCenter + } + Rectangle { + width: _contentWidth + height: 1 + color: qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) + } + Item { width: 1; height: 1; } + QGCLabel { + text: qsTr("To connect to your vehicle, please click on the pairing button in order to put the vehicle in discovery mode") + width: _contentWidth + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 2; } + QGCColoredImage { + height: ScreenTools.defaultFontPixelHeight * 6 + width: height + source: "/custom/img/PairingButton.svg" + sourceSize.height: height + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + color: qgcPal.text + anchors.horizontalCenter: parent.horizontalCenter + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 2; } + QGCButton { + text: qsTr("Pair a Vehicle") + width: _contentWidth + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + mhPopup.close() + progressPopup.open() + QGroundControl.pairingManager.startMicrohardPairing(); + } + } + Item { width: 1; height: 1; } + } + } + } + //------------------------------------------------------------------------- + //-- NFC + Popup { + id: nfcPopup + width: nfcBody.width + height: nfcBody.height + modal: true + focus: true + parent: Overlay.overlay + x: Math.round((mainWindow.width - width) * 0.5) + y: Math.round((mainWindow.height - height) * 0.5) + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside + background: Rectangle { + anchors.fill: parent + color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) + radius: ScreenTools.defaultFontPixelWidth * 0.25 + } + Item { + id: nfcBody + width: nfcCol.width + (ScreenTools.defaultFontPixelWidth * 8) + height: nfcCol.height + (ScreenTools.defaultFontPixelHeight * 2) + anchors.centerIn: parent + Column { + id: nfcCol + spacing: _contentSpacing + anchors.centerIn: parent + Item { width: 1; height: 1; } + QGCLabel { + text: kPairingManager + font.family: ScreenTools.demiboldFontFamily + font.pointSize: ScreenTools.mediumFontPointSize + anchors.horizontalCenter: parent.horizontalCenter + } + Rectangle { + width: _contentWidth + height: 1 + color: qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) + } + Item { width: 1; height: 1; } + Rectangle { + width: _rectWidth + height: _rectHeight + color: Qt.rgba(0,0,0,0) + border.color: qgcPal.text + border.width: 1 + anchors.horizontalCenter: parent.horizontalCenter + QGCLabel { + text: "Vehicle and Tablet Graphic" + anchors.centerIn: parent + } + } + Item { width: 1; height: 1; } + QGCLabel { + text: qsTr("Please make sure your vehicle is close to your Ground Station device") + width: _contentWidth + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + } + Item { width: 1; height: 1; } + QGCButton { + text: qsTr("Pair Via NFC") + width: _contentWidth + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + nfcPopup.close() + progressPopup.open() + QGroundControl.pairingManager.startNFCScan(); + } + } + Item { width: 1; height: 1; } + } + } + } + //------------------------------------------------------------------------- + //-- Pairing/Connection Progress + Popup { + id: progressPopup + width: progressBody.width + height: progressBody.height + modal: true + focus: true + parent: Overlay.overlay + x: Math.round((mainWindow.width - width) * 0.5) + y: Math.round((mainWindow.height - height) * 0.5) + closePolicy: cancelButton.visible ? Popup.NoAutoClose : (Popup.CloseOnEscape | Popup.CloseOnPressOutside) + background: Rectangle { + anchors.fill: parent + color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) + radius: ScreenTools.defaultFontPixelWidth * 0.25 + } + Item { + id: progressBody + width: progressCol.width + (ScreenTools.defaultFontPixelWidth * 8) + height: progressCol.height + (ScreenTools.defaultFontPixelHeight * 2) + anchors.centerIn: parent + Column { + id: progressCol + spacing: _contentSpacing + anchors.centerIn: parent + Item { width: 1; height: 1; } + QGCLabel { + text: kPairingManager + font.family: ScreenTools.demiboldFontFamily + font.pointSize: ScreenTools.mediumFontPointSize + anchors.horizontalCenter: parent.horizontalCenter + } + QGCLabel { + text: QGroundControl.pairingManager ? QGroundControl.pairingManager.pairingStatusStr : "" + visible: !connectedIndicator.visible + anchors.horizontalCenter: parent.horizontalCenter + } + Rectangle { + width: _contentWidth + height: 1 + color: qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) + } + Item { width: 1; height: 1; } + //-- Pairing/Connecting + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 3; visible: busyIndicator.visible; } + QGCColoredImage { + id: busyIndicator + height: ScreenTools.defaultFontPixelHeight * 4 + width: height + source: "/qmlimages/MapSync.svg" + sourceSize.height: height + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + color: qgcPal.text + visible: QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive || QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnecting + anchors.horizontalCenter: parent.horizontalCenter + RotationAnimation on rotation { + loops: Animation.Infinite + from: 360 + to: 0 + duration: 720 + running: busyIndicator.visible + } + } + Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 3; visible: busyIndicator.visible; } + //-- Error State + Image { + height: ScreenTools.defaultFontPixelHeight * 4 + width: height + source: "/custom/img/PairingError.svg" + sourceSize.height: height + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + visible: QGroundControl.pairingManager.errorState + anchors.horizontalCenter: parent.horizontalCenter + } + //-- Connection Successful + Image { + id: connectedIndicator + height: width * 0.2 + width: _contentWidth + source: "/custom/img/PairingConnected.svg" + sourceSize.height: height + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + visible: QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected + anchors.horizontalCenter: parent.horizontalCenter + } + Item { width: 1; height: _contentSpacing; visible: connectedIndicator.visible; } + QGCLabel { + text: QGroundControl.pairingManager.pairedVehicle + visible: connectedIndicator.visible + anchors.horizontalCenter: parent.horizontalCenter + } + QGCLabel { + text: qsTr("Connection Successful") + visible: connectedIndicator.visible + anchors.horizontalCenter: parent.horizontalCenter + } + Item { width: 1; height: _contentSpacing; } + //-- Buttons + QGCButton { + width: _contentWidth + visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected) : false + text: qsTr("Done") + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + progressPopup.close() + } + } + QGCButton { + text: qsTr("Pair Another") + width: _contentWidth + visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected) : false + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + progressPopup.close() + mhPopup.open() + } + } + QGCButton { + text: qsTr("Try Again") + width: _contentWidth + visible: QGroundControl.pairingManager ? QGroundControl.pairingManager.errorState : false + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + progressPopup.close() + runPairing() + } + } + QGCButton { + id: cancelButton + width: _contentWidth + visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive || QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnecting || QGroundControl.pairingManager.errorState) : false + text: qsTr("Cancel") + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + if(QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive) + QGroundControl.pairingManager.stopPairing() + else { + //-- TODO: Cancel connection to paired device + } + progressPopup.close() + } + } + Item { width: 1; height: 1; } + } + } + } + //------------------------------------------------------------------------- + //-- Connection Manager + Popup { + id: connectionPopup + width: connectionBody.width + height: connectionBody.height + modal: true + focus: true + parent: Overlay.overlay + x: Math.round((mainWindow.width - width) * 0.5) + y: Math.round((mainWindow.height - height) * 0.5) + closePolicy: cancelButton.visible ? Popup.NoAutoClose : (Popup.CloseOnEscape | Popup.CloseOnPressOutside) + background: Rectangle { + anchors.fill: parent + color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) + radius: ScreenTools.defaultFontPixelWidth * 0.25 + } + Item { + id: connectionBody + width: connectionCol.width + (ScreenTools.defaultFontPixelWidth * 8) + height: connectionCol.height + (ScreenTools.defaultFontPixelHeight * 2) + anchors.centerIn: parent + Column { + id: connectionCol + spacing: _contentSpacing + anchors.centerIn: parent + Item { width: 1; height: 1; } + QGCLabel { + text: kPairingManager + font.family: ScreenTools.demiboldFontFamily + font.pointSize: ScreenTools.mediumFontPointSize + anchors.horizontalCenter: parent.horizontalCenter + } + Rectangle { + width: _contentWidth + height: 1 + color: qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) + } + Item { width: 1; height: 1; } + QGCLabel { + text: qsTr("List Of Available Devices") + visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairedDeviceNameList.length > 0 && !cancelButton.visible) : false + font.family: ScreenTools.demiboldFontFamily + } + Item { width: 1; height: 1; } + GridLayout { + columns: 3 + visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairedDeviceNameList.length > 0 && !cancelButton.visible) : false + columnSpacing: ScreenTools.defaultFontPixelWidth + rowSpacing: ScreenTools.defaultFontPixelHeight * 0.25 + anchors.horizontalCenter: parent.horizontalCenter + property var _pairModel: QGroundControl.pairingManager ? QGroundControl.pairingManager.pairedDeviceNameList : [] + Repeater { + model: parent._pairModel + delegate: QGCLabel { + text: modelData + ' ' + QGroundControl.pairingManager.pairedDeviceNameList.length + Layout.row: index + Layout.column: 0 + Layout.minimumWidth:ScreenTools.defaultFontPixelWidth * 14 + Layout.fillWidth: true + } + } + Repeater { + model: parent._pairModel + delegate: QGCButton { + text: qsTr("Connect") + Layout.row: index + Layout.column: 1 + onClicked: { + QGroundControl.pairingManager.connectToPairedDevice(modelData) + connectionPopup.close() + progressPopup.open() + } + } + } + Repeater { + model: parent._pairModel + delegate: QGCColoredImage { + Layout.preferredWidth: ScreenTools.defaultFontPixelHeight * 1.5 + Layout.preferredHeight: ScreenTools.defaultFontPixelHeight * 1.5 + sourceSize.height: height + source: "/res/TrashDelete.svg" + color: qgcPal.colorRed + Layout.row: index + Layout.column: 2 + MouseArea { + anchors.fill: parent + onClicked: { + removePrompt.open() + } + } + MessageDialog { + id: removePrompt + title: qsTr("Remove Paired Vehicle") + text: qsTr("Confirm removing %1?").arg(modelData) + standardButtons: StandardButton.Yes | StandardButton.No + onNo: removePrompt.close() + onYes: { + QGroundControl.pairingManager.removePairedDevice(modelData) + removePrompt.close() + } + } + } + } + } + Item { width: 1; height: _contentSpacing; } + QGCButton { + width: _contentWidth + text: qsTr("Close") + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + connectionPopup.close() + } + } + QGCButton { + text: qsTr("Pair Another") + width: _contentWidth + anchors.horizontalCenter: parent.horizontalCenter + onClicked: { + connectionPopup.close() + mhPopup.open() + } + } + Item { width: 1; height: 1; } + } + } + } +} diff --git a/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc b/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc index 420c72a..a460de2 100644 --- a/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc +++ b/custom-example/src/FirmwarePlugin/CustomFirmwarePlugin.cc @@ -56,7 +56,7 @@ CustomFirmwarePlugin::toolBarIndicators(const Vehicle* vehicle) Q_UNUSED(vehicle); if(_toolBarIndicatorList.size() == 0) { #if defined(QGC_ENABLE_PAIRING) - _toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/PairingIndicator.qml"))); + _toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/custom/PairingIndicator.qml"))); #endif _toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/GPSIndicator.qml"))); _toolBarIndicatorList.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/TelemetryRSSIIndicator.qml"))); diff --git a/qgcimages.qrc b/qgcimages.qrc index 8d12d67..e025d9c 100644 --- a/qgcimages.qrc +++ b/qgcimages.qrc @@ -121,10 +121,6 @@ src/AutoPilotPlugins/PX4/Images/no-logging-light.svg src/AutoPilotPlugins/PX4/Images/no-logging.svg src/AutoPilotPlugins/PX4/Images/ObjectAvoidance.svg - src/PairingManager/Images/PairingButton.svg - src/PairingManager/Images/PairingConnected.svg - src/PairingManager/Images/PairingError.svg - src/PairingManager/Images/PairingIcon.svg src/ui/toolbar/Images/PaperPlane.svg src/FlightMap/Images/PiP.svg src/FlightMap/Images/pipHide.svg diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index b1bc3f5..148e3fa 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -14,7 +14,6 @@ src/ui/toolbar/MessageIndicator.qml src/ui/toolbar/ModeIndicator.qml src/ui/toolbar/MultiVehicleSelector.qml - src/ui/toolbar/PairingIndicator.qml src/ui/toolbar/RCRSSIIndicator.qml src/ui/toolbar/TelemetryRSSIIndicator.qml src/ui/toolbar/VTOLModeIndicator.qml diff --git a/src/PairingManager/Images/PairingButton.svg b/src/PairingManager/Images/PairingButton.svg deleted file mode 100644 index 1166e20..0000000 --- a/src/PairingManager/Images/PairingButton.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - diff --git a/src/PairingManager/Images/PairingConnected.svg b/src/PairingManager/Images/PairingConnected.svg deleted file mode 100644 index 02ac3be..0000000 --- a/src/PairingManager/Images/PairingConnected.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - diff --git a/src/PairingManager/Images/PairingError.svg b/src/PairingManager/Images/PairingError.svg deleted file mode 100644 index db18451..0000000 --- a/src/PairingManager/Images/PairingError.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/src/PairingManager/Images/PairingIcon.svg b/src/PairingManager/Images/PairingIcon.svg deleted file mode 100644 index aff3e41..0000000 --- a/src/PairingManager/Images/PairingIcon.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - diff --git a/src/PairingManager/Images/PairingIconLight.svg b/src/PairingManager/Images/PairingIconLight.svg deleted file mode 100644 index 76a193c..0000000 --- a/src/PairingManager/Images/PairingIconLight.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - diff --git a/src/ui/toolbar/PairingIndicator.qml b/src/ui/toolbar/PairingIndicator.qml deleted file mode 100644 index b1006bd..0000000 --- a/src/ui/toolbar/PairingIndicator.qml +++ /dev/null @@ -1,518 +0,0 @@ -/**************************************************************************** - * - * (c) 2009-2016 QGROUNDCONTROL PROJECT - * - * QGroundControl is licensed according to the terms in the file - * COPYING.md in the root of the source code directory. - * - ****************************************************************************/ - -import QtQuick 2.11 -import QtQuick.Controls 2.4 -import QtQuick.Layouts 1.11 -import QtQuick.Dialogs 1.3 - -import QGroundControl 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.MultiVehicleManager 1.0 -import QGroundControl.ScreenTools 1.0 -import QGroundControl.Palette 1.0 - -//------------------------------------------------------------------------- -//-- GPS Indicator -Item { - id: _root - width: pairingRow.width * 1.1 - anchors.top: parent.top - anchors.bottom: parent.bottom - - property bool _light: qgcPal.globalTheme === QGCPalette.Light && !activeVehicle - property real _contentWidth: ScreenTools.defaultFontPixelWidth * 34 - property real _contentSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - property real _rectWidth: _contentWidth - property real _rectHeight: _contentWidth * 0.75 - - property string kPairingManager: qsTr("Pairing Manager") - - function runPairing() { - QGroundControl.pairingManager.firstBoot = false - if(QGroundControl.pairingManager.pairedDeviceNameList.length > 0) { - connectionPopup.open() - } else { - mhPopup.open() - } - } - - Connections { - target: QGroundControl.pairingManager - //-- Connect automatically once paired - onPairingStatusChanged: { - if(QGroundControl.pairingManager.pairingStatus === PairingManager.PairingSuccess) { - if(QGroundControl.pairingManager.pairedVehicle !== "") { - QGroundControl.pairingManager.connectToPairedDevice(QGroundControl.pairingManager.pairedVehicle) - } - } - } - } - - Row { - id: pairingRow - spacing: ScreenTools.defaultFontPixelWidth - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.horizontalCenter: parent.horizontalCenter - QGCColoredImage { - id: pairingIcon - height: parent.height - width: height - color: qgcPal.text - source: "/qmlimages/PairingIcon.svg" - sourceSize.width: width - fillMode: Image.PreserveAspectFit - smooth: true - mipmap: true - antialiasing: true - anchors.verticalCenter: parent.verticalCenter - } - QGCLabel { - text: qsTr("Pair Vehicle") - width: !activeVehicle ? (ScreenTools.defaultFontPixelWidth * 12) : 0 - visible: !activeVehicle - font.family: ScreenTools.demiboldFontFamily - anchors.verticalCenter: parent.verticalCenter - } - } - MouseArea { - anchors.fill: parent - onClicked: { - runPairing() - } - } - //------------------------------------------------------------------------- - //-- Microhard - Popup { - id: mhPopup - width: mhBody.width - height: mhBody.height - modal: true - focus: true - parent: Overlay.overlay - x: Math.round((mainWindow.width - width) * 0.5) - y: Math.round((mainWindow.height - height) * 0.5) - closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside - background: Rectangle { - anchors.fill: parent - color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) - radius: ScreenTools.defaultFontPixelWidth * 0.25 - } - Item { - id: mhBody - width: mhCol.width + (ScreenTools.defaultFontPixelWidth * 8) - height: mhCol.height + (ScreenTools.defaultFontPixelHeight * 2) - anchors.centerIn: parent - Column { - id: mhCol - spacing: _contentSpacing - anchors.centerIn: parent - Item { width: 1; height: 1; } - QGCLabel { - text: kPairingManager - font.family: ScreenTools.demiboldFontFamily - font.pointSize: ScreenTools.mediumFontPointSize - anchors.horizontalCenter: parent.horizontalCenter - } - Rectangle { - width: _contentWidth - height: 1 - color: qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) - } - Item { width: 1; height: 1; } - QGCLabel { - text: qsTr("To connect to your vehicle, please click on the pairing button in order to put the vehicle in discovery mode") - width: _contentWidth - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - anchors.horizontalCenter: parent.horizontalCenter - } - Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 2; } - QGCColoredImage { - height: ScreenTools.defaultFontPixelHeight * 6 - width: height - source: "/qmlimages/PairingButton.svg" - sourceSize.height: height - fillMode: Image.PreserveAspectFit - mipmap: true - smooth: true - color: qgcPal.text - anchors.horizontalCenter: parent.horizontalCenter - } - Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 2; } - QGCButton { - text: qsTr("Pair a Vehicle") - width: _contentWidth - anchors.horizontalCenter: parent.horizontalCenter - onClicked: { - mhPopup.close() - progressPopup.open() - QGroundControl.pairingManager.startMicrohardPairing(); - } - } - Item { width: 1; height: 1; } - } - } - } - //------------------------------------------------------------------------- - //-- NFC - Popup { - id: nfcPopup - width: nfcBody.width - height: nfcBody.height - modal: true - focus: true - parent: Overlay.overlay - x: Math.round((mainWindow.width - width) * 0.5) - y: Math.round((mainWindow.height - height) * 0.5) - closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside - background: Rectangle { - anchors.fill: parent - color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) - radius: ScreenTools.defaultFontPixelWidth * 0.25 - } - Item { - id: nfcBody - width: nfcCol.width + (ScreenTools.defaultFontPixelWidth * 8) - height: nfcCol.height + (ScreenTools.defaultFontPixelHeight * 2) - anchors.centerIn: parent - Column { - id: nfcCol - spacing: _contentSpacing - anchors.centerIn: parent - Item { width: 1; height: 1; } - QGCLabel { - text: kPairingManager - font.family: ScreenTools.demiboldFontFamily - font.pointSize: ScreenTools.mediumFontPointSize - anchors.horizontalCenter: parent.horizontalCenter - } - Rectangle { - width: _contentWidth - height: 1 - color: qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) - } - Item { width: 1; height: 1; } - Rectangle { - width: _rectWidth - height: _rectHeight - color: Qt.rgba(0,0,0,0) - border.color: qgcPal.text - border.width: 1 - anchors.horizontalCenter: parent.horizontalCenter - QGCLabel { - text: "Vehicle and Tablet Graphic" - anchors.centerIn: parent - } - } - Item { width: 1; height: 1; } - QGCLabel { - text: qsTr("Please make sure your vehicle is close to your Ground Station device") - width: _contentWidth - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - anchors.horizontalCenter: parent.horizontalCenter - } - Item { width: 1; height: 1; } - QGCButton { - text: qsTr("Pair Via NFC") - width: _contentWidth - anchors.horizontalCenter: parent.horizontalCenter - onClicked: { - nfcPopup.close() - progressPopup.open() - QGroundControl.pairingManager.startNFCScan(); - } - } - Item { width: 1; height: 1; } - } - } - } - //------------------------------------------------------------------------- - //-- Pairing/Connection Progress - Popup { - id: progressPopup - width: progressBody.width - height: progressBody.height - modal: true - focus: true - parent: Overlay.overlay - x: Math.round((mainWindow.width - width) * 0.5) - y: Math.round((mainWindow.height - height) * 0.5) - closePolicy: cancelButton.visible ? Popup.NoAutoClose : (Popup.CloseOnEscape | Popup.CloseOnPressOutside) - background: Rectangle { - anchors.fill: parent - color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) - radius: ScreenTools.defaultFontPixelWidth * 0.25 - } - Item { - id: progressBody - width: progressCol.width + (ScreenTools.defaultFontPixelWidth * 8) - height: progressCol.height + (ScreenTools.defaultFontPixelHeight * 2) - anchors.centerIn: parent - Column { - id: progressCol - spacing: _contentSpacing - anchors.centerIn: parent - Item { width: 1; height: 1; } - QGCLabel { - text: kPairingManager - font.family: ScreenTools.demiboldFontFamily - font.pointSize: ScreenTools.mediumFontPointSize - anchors.horizontalCenter: parent.horizontalCenter - } - QGCLabel { - text: QGroundControl.pairingManager ? QGroundControl.pairingManager.pairingStatusStr : "" - visible: !connectedIndicator.visible - anchors.horizontalCenter: parent.horizontalCenter - } - Rectangle { - width: _contentWidth - height: 1 - color: qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) - } - Item { width: 1; height: 1; } - //-- Pairing/Connecting - Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 3; visible: busyIndicator.visible; } - QGCColoredImage { - id: busyIndicator - height: ScreenTools.defaultFontPixelHeight * 4 - width: height - source: "/qmlimages/MapSync.svg" - sourceSize.height: height - fillMode: Image.PreserveAspectFit - mipmap: true - smooth: true - color: qgcPal.text - visible: QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive || QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnecting - anchors.horizontalCenter: parent.horizontalCenter - RotationAnimation on rotation { - loops: Animation.Infinite - from: 360 - to: 0 - duration: 720 - running: busyIndicator.visible - } - } - Item { width: 1; height: ScreenTools.defaultFontPixelHeight * 3; visible: busyIndicator.visible; } - //-- Error State - Image { - height: ScreenTools.defaultFontPixelHeight * 4 - width: height - source: "/qmlimages/PairingError.svg" - sourceSize.height: height - fillMode: Image.PreserveAspectFit - mipmap: true - smooth: true - visible: QGroundControl.pairingManager.errorState - anchors.horizontalCenter: parent.horizontalCenter - } - //-- Connection Successful - Image { - id: connectedIndicator - height: width * 0.2 - width: _contentWidth - source: "/qmlimages/PairingConnected.svg" - sourceSize.height: height - fillMode: Image.PreserveAspectFit - mipmap: true - smooth: true - visible: QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected - anchors.horizontalCenter: parent.horizontalCenter - } - Item { width: 1; height: _contentSpacing; visible: connectedIndicator.visible; } - QGCLabel { - text: QGroundControl.pairingManager.pairedVehicle - visible: connectedIndicator.visible - anchors.horizontalCenter: parent.horizontalCenter - } - QGCLabel { - text: qsTr("Connection Successful") - visible: connectedIndicator.visible - anchors.horizontalCenter: parent.horizontalCenter - } - Item { width: 1; height: _contentSpacing; } - //-- Buttons - QGCButton { - width: _contentWidth - visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected) : false - text: qsTr("Done") - anchors.horizontalCenter: parent.horizontalCenter - onClicked: { - progressPopup.close() - } - } - QGCButton { - text: qsTr("Pair Another") - width: _contentWidth - visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnected) : false - anchors.horizontalCenter: parent.horizontalCenter - onClicked: { - progressPopup.close() - mhPopup.open() - } - } - QGCButton { - text: qsTr("Try Again") - width: _contentWidth - visible: QGroundControl.pairingManager ? QGroundControl.pairingManager.errorState : false - anchors.horizontalCenter: parent.horizontalCenter - onClicked: { - progressPopup.close() - runPairing() - } - } - QGCButton { - id: cancelButton - width: _contentWidth - visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive || QGroundControl.pairingManager.pairingStatus === PairingManager.PairingConnecting || QGroundControl.pairingManager.errorState) : false - text: qsTr("Cancel") - anchors.horizontalCenter: parent.horizontalCenter - onClicked: { - if(QGroundControl.pairingManager.pairingStatus === PairingManager.PairingActive) - QGroundControl.pairingManager.stopPairing() - else { - //-- TODO: Cancel connection to paired device - } - progressPopup.close() - } - } - Item { width: 1; height: 1; } - } - } - } - //------------------------------------------------------------------------- - //-- Connection Manager - Popup { - id: connectionPopup - width: connectionBody.width - height: connectionBody.height - modal: true - focus: true - parent: Overlay.overlay - x: Math.round((mainWindow.width - width) * 0.5) - y: Math.round((mainWindow.height - height) * 0.5) - closePolicy: cancelButton.visible ? Popup.NoAutoClose : (Popup.CloseOnEscape | Popup.CloseOnPressOutside) - background: Rectangle { - anchors.fill: parent - color: qgcPal.globalTheme === QGCPalette.Light ? Qt.rgba(1,1,1,0.95) : Qt.rgba(0,0,0,0.75) - radius: ScreenTools.defaultFontPixelWidth * 0.25 - } - Item { - id: connectionBody - width: connectionCol.width + (ScreenTools.defaultFontPixelWidth * 8) - height: connectionCol.height + (ScreenTools.defaultFontPixelHeight * 2) - anchors.centerIn: parent - Column { - id: connectionCol - spacing: _contentSpacing - anchors.centerIn: parent - Item { width: 1; height: 1; } - QGCLabel { - text: kPairingManager - font.family: ScreenTools.demiboldFontFamily - font.pointSize: ScreenTools.mediumFontPointSize - anchors.horizontalCenter: parent.horizontalCenter - } - Rectangle { - width: _contentWidth - height: 1 - color: qgcPal.globalTheme !== QGCPalette.Light ? Qt.rgba(1,1,1,0.25) : Qt.rgba(0,0,0,0.25) - } - Item { width: 1; height: 1; } - QGCLabel { - text: qsTr("List Of Available Devices") - visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairedDeviceNameList.length > 0 && !cancelButton.visible) : false - font.family: ScreenTools.demiboldFontFamily - } - Item { width: 1; height: 1; } - GridLayout { - columns: 3 - visible: QGroundControl.pairingManager ? (QGroundControl.pairingManager.pairedDeviceNameList.length > 0 && !cancelButton.visible) : false - columnSpacing: ScreenTools.defaultFontPixelWidth - rowSpacing: ScreenTools.defaultFontPixelHeight * 0.25 - anchors.horizontalCenter: parent.horizontalCenter - property var _pairModel: QGroundControl.pairingManager ? QGroundControl.pairingManager.pairedDeviceNameList : [] - Repeater { - model: parent._pairModel - delegate: QGCLabel { - text: modelData + ' ' + QGroundControl.pairingManager.pairedDeviceNameList.length - Layout.row: index - Layout.column: 0 - Layout.minimumWidth:ScreenTools.defaultFontPixelWidth * 14 - Layout.fillWidth: true - } - } - Repeater { - model: parent._pairModel - delegate: QGCButton { - text: qsTr("Connect") - Layout.row: index - Layout.column: 1 - onClicked: { - QGroundControl.pairingManager.connectToPairedDevice(modelData) - connectionPopup.close() - progressPopup.open() - } - } - } - Repeater { - model: parent._pairModel - delegate: QGCColoredImage { - Layout.preferredWidth: ScreenTools.defaultFontPixelHeight * 1.5 - Layout.preferredHeight: ScreenTools.defaultFontPixelHeight * 1.5 - sourceSize.height: height - source: "/res/TrashDelete.svg" - color: qgcPal.colorRed - Layout.row: index - Layout.column: 2 - MouseArea { - anchors.fill: parent - onClicked: { - removePrompt.open() - } - } - MessageDialog { - id: removePrompt - title: qsTr("Remove Paired Vehicle") - text: qsTr("Confirm removing %1?").arg(modelData) - standardButtons: StandardButton.Yes | StandardButton.No - onNo: removePrompt.close() - onYes: { - QGroundControl.pairingManager.removePairedDevice(modelData) - removePrompt.close() - } - } - } - } - } - Item { width: 1; height: _contentSpacing; } - QGCButton { - width: _contentWidth - text: qsTr("Close") - anchors.horizontalCenter: parent.horizontalCenter - onClicked: { - connectionPopup.close() - } - } - QGCButton { - text: qsTr("Pair Another") - width: _contentWidth - anchors.horizontalCenter: parent.horizontalCenter - onClicked: { - connectionPopup.close() - mhPopup.open() - } - } - Item { width: 1; height: 1; } - } - } - } -}