From 2f14b59793167e885b50a71bcfe1a8c8cfcff071 Mon Sep 17 00:00:00 2001 From: lss Date: Tue, 9 Aug 2022 16:45:04 +0300 Subject: [PATCH] Rework fly view map guided mode menu --- src/FlightDisplay/FlyViewMap.qml | 87 ++++++++++++++++++++++++++++++---------- 1 file changed, 66 insertions(+), 21 deletions(-) diff --git a/src/FlightDisplay/FlyViewMap.qml b/src/FlightDisplay/FlyViewMap.qml index 8dcfaf3..5d60f5e 100644 --- a/src/FlightDisplay/FlyViewMap.qml +++ b/src/FlightDisplay/FlyViewMap.qml @@ -12,6 +12,7 @@ import QtQuick.Controls 2.4 import QtLocation 5.3 import QtPositioning 5.3 import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.11 import QGroundControl 1.0 import QGroundControl.Airspace 1.0 @@ -511,38 +512,81 @@ FlightMap { } } + // Handle guided mode clicks MouseArea { anchors.fill: parent - QGCMenu { + Popup { id: clickMenu + modal: true + property var coord - QGCMenuItem { - text: qsTr("Go to location") - visible: globals.guidedControllerFlyView.showGotoLocation - onTriggered: { - gotoLocationItem.show(clickMenu.coord) - globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionGoto, clickMenu.coord, gotoLocationItem) + function setCoordinates(mouseX, mouseY) { + var newX = mouseX + var newY = mouseY + + // Filtering coordinates + if (newX + clickMenu.width > _root.width) { + newX = _root.width - clickMenu.width } + if (newY + clickMenu.height > _root.height) { + newY = _root.height - clickMenu.height + } + + // Set coordiantes + x = newX + y = newY } - QGCMenuItem { - text: qsTr("Orbit at location") - visible: globals.guidedControllerFlyView.showOrbit - onTriggered: { - orbitMapCircle.show(clickMenu.coord) - globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionOrbit, clickMenu.coord, orbitMapCircle) - } + background: Rectangle { + radius: ScreenTools.defaultFontPixelHeight * 0.5 + color: qgcPal.window + border.color: qgcPal.text } - QGCMenuItem { - text: qsTr("ROI at location") - visible: globals.guidedControllerFlyView.showROI - onTriggered: { - roiLocationItem.show(clickMenu.coord) - globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionROI, clickMenu.coord, roiLocationItem) + ColumnLayout { + id: mainLayout + spacing: ScreenTools.defaultFontPixelWidth / 2 + + QGCButton { + Layout.fillWidth: true + text: "Go to location" + visible: globals.guidedControllerFlyView.showGotoLocation + onClicked: { + if (clickMenu.opened) { + clickMenu.close() + } + gotoLocationItem.show(clickMenu.coord) + globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionGoto, clickMenu.coord, gotoLocationItem) + } + } + + QGCButton { + Layout.fillWidth: true + text: "Orbit at location" + visible: globals.guidedControllerFlyView.showOrbit + onClicked: { + if (clickMenu.opened) { + clickMenu.close() + } + orbitMapCircle.show(clickMenu.coord) + globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionOrbit, clickMenu.coord, orbitMapCircle) + } + } + + QGCButton { + Layout.fillWidth: true + text: "ROI at location" + visible: globals.guidedControllerFlyView.showROI + onClicked: { + if (clickMenu.opened) { + clickMenu.close() + } + roiLocationItem.show(clickMenu.coord) + globals.guidedControllerFlyView.confirmAction(globals.guidedControllerFlyView.actionROI, clickMenu.coord, roiLocationItem) + } } } } @@ -553,7 +597,8 @@ FlightMap { gotoLocationItem.hide() var clickCoord = _root.toCoordinate(Qt.point(mouse.x, mouse.y), false /* clipToViewPort */) clickMenu.coord = clickCoord - clickMenu.popup() + clickMenu.setCoordinates(mouse.x, mouse.y) + clickMenu.open() } } }