From f68fb4f45e685aa35035a2a86f6cf36c0bf146f1 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Wed, 20 Feb 2019 13:43:40 -0500 Subject: [PATCH 1/9] Make checkbox colors consistent with radio buttons (and other UI elements) --- src/QmlControls/QGCCheckBox.qml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/QmlControls/QGCCheckBox.qml b/src/QmlControls/QGCCheckBox.qml index 20f5efe..5e334c6 100644 --- a/src/QmlControls/QGCCheckBox.qml +++ b/src/QmlControls/QGCCheckBox.qml @@ -36,14 +36,14 @@ CheckBox { implicitHeight: implicitWidth Rectangle { anchors.fill: parent - color: _qgcPal.window - border.color: _qgcPal.text + color: "white" + border.color: qgcPal.text border.width: 1 opacity: control.checkedState === Qt.PartiallyChecked ? 0.5 : 1 QGCColoredImage { source: "/qmlimages/checkbox-check.svg" - color: _qgcPal.text - opacity: control.checkedState === Qt.Checked ? control.enabled ? 1 : 0.5 : 0 + color: "black" + opacity: control.checkedState === Qt.Checked ? (control.enabled ? 1 : 0.5) : 0 mipmap: true fillMode: Image.PreserveAspectFit width: parent.width * 0.75 From 1ef90d0955608fb392f1a1db346561a40178fe2d Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Wed, 20 Feb 2019 13:44:01 -0500 Subject: [PATCH 2/9] Output current system locale for debugging --- src/QGCApplication.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index b5f63f9..109b5ab 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -181,6 +181,7 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) #if defined (__macos__) locale = QLocale(locale.name()); #endif + qDebug() << "System reported locale:" << locale << locale.name(); //-- Our localization if(_QGCTranslator.load(locale, "qgc_", "", ":/localization")) _app->installTranslator(&_QGCTranslator); From bb961d64dd10dcc3abe052f25e0f7a93e92bbed8 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Fri, 22 Feb 2019 13:22:20 -0800 Subject: [PATCH 3/9] Do not clear priority link if it is the last link --- src/Vehicle/Vehicle.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 9f540b7..f5cba24 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -1899,10 +1899,6 @@ void Vehicle::_linkInactiveOrDeleted(LinkInterface* link) _links.removeOne(link); - if (_priorityLink.data() == link) { - _priorityLink.clear(); - } - _updatePriorityLink(true /* updateActive */, true /* sendCommand */); if (_links.count() == 0 && !_allLinksInactiveSent) { From 918bc9e05772796cc94d4eeac91c1fa24c8f1bfc Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 26 Feb 2019 09:12:28 -0800 Subject: [PATCH 4/9] Structure Scan turns on Survey photo mode --- src/MissionManager/MissionController.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index c1e3fd4..be20eaa 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -451,7 +451,9 @@ int MissionController::insertComplexMissionItemFromKMLOrSHP(QString itemName, QS int MissionController::_insertComplexMissionItemWorker(ComplexMissionItem* complexItem, int i) { int sequenceNumber = _nextSequenceNumber(); - bool surveyStyleItem = qobject_cast(complexItem) || qobject_cast(complexItem); + bool surveyStyleItem = qobject_cast(complexItem) || + qobject_cast(complexItem) || + qobject_cast(complexItem); if (surveyStyleItem) { bool rollSupported = false; From 07d998e54a115412d1b28dd692e8ffb3270e7731 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Fri, 29 Mar 2019 09:51:33 -0700 Subject: [PATCH 5/9] Fix toolbar logo visibility --- ChangeLog.md | 1 + src/ui/toolbar/GPSRTKIndicator.qml | 2 +- src/ui/toolbar/LinkIndicator.qml | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index de9e9c8..156bbfb 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -9,6 +9,7 @@ Note: This file only contains high level features or important fixes. * Major rewrite and bug fix pass through Structure Scan. Previous version had such bad problems that it can no longer be supported. Plans with Structure Scan will need to be recreated. New QGC will not load old Structure Scan plans. ### 3.5.1 - Not yet released +* Fix visibility of PX4/ArduPilot logo in toolbar * Fix tile set count but in OfflineMaps which would cause image and elevation tile set to have incorrect counts and be incorrectly marked as download incomplete. ### 3.5.0 - Stable diff --git a/src/ui/toolbar/GPSRTKIndicator.qml b/src/ui/toolbar/GPSRTKIndicator.qml index 767278b..38461c1 100644 --- a/src/ui/toolbar/GPSRTKIndicator.qml +++ b/src/ui/toolbar/GPSRTKIndicator.qml @@ -21,7 +21,7 @@ import QGroundControl.Palette 1.0 //-- GPS Indicator Item { id: satelitte - width: (gpsValuesColumn.x + gpsValuesColumn.width) * 1.1 + width: visible ? (gpsValuesColumn.x + gpsValuesColumn.width) * 1.1 : 0 anchors.top: parent.top anchors.bottom: parent.bottom visible: QGroundControl.gpsRtk.connected.value diff --git a/src/ui/toolbar/LinkIndicator.qml b/src/ui/toolbar/LinkIndicator.qml index a7238d4..f66fc99 100644 --- a/src/ui/toolbar/LinkIndicator.qml +++ b/src/ui/toolbar/LinkIndicator.qml @@ -23,7 +23,8 @@ import QGroundControl.Vehicle 1.0 Item { anchors.top: parent.top anchors.bottom: parent.bottom - width: priorityLinkSelector.width + width: visible ? priorityLinkSelector.width : 0 + visible: _visible property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property bool _visible: false @@ -34,7 +35,6 @@ Item { font.pointSize: ScreenTools.mediumFontPointSize color: qgcPal.buttonText anchors.verticalCenter: parent.verticalCenter - visible: _visible Menu { id: linkSelectionMenu } From 4703fd12a9eaf06b63d5d9cc6a03902a09eaa180 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Fri, 29 Mar 2019 10:39:00 -0700 Subject: [PATCH 6/9] Fix incorrect text --- src/AutoPilotPlugins/APM/APMAirframeComponent.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/AutoPilotPlugins/APM/APMAirframeComponent.cc b/src/AutoPilotPlugins/APM/APMAirframeComponent.cc index 4d080ce..b2c4785 100644 --- a/src/AutoPilotPlugins/APM/APMAirframeComponent.cc +++ b/src/AutoPilotPlugins/APM/APMAirframeComponent.cc @@ -43,8 +43,7 @@ QString APMAirframeComponent::name(void) const QString APMAirframeComponent::description(void) const { - return tr("Airframe Setup is used to select the airframe which matches your vehicle. " - "You can also the load default parameter values associated with known vehicle types."); + return tr("Airframe Setup is used to select the airframe which matches your vehicle."); } QString APMAirframeComponent::iconResource(void) const From 9895dc7e1fab282f44070a22090de66a4051a071 Mon Sep 17 00:00:00 2001 From: Flavio Tonelli Date: Tue, 16 Apr 2019 20:09:01 +0200 Subject: [PATCH 7/9] BUGFIX: When scanning from the top the starting altitude shall be equal to the structure altitude. --- src/MissionManager/StructureScanComplexItem.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MissionManager/StructureScanComplexItem.cc b/src/MissionManager/StructureScanComplexItem.cc index 4544f2b..8eae2d8 100644 --- a/src/MissionManager/StructureScanComplexItem.cc +++ b/src/MissionManager/StructureScanComplexItem.cc @@ -293,7 +293,7 @@ void StructureScanComplexItem::appendMissionItems(QList& items, QO { int seqNum = _sequenceNumber; bool startFromTop = _startFromTopFact.rawValue().toBool(); - double startAltitude = _scanBottomAltFact.rawValue().toDouble() + (startFromTop ? _structureHeightFact.rawValue().toDouble() : 0); + double startAltitude = (startFromTop ? _structureHeightFact.rawValue().toDouble() : _scanBottomAltFact.rawValue().toDouble()); MissionItem* item = nullptr; From 6aa20324d359b7f078bb7fbefd0118f843fcce33 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 17 Apr 2019 10:36:48 -0700 Subject: [PATCH 8/9] Heading: Switch from Radians to Degrees --- src/MissionManager/MavCmdInfoCommon.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/MissionManager/MavCmdInfoCommon.json b/src/MissionManager/MavCmdInfoCommon.json index a6ce14e..f2d7065 100644 --- a/src/MissionManager/MavCmdInfoCommon.json +++ b/src/MissionManager/MavCmdInfoCommon.json @@ -52,7 +52,7 @@ }, "param4": { "label": "Heading", - "units": "radians", + "units": "deg", "nanUnchanged": true, "default": null, "decimalPlaces": 2 @@ -74,7 +74,7 @@ }, "param4": { "label": "Heading", - "units": "radians", + "units": "deg", "nanUnchanged": true, "default": null, "decimalPlaces": 2 @@ -101,7 +101,7 @@ }, "param4": { "label": "Heading", - "units": "radians", + "units": "deg", "nanUnchanged": true, "default": null, "decimalPlaces": 2 @@ -129,7 +129,7 @@ }, "param4": { "label": "Heading", - "units": "radians", + "units": "deg", "nanUnchanged": true, "decimalPlaces": 2 } @@ -158,7 +158,7 @@ }, "param4": { "label": "Heading", - "units": "radians", + "units": "deg", "nanUnchanged": true, "default": null, "decimalPlaces": 2 @@ -180,7 +180,7 @@ }, "param4": { "label": "Heading", - "units": "radians", + "units": "deg", "nanUnchanged": true, "default": null, "decimalPlaces": 2 From f5c2c4aba5b3cbd6690cb58dec496992483b9f0b Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Thu, 18 Apr 2019 10:38:34 -0700 Subject: [PATCH 9/9] Add support for ArduRover MockLink --- src/QmlControls/QGroundControlQmlGlobal.cc | 9 ++++++ src/QmlControls/QGroundControlQmlGlobal.h | 1 + src/comm/MockLink.cc | 52 ++++++++++-------------------- src/comm/MockLink.h | 2 ++ src/ui/preferences/MockLink.qml | 4 +++ 5 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc index 2f892c1..6aa715e 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.cc +++ b/src/QmlControls/QGroundControlQmlGlobal.cc @@ -144,6 +144,15 @@ void QGroundControlQmlGlobal::startAPMArduSubMockLink(bool sendStatusText) #endif } +void QGroundControlQmlGlobal::startAPMArduRoverMockLink(bool sendStatusText) +{ +#ifdef QT_DEBUG + MockLink::startAPMArduRoverMockLink(sendStatusText); +#else + Q_UNUSED(sendStatusText); +#endif +} + void QGroundControlQmlGlobal::stopOneMockLink(void) { #ifdef QT_DEBUG diff --git a/src/QmlControls/QGroundControlQmlGlobal.h b/src/QmlControls/QGroundControlQmlGlobal.h index e49ace2..366128d 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.h +++ b/src/QmlControls/QGroundControlQmlGlobal.h @@ -112,6 +112,7 @@ public: Q_INVOKABLE void startAPMArduCopterMockLink (bool sendStatusText); Q_INVOKABLE void startAPMArduPlaneMockLink (bool sendStatusText); Q_INVOKABLE void startAPMArduSubMockLink (bool sendStatusText); + Q_INVOKABLE void startAPMArduRoverMockLink (bool sendStatusText); Q_INVOKABLE void stopOneMockLink (void); /// Converts from meters to the user specified distance unit diff --git a/src/comm/MockLink.cc b/src/comm/MockLink.cc index 9edc2f3..d24da50 100644 --- a/src/comm/MockLink.cc +++ b/src/comm/MockLink.cc @@ -1159,64 +1159,46 @@ MockLink* MockLink::_startMockLink(MockConfiguration* mockConfig) return qobject_cast(linkMgr->createConnectedLink(config)); } -MockLink* MockLink::startPX4MockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) +MockLink* MockLink::_startMockLinkWorker(QString configName, MAV_AUTOPILOT firmwareType, MAV_TYPE vehicleType, bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("PX4 MockLink"); + MockConfiguration* mockConfig = new MockConfiguration(configName); - mockConfig->setFirmwareType(MAV_AUTOPILOT_PX4); - mockConfig->setVehicleType(MAV_TYPE_QUADROTOR); + mockConfig->setFirmwareType(firmwareType); + mockConfig->setVehicleType(vehicleType); mockConfig->setSendStatusText(sendStatusText); mockConfig->setFailureMode(failureMode); return _startMockLink(mockConfig); } -MockLink* MockLink::startGenericMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) +MockLink* MockLink::startPX4MockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("Generic MockLink"); - - mockConfig->setFirmwareType(MAV_AUTOPILOT_GENERIC); - mockConfig->setVehicleType(MAV_TYPE_QUADROTOR); - mockConfig->setSendStatusText(sendStatusText); - mockConfig->setFailureMode(failureMode); + return _startMockLinkWorker("PX4 MultiRotor MockLink", MAV_AUTOPILOT_PX4, MAV_TYPE_QUADROTOR, sendStatusText, failureMode); +} - return _startMockLink(mockConfig); +MockLink* MockLink::startGenericMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) +{ + return _startMockLinkWorker("Generic MockLink", MAV_AUTOPILOT_GENERIC, MAV_TYPE_QUADROTOR, sendStatusText, failureMode); } MockLink* MockLink::startAPMArduCopterMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("APM ArduCopter MockLink"); - - mockConfig->setFirmwareType(MAV_AUTOPILOT_ARDUPILOTMEGA); - mockConfig->setVehicleType(MAV_TYPE_QUADROTOR); - mockConfig->setSendStatusText(sendStatusText); - mockConfig->setFailureMode(failureMode); - - return _startMockLink(mockConfig); + return _startMockLinkWorker("ArduCopter MockLink",MAV_AUTOPILOT_ARDUPILOTMEGA, MAV_TYPE_QUADROTOR, sendStatusText, failureMode); } MockLink* MockLink::startAPMArduPlaneMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("APM ArduPlane MockLink"); - - mockConfig->setFirmwareType(MAV_AUTOPILOT_ARDUPILOTMEGA); - mockConfig->setVehicleType(MAV_TYPE_FIXED_WING); - mockConfig->setSendStatusText(sendStatusText); - mockConfig->setFailureMode(failureMode); - - return _startMockLink(mockConfig); + return _startMockLinkWorker("ArduPlane MockLink", MAV_AUTOPILOT_ARDUPILOTMEGA, MAV_TYPE_FIXED_WING, sendStatusText, failureMode); } MockLink* MockLink::startAPMArduSubMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("APM ArduSub MockLink"); - - mockConfig->setFirmwareType(MAV_AUTOPILOT_ARDUPILOTMEGA); - mockConfig->setVehicleType(MAV_TYPE_SUBMARINE); - mockConfig->setSendStatusText(sendStatusText); - mockConfig->setFailureMode(failureMode); + return _startMockLinkWorker("ArduSub MockLink", MAV_AUTOPILOT_ARDUPILOTMEGA, MAV_TYPE_SUBMARINE, sendStatusText, failureMode); +} - return _startMockLink(mockConfig); +MockLink* MockLink::startAPMArduRoverMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) +{ + return _startMockLinkWorker("ArduRover MockLink", MAV_AUTOPILOT_ARDUPILOTMEGA, MAV_TYPE_GROUND_ROVER, sendStatusText, failureMode); } void MockLink::_sendRCChannels(void) diff --git a/src/comm/MockLink.h b/src/comm/MockLink.h index e771cd6..0d3bee3 100644 --- a/src/comm/MockLink.h +++ b/src/comm/MockLink.h @@ -156,6 +156,7 @@ public: static MockLink* startAPMArduCopterMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); static MockLink* startAPMArduPlaneMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); static MockLink* startAPMArduSubMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); + static MockLink* startAPMArduRoverMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); private slots: virtual void _writeBytes(const QByteArray bytes); @@ -203,6 +204,7 @@ private: void _sendADSBVehicles(void); void _moveADSBVehicle(void); + static MockLink* _startMockLinkWorker(QString configName, MAV_AUTOPILOT firmwareType, MAV_TYPE vehicleType, bool sendStatusText, MockConfiguration::FailureMode_t failureMode); static MockLink* _startMockLink(MockConfiguration* mockConfig); MockLinkMissionItemHandler _missionItemHandler; diff --git a/src/ui/preferences/MockLink.qml b/src/ui/preferences/MockLink.qml index ed1073d..753336e 100644 --- a/src/ui/preferences/MockLink.qml +++ b/src/ui/preferences/MockLink.qml @@ -53,6 +53,10 @@ Rectangle { onClicked: QGroundControl.startAPMArduSubMockLink(sendStatusText.checked) } QGCButton { + text: qsTr("APM ArduRover Vehicle") + onClicked: QGroundControl.startAPMArduRoverMockLink(sendStatusText.checked) + } + QGCButton { text: qsTr("Generic Vehicle") onClicked: QGroundControl.startGenericMockLink(sendStatusText.checked) }