From c2ccfda072c0d760c9480a95ee5447ed09be2f45 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Sun, 28 Apr 2019 12:22:11 -0400 Subject: [PATCH] Allow plugin control of map scale visibility --- src/FlightDisplay/FlightDisplayViewMap.qml | 2 +- src/FlightMap/MapScale.qml | 85 +++++++++++----------- src/api/QGCOptions.h | 4 +- src/main.cc | 1 + 4 files changed, 47 insertions(+), 45 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml index 8792d14aa..3ddf355ee 100644 --- a/src/FlightDisplay/FlightDisplayViewMap.qml +++ b/src/FlightDisplay/FlightDisplayViewMap.qml @@ -476,7 +476,7 @@ FlightMap { anchors.topMargin: ScreenTools.defaultFontPixelHeight * (0.33) + state === "bottomMode" ? 0 : ScreenTools.toolbarHeight anchors.bottomMargin: ScreenTools.defaultFontPixelHeight * (0.33) mapControl: flightMap - visible: !ScreenTools.isTinyScreen + visible: !ScreenTools.isTinyScreen && QGroundControl.corePlugin.options.enableMapScale state: "bottomMode" states: [ State { diff --git a/src/FlightMap/MapScale.qml b/src/FlightMap/MapScale.qml index 321afc289..8d8c67dc3 100644 --- a/src/FlightMap/MapScale.qml +++ b/src/FlightMap/MapScale.qml @@ -110,70 +110,69 @@ Item { } function calculateScale() { - var scaleLinePixelLength = 100 - var leftCoord = mapControl.toCoordinate(Qt.point(0, scale.y), false /* clipToViewPort */) - var rightCoord = mapControl.toCoordinate(Qt.point(scaleLinePixelLength, scale.y), false /* clipToViewPort */) - var scaleLineMeters = Math.round(leftCoord.distanceTo(rightCoord)) - - if (QGroundControl.settingsManager.unitsSettings.distanceUnits.value === UnitsSettings.DistanceUnitsFeet) { - calculateFeetRatio(scaleLineMeters, scaleLinePixelLength) - } else { - calculateMetersRatio(scaleLineMeters, scaleLinePixelLength) + if(mapControl) { + var scaleLinePixelLength = 100 + var leftCoord = mapControl.toCoordinate(Qt.point(0, scale.y), false /* clipToViewPort */) + var rightCoord = mapControl.toCoordinate(Qt.point(scaleLinePixelLength, scale.y), false /* clipToViewPort */) + var scaleLineMeters = Math.round(leftCoord.distanceTo(rightCoord)) + if (QGroundControl.settingsManager.unitsSettings.distanceUnits.value === UnitsSettings.DistanceUnitsFeet) { + calculateFeetRatio(scaleLineMeters, scaleLinePixelLength) + } else { + calculateMetersRatio(scaleLineMeters, scaleLinePixelLength) + } } } Connections { - target: mapControl - - onWidthChanged: scaleTimer.restart() - onHeightChanged: scaleTimer.restart() + target: mapControl + onWidthChanged: scaleTimer.restart() + onHeightChanged: scaleTimer.restart() onZoomLevelChanged: scaleTimer.restart() } Timer { - id: scaleTimer - interval: 100 - running: false - repeat: false - - onTriggered: calculateScale() + id: scaleTimer + interval: 100 + running: false + repeat: false + onTriggered: calculateScale() } QGCMapLabel { - id: scaleText - map: mapControl - font.family: ScreenTools.demiboldFontFamily - anchors.left: parent.left - anchors.right: parent.right - horizontalAlignment: Text.AlignRight - text: "0 m" + id: scaleText + map: mapControl + font.family: ScreenTools.demiboldFontFamily + anchors.left: parent.left + anchors.right: parent.right + horizontalAlignment:Text.AlignRight + text: "0 m" } Rectangle { - id: leftEnd - anchors.top: scaleText.bottom - anchors.left: parent.left - width: 2 - height: ScreenTools.defaultFontPixelHeight - color: _color + id: leftEnd + anchors.top: scaleText.bottom + anchors.left: parent.left + width: 2 + height: ScreenTools.defaultFontPixelHeight + color: _color } Rectangle { - id: centerLine + id: centerLine anchors.bottomMargin: 2 - anchors.bottom: leftEnd.bottom - anchors.left: leftEnd.right - height: 2 - color: _color + anchors.bottom: leftEnd.bottom + anchors.left: leftEnd.right + height: 2 + color: _color } Rectangle { - id: rightEnd - anchors.top: leftEnd.top - anchors.left: centerLine.right - width: 2 - height: ScreenTools.defaultFontPixelHeight - color: _color + id: rightEnd + anchors.top: leftEnd.top + anchors.left: centerLine.right + width: 2 + height: ScreenTools.defaultFontPixelHeight + color: _color } Component.onCompleted: { diff --git a/src/api/QGCOptions.h b/src/api/QGCOptions.h index d00fa7c7e..b2b6ebcac 100644 --- a/src/api/QGCOptions.h +++ b/src/api/QGCOptions.h @@ -63,6 +63,7 @@ public: Q_PROPERTY(bool checkFirmwareVersion READ checkFirmwareVersion CONSTANT) Q_PROPERTY(bool showMavlinkLogOptions READ showMavlinkLogOptions CONSTANT) Q_PROPERTY(bool enableMultiVehicleList READ enableMultiVehicleList CONSTANT) + Q_PROPERTY(bool enableMapScale READ enableMapScale CONSTANT) /// Should QGC hide its settings menu and colapse it into one single menu (Settings and Vehicle Setup)? /// @return true if QGC should consolidate both menus into one. @@ -114,7 +115,8 @@ public: virtual bool disableVehicleConnection () const { return false; } ///< true: vehicle connection is disabled virtual bool checkFirmwareVersion () const { return true; } virtual bool showMavlinkLogOptions () const { return true; } - virtual bool enableMultiVehicleList () const { return true; } + virtual bool enableMultiVehicleList () const { return true; } + virtual bool enableMapScale () const { return true; } #if defined(__mobile__) virtual bool useMobileFileDialog () const { return true;} diff --git a/src/main.cc b/src/main.cc index 62012d36c..6a2813f8d 100644 --- a/src/main.cc +++ b/src/main.cc @@ -228,6 +228,7 @@ int main(int argc, char *argv[]) #endif #endif // QT_DEBUG + QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QGCApplication* app = new QGCApplication(argc, argv, runUnitTests); Q_CHECK_PTR(app); -- 2.22.0