diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index ce6f49b7fb721de2c9ef52ae464f5d1580441e34..c7753f7cf03a567b12dc0f96735ee62d5dd43599 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 49f4b75c16347b257f911a50d69515b1531f6390..6e0e58d4ae5f8b141e4f75be7ec19884943624b4 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 668c236d848c8a6f7c0c291abd0e1508a3c22bf3..1741c8a2d8e83cb93d7c269c5b9bb14d1ede68bc 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) { @@ -156,6 +161,19 @@ Item { checked = true } } + 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 diff --git a/src/ui/preferences/LinkSettings.qml b/src/ui/preferences/LinkSettings.qml new file mode 100644 index 0000000000000000000000000000000000000000..22dd7e2411d5cc3da16934160179f916e444a072 --- /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 211550e45155d133ef34bbd7c9034d59ed684742..6ec6a87a8825442189b246c25d568e6c4536af16 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