diff --git a/qgcresources.qrc b/qgcresources.qrc
index ab45927ff935a07ce0046e67ef6211f677c9e1cc..1adcca7a6f3c8f61ad2f9c6182230a324745696b 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 643946656b2e6bb763e1e10bb77422e5fb956015..13452d1fcfda0673ee71be55a57e547f44c34a2d 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 1dfa4fdf58659db0f3e219971a66838c88fa1303..e2a39dfabc261e6b4f42f611b2e629040fbc2be0 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
Binary files /dev/null and b/src/ui/toolbar/Images/Joystick.png differ
diff --git a/src/ui/toolbar/JoystickIndicator.qml b/src/ui/toolbar/JoystickIndicator.qml
new file mode 100644
index 0000000000000000000000000000000000000000..ecfa8d95dfcbf61f58f840595238efa0a56cf2fc
--- /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))
+ }
+}