diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc
index 3126d5c..8116a80 100644
--- a/qgroundcontrol.qrc
+++ b/qgroundcontrol.qrc
@@ -17,6 +17,7 @@
src/AutoPilotPlugins/PX4/FlightModesComponent.qml
src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml
src/ui/preferences/GeneralSettings.qml
+ src/ui/preferences/LinkSettings.qml
src/VehicleSetup/JoystickConfig.qml
src/ui/toolbar/MainToolBar.qml
src/ui/MainWindow.qml
diff --git a/src/comm/LinkManager.h b/src/comm/LinkManager.h
index 49f4b75..6e0e58d 100644
--- a/src/comm/LinkManager.h
+++ b/src/comm/LinkManager.h
@@ -80,7 +80,9 @@ public:
Q_PROPERTY(bool autoconnectPixhawk READ autoconnectPixhawk WRITE setAutoconnectPixhawk NOTIFY autoconnectPixhawkChanged)
Q_PROPERTY(bool autoconnect3DRRadio READ autoconnect3DRRadio WRITE setAutoconnect3DRRadio NOTIFY autoconnect3DRRadioChanged)
Q_PROPERTY(bool autoconnectPX4Flow READ autoconnectPX4Flow WRITE setAutoconnectPX4Flow NOTIFY autoconnectPX4FlowChanged)
+ //-- LinkInterface
Q_PROPERTY(QmlObjectListModel* links READ links CONSTANT)
+ //-- LinkConfiguration
Q_PROPERTY(QmlObjectListModel* linkConfigurations READ linkConfigurations CONSTANT)
// Property accessors
diff --git a/src/ui/MainWindowLeftPanel.qml b/src/ui/MainWindowLeftPanel.qml
index 668c236..1741c8a 100644
--- a/src/ui/MainWindowLeftPanel.qml
+++ b/src/ui/MainWindowLeftPanel.qml
@@ -34,7 +34,7 @@ import QGroundControl.ScreenTools 1.0
//-- Left Menu
Item {
- id: __leftPanel
+ id: settingsMenu
anchors.fill: parent
property alias animateShowDialog: __animateShowDialog
@@ -52,6 +52,11 @@ Item {
}
}
+ function closeSettings() {
+ __rightPanel.source = ""
+ mainWindow.hideLeftMenu()
+ }
+
ParallelAnimation {
id: __animateShowDialog
NumberAnimation {
@@ -59,14 +64,14 @@ Item {
properties: "opacity"
from: 0.0
to: 0.8
- duration: __leftPanel.__animationDuration
+ duration: settingsMenu.__animationDuration
}
NumberAnimation {
target: __transparentSection
properties: "width"
from: 1
to: mainWindow.width
- duration: __leftPanel.__animationDuration
+ duration: settingsMenu.__animationDuration
}
}
@@ -77,14 +82,14 @@ Item {
properties: "opacity"
from: 0.8
to: 0.0
- duration: __leftPanel.__animationDuration
+ duration: settingsMenu.__animationDuration
}
NumberAnimation {
target: __transparentSection
properties: "width"
from: mainWindow.width
to: 1
- duration: __leftPanel.__animationDuration
+ duration: settingsMenu.__animationDuration
}
onRunningChanged: {
if (!running) {
@@ -159,6 +164,19 @@ Item {
QGCButton {
width: parent.width * 0.8
height: ScreenTools.defaultFontPixelHeight * 2.5
+ text: "Comm Links"
+ exclusiveGroup: panelActionGroup
+ anchors.horizontalCenter: parent.horizontalCenter
+ onClicked: {
+ if(__rightPanel.source != "LinkSettings.qml") {
+ __rightPanel.source = "LinkSettings.qml"
+ }
+ checked = true
+ }
+ }
+ QGCButton {
+ width: parent.width * 0.8
+ height: ScreenTools.defaultFontPixelHeight * 2.5
text: "MavLink"
exclusiveGroup: panelActionGroup
anchors.horizontalCenter: parent.horizontalCenter
diff --git a/src/ui/preferences/LinkSettings.qml b/src/ui/preferences/LinkSettings.qml
new file mode 100644
index 0000000..22dd7e2
--- /dev/null
+++ b/src/ui/preferences/LinkSettings.qml
@@ -0,0 +1,138 @@
+/*=====================================================================
+
+ QGroundControl Open Source Ground Control Station
+
+ (c) 2009 - 2015 QGROUNDCONTROL PROJECT
+
+ This file is part of the QGROUNDCONTROL project
+
+ QGROUNDCONTROL is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ QGROUNDCONTROL is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with QGROUNDCONTROL. If not, see .
+
+ ======================================================================*/
+
+import QtQuick 2.5
+import QtQuick.Controls 1.2
+import QtQuick.Controls.Styles 1.2
+import QtQuick.Dialogs 1.1
+
+import QGroundControl 1.0
+import QGroundControl.Controls 1.0
+import QGroundControl.ScreenTools 1.0
+import QGroundControl.Palette 1.0
+
+Rectangle {
+ id: _linkRoot
+ color: __qgcPal.window
+
+ property var _currentSelection: null
+
+ ExclusiveGroup { id: linkGroup }
+
+ QGCPalette {
+ id: qgcPal
+ colorGroupEnabled: enabled
+ }
+
+ Flickable {
+ clip: true
+ anchors.top: parent.top
+ width: parent.width
+ height: parent.height - buttonRow.height
+ anchors.margins: ScreenTools.defaultFontPixelWidth
+ contentHeight: settingsColumn.height
+ contentWidth: _linkRoot.width
+ flickableDirection: Flickable.VerticalFlick
+ boundsBehavior: Flickable.StopAtBounds
+
+ Column {
+ id: settingsColumn
+ width: _linkRoot.width
+ anchors.margins: ScreenTools.defaultFontPixelWidth
+ spacing: ScreenTools.defaultFontPixelHeight / 2
+ Item {
+ height: ScreenTools.defaultFontPixelHeight / 2
+ width: parent.width
+ }
+ QGCLabel {
+ text: "WIP: Not fully functional"
+ color: __qgcPal.warningText
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ Item {
+ height: ScreenTools.defaultFontPixelHeight / 2
+ width: parent.width
+ }
+ Repeater {
+ model: QGroundControl.linkManager.linkConfigurations
+ delegate:
+ QGCButton {
+ text: object.name
+ width: _linkRoot.width * 0.5
+ exclusiveGroup: linkGroup
+ anchors.horizontalCenter: parent.horizontalCenter
+ onClicked: {
+ checked = true
+ _currentSelection = object
+ }
+ }
+ }
+ }
+ }
+
+ Row {
+ id: buttonRow
+ spacing: ScreenTools.defaultFontPixelWidth
+ anchors.bottom: parent.bottom
+ anchors.margins: ScreenTools.defaultFontPixelWidth
+ anchors.horizontalCenter: parent.horizontalCenter
+ QGCButton {
+ width: ScreenTools.defaultFontPixelWidth * 10
+ text: "Delete"
+ enabled: false
+ onClicked: {
+ }
+ }
+ QGCButton {
+ width: ScreenTools.defaultFontPixelWidth * 10
+ text: "Edit"
+ enabled: false
+ onClicked: {
+ }
+ }
+ QGCButton {
+ width: ScreenTools.defaultFontPixelWidth * 10
+ text: "Add"
+ enabled: false
+ onClicked: {
+ }
+ }
+ QGCButton {
+ width: ScreenTools.defaultFontPixelWidth * 10
+ text: "Connect"
+ enabled: _currentSelection && !_currentSelection.link
+ onClicked: {
+ QGroundControl.linkManager.createConnectedLink(_currentSelection)
+ settingsMenu.closeSettings()
+ }
+ }
+ QGCButton {
+ width: ScreenTools.defaultFontPixelWidth * 10
+ text: "Disconnect"
+ enabled: _currentSelection && _currentSelection.link
+ onClicked: {
+ QGroundControl.linkManager.disconnectLink(_currentSelection.link, false)
+ }
+ }
+ }
+}
diff --git a/src/ui/toolbar/MainToolBarIndicators.qml b/src/ui/toolbar/MainToolBarIndicators.qml
index 211550e..6ec6a87 100644
--- a/src/ui/toolbar/MainToolBarIndicators.qml
+++ b/src/ui/toolbar/MainToolBarIndicators.qml
@@ -306,8 +306,7 @@ Row {
//-- Vehicle Selector
QGCButton {
id: vehicleSelectorButton
- width: ScreenTools.defaultFontPixelSize * 12
- height: mainWindow.tbButtonWidth
+ width: ScreenTools.defaultFontPixelSize * 8
text: "Vehicle " + (activeVehicle ? activeVehicle.id : "None")
visible: QGroundControl.multiVehicleManager.vehicles.count > 1
anchors.verticalCenter: parent.verticalCenter