diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index c7329a7914fec6568f58173c07c5127e9be6c858..d213b17bf05e174a0f0ac7f9d4a2edd11157bd88 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -238,7 +238,6 @@ FORMS += \ src/ui/QGCTabbedInfoView.ui \ src/ui/QGCUASFileView.ui \ src/ui/QGCUASFileViewMulti.ui \ - src/ui/SettingsDialog.ui \ src/ui/uas/UASQuickView.ui \ src/ui/uas/UASQuickViewItemSelect.ui \ src/ui/UASInfo.ui \ @@ -363,7 +362,6 @@ HEADERS += \ src/ui/MultiVehicleDockWidget.h \ src/ui/QGCMAVLinkLogPlayer.h \ src/ui/QGCMapRCToParamDialog.h \ - src/ui/SettingsDialog.h \ src/ui/uas/UASMessageView.h \ src/ui/uas/QGCUnconnectedInfoWidget.h \ src/ui/QGCDataPlot2D.h \ @@ -490,7 +488,6 @@ SOURCES += \ src/ui/uas/UASMessageView.cc \ src/uas/FileManager.cc \ src/ui/uas/QGCUnconnectedInfoWidget.cc \ - src/ui/SettingsDialog.cc \ src/ui/MAVLinkDecoder.cc \ src/ui/MAVLinkSettingsWidget.cc \ src/ui/QGCMapRCToParamDialog.cpp \ diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index 1c2b007821f4d6d761863be9b8ac03e3043dac0d..4fd21381fc3b9e9f30441035f5c55e9aef32d852 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -37,7 +37,7 @@ src/ui/MainWindowHybrid.qml src/ui/MainWindowInner.qml src/ui/MainWindowNative.qml - src/ui/MainWindowLeftPanel.qml + src/ui/AppSettings.qml src/MissionEditor/MissionEditor.qml src/AutoPilotPlugins/Common/MotorComponent.qml src/AutoPilotPlugins/PX4/PowerComponent.qml diff --git a/src/FirmwarePlugin/APM/MavCmdInfoCommon.json b/src/FirmwarePlugin/APM/MavCmdInfoCommon.json index d67684eb9a0bc1fac644ae1b58e8a8bb61d36048..bcbb1bf047f10dfa8ee8afc56c211ce02a404181 100644 --- a/src/FirmwarePlugin/APM/MavCmdInfoCommon.json +++ b/src/FirmwarePlugin/APM/MavCmdInfoCommon.json @@ -12,7 +12,7 @@ "category": "Basic", "param1": { "label": "Pitch:", - "units": "degrees", + "units": "deg", "default": 15, "decimalPlaces": 2 }, diff --git a/src/FirmwarePlugin/APM/MavCmdInfoFixedWing.json b/src/FirmwarePlugin/APM/MavCmdInfoFixedWing.json index 0494750b1faabf10d554ac8a734374987fa7d570..e6bc1eade40f3e0fcf40de5c1e9b2146b9e9cd45 100644 --- a/src/FirmwarePlugin/APM/MavCmdInfoFixedWing.json +++ b/src/FirmwarePlugin/APM/MavCmdInfoFixedWing.json @@ -147,7 +147,7 @@ "category": "Basic", "param1": { "label": "Pitch:", - "units": "degrees", + "units": "deg", "default": 10, "decimalPlaces": 0 }, diff --git a/src/FirmwarePlugin/PX4/MavCmdInfoFixedWing.json b/src/FirmwarePlugin/PX4/MavCmdInfoFixedWing.json index acaa58088ec938aa62495c48f7c897bb9ecc2529..97ed87a8f6e92946edbc350403c4a01428a561f5 100644 --- a/src/FirmwarePlugin/PX4/MavCmdInfoFixedWing.json +++ b/src/FirmwarePlugin/PX4/MavCmdInfoFixedWing.json @@ -135,7 +135,7 @@ "category": "Basic", "param1": { "label": "Pitch:", - "units": "degrees", + "units": "deg", "default": 10, "decimalPlaces": 0 }, diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml index cfe307c538b559ff8e55dce7efe8dc7f8dfa6571..dd054d326038bad8457cf08c85cc85601fcba3f8 100644 --- a/src/FlightDisplay/FlightDisplayViewWidgets.qml +++ b/src/FlightDisplay/FlightDisplayViewWidgets.qml @@ -30,13 +30,13 @@ Item { property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property bool _isSatellite: _mainIsMap ? (_flightMap ? _flightMap.isSatelliteMap : true) : true - property bool _lightWidgetBorders: _mainIsMap ? (_flightMap ? _flightMap.isSatelliteMap : true) : true + property bool _lightWidgetBorders: _isSatellite property bool _useAlternateInstruments: QGroundControl.virtualTabletJoystick || ScreenTools.isTinyScreen + readonly property real _margins: ScreenTools.defaultFontPixelHeight / 2 + readonly property real _toolButtonTopMargin: parent.height - ScreenTools.availableHeight + (ScreenTools.defaultFontPixelHeight / 2) - readonly property real _margins: ScreenTools.defaultFontPixelHeight / 2 - - QGCMapPalette { id: mapPal; lightColors: !isBackgroundDark } + QGCMapPalette { id: mapPal; lightColors: isBackgroundDark } QGCPalette { id: qgcPal } function getGadgetWidth() { @@ -139,14 +139,25 @@ Item { maxHeight: virtualJoystickMultiTouch.visible ? virtualJoystickMultiTouch.y - y : parent.height - anchors.margins - y } + QGCLabel { + id: flyLabel + text: qsTr("Fly") + color: mapPal.text + visible: !ScreenTools.isShortScreen + anchors.topMargin: _toolButtonTopMargin + anchors.horizontalCenter: toolColumn.horizontalCenter + anchors.top: parent.top + } + //-- Vertical Tool Buttons Column { - id: toolColumn - visible: _mainIsMap - anchors.margins: ScreenTools.defaultFontPixelHeight - anchors.left: parent.left - anchors.top: parent.top - spacing: ScreenTools.defaultFontPixelHeight + id: toolColumn + anchors.topMargin: ScreenTools.isShortScreen ? _toolButtonTopMargin : ScreenTools.defaultFontPixelHeight / 2 + anchors.leftMargin: ScreenTools.defaultFontPixelHeight + anchors.left: parent.left + anchors.top: ScreenTools.isShortScreen ? parent.top : flyLabel.bottom + spacing: ScreenTools.defaultFontPixelHeight + visible: _mainIsMap //-- Map Center Control DropButton { diff --git a/src/MissionEditor/MissionEditor.qml b/src/MissionEditor/MissionEditor.qml index 1ba80e1579197a9223f1b5f464b4ecd7cb13d4d3..4716a9b71996220cb4c3f352f947413726fee8fb 100644 --- a/src/MissionEditor/MissionEditor.qml +++ b/src/MissionEditor/MissionEditor.qml @@ -33,17 +33,19 @@ QGCView { // zOrder comes from the Loader in MainWindow.qml z: QGroundControl.zOrderTopMost - readonly property int _decimalPlaces: 8 - readonly property real _horizontalMargin: ScreenTools.defaultFontPixelWidth / 2 - readonly property real _margin: ScreenTools.defaultFontPixelHeight * 0.5 - readonly property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle - readonly property real _rightPanelWidth: Math.min(parent.width / 3, ScreenTools.defaultFontPixelWidth * 30) - readonly property real _rightPanelOpacity: 0.8 - readonly property int _toolButtonCount: 6 - readonly property string _autoSyncKey: "AutoSync" + readonly property int _decimalPlaces: 8 + readonly property real _horizontalMargin: ScreenTools.defaultFontPixelWidth / 2 + readonly property real _margin: ScreenTools.defaultFontPixelHeight * 0.5 + readonly property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + readonly property real _rightPanelWidth: Math.min(parent.width / 3, ScreenTools.defaultFontPixelWidth * 30) + readonly property real _rightPanelOpacity: 0.8 + readonly property int _toolButtonCount: 6 + readonly property string _autoSyncKey: "AutoSync" + readonly property real _toolButtonTopMargin: parent.height - ScreenTools.availableHeight + (ScreenTools.defaultFontPixelHeight / 2) readonly property int _addMissionItemsButtonAutoOffTimeout: 10000 readonly property var _defaultVehicleCoordinate: QtPositioning.coordinate(37.803784, -122.462276) + property bool _syncNeeded: controller.visualItems.dirty // Unsaved changes, visible to parent container property var _visualItems: controller.visualItems property var _currentMissionItem @@ -272,6 +274,8 @@ QGCView { } } + QGCMapPalette { id: mapPal; lightColors: editorMap.isSatelliteMap } + MouseArea { //-- It's a whole lot faster to just fill parent and deal with top offset below // than computing the coordinate offset. @@ -524,13 +528,23 @@ QGCView { } } + QGCLabel { + id: planLabel + text: qsTr("Plan") + color: mapPal.text + visible: !ScreenTools.isShortScreen + anchors.topMargin: _toolButtonTopMargin + anchors.horizontalCenter: toolColumn.horizontalCenter + anchors.top: parent.top + } + //-- Vertical Tool Buttons Column { id: toolColumn - anchors.topMargin: parent.height - ScreenTools.availableHeight + ScreenTools.defaultFontPixelHeight - anchors.margins: ScreenTools.defaultFontPixelHeight + anchors.topMargin: ScreenTools.isShortScreen ? _toolButtonTopMargin : ScreenTools.defaultFontPixelHeight / 2 + anchors.leftMargin: ScreenTools.defaultFontPixelHeight anchors.left: parent.left - anchors.top: parent.top + anchors.top: ScreenTools.isShortScreen ? parent.top : planLabel.bottom spacing: ScreenTools.defaultFontPixelHeight z: QGroundControl.zOrderWidgets @@ -749,7 +763,7 @@ QGCView { width: sendSaveGrid.width wrapMode: Text.WordWrap text: _syncNeeded && !controller.autoSync ? - qsTr("You have unsaved changed to you mission. You should send to your vehicle, or save to a file:") : + qsTr("You have unsaved changes to your mission. You should send to your vehicle, or save to a file:") : qsTr("Sync:") } GridLayout { diff --git a/src/MissionManager/MavCmdInfoCommon.json b/src/MissionManager/MavCmdInfoCommon.json index 9f2651367d983c44b475e79edf876d3f1ba9f3ed..e4180eb0f52bae0af02539c6271b4df4c8f9793a 100644 --- a/src/MissionManager/MavCmdInfoCommon.json +++ b/src/MissionManager/MavCmdInfoCommon.json @@ -138,7 +138,7 @@ "category": "Basic", "param1": { "label": "Pitch:", - "units": "degrees", + "units": "deg", "default": 15, "decimalPlaces": 2 }, @@ -250,7 +250,7 @@ "param4": { "label": "Heading goal:", "default": 0, - "units": "degrees", + "units": "deg", "decimalPlaces": 2 } }, @@ -280,7 +280,7 @@ "category": "VTOL", "param4": { "label": "Heading:", - "units": "degrees", + "units": "deg", "default": 0.0, "decimalPlaces": 2 } @@ -295,7 +295,7 @@ "category": "VTOL", "param4": { "label": "Heading:", - "units": "degrees", + "units": "deg", "default": 0.0, "decimalPlaces": 2 }, @@ -371,7 +371,7 @@ "category": "Conditionals", "param1": { "label": "Heading:", - "units": "degrees", + "units": "deg", "default": 0, "decimalPlaces": 1 }, diff --git a/src/QGCMapPalette.h b/src/QGCMapPalette.h index 6e0e88f1f3cb31abb157c3e0c3f17c8e7093faac..4c19361ea88f9875929f410d3aa0ae09c4c5bcc3 100644 --- a/src/QGCMapPalette.h +++ b/src/QGCMapPalette.h @@ -28,7 +28,7 @@ class QGCMapPalette : public QObject // text - Text color // thumbJoystick - Thumb joystick indicator - Q_PROPERTY(QColor text READ text NOTIFY paletteChanged) + Q_PROPERTY(QColor text READ text NOTIFY paletteChanged) Q_PROPERTY(QColor thumbJoystick READ thumbJoystick NOTIFY paletteChanged) public: @@ -37,11 +37,12 @@ public: bool lightColors(void) const { return _lightColors; } void setLightColors(bool lightColors); - QColor text(void) const { return _text[_lightColors]; } - QColor thumbJoystick(void) const { return _thumbJoystick[_lightColors]; } + QColor text(void) const { return _text[_lightColors ? 0 : 1]; } + QColor thumbJoystick(void) const { return _thumbJoystick[_lightColors ? 0 : 1]; } signals: void paletteChanged(void); + void lightColorsChanged(bool lightColors); private: bool _lightColors; diff --git a/src/Vehicle/GPSFact.json b/src/Vehicle/GPSFact.json index 826ae1d6d6a60a7af7eec194006a58e1691918f7..a8b2cb5bf8ab245bd09caed794fcf79a064a60c1 100644 --- a/src/Vehicle/GPSFact.json +++ b/src/Vehicle/GPSFact.json @@ -19,7 +19,7 @@ "shortDescription": "Course Over Ground", "type": "double", "decimalPlaces": 1, - "units": "degrees" + "units": "deg" }, { "name": "lock", diff --git a/src/Vehicle/VehicleFact.json b/src/Vehicle/VehicleFact.json index ffa3ff1c007fe7260a2af1c572e1cf202ff8f640..d9053665ddd6c9a8166ad997499fde9ae0de9b44 100644 --- a/src/Vehicle/VehicleFact.json +++ b/src/Vehicle/VehicleFact.json @@ -7,21 +7,21 @@ "shortDescription": "Roll", "type": "double", "decimalPlaces": 1, - "units": "degrees" + "units": "deg" }, { "name": "pitch", "shortDescription": "Pitch", "type": "double", "decimalPlaces": 1, - "units": "degrees" + "units": "deg" }, { "name": "heading", "shortDescription": "Heading", "type": "double", "decimalPlaces": 0, - "units": "degrees" + "units": "deg" }, { "name": "groundSpeed", diff --git a/src/Vehicle/WindFact.json b/src/Vehicle/WindFact.json index 881c5ee986fa94072537c26567c30d8e501ef840..d9cec3de73b91c0e8c9bd947ab5c956cf7f336d1 100644 --- a/src/Vehicle/WindFact.json +++ b/src/Vehicle/WindFact.json @@ -7,7 +7,7 @@ "shortDescription": "Wind Direction", "type": "double", "decimalPlaces": 1, - "units": "degrees" + "units": "deg" }, { "name": "speed", diff --git a/src/VehicleSetup/SetupView.qml b/src/VehicleSetup/SetupView.qml index 4901597da6b66bb51ee9d6d0736cb576ee610db1..b4dbce505935c475d5351a8b5d4f799529da23b8 100644 --- a/src/VehicleSetup/SetupView.qml +++ b/src/VehicleSetup/SetupView.qml @@ -23,7 +23,7 @@ import QGroundControl.ScreenTools 1.0 import QGroundControl.MultiVehicleManager 1.0 Rectangle { - id: setupView + id: setupView color: qgcPal.window z: QGroundControl.zOrderTopMost @@ -33,8 +33,9 @@ Rectangle { readonly property real _defaultTextHeight: ScreenTools.defaultFontPixelHeight readonly property real _defaultTextWidth: ScreenTools.defaultFontPixelWidth - readonly property real _margin: Math.round(_defaultTextHeight / 2) - readonly property real _buttonWidth: Math.round(_defaultTextWidth * 18) + readonly property real _horizontalMargin: _defaultTextWidth / 2 + readonly property real _verticalMargin: _defaultTextHeight / 2 + readonly property real _buttonWidth: _defaultTextWidth * 18 readonly property string _armedVehicleText: qsTr("This operation cannot be performed while vehicle is armed.") property string _messagePanelText: "missing message panel text" @@ -211,6 +212,8 @@ Rectangle { anchors.topMargin: _defaultTextHeight / 2 anchors.top: parent.top anchors.bottom: parent.bottom + anchors.leftMargin: _horizontalMargin + anchors.left: parent.left contentHeight: buttonColumn.height flickableDirection: Flickable.VerticalFlick clip: true @@ -245,6 +248,15 @@ Rectangle { } } + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + text: qsTr("Vehicle Setup") + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + visible: !ScreenTools.isShortScreen + } + SubMenuButton { id: summaryButton imageResource: "/qmlimages/VehicleSummaryIcon.png" @@ -315,13 +327,25 @@ Rectangle { } } + Rectangle { + id: divider + anchors.topMargin: _verticalMargin + anchors.bottomMargin: _verticalMargin + anchors.leftMargin: _horizontalMargin + anchors.left: buttonScroll.right + anchors.top: parent.top + anchors.bottom: parent.bottom + width: 1 + color: qgcPal.windowShade + } + Loader { id: panelLoader - anchors.topMargin: _margin - anchors.bottomMargin: _margin - anchors.leftMargin: _defaultTextWidth - anchors.rightMargin: _defaultTextWidth - anchors.left: buttonScroll.right + anchors.topMargin: _verticalMargin + anchors.bottomMargin: _verticalMargin + anchors.leftMargin: _horizontalMargin + anchors.rightMargin: _horizontalMargin + anchors.left: divider.right anchors.right: parent.right anchors.top: parent.top anchors.bottom: parent.bottom diff --git a/src/ui/AppSettings.qml b/src/ui/AppSettings.qml new file mode 100644 index 0000000000000000000000000000000000000000..f6ce5a4505b8e35043d283c567acccf06f92e456 --- /dev/null +++ b/src/ui/AppSettings.qml @@ -0,0 +1,198 @@ +/**************************************************************************** + * + * (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 QtPositioning 5.2 + +import QGroundControl 1.0 +import QGroundControl.Palette 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.FlightDisplay 1.0 +import QGroundControl.ScreenTools 1.0 + +Rectangle { + id: settingsView + color: qgcPal.window + z: QGroundControl.zOrderTopMost + + readonly property real _defaultTextHeight: ScreenTools.defaultFontPixelHeight + readonly property real _defaultTextWidth: ScreenTools.defaultFontPixelWidth + readonly property real _horizontalMargin: _defaultTextWidth / 2 + readonly property real _verticalMargin: _defaultTextHeight / 2 + readonly property real _buttonHeight: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 3 : ScreenTools.defaultFontPixelHeight * 2 + readonly property real _buttonWidth: ScreenTools.defaultFontPixelWidth * 10 + + QGCPalette { id: qgcPal } + + Component.onCompleted: { + //-- Default to General Settings + __rightPanel.source = "GeneralSettings.qml" + _generalButton.checked = true + panelActionGroup.current = _generalButton + } + + QGCFlickable { + id: buttonList + width: buttonColumn.width + anchors.topMargin: _verticalMargin + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.leftMargin: _horizontalMargin + anchors.left: parent.left + contentHeight: buttonColumn.height + _verticalMargin + flickableDirection: Flickable.VerticalFlick + clip: true + + ExclusiveGroup { id: panelActionGroup } + + Column { + id: buttonColumn + width: _maxButtonWidth + spacing: _verticalMargin + + property real _maxButtonWidth: 0 + + Component.onCompleted: reflowWidths() + + function reflowWidths() { + buttonColumn._maxButtonWidth = 0 + for (var i = 0; i < children.length; i++) { + buttonColumn._maxButtonWidth = Math.max(buttonColumn._maxButtonWidth, children[i].width) + } + for (var j = 0; j < children.length; j++) { + children[j].width = buttonColumn._maxButtonWidth + } + } + + QGCLabel { + anchors.left: parent.left + anchors.right: parent.right + text: qsTr("Application Settings") + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + visible: !ScreenTools.isShortScreen + } + + QGCButton { + id: _generalButton + height: _buttonHeight + text: qsTr("General") + exclusiveGroup: panelActionGroup + onClicked: { + if(__rightPanel.source != "GeneralSettings.qml") { + __rightPanel.source = "GeneralSettings.qml" + } + checked = true + } + } + + QGCButton { + height: _buttonHeight + text: qsTr("Comm Links") + exclusiveGroup: panelActionGroup + onClicked: { + if(__rightPanel.source != "LinkSettings.qml") { + __rightPanel.source = "LinkSettings.qml" + } + checked = true + } + } + + QGCButton { + height: _buttonHeight + text: qsTr("Offline Maps") + exclusiveGroup: panelActionGroup + onClicked: { + if(__rightPanel.source != "OfflineMap.qml") { + __rightPanel.source = "OfflineMap.qml" + } + checked = true + } + } + + QGCButton { + height: _buttonHeight + text: qsTr("MavLink") + exclusiveGroup: panelActionGroup + onClicked: { + if(__rightPanel.source != "MavlinkSettings.qml") { + __rightPanel.source = "MavlinkSettings.qml" + } + checked = true + } + } + + QGCButton { + height: _buttonHeight + text: qsTr("Console") + exclusiveGroup: panelActionGroup + onClicked: { + if(__rightPanel.source != "QGroundControl/Controls/AppMessages.qml") { + __rightPanel.source = "QGroundControl/Controls/AppMessages.qml" + } + checked = true + } + } + + QGCButton { + height: _buttonHeight + text: qsTr("Mock Link") + visible: ScreenTools.isDebug + exclusiveGroup: panelActionGroup + onClicked: { + if(__rightPanel.source != "MockLink.qml") { + __rightPanel.source = "MockLink.qml" + } + checked = true + } + } + + QGCButton { + height: _buttonHeight + text: qsTr("Debug") + visible: ScreenTools.isDebug + exclusiveGroup: panelActionGroup + onClicked: { + if(__rightPanel.source != "DebugWindow.qml") { + __rightPanel.source = "DebugWindow.qml" + } + checked = true + } + } + } + } + + Rectangle { + id: divider + anchors.topMargin: _verticalMargin + anchors.bottomMargin: _verticalMargin + anchors.leftMargin: _horizontalMargin + anchors.left: buttonList.right + anchors.top: parent.top + anchors.bottom: parent.bottom + width: 1 + color: qgcPal.windowShade + } + + //-- Panel Contents + Loader { + id: __rightPanel + anchors.leftMargin: _horizontalMargin + anchors.rightMargin: _horizontalMargin + anchors.topMargin: _verticalMargin + anchors.bottomMargin: _verticalMargin + anchors.left: divider.right + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom + } +} + diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index 596142a32a566fb003c443c0459892d81621881e..c2c9f015520fdc84e5094e4a27961f696fc23bb2 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -25,6 +25,7 @@ #include #include #include +#include #include "QGC.h" #include "MAVLinkProtocol.h" @@ -42,7 +43,6 @@ #include "QGCImageProvider.h" #ifndef __mobile__ -#include "SettingsDialog.h" #include "QGCDataPlot2D.h" #include "Linecharts.h" #include "QGCUASFileViewMulti.h" @@ -489,9 +489,6 @@ void MainWindow::connectCommonActions() connect(qgcApp()->toolbox()->audioOutput(), &GAudioOutput::mutedChanged, _ui.actionMuteAudioOutput, &QAction::setChecked); connect(_ui.actionMuteAudioOutput, &QAction::triggered, qgcApp()->toolbox()->audioOutput(), &GAudioOutput::mute); - // Application Settings - connect(_ui.actionSettings, &QAction::triggered, this, &MainWindow::showSettings); - // Connect internal actions connect(qgcApp()->toolbox()->multiVehicleManager(), &MultiVehicleManager::vehicleAdded, this, &MainWindow::_vehicleAdded); } @@ -503,14 +500,6 @@ void MainWindow::_openUrl(const QString& url, const QString& errorMessage) } } -#ifndef __mobile__ -void MainWindow::showSettings() -{ - SettingsDialog settings(this); - settings.exec(); -} -#endif - void MainWindow::_vehicleAdded(Vehicle* vehicle) { connect(vehicle->uas(), &UAS::valueChanged, this, &MainWindow::valueChanged); diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h index 9d2dd07384fddfab983d7a964f1b4a4241fc8a69..3f7c31d381b0d9c1b7335b7973a74977d794811f 100644 --- a/src/ui/MainWindow.h +++ b/src/ui/MainWindow.h @@ -89,10 +89,6 @@ public: QObject* rootQmlObject(void); public slots: -#ifndef __mobile__ - void showSettings(); -#endif - /** @brief Save power by reducing update rates */ void enableLowPowerMode(bool enabled) { _lowPowerMode = enabled; } diff --git a/src/ui/MainWindow.ui b/src/ui/MainWindow.ui index 4f1730f6a4a32b60334b72f07aacc8d034228075..4d6bb7f5312c5e027194cbe5fa17d7ee54d15101 100644 --- a/src/ui/MainWindow.ui +++ b/src/ui/MainWindow.ui @@ -61,7 +61,6 @@ - @@ -95,17 +94,6 @@ Mute Audio Output - - - Settings - - - Application settings - - - QAction::PreferencesRole - - true diff --git a/src/ui/MainWindowInner.qml b/src/ui/MainWindowInner.qml index 5d3a8f9146b552d574b2f120ae952482241fcdad..cfedeaaabe1fdb0e8b7bd2c58b5ba0b3256b7e65 100644 --- a/src/ui/MainWindowInner.qml +++ b/src/ui/MainWindowInner.qml @@ -29,7 +29,7 @@ Item { readonly property string _planViewSource: "MissionEditor.qml" readonly property string _setupViewSource: "SetupView.qml" - readonly property string _preferencesSource: "MainWindowLeftPanel.qml" + readonly property string _settingsViewSource: "AppSettings.qml" QGCPalette { id: qgcPal; colorGroupEnabled: true } @@ -56,7 +56,7 @@ Item { currentPopUp.close() } ScreenTools.availableHeight = parent.height - toolBar.height - preferencesPanel.visible = false + settingsViewLoader.visible = false flightView.visible = true setupViewLoader.visible = false planViewLoader.visible = false @@ -71,7 +71,7 @@ Item { planViewLoader.source = _planViewSource } ScreenTools.availableHeight = parent.height - toolBar.height - preferencesPanel.visible = false + settingsViewLoader.visible = false flightView.visible = false setupViewLoader.visible = false planViewLoader.visible = true @@ -87,27 +87,27 @@ Item { if (setupViewLoader.source != _setupViewSource) { setupViewLoader.source = _setupViewSource } - preferencesPanel.visible = false + settingsViewLoader.visible = false flightView.visible = false setupViewLoader.visible = true planViewLoader.visible = false toolBar.checkSetupButton() } - function showPreferences() { + function showSettingsView() { if(currentPopUp) { currentPopUp.close() } //-- In preferences view, the full height is available. Set to 0 so it is ignored. ScreenTools.availableHeight = 0 - if (preferencesPanel.source != _preferencesSource) { - preferencesPanel.source = _preferencesSource + if (settingsViewLoader.source != _settingsViewSource) { + settingsViewLoader.source = _settingsViewSource } flightView.visible = false setupViewLoader.visible = false planViewLoader.visible = false - preferencesPanel.visible = true - toolBar.checkPreferencesButton() + settingsViewLoader.visible = true + toolBar.checkSettingsButton() } // The following are use for unit testing only @@ -260,20 +260,6 @@ Item { currentPopUp = indicatorDropdown } - //-- Left Settings Menu - Loader { - id: preferencesPanel - anchors.fill: parent - visible: false - z: QGroundControl.zOrderTopMost + 100 - active: visible - onVisibleChanged: { - if(!visible) { - source = "" - } - } - } - //-- Main UI MainToolBar { @@ -283,13 +269,12 @@ Item { anchors.right: parent.right anchors.top: parent.top mainWindow: mainWindow - opaqueBackground: preferencesPanel.visible isBackgroundDark: flightView.isBackgroundDark z: QGroundControl.zOrderTopMost onShowSetupView: mainWindow.showSetupView() onShowPlanView: mainWindow.showPlanView() onShowFlyView: mainWindow.showFlyView() - onShowPreferences: mainWindow.showPreferences() + onShowSettingsView: mainWindow.showSettingsView() Component.onCompleted: { ScreenTools.availableHeight = parent.height - toolBar.height } @@ -316,6 +301,22 @@ Item { visible: false } + Loader { + id: settingsViewLoader + anchors.left: parent.left + anchors.right: parent.right + anchors.top: toolBar.bottom + anchors.bottom: parent.bottom + visible: false + + onVisibleChanged: { + if (!visible) { + // Free up the memory for this when not shown. No need to persist. + source = "" + } + } + } + //------------------------------------------------------------------------- //-- Dismiss Pop Up Messages MouseArea { diff --git a/src/ui/MainWindowLeftPanel.qml b/src/ui/MainWindowLeftPanel.qml deleted file mode 100644 index 71f330a9834158c05d2dd2b0332dade25dc93240..0000000000000000000000000000000000000000 --- a/src/ui/MainWindowLeftPanel.qml +++ /dev/null @@ -1,222 +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.5 -import QtQuick.Controls 1.2 -import QtPositioning 5.2 - -import QGroundControl 1.0 -import QGroundControl.Palette 1.0 -import QGroundControl.Controls 1.0 -import QGroundControl.FlightDisplay 1.0 -import QGroundControl.ScreenTools 1.0 - - -//-- Left Menu -Item { - id: settingsMenu - anchors.fill: parent - - readonly property real __closeButtonSize: ScreenTools.defaultFontPixelHeight * 1.5 - readonly property real _margins: ScreenTools.defaultFontPixelHeight * 0.5 - readonly property real _buttonHeight: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 3 : ScreenTools.defaultFontPixelHeight * 2 - - QGCPalette { id: qgcPal } - - Component.onCompleted: { - //-- Default to General Settings - __rightPanel.source = "GeneralSettings.qml" - _generalButton.checked = true - panelActionGroup.current = _generalButton - } - - // This covers the screen with a transparent section - Rectangle { - id: __transparentSection - height: parent.height - toolBar.height - anchors.bottom: parent.bottom - anchors.left: parent.left - opacity: 0.0 - color: qgcPal.window - visible: __rightPanel.source == "" - } - - //-- Top Separator - Rectangle { - id: __topSeparator - width: parent.width - height: 1 - y: toolBar.height - anchors.left: parent.left - color: QGroundControl.isDarkStyle ? "#909090" : "#7f7f7f" - } - - // This is the menu dialog panel which is anchored to the left edge - Rectangle { - id: __leftMenu - width: ScreenTools.defaultFontPixelWidth * 16 - anchors.left: parent.left - anchors.top: __topSeparator.bottom - anchors.bottom: parent.bottom - color: qgcPal.windowShadeDark - - QGCFlickable { - anchors.fill: parent - contentHeight: buttonColumn.height + _margins - flickableDirection: Flickable.VerticalFlick - clip: true - - ExclusiveGroup { id: panelActionGroup } - - Column { - id: buttonColumn - anchors.leftMargin: _margins - anchors.rightMargin: _margins - anchors.left: parent.left - anchors.right: parent.right - anchors.topMargin: _margins - anchors.top: parent.top - spacing: ScreenTools.defaultFontPixelHeight * 0.5 - - QGCLabel { - text: qsTr("Preferences") - anchors.horizontalCenter: parent.horizontalCenter - } - - QGCButton { - id: _generalButton - height: _buttonHeight - anchors.left: parent.left - anchors.right: parent.right - text: qsTr("General") - exclusiveGroup: panelActionGroup - onClicked: { - if(__rightPanel.source != "GeneralSettings.qml") { - __rightPanel.source = "GeneralSettings.qml" - } - checked = true - } - } - - QGCButton { - height: _buttonHeight - anchors.left: parent.left - anchors.right: parent.right - text: qsTr("Comm Links") - exclusiveGroup: panelActionGroup - onClicked: { - if(__rightPanel.source != "LinkSettings.qml") { - __rightPanel.source = "LinkSettings.qml" - } - checked = true - } - } - - QGCButton { - height: _buttonHeight - anchors.left: parent.left - anchors.right: parent.right - text: qsTr("Offline Maps") - exclusiveGroup: panelActionGroup - onClicked: { - if(__rightPanel.source != "OfflineMap.qml") { - __rightPanel.source = "OfflineMap.qml" - } - checked = true - } - } - - QGCButton { - height: _buttonHeight - anchors.left: parent.left - anchors.right: parent.right - text: qsTr("MavLink") - exclusiveGroup: panelActionGroup - onClicked: { - if(__rightPanel.source != "MavlinkSettings.qml") { - __rightPanel.source = "MavlinkSettings.qml" - } - checked = true - } - } - - QGCButton { - height: _buttonHeight - anchors.left: parent.left - anchors.right: parent.right - text: qsTr("Console") - exclusiveGroup: panelActionGroup - onClicked: { - if(__rightPanel.source != "QGroundControl/Controls/AppMessages.qml") { - __rightPanel.source = "QGroundControl/Controls/AppMessages.qml" - } - checked = true - } - } - - QGCButton { - height: _buttonHeight - anchors.left: parent.left - anchors.right: parent.right - text: qsTr("Mock Link") - visible: ScreenTools.isDebug - exclusiveGroup: panelActionGroup - onClicked: { - if(__rightPanel.source != "MockLink.qml") { - __rightPanel.source = "MockLink.qml" - } - checked = true - } - } - - QGCButton { - height: _buttonHeight - anchors.left: parent.left - anchors.right: parent.right - text: qsTr("Debug") - visible: ScreenTools.isDebug - exclusiveGroup: panelActionGroup - onClicked: { - if(__rightPanel.source != "DebugWindow.qml") { - __rightPanel.source = "DebugWindow.qml" - } - checked = true - } - } - } - } - } - - //-- Vertical Separator - Rectangle { - id: __verticalSeparator - width: 1 - height: parent.height - toolBar.height - anchors.left: __leftMenu.right - anchors.bottom: parent.bottom - color: QGroundControl.isDarkStyle ? "#909090" : "#7f7f7f" - } - - //-- Main Setting Display Area - Rectangle { - id: settingDisplayArea - anchors.left: __verticalSeparator.right - width: mainWindow.width - __leftMenu.width - __verticalSeparator.width - height: parent.height - toolBar.height - __topSeparator.height - anchors.bottom: parent.bottom - visible: __rightPanel.source != "" - color: qgcPal.window - //-- Panel Contents - Loader { - id: __rightPanel - anchors.fill: parent - } - } -} diff --git a/src/ui/SettingsDialog.cc b/src/ui/SettingsDialog.cc deleted file mode 100644 index 4ce0df1b2e62730c544d50ea8de8e78ea1c0db66..0000000000000000000000000000000000000000 --- a/src/ui/SettingsDialog.cc +++ /dev/null @@ -1,57 +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. - * - ****************************************************************************/ - - -#include -#include - -#include "SettingsDialog.h" -#include "MainWindow.h" -#include "ui_SettingsDialog.h" - -#include "LinkManager.h" -#include "MAVLinkProtocol.h" -#include "MAVLinkSettingsWidget.h" -#include "GAudioOutput.h" -#include "QGCApplication.h" -#include "QGCFileDialog.h" -#include "QGCMessageBox.h" -#include "MainToolBarController.h" -#include "FlightMapSettings.h" - -SettingsDialog::SettingsDialog(QWidget *parent, Qt::WindowFlags flags) - : QDialog(parent, flags) - , _ui(new Ui::SettingsDialog) -{ - _ui->setupUi(this); - - // Center the window on the screen. - QDesktopWidget *desktop = QApplication::desktop(); - int screen = desktop->screenNumber(parent); - - QRect position = frameGeometry(); - position.moveCenter(QApplication::desktop()->availableGeometry(screen).center()); - move(position.topLeft()); - - MAVLinkSettingsWidget* pMavsettings = new MAVLinkSettingsWidget(qgcApp()->toolbox()->mavlinkProtocol(), this); - - // Add the MAVLink settings pane - _ui->tabWidget->addTab(pMavsettings, "MAVLink"); - - this->window()->setWindowTitle(tr("QGroundControl Settings")); - - _ui->tabWidget->setCurrentWidget(pMavsettings); - - connect(_ui->buttonBox, &QDialogButtonBox::accepted, this, &SettingsDialog::accept); -} - -SettingsDialog::~SettingsDialog() -{ - delete _ui; -} diff --git a/src/ui/SettingsDialog.h b/src/ui/SettingsDialog.h deleted file mode 100644 index 3c12cc14180042f7e5f2e3a127e106d4ed480cac..0000000000000000000000000000000000000000 --- a/src/ui/SettingsDialog.h +++ /dev/null @@ -1,37 +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. - * - ****************************************************************************/ - - -#ifndef SETTINGSDIALOG_H -#define SETTINGSDIALOG_H - -#include - -#include "MainWindow.h" -#include "GAudioOutput.h" -#include "FlightMapSettings.h" - -namespace Ui -{ - class SettingsDialog; -} - -class SettingsDialog : public QDialog -{ - Q_OBJECT - -public: - SettingsDialog(QWidget *parent = 0, Qt::WindowFlags flags = Qt::Sheet); - ~SettingsDialog(); - -private: - Ui::SettingsDialog* _ui; -}; - -#endif diff --git a/src/ui/SettingsDialog.ui b/src/ui/SettingsDialog.ui deleted file mode 100644 index a2169229b031208d499c506a0ebc8b272963d04b..0000000000000000000000000000000000000000 --- a/src/ui/SettingsDialog.ui +++ /dev/null @@ -1,43 +0,0 @@ - - - SettingsDialog - - - - 0 - 0 - 500 - 689 - - - - - 0 - 0 - - - - Dialog - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - false - - - - - - - - diff --git a/src/ui/toolbar/MainToolBar.qml b/src/ui/toolbar/MainToolBar.qml index af7e642e70d463803d4db1e222d92e14b315ab34..1b38d7361bb828fb7058ef929368c8d33e74bfa6 100644 --- a/src/ui/toolbar/MainToolBar.qml +++ b/src/ui/toolbar/MainToolBar.qml @@ -45,14 +45,14 @@ Rectangle { readonly property var colorBlue: "#636efe" readonly property var colorWhite: "#ffffff" - signal showPreferences() + signal showSettingsView() signal showSetupView() signal showPlanView() signal showFlyView() MainToolBarController { id: _controller } - function checkPreferencesButton() { + function checkSettingsButton() { preferencesButton.checked = true } @@ -332,7 +332,7 @@ Rectangle { exclusiveGroup: mainActionGroup source: "/res/QGCLogoWhite" logo: true - onClicked: toolBar.showPreferences() + onClicked: toolBar.showSettingsView() } QGCToolBarButton {