From fb35b7d1550970354455793bd95d981e5fee657a Mon Sep 17 00:00:00 2001 From: Jacob Walser Date: Wed, 3 May 2017 14:45:20 -0400 Subject: [PATCH] Add joystick toolbar indicator for Sub --- qgcresources.qrc | 1 + qgroundcontrol.qrc | 1 + .../APM/ArduSubFirmwarePlugin.cc | 1 + src/ui/toolbar/Images/Joystick.png | Bin 0 -> 39199 bytes src/ui/toolbar/JoystickIndicator.qml | 102 ++++++++++++++++++ 5 files changed, 105 insertions(+) create mode 100644 src/ui/toolbar/Images/Joystick.png create mode 100644 src/ui/toolbar/JoystickIndicator.qml diff --git a/qgcresources.qrc b/qgcresources.qrc index ab45927ff9..1adcca7a6f 100644 --- a/qgcresources.qrc +++ b/qgcresources.qrc @@ -154,6 +154,7 @@ src/ui/toolbar/Images/TelemRSSI.svg src/ui/toolbar/Images/Yield.svg src/ui/toolbar/Images/CameraIcon.svg + src/ui/toolbar/Images/Joystick.png src/MissionManager/CogWheel.svg src/AutoPilotPlugins/Common/Images/StationMode.svg src/AutoPilotPlugins/Common/Images/APMode.svg diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index 643946656b..13452d1fcf 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -10,6 +10,7 @@ src/ui/toolbar/ModeIndicator.qml src/ui/toolbar/RCRSSIIndicator.qml src/ui/toolbar/TelemetryRSSIIndicator.qml + src/ui/toolbar/JoystickIndicator.qml src/AutoPilotPlugins/PX4/AirframeComponent.qml diff --git a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc index 1dfa4fdf58..e2a39dfabc 100644 --- a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc +++ b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc @@ -115,6 +115,7 @@ const QVariantList& ArduSubFirmwarePlugin::toolBarIndicators(const Vehicle* vehi _toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/MessageIndicator.qml"))); _toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/BatteryIndicator.qml"))); _toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/ModeIndicator.qml"))); + _toolBarIndicators.append(QVariant::fromValue(QUrl::fromUserInput("qrc:/toolbar/JoystickIndicator.qml"))); } return _toolBarIndicators; } diff --git a/src/ui/toolbar/Images/Joystick.png b/src/ui/toolbar/Images/Joystick.png new file mode 100644 index 0000000000000000000000000000000000000000..bbaa8350d08ac3172e5dca97689c8b3dcf4fc5df GIT binary patch literal 39199 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 FO#rE5Df|Ec literal 0 HcmV?d00001 diff --git a/src/ui/toolbar/JoystickIndicator.qml b/src/ui/toolbar/JoystickIndicator.qml new file mode 100644 index 0000000000..ecfa8d95df --- /dev/null +++ b/src/ui/toolbar/JoystickIndicator.qml @@ -0,0 +1,102 @@ +/**************************************************************************** + * + * (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.5 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.2 + +import QGroundControl 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.MultiVehicleManager 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.Palette 1.0 + +// Joystick Indicator +Item { + width: joystickRow.width * 1.1 + anchors.top: parent.top + anchors.bottom: parent.bottom + visible: activeVehicle ? activeVehicle.sub : false + + + Component { + id: joystickInfo + + Rectangle { + width: joystickCol.width + ScreenTools.defaultFontPixelWidth * 3 + height: joystickCol.height + ScreenTools.defaultFontPixelHeight * 2 + radius: ScreenTools.defaultFontPixelHeight * 0.5 + color: qgcPal.window + border.color: qgcPal.text + + Column { + id: joystickCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + width: Math.max(joystickGrid.width, joystickLabel.width) + anchors.margins: ScreenTools.defaultFontPixelHeight + anchors.centerIn: parent + + QGCLabel { + id: joystickLabel + text: qsTr("Joystick Status") + font.family: ScreenTools.demiboldFontFamily + anchors.horizontalCenter: parent.horizontalCenter + } + + GridLayout { + id: joystickGrid + anchors.margins: ScreenTools.defaultFontPixelHeight + columnSpacing: ScreenTools.defaultFontPixelWidth + columns: 2 + anchors.horizontalCenter: parent.horizontalCenter + + QGCLabel { text: qsTr("Connected:") } + QGCLabel { + text: joystickManager.activeJoystick ? "Yes" : "No" + color: joystickManager.activeJoystick ? qgcPal.buttonText : "red" + } + QGCLabel { text: qsTr("Enabled:") } + QGCLabel { + text: activeVehicle && activeVehicle.joystickEnabled ? "Yes" : "No" + color: activeVehicle && activeVehicle.joystickEnabled ? qgcPal.buttonText : "red" + } + } + } + + Component.onCompleted: { + var pos = mapFromItem(toolBar, centerX - (width / 2), toolBar.height) + x = pos.x + y = pos.y + ScreenTools.defaultFontPixelHeight + } + } + } + + Row { + id: joystickRow + anchors.top: parent.top + anchors.bottom: parent.bottom + spacing: ScreenTools.defaultFontPixelWidth + + QGCColoredImage { + width: height + anchors.top: parent.top + anchors.bottom: parent.bottom + sourceSize.height: height + source: "/qmlimages/Joystick.png" + fillMode: Image.PreserveAspectFit + color: activeVehicle && activeVehicle.joystickEnabled && joystickManager.activeJoystick ? qgcPal.buttonText : "red" + } + } + + MouseArea { + anchors.fill: parent + onClicked: mainWindow.showPopUp(joystickInfo, mapToItem(toolBar, x, y).x + (width / 2)) + } +} -- GitLab