From 6bf85ada2b45fe459a45fbb23661a0fcccda3a47 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sat, 18 Feb 2017 14:25:01 -0800 Subject: [PATCH] Use ToolStrip on fly view --- src/FlightDisplay/FlightDisplayViewMap.qml | 201 ++++++++------------- 1 file changed, 78 insertions(+), 123 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml index c7a2258c4..27bdeddd4 100644 --- a/src/FlightDisplay/FlightDisplayViewMap.qml +++ b/src/FlightDisplay/FlightDisplayViewMap.qml @@ -71,151 +71,106 @@ FlightMap { Component.onCompleted: start(false /* editMode */) } - QGCMapLabel { - id: flyLabel - map: flightMap - text: qsTr("Fly") - visible: !ScreenTools.isShortScreen - anchors.topMargin: _toolButtonTopMargin - anchors.horizontalCenter: centerMapDropButton.horizontalCenter - anchors.top: parent.top - } - - //-- Vertical Tool Buttons - ExclusiveGroup { - id: dropButtonsExclusiveGroup + id: _mapTypeButtonsExclusiveGroup } - ExclusiveGroup { - id: mapTypeButtonsExclusiveGroup - } + ToolStrip { + id: toolStrip + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + anchors.left: parent.left + anchors.topMargin: _toolButtonTopMargin + anchors.top: parent.top + color: qgcPal.window + title: qsTr("Fly") + z: QGroundControl.zOrderWidgets + buttonVisible: [ true, true, _showZoom, _showZoom ] + + property bool _showZoom: !ScreenTools.isShortScreen + + model: [ + { + name: "Center", + iconSource: "/qmlimages/MapCenter.svg", + dropPanelComponent: centerMapDropPanel + }, + { + name: "Map", + iconSource: "/qmlimages/MapType.svg", + dropPanelComponent: mapTypeDropPanel + }, + { + name: "In", + iconSource: "/qmlimages/ZoomPlus.svg" + }, + { + name: "Out", + iconSource: "/qmlimages/ZoomMinus.svg" + } + ] - //-- Dismiss Drop Down (if any) - MouseArea { - anchors.fill: parent - enabled: dropButtonsExclusiveGroup.current != null onClicked: { - if (dropButtonsExclusiveGroup.current) { - dropButtonsExclusiveGroup.current.checked = false + switch (index) { + case 2: + _flightMap.zoomLevel += 0.5 + break + case 3: + _flightMap.zoomLevel -= 0.5 + break } - dropButtonsExclusiveGroup.current = null } } - // IMPORTANT NOTE: Drop Buttons must be parented directly to the map. If they are placed in a Column for example the drop control positioning - // will not work correctly. - - //-- Map Center Control - CenterMapDropButton { - id: centerMapDropButton - anchors.topMargin: flyLabel.visible ? ScreenTools.defaultFontPixelHeight / 2 : _toolButtonTopMargin - anchors.leftMargin: ScreenTools.defaultFontPixelHeight - anchors.left: parent.left - anchors.top: flyLabel.visible ? flyLabel.bottom : parent.top - z: QGroundControl.zOrderWidgets - exclusiveGroup: dropButtonsExclusiveGroup - map: _flightMap - mapFitViewport: Qt.rect(leftToolWidth, _toolButtonTopMargin, flightMap.width - leftToolWidth - rightPanelWidth, flightMap.height - _toolButtonTopMargin) - usePlannedHomePosition: false - geoFenceController: geoFenceController - missionController: missionController - rallyPointController: rallyPointController - showFollowVehicle: true - followVehicle: _followVehicle - onFollowVehicleChanged: _followVehicle = followVehicle - - property real leftToolWidth: centerMapDropButton.x + centerMapDropButton.width - } + // Toolstrip drop panel compomnents - //-- Map Type Control - DropButton { - id: mapTypeButton - anchors.topMargin: ScreenTools.defaultFontPixelHeight - anchors.top: centerMapDropButton.bottom - anchors.left: centerMapDropButton.left - dropDirection: dropRight - buttonImage: "/qmlimages/MapType.svg" - viewportMargins: ScreenTools.defaultFontPixelWidth / 2 - exclusiveGroup: dropButtonsExclusiveGroup - z: QGroundControl.zOrderWidgets - lightBorders: isSatelliteMap + MapFitFunctions { + id: mapFitFunctions + map: _flightMap + mapFitViewport: Qt.rect(leftToolWidth, _toolButtonTopMargin, flightMap.width - leftToolWidth - rightPanelWidth, flightMap.height - _toolButtonTopMargin) + usePlannedHomePosition: false + mapMissionController: missionController + mapGeoFenceController: geoFenceController + mapRallyPointController: rallyPointController - dropDownComponent: Component { - Column { - spacing: ScreenTools.defaultFontPixelWidth + property real leftToolWidth: toolStrip.x + toolStrip.width + } - Row { - spacing: ScreenTools.defaultFontPixelWidth + Component { + id: centerMapDropPanel - Repeater { - model: QGroundControl.flightMapSettings.mapTypes + CenterMapDropPanel { + map: _flightMap + fitFunctions: mapFitFunctions + } + } - QGCButton { - checkable: true - checked: QGroundControl.flightMapSettings.mapType === text - text: modelData - width: clearButton.width - exclusiveGroup: mapTypeButtonsExclusiveGroup + Component { + id: mapTypeDropPanel - onClicked: { - QGroundControl.flightMapSettings.mapType = text - checked = true - dropButtonsExclusiveGroup.current = null - } - } - } - } + Column { + spacing: ScreenTools.defaultFontPixelHeight / 2 - QGCButton { - id: clearButton - text: qsTr("Clear Flight Trails") - enabled: QGroundControl.multiVehicleManager.activeVehicle - onClicked: { - QGroundControl.multiVehicleManager.activeVehicle.clearTrajectoryPoints() - dropButtonsExclusiveGroup.current = null + QGCLabel { text: qsTr("Map type:") } + Row { + spacing: ScreenTools.defaultFontPixelWidth + Repeater { + model: QGroundControl.flightMapSettings.mapTypes + + QGCButton { + checkable: true + checked: QGroundControl.flightMapSettings.mapType === text + text: modelData + exclusiveGroup: _mapTypeButtonsExclusiveGroup + onClicked: { + QGroundControl.flightMapSettings.mapType = text + dropPanel.hide() + } } } } } } - //-- Zoom Map In - RoundButton { - id: mapZoomPlus - anchors.topMargin: ScreenTools.defaultFontPixelHeight - anchors.top: mapTypeButton.bottom - anchors.left: mapTypeButton.left - visible: !ScreenTools.isTinyScreen && _mainIsMap - buttonImage: "/qmlimages/ZoomPlus.svg" - exclusiveGroup: dropButtonsExclusiveGroup - z: QGroundControl.zOrderWidgets - lightBorders: isSatelliteMap - onClicked: { - if(_flightMap) - _flightMap.zoomLevel += 0.5 - checked = false - } - } - - //-- Zoom Map Out - RoundButton { - id: mapZoomMinus - anchors.topMargin: ScreenTools.defaultFontPixelHeight - anchors.top: mapZoomPlus.bottom - anchors.left: mapZoomPlus.left - visible: !ScreenTools.isTinyScreen && _mainIsMap - buttonImage: "/qmlimages/ZoomMinus.svg" - exclusiveGroup: dropButtonsExclusiveGroup - z: QGroundControl.zOrderWidgets - lightBorders: isSatelliteMap - onClicked: { - if(_flightMap) - _flightMap.zoomLevel -= 0.5 - checked = false - } - } - // Add trajectory points to the map MapItemView { model: _mainIsMap ? _activeVehicle ? _activeVehicle.trajectoryPoints : 0 : 0 -- 2.22.0