diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-09-16 17:28:47 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-09-20 12:10:38 +0200 |
commit | ab4b06741ee2dbb70e43ae1660d6ccca4913a32c (patch) | |
tree | bdefee840852c86b1f93fa0fa2846fcdc26785bb /examples/location | |
parent | 31c94ac5a7d905312e4459d44c24cbe5f105dc9d (diff) | |
download | qtlocation-ab4b06741ee2dbb70e43ae1660d6ccca4913a32c.tar.gz |
Fix mapviewer example issues and modernize code
Move the example away from imperative coding style, and fix code that
didn't following Qt 6 practices or caused warnings to be emitted to the
console:
Populate all menus consistently through items that bind their enabled
state to relevant properties. This avoids that we have to clear and
recreate the menus when switching provider.
Don't print debug output when updating the position of the minimap.
Capture parameters of signals correctly in the handlers.
Fix some UI issues:
We cannot replace the background of a styled button, so use
AbstractButton instead, otherwise the example will generate runtime
warnings with some styles, e.g.
qrc:/qt-project.org/imports/QtQuick/Controls/macOS/Button.qml:44:
TypeError: Property 'styleFont' of object QQuickRectangle(0x7fdfaa4e7bd0)
is not a function
Also don't squeeze the sliders by setting the spacing to -10, styled
sliders will overlap, and don't use anchors on items managed by layouts.
Change-Id: I118a52ae3d2ece77c662fd42bb868c9bbcf30e7a
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'examples/location')
-rw-r--r-- | examples/location/mapviewer/forms/RouteAddressForm.ui.qml | 6 | ||||
-rw-r--r-- | examples/location/mapviewer/forms/RouteCoordinateForm.ui.qml | 8 | ||||
-rw-r--r-- | examples/location/mapviewer/map/MapComponent.qml | 18 | ||||
-rw-r--r-- | examples/location/mapviewer/map/MapSliders.qml | 8 | ||||
-rw-r--r-- | examples/location/mapviewer/map/Marker.qml | 6 | ||||
-rw-r--r-- | examples/location/mapviewer/map/MiniMap.qml | 4 | ||||
-rw-r--r-- | examples/location/mapviewer/mapviewer.qml | 28 | ||||
-rw-r--r-- | examples/location/mapviewer/menus/ItemPopupMenu.qml | 13 | ||||
-rw-r--r-- | examples/location/mapviewer/menus/MainMenu.qml | 90 | ||||
-rw-r--r-- | examples/location/mapviewer/menus/MapPopupMenu.qml | 36 | ||||
-rw-r--r-- | examples/location/mapviewer/menus/MarkerPopupMenu.qml | 73 |
11 files changed, 159 insertions, 131 deletions
diff --git a/examples/location/mapviewer/forms/RouteAddressForm.ui.qml b/examples/location/mapviewer/forms/RouteAddressForm.ui.qml index b6d65436..6316550b 100644 --- a/examples/location/mapviewer/forms/RouteAddressForm.ui.qml +++ b/examples/location/mapviewer/forms/RouteAddressForm.ui.qml @@ -105,8 +105,8 @@ Item { id: label1 text: qsTr("From") font.bold: true - anchors.horizontalCenter: parent.horizontalCenter - Layout.columnSpan : 2 + Layout.columnSpan: 2 + Layout.alignment: Qt.AlignHCenter } Label { @@ -143,8 +143,8 @@ Item { id: label6 text: qsTr("To") font.bold: true - anchors.horizontalCenter: parent.horizontalCenter Layout.columnSpan: 2 + Layout.alignment: Qt.AlignHCenter } Label { diff --git a/examples/location/mapviewer/forms/RouteCoordinateForm.ui.qml b/examples/location/mapviewer/forms/RouteCoordinateForm.ui.qml index 78e5eb09..d33aaaae 100644 --- a/examples/location/mapviewer/forms/RouteCoordinateForm.ui.qml +++ b/examples/location/mapviewer/forms/RouteCoordinateForm.ui.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -102,9 +102,9 @@ Item { Label { id: label1 text: qsTr("From") - anchors.horizontalCenter: parent.horizontalCenter font.bold: true - Layout.columnSpan : 2 + Layout.columnSpan: 2 + Layout.alignment: Qt.AlignHCenter } Label { @@ -130,9 +130,9 @@ Item { Label { id: label6 text: qsTr("To") - anchors.horizontalCenter: parent.horizontalCenter font.bold: true Layout.columnSpan: 2 + Layout.alignment: Qt.AlignHCenter } Label { diff --git a/examples/location/mapviewer/map/MapComponent.qml b/examples/location/mapviewer/map/MapComponent.qml index a9ace12f..8553cb8d 100644 --- a/examples/location/mapviewer/map/MapComponent.qml +++ b/examples/location/mapviewer/map/MapComponent.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -311,7 +311,7 @@ Map { mapItems = new Array(); } - Keys.onPressed: { + Keys.onPressed: (event) => { if (event.key === Qt.Key_Plus) { map.zoomLevel++; } else if (event.key === Qt.Key_Minus) { @@ -464,7 +464,7 @@ Map { hoverEnabled: false property variant lastCoordinate - onPressed : { + onPressed : (mouse) => { map.lastX = mouse.x + parent.x map.lastY = mouse.y + parent.y map.pressX = mouse.x + parent.x @@ -472,7 +472,7 @@ Map { lastCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y)) } - onPositionChanged: { + onPositionChanged: (mouse) => { if (mouse.button == Qt.LeftButton) { map.lastX = mouse.x + parent.x map.lastY = mouse.y + parent.y @@ -530,7 +530,7 @@ Map { hoverEnabled: false property variant lastCoordinate - onPressed : { + onPressed : (mouse) => { map.lastX = mouse.x + parent.x map.lastY = mouse.y + parent.y map.pressX = mouse.x + parent.x @@ -538,7 +538,7 @@ Map { lastCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y)) } - onPositionChanged: { + onPositionChanged: (mouse) => { if (Math.abs(map.pressX - parent.x- mouse.x ) > map.jitterThreshold || Math.abs(map.pressY - parent.y -mouse.y ) > map.jitterThreshold) { if (pressed) parent.radius = parent.center.distanceTo( @@ -550,7 +550,7 @@ Map { } } - onPressAndHold:{ + onPressAndHold: (mouse) => { if (Math.abs(map.pressX - parent.x- mouse.x ) < map.jitterThreshold && Math.abs(map.pressY - parent.y - mouse.y ) < map.jitterThreshold) { showPointMenu(lastCoordinate); @@ -610,7 +610,7 @@ Map { } } - onDoubleClicked: { + onDoubleClicked: (mouse) => { var mouseGeoPos = map.toCoordinate(Qt.point(mouse.x, mouse.y)); var preZoomPoint = map.fromCoordinate(mouseGeoPos, false); if (mouse.button === Qt.LeftButton) { @@ -629,7 +629,7 @@ Map { lastY = -1; } - onPressAndHold:{ + onPressAndHold: (mouse) => { if (Math.abs(map.pressX - mouse.x ) < map.jitterThreshold && Math.abs(map.pressY - mouse.y ) < map.jitterThreshold) { showMainMenu(lastCoordinate); diff --git a/examples/location/mapviewer/map/MapSliders.qml b/examples/location/mapviewer/map/MapSliders.qml index 49fb5659..1a8c8013 100644 --- a/examples/location/mapviewer/map/MapSliders.qml +++ b/examples/location/mapviewer/map/MapSliders.qml @@ -70,7 +70,7 @@ Row { anchors.right: rightEdge() ? parent.right : undefined anchors.left: rightEdge() ? undefined : parent.left - Button { + AbstractButton { id: sliderToggler width: 32 height: 96 @@ -83,11 +83,6 @@ Row { xScale: rightEdge() ? 1 : -1 } -// style: ButtonStyle { -// background: Rectangle { -// color: "transparent" -// } -// } background: Rectangle { color: "transparent" } @@ -218,7 +213,6 @@ Row { // The sliders row Row { - spacing: -10 id: sliderRow height: sliderContainer.slidersHeight diff --git a/examples/location/mapviewer/map/Marker.qml b/examples/location/mapviewer/map/Marker.qml index 8c5d9284..3566397c 100644 --- a/examples/location/mapviewer/map/Marker.qml +++ b/examples/location/mapviewer/map/Marker.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -79,7 +79,7 @@ MapQuickItem { drag.target: marker preventStealing: true - onPressed : { + onPressed : (mouse) => { map.pressX = mouse.x map.pressY = mouse.y map.currentMarker = -1 @@ -91,7 +91,7 @@ MapQuickItem { } } - onPressAndHold:{ + onPressAndHold: (mouse) => { if (Math.abs(map.pressX - mouse.x ) < map.jitterThreshold && Math.abs(map.pressY - mouse.y ) < map.jitterThreshold) { var p = map.fromCoordinate(marker.coordinate) diff --git a/examples/location/mapviewer/map/MiniMap.qml b/examples/location/mapviewer/map/MiniMap.qml index 43298d85..2fe3093a 100644 --- a/examples/location/mapviewer/map/MiniMap.qml +++ b/examples/location/mapviewer/map/MiniMap.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -119,8 +119,6 @@ Rectangle{ topLeft.longitude= getMapVisibleRegion().topLeft.longitude bottomRight.latitude = getMapVisibleRegion().bottomRight.latitude bottomRight.longitude= getMapVisibleRegion().bottomRight.longitude - console.log("TopLeft: " + topLeft) - console.log("BotRigh: " + bottomRight) } } } diff --git a/examples/location/mapviewer/mapviewer.qml b/examples/location/mapviewer/mapviewer.qml index bad561a6..424e3314 100644 --- a/examples/location/mapviewer/mapviewer.qml +++ b/examples/location/mapviewer/mapviewer.qml @@ -60,6 +60,7 @@ ApplicationWindow { id: appWindow property variant map property variant minimap + property variant plugin property variant parameters //defaults @@ -70,8 +71,6 @@ ApplicationWindow { function createMap(provider) { - var plugin - if (parameters && parameters.length>0) plugin = Qt.createQmlObject ('import QtLocation; Plugin{ name:"' + provider + '"; parameters: appWindow.parameters}', appWindow) else @@ -174,9 +173,11 @@ ApplicationWindow { MainMenu { id: mainMenu + plugin: appWindow.plugin function toggleMiniMapState() { + console.log("MiniMap with " + plugin) if (minimap) { minimap.destroy() minimap = null @@ -200,10 +201,8 @@ ApplicationWindow { createMap(providerName) if (map.error === Map.NoError) { selectMapType(map.activeMapType) - toolsMenu.createMenu(map); } else { - mapTypeMenu.clear(); - toolsMenu.clear(); + mainMenu.clearMenu(mapTypeMenu) } } @@ -293,11 +292,10 @@ ApplicationWindow { mapPopupMenu.coordinate = coordinate mapPopupMenu.markersCount = map.markers.length mapPopupMenu.mapItemsCount = map.mapItems.length - mapPopupMenu.update() mapPopupMenu.popup() } - onItemClicked: { + onItemClicked: (item) => { stackView.pop(page) switch (item) { case "addMarker": @@ -328,13 +326,12 @@ ApplicationWindow { { stackView.pop(page) markerPopupMenu.markersCount = map.markers.length - markerPopupMenu.update() + markerPopupMenu.currentMarker = map.currentMarker markerPopupMenu.popup() } function askForCoordinate() { - console.log("askForCoordinate") stackView.push("forms/ReverseGeocode.qml", { "title": qsTr("New Coordinate"), "coordinate": map.markers[map.currentMarker].coordinate}) @@ -349,7 +346,7 @@ ApplicationWindow { stackView.pop(page) } - onItemClicked: { + onItemClicked: (item) => { stackView.pop(page) switch (item) { case "deleteMarker": @@ -399,7 +396,6 @@ ApplicationWindow { { stackView.pop(page) itemPopupMenu.type = type - itemPopupMenu.update() itemPopupMenu.popup() } @@ -484,7 +480,7 @@ support" height: page.height onFollowmeChanged: mainMenu.isFollowMe = map.followme onSupportedMapTypesChanged: mainMenu.mapTypeMenu.createMenu(map) - onCoordinatesCaptured: { + onCoordinatesCaptured: (latitude, longitude) => { var text = "<b>" + qsTr("Latitude:") + "</b> " + Helper.roundNumber(latitude,4) + "<br/><b>" + qsTr("Longitude:") + "</b> " + Helper.roundNumber(longitude,4) stackView.showMessage(qsTr("Coordinates"),text); } @@ -516,10 +512,10 @@ support" stackView.showMessage(title,message); } } - onShowMainMenu: mapPopupMenu.show(coordinate) - onShowMarkerMenu: markerPopupMenu.show(coordinate) - onShowRouteMenu: itemPopupMenu.show("Route",coordinate) - onShowPointMenu: itemPopupMenu.show("Point",coordinate) + onShowMainMenu: (coordinate) => mapPopupMenu.show(coordinate) + onShowMarkerMenu: (coordinate) => markerPopupMenu.show(coordinate) + onShowRouteMenu: (coordinate) => itemPopupMenu.show("Route",coordinate) + onShowPointMenu: (coordinate) => itemPopupMenu.show("Point",coordinate) onShowRouteList: stackView.showRouteListPage() } } diff --git a/examples/location/mapviewer/menus/ItemPopupMenu.qml b/examples/location/mapviewer/menus/ItemPopupMenu.qml index ea6fd3b9..ff4cc6aa 100644 --- a/examples/location/mapviewer/menus/ItemPopupMenu.qml +++ b/examples/location/mapviewer/menus/ItemPopupMenu.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -55,9 +55,12 @@ Menu { property variant type signal itemClicked(string item) - function update() { - clear() - addItem(qsTr("Info")).triggered.connect(function(){itemClicked("show" + type + "Info")}) - addItem(qsTr("Delete")).triggered.connect(function(){itemClicked("delete" + type )}) + MenuItem { + text: qsTr("Info") + onTriggered: itemClicked("show" + type + "Info") + } + MenuItem { + text: qsTr("Delete") + onTriggered: itemClicked("delete" + type) } } diff --git a/examples/location/mapviewer/menus/MainMenu.qml b/examples/location/mapviewer/menus/MainMenu.qml index d2cf4731..4616850e 100644 --- a/examples/location/mapviewer/menus/MainMenu.qml +++ b/examples/location/mapviewer/menus/MainMenu.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -53,9 +53,11 @@ import QtQuick.Controls import QtLocation MenuBar { - property variant providerMenu: providerMenu - property variant mapTypeMenu: mapTypeMenu - property variant toolsMenu: toolsMenu + id: menuBar + property variant providerMenu: providerMenu + property variant mapTypeMenu: mapTypeMenu + property variant toolsMenu: toolsMenu + property variant plugin property alias isFollowMe: toolsMenu.isFollowMe property alias isMiniMap: toolsMenu.isMiniMap @@ -119,49 +121,49 @@ MenuBar { id: toolsMenu property bool isFollowMe: false; property bool isMiniMap: false; - title: qsTr("Tools") + property variant plugin: menuBar.plugin - Component { - id: menuItem - MenuItem { + title: qsTr("Tools") - } + Action { + text: qsTr("Reverse geocode") + enabled: plugin ? plugin.supportsGeocoding(Plugin.ReverseGeocodingFeature) : false + onTriggered: selectTool("RevGeocode") } - - function createMenu(map) - { - clearMenu(toolsMenu) - if (map.plugin.supportsGeocoding(Plugin.ReverseGeocodingFeature)) { - addItem(menuItem.createObject(toolsMenu, { text: qsTr("Reverse geocode") })) - itemAt(count-1).triggered.connect(function(){selectTool("RevGeocode")}) - } - if (map.plugin.supportsGeocoding()) { - addItem(menuItem.createObject(toolsMenu, { text: qsTr("Geocode") })) - itemAt(count-1).triggered.connect(function(){selectTool("Geocode")}) - } - if (map.plugin.supportsRouting()) { - addItem(menuItem.createObject(toolsMenu, { text: qsTr("Route with coordinates") })) - itemAt(count-1).triggered.connect(function(){selectTool("CoordinateRoute")}) - addItem(menuItem.createObject(toolsMenu, { text: qsTr("Route with address") })) - itemAt(count-1).triggered.connect(function(){selectTool("AddressRoute")}) - } - - addItem(menuItem.createObject(toolsMenu, { text: "" })) - var item = itemAt(count-1) - item.text = Qt.binding(function() { return isMiniMap ? qsTr("Hide minimap") : qsTr("Minimap") }) - item.triggered.connect(function() {toggleMapState("MiniMap")}) - - addItem(menuItem.createObject(toolsMenu, { text: "" })) - item = itemAt(count-1) - item.text = Qt.binding(function() { return isFollowMe ? qsTr("Stop following") : qsTr("Follow me")}) - item.triggered.connect(function() {toggleMapState("FollowMe")}) - - addItem(menuItem.createObject(toolsMenu, { text: qsTr("Language") })) - itemAt(count-1).triggered.connect(function(){selectTool("Language")}) - addItem(menuItem.createObject(toolsMenu, { text: qsTr("Prefetch Map Data") })) - itemAt(count-1).triggered.connect(function(){selectTool("Prefetch")}) - addItem(menuItem.createObject(toolsMenu, { text: qsTr("Clear Map Data") })) - itemAt(count-1).triggered.connect(function(){selectTool("Clear")}) + MenuItem { + text: qsTr("Geocode") + enabled: plugin ? plugin.supportsGeocoding() : false + onTriggered: selectTool("Geocode") + } + MenuItem { + text: qsTr("Route with coordinates") + enabled: plugin ? plugin.supportsRouting() : false + onTriggered: selectTool("CoordinateRoute") + } + MenuItem { + text: qsTr("Route with address") + enabled: plugin ? plugin.supportsRouting() : false + onTriggered: selectTool("AddressRoute") + } + MenuItem { + text: isMiniMap ? qsTr("Hide minimap") : qsTr("Minimap") + onTriggered: toggleMapState("MiniMap") + } + MenuItem { + text: isFollowMe ? qsTr("Stop following") : qsTr("Follow me") + onTriggered: toggleMapState("FollowMe") + } + MenuItem { + text: qsTr("Language") + onTriggered: selectTool("Language") + } + MenuItem { + text: qsTr("Prefetch Map Data") + onTriggered: selectTool("Prefetch") + } + MenuItem { + text: qsTr("Clear Map Data") + onTriggered: selectTool("Clear") } } } diff --git a/examples/location/mapviewer/menus/MapPopupMenu.qml b/examples/location/mapviewer/menus/MapPopupMenu.qml index 42867710..1cad6b68 100644 --- a/examples/location/mapviewer/menus/MapPopupMenu.qml +++ b/examples/location/mapviewer/menus/MapPopupMenu.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -57,18 +57,26 @@ Menu { property int mapItemsCount signal itemClicked(string item) - function update() { - clear() - addItem(qsTr("Add Marker")).triggered.connect(function(){itemClicked("addMarker")}) - addItem(qsTr("Get coordinate")).triggered.connect(function(){itemClicked("getCoordinate")}) - addItem(qsTr("Fit Viewport To Map Items")).triggered.connect(function(){itemClicked("fitViewport")}) - - if (markersCount > 0) { - addItem(qsTr("Delete all markers")).triggered.connect(function(){itemClicked("deleteMarkers")}) - } - - if (mapItemsCount > 0) { - addItem(qsTr("Delete all items")).triggered.connect(function(){itemClicked("deleteItems")}) - } + MenuItem { + text: qsTr("Add Marker") + onTriggered: itemClicked("addMarker") + } + MenuItem { + text: qsTr("Get coordinate") + onTriggered: itemClicked("getCoordinate") + } + MenuItem { + text: qsTr("Fit Viewport To Map Items") + onTriggered: itemClicked("fitViewport") + } + MenuItem { + text: qsTr("Delete all markers") + enabled: markersCount > 0 + onTriggered: itemClicked("deleteMarkers") + } + MenuItem { + text: qsTr("Delete all items") + enabled: mapItemsCount > 0 + onTriggered: itemClicked("deleteItems") } } diff --git a/examples/location/mapviewer/menus/MarkerPopupMenu.qml b/examples/location/mapviewer/menus/MarkerPopupMenu.qml index e49b90f8..748dcbdc 100644 --- a/examples/location/mapviewer/menus/MarkerPopupMenu.qml +++ b/examples/location/mapviewer/menus/MarkerPopupMenu.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -56,31 +56,58 @@ Menu { property int markersCount signal itemClicked(string item) - function update() { - clear() - addItem(qsTr("Delete")).triggered.connect(function(){itemClicked("deleteMarker")}) - addItem(qsTr("Coordinates")).triggered.connect(function(){itemClicked("getMarkerCoordinate")}) - addItem(qsTr("Move to")).triggered.connect(function(){itemClicked("moveMarkerTo")}) - if (currentMarker == markersCount-2){ - addItem(qsTr("Route to next point")).triggered.connect(function(){itemClicked("routeToNextPoint")}); - addItem(qsTr("Distance to next point")).triggered.connect(function(){itemClicked("distanceToNextPoint")}); + MenuItem { + text: qsTr("Delete") + onTriggered: itemClicked("deleteMarker") + } + MenuItem { + text: qsTr("Coordinates") + onTriggered: itemClicked("getMarkerCoordinate") + } + MenuItem { + text: qsTr("Move to") + onTriggered: itemClicked("moveMarkerTo") + } + MenuItem { + text: currentMarker < markersCount-2 ? qsTr("Route to next points") + : qsTr("Route to next point") + enabled: currentMarker <= markersCount - 2 + onTriggered: currentMarker < markersCount-2 ? itemClicked("routeToNextPoints") + : itemClicked("routeToNextPoint") + } + MenuItem { + text: currentMarker < markersCount-2 ? qsTr("Distance to next points") + : qsTr("Distance to next point") + enabled: currentMarker <= markersCount - 2 + onTriggered: currentMarker < markersCount-2 ? itemClicked("distanceToNextPoints") + : itemClicked("distanceToNextPoint") + } + Menu { + title: qsTr("Draw...") + + MenuItem { + text: qsTr("Image") + onTriggered: itemClicked("drawImage") } - if (currentMarker < markersCount-2){ - addItem(qsTr("Route to next points")).triggered.connect(function(){itemClicked("routeToNextPoints")}); - addItem(qsTr("Distance to next point")).triggered.connect(function(){itemClicked("distanceToNextPoint")}); + MenuItem { + text: qsTr("Rectangle") + enabled: currentMarker <= markersCount - 2 + onTriggered: itemClicked("drawRectangle") } - - var menu = addMenu(qsTr("Draw...")) - menu.addItem(qsTr("Image")).triggered.connect(function(){itemClicked("drawImage")}) - - if (currentMarker <= markersCount-2){ - menu.addItem(qsTr("Rectangle")).triggered.connect(function(){itemClicked("drawRectangle")}) - menu.addItem(qsTr("Circle")).triggered.connect(function(){itemClicked("drawCircle")}) - menu.addItem(qsTr("Polyline")).triggered.connect(function(){itemClicked("drawPolyline")}) + MenuItem { + text: qsTr("Circle") + enabled: currentMarker <= markersCount - 2 + onTriggered: itemClicked("drawCircle") } - - if (currentMarker < markersCount-2){ - menu.addItem(qsTr("Polygon")).triggered.connect(function(){itemClicked("drawPolygonMenu")}) + MenuItem { + text: qsTr("Polyline") + enabled: currentMarker <= markersCount - 2 + onTriggered: itemClicked("drawPolyline") + } + MenuItem { + text: qsTr("Polygon") + enabled: currentMarker < markersCount-2 + onTriggered: itemClicked("drawPolygonMenu") } } } |