diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml index 8d7cee8..3109f27 100644 --- a/src/FlightDisplay/FlightDisplayViewMap.qml +++ b/src/FlightDisplay/FlightDisplayViewMap.qml @@ -470,7 +470,7 @@ FlightMap { anchors.topMargin: ScreenTools.defaultFontPixelHeight * (0.33) + state === "bottomMode" ? 0 : ScreenTools.toolbarHeight anchors.bottomMargin: ScreenTools.defaultFontPixelHeight * (0.33) mapControl: flightMap - zoomButtonsOnLeft: false + buttonsOnLeft: false visible: !ScreenTools.isTinyScreen && QGroundControl.corePlugin.options.enableMapScale state: "bottomMode" states: [ diff --git a/src/FlightMap/MapScale.qml b/src/FlightMap/MapScale.qml index a134f5f..b46349c 100644 --- a/src/FlightMap/MapScale.qml +++ b/src/FlightMap/MapScale.qml @@ -18,17 +18,22 @@ import QGroundControl.SettingsManager 1.0 /// Map scale control Item { id: scale - width: zoomButtonsOnLeft || !_zoomButtonsVisible ? rightEnd.x + rightEnd.width : zoomDownButton.x + zoomDownButton.width + width: buttonsOnLeft || !_zoomButtonsVisible ? rightEnd.x + rightEnd.width : zoomDownButton.x + zoomDownButton.width height: rightEnd.y + rightEnd.height - property var mapControl ///< Map control for which this scale control is being used - property bool zoomButtonsVisible: true - property bool zoomButtonsOnLeft: true ///< Zoom buttons to left/right of scale bar + property var mapControl ///< Map control for which this scale control is being used + property bool terrainButtonVisible: false + property alias terrainButtonChecked: terrainButton.checked + property bool zoomButtonsVisible: true + property bool buttonsOnLeft: true ///< Buttons to left/right of scale bar + + signal terrainButtonClicked property variant _scaleLengthsMeters: [5, 10, 25, 50, 100, 150, 250, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000] property variant _scaleLengthsFeet: [10, 25, 50, 100, 250, 500, 1000, 2000, 3000, 4000, 5280, 5280*2, 5280*5, 5280*10, 5280*25, 5280*50, 5280*100, 5280*250, 5280*500, 5280*1000] - property bool _zoomButtonsVisible: zoomButtonsVisible && !ScreenTools.isMobile // Zoom buttons don't show on mobile since finger pinch works fine + property bool _zoomButtonsVisible: zoomButtonsVisible && !ScreenTools.isMobile + property bool _terrainButtonVisible: terrainButtonVisible && !ScreenTools.isMobile property var _color: mapControl.isSatelliteMap ? "white" : "black" @@ -155,8 +160,8 @@ Item { Rectangle { id: leftEnd anchors.top: scaleText.bottom - anchors.leftMargin: zoomButtonsOnLeft && _zoomButtonsVisible ? ScreenTools.defaultFontPixelWidth / 2 : 0 - anchors.left: zoomButtonsOnLeft && _zoomButtonsVisible ? zoomDownButton.right : parent.left + anchors.leftMargin: buttonsOnLeft && _zoomButtonsVisible ? ScreenTools.defaultFontPixelWidth / 2 : 0 + anchors.left: buttonsOnLeft && _zoomButtonsVisible ? zoomDownButton.right : parent.left width: 2 height: ScreenTools.defaultFontPixelHeight color: _color @@ -181,11 +186,24 @@ Item { } QGCButton { + id: terrainButton + anchors.top: scaleText.top + anchors.bottom: rightEnd.bottom + anchors.leftMargin: buttonsOnLeft ? 0 : ScreenTools.defaultFontPixelWidth / 2 + anchors.left: buttonsOnLeft ? parent.left : rightEnd.right + text: qsTr("T") + width: height + opacity: 0.75 + visible: _terrainButtonVisible + onClicked: terrainButtonClicked() + } + + QGCButton { id: zoomUpButton anchors.top: scaleText.top anchors.bottom: rightEnd.bottom - anchors.leftMargin: zoomButtonsOnLeft ? 0 : ScreenTools.defaultFontPixelWidth / 2 - anchors.left: zoomButtonsOnLeft ? parent.left : rightEnd.right + anchors.leftMargin: terrainButton.visible ? ScreenTools.defaultFontPixelWidth / 2 : 0 + anchors.left: terrainButton.visible ? terrainButton.right : terrainButton.left text: qsTr("+") width: height opacity: 0.75 @@ -195,11 +213,12 @@ Item { QGCButton { id: zoomDownButton + anchors.top: scaleText.top + anchors.bottom: rightEnd.bottom anchors.leftMargin: ScreenTools.defaultFontPixelWidth / 2 anchors.left: zoomUpButton.right text: qsTr("-") - height: zoomUpButton.height - width: zoomUpButton.width + width: height opacity: 0.75 visible: _zoomButtonsVisible onClicked: mapControl.zoomLevel -= 0.5 diff --git a/src/PlanView/PlanView.qml b/src/PlanView/PlanView.qml index 8a141c2..d7d9b16 100644 --- a/src/PlanView/PlanView.qml +++ b/src/PlanView/PlanView.qml @@ -819,13 +819,17 @@ Item { } MapScale { - id: mapScale - anchors.margins: ScreenTools.defaultFontPixelHeight * (0.66) - anchors.bottom: waypointValuesDisplay.visible ? waypointValuesDisplay.top : parent.bottom - anchors.left: parent.left - mapControl: editorMap - zoomButtonsOnLeft: true - visible: _toolStripBottom < y + id: mapScale + anchors.margins: ScreenTools.defaultFontPixelHeight * (0.66) + anchors.bottom: waypointValuesDisplay.visible ? waypointValuesDisplay.top : parent.bottom + anchors.left: parent.left + mapControl: editorMap + buttonsOnLeft: true + terrainButtonVisible: true + visible: _toolStripBottom < y && _editingLayer === _layerMission + terrainButtonChecked: waypointValuesDisplay.visible + + onTerrainButtonClicked: waypointValuesDisplay.toggleVisible() } MissionItemStatus { @@ -836,7 +840,13 @@ Item { maxWidth: parent.width - rightPanel.width - x anchors.bottom: parent.bottom missionItems: _missionController.visualItems - visible: _editingLayer === _layerMission && (_toolStripBottom + mapScale.height) < y && QGroundControl.corePlugin.options.showMissionStatus + visible: _internalVisible && _editingLayer === _layerMission && (_toolStripBottom + mapScale.height) < y && QGroundControl.corePlugin.options.showMissionStatus + + property bool _internalVisible: false + + function toggleVisible() { + _internalVisible = !_internalVisible + } } } diff --git a/src/QtLocationPlugin/QMLControl/OfflineMap.qml b/src/QtLocationPlugin/QMLControl/OfflineMap.qml index 3712941..433ccc2 100644 --- a/src/QtLocationPlugin/QMLControl/OfflineMap.qml +++ b/src/QtLocationPlugin/QMLControl/OfflineMap.qml @@ -400,7 +400,7 @@ Item { anchors.left: parent.left anchors.bottom: parent.bottom mapControl: _map - zoomButtonsOnLeft: true + buttonsOnLeft: true } //-----------------------------------------------------------------