blob: 3523b5c1aede3cf1372dddb8b532027c0cdd8193 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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")
}
}
}
|