diff options
Diffstat (limited to 'examples/location/mapviewer/MapViewer/menus')
4 files changed, 209 insertions, 0 deletions
diff --git a/examples/location/mapviewer/MapViewer/menus/ItemPopupMenu.qml b/examples/location/mapviewer/MapViewer/menus/ItemPopupMenu.qml new file mode 100644 index 000000000..d559aca6c --- /dev/null +++ b/examples/location/mapviewer/MapViewer/menus/ItemPopupMenu.qml @@ -0,0 +1,19 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls + +Menu { + property variant type + signal itemClicked(string item) + + MenuItem { + text: qsTr("Info") + onTriggered: itemClicked("show" + type + "Info") + } + MenuItem { + text: qsTr("Delete") + onTriggered: itemClicked("delete" + type) + } +} diff --git a/examples/location/mapviewer/MapViewer/menus/MainMenu.qml b/examples/location/mapviewer/MapViewer/menus/MainMenu.qml new file mode 100644 index 000000000..3523b5c1a --- /dev/null +++ b/examples/location/mapviewer/MapViewer/menus/MainMenu.qml @@ -0,0 +1,122 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls +import QtLocation + +MenuBar { + 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 + + signal selectProvider(string providerName) + signal selectMapType(variant mapType) + signal selectTool(string tool); + signal toggleMapState(string state) + + function clearMenu(menu) + { + while (menu.count) + menu.removeItem(menu.itemAt(0)) + } + + Menu { + id: providerMenu + title: qsTr("Provider") + + function createMenu(plugins) + { + clearMenu(providerMenu) + for (var i = 0; i < plugins.length; i++) { + createProviderMenuItem(plugins[i]); + } + } + + function createProviderMenuItem(provider) + { + var action = Qt.createQmlObject('import QtQuick.Controls; Action{ text: "' + provider + '"; checkable: true; onTriggered: function(){selectProvider("' + provider + '")} }', providerMenu) + addAction(action) + } + } + + Menu { + id: mapTypeMenu + title: qsTr("MapType") + + Component { + id: mapTypeMenuActionComponent + Action { + + } + } + function createMenu(map) + { + clearMenu(mapTypeMenu) + for (var i = 0; i<map.supportedMapTypes.length; i++) { + createMapTypeMenuItem(map.supportedMapTypes[i], map.activeMapType === map.supportedMapTypes[i]); + } + } + + function createMapTypeMenuItem(mapType, checked) + { + var action = mapTypeMenuActionComponent.createObject(mapTypeMenu, { text: mapType.name, checkable: true, checked: checked }) + action.triggered.connect(function(){selectMapType(mapType)}) + addAction(action) + } + } + + Menu { + id: toolsMenu + property bool isFollowMe: false; + property bool isMiniMap: false; + property variant plugin: menuBar.plugin + + title: qsTr("Tools") + + Action { + text: qsTr("Reverse geocode") + enabled: plugin ? plugin.supportsGeocoding(Plugin.ReverseGeocodingFeature) : false + onTriggered: selectTool("RevGeocode") + } + 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/MapViewer/menus/MapPopupMenu.qml b/examples/location/mapviewer/MapViewer/menus/MapPopupMenu.qml new file mode 100644 index 000000000..335788df8 --- /dev/null +++ b/examples/location/mapviewer/MapViewer/menus/MapPopupMenu.qml @@ -0,0 +1,30 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls + +Menu { + property variant coordinate + property int markersCount + property int mapItemsCount + signal itemClicked(string item) + + MenuItem { + text: qsTr("Add Marker") + onTriggered: itemClicked("addMarker") + } + MenuItem { + text: qsTr("Get coordinate") + onTriggered: itemClicked("getCoordinate") + } + MenuItem { + text: qsTr("Fit Viewport To Markers") + onTriggered: itemClicked("fitViewport") + } + MenuItem { + text: qsTr("Delete all markers") + enabled: markersCount > 0 + onTriggered: itemClicked("deleteMarkers") + } +} diff --git a/examples/location/mapviewer/MapViewer/menus/MarkerPopupMenu.qml b/examples/location/mapviewer/MapViewer/menus/MarkerPopupMenu.qml new file mode 100644 index 000000000..338f23859 --- /dev/null +++ b/examples/location/mapviewer/MapViewer/menus/MarkerPopupMenu.qml @@ -0,0 +1,38 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls + +Menu { + property int currentMarker + property int markersCount + signal itemClicked(string item) + + 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 markers") + : qsTr("Route to next marker") + enabled: currentMarker <= markersCount - 2 + onTriggered: currentMarker < markersCount-2 ? itemClicked("routeToNextPoints") + : itemClicked("routeToNextPoint") + } + MenuItem { + text: currentMarker < markersCount-2 ? qsTr("Distance to next markers") + : qsTr("Distance to next marker") + enabled: currentMarker <= markersCount - 2 + onTriggered: currentMarker < markersCount-2 ? itemClicked("distanceToNextPoints") + : itemClicked("distanceToNextPoint") + } +} |