summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@theqtcompany.com>2015-02-11 19:03:23 +0100
committerMichal Klocek <michal.klocek@theqtcompany.com>2015-04-13 14:54:36 +0000
commit19d8a8514ae875b0fc4b5e7e7a08b5db74a457ce (patch)
tree7a2c41806934a89baf365006c346cd172c9c0c65
parent6cd56cd2a431238f67544f62fd541c55ba9ecda1 (diff)
downloadqtlocation-19d8a8514ae875b0fc4b5e7e7a08b5db74a457ce.tar.gz
Replace route and point menus in mapviewer example.
Use qtquickcontroles based one. Change-Id: I02f657cbb2b3f2728edd3287b0d7edf793c20aa7 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
-rw-r--r--examples/location/mapviewer/ItemPopupMenu.qml53
-rw-r--r--examples/location/mapviewer/content/map/MapComponent.qml105
-rw-r--r--examples/location/mapviewer/mapviewer.qml42
-rw-r--r--examples/location/mapviewer/mapviewerwrapper.qrc1
4 files changed, 110 insertions, 91 deletions
diff --git a/examples/location/mapviewer/ItemPopupMenu.qml b/examples/location/mapviewer/ItemPopupMenu.qml
new file mode 100644
index 00000000..6b604aaa
--- /dev/null
+++ b/examples/location/mapviewer/ItemPopupMenu.qml
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.4
+import QtQuick.Controls 1.3
+
+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 )})
+ }
+}
diff --git a/examples/location/mapviewer/content/map/MapComponent.qml b/examples/location/mapviewer/content/map/MapComponent.qml
index 001dddc7..e559ba3a 100644
--- a/examples/location/mapviewer/content/map/MapComponent.qml
+++ b/examples/location/mapviewer/content/map/MapComponent.qml
@@ -41,7 +41,6 @@ import QtQuick 2.4
import QtQuick.Controls 1.3
import QtLocation 5.3
import QtPositioning 5.2
-import QtLocation.examples 5.0 as OwnControls
//! [top]
Map {
@@ -64,9 +63,10 @@ Map {
property variant mapItems
property int markerCounter: 0 // counter for total amount of markers. Resets to 0 when number of markers = 0
property int currentMarker
- signal resetState()
signal showMainMenu(variant coordinate)
signal showMarkerMenu(variant coordinate)
+ signal showRouteMenu(variant coordinate)
+ signal showPointMenu(variant coordinate)
property int lastX : -1
property int lastY : -1
@@ -167,7 +167,6 @@ Map {
onValueChanged: {
map.zoomLevel = value
map.state=""
- map.resetState()
}
}
@@ -244,8 +243,8 @@ Map {
id: routeDelegate
MapRoute {
+ id: route
route: routeData
-
line.color: routeMouseArea.containsMouse ? "lime" : "red"
line.width: 5
smooth: true
@@ -255,19 +254,18 @@ Map {
id: routeMouseArea
anchors.fill: parent
hoverEnabled: false
+ property variant lastCoordinate
onPressed : {
- map.resetState();
- map.state = ""
map.lastX = mouse.x + parent.x
map.lastY = mouse.y + parent.y
map.pressX = mouse.x + parent.x
map.pressY = mouse.y + parent.y
+ lastCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y))
}
onPositionChanged: {
- if (map.state != "RoutePopupMenu" ||
- Math.abs(map.pressX - parent.x- mouse.x ) > map.jitterThreshold ||
+ if (Math.abs(map.pressX - parent.x- mouse.x ) > map.jitterThreshold ||
Math.abs(map.pressY - parent.y -mouse.y ) > map.jitterThreshold) {
map.state = ""
}
@@ -280,7 +278,7 @@ Map {
onPressAndHold:{
if (Math.abs(map.pressX - parent.x- mouse.x ) < map.jitterThreshold
&& Math.abs(map.pressY - parent.y - mouse.y ) < map.jitterThreshold) {
- map.state = "RoutePopupMenu"
+ showRouteMenu(lastCoordinate);
}
}
}
@@ -294,6 +292,7 @@ Map {
id: pointDelegate
MapCircle {
+ id: point
radius: 1000
color: circleMouseArea.containsMouse ? "lime" : "red"
opacity: 0.6
@@ -303,19 +302,18 @@ Map {
anchors.fill:parent
id: circleMouseArea
hoverEnabled: false
+ property variant lastCoordinate
onPressed : {
- map.resetState();
- map.state = ""
map.lastX = mouse.x + parent.x
map.lastY = mouse.y + parent.y
map.pressX = mouse.x + parent.x
map.pressY = mouse.y + parent.y
+ lastCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y))
}
onPositionChanged: {
- if (map.state != "PointPopupMenu" ||
- Math.abs(map.pressX - parent.x- mouse.x ) > map.jitterThreshold ||
+ if (Math.abs(map.pressX - parent.x- mouse.x ) > map.jitterThreshold ||
Math.abs(map.pressY - parent.y -mouse.y ) > map.jitterThreshold) {
map.state = ""
if (pressed) parent.radius = parent.center.distanceTo(
@@ -330,7 +328,7 @@ Map {
onPressAndHold:{
if (Math.abs(map.pressX - parent.x- mouse.x ) < map.jitterThreshold
&& Math.abs(map.pressY - parent.y - mouse.y ) < map.jitterThreshold) {
- map.state = "PointPopupMenu"
+ showPointMenu(lastCoordinate);
}
}
}
@@ -578,62 +576,6 @@ Map {
scaleTimer.restart()
}
- OwnControls.Menu {
- id: routeMenu
- horizontalOrientation: false
- autoWidth: true
- z: map.z + 4
- opacity: 0
-
- width: 150
- x: 0
- y: 0
-
- onClicked: {
- switch (button) {
- case "Delete": {//delete route
- routeModel.reset()
- routeInfoModel.update()
- break;
- }
- }
- map.state = ""
- }
- Component.onCompleted: {
- addItem("Delete")
- }
- }
-
- OwnControls.Menu {
- id: pointMenu
- horizontalOrientation: false
- autoWidth: true
- z: map.z + 4
- opacity: 0
-
- width: 150
- x: 0
- y: 0
-
- onClicked: {
- switch (button) {
- case "Info": {
- map.showGeocodeInfo()
- break;
- }
- case "Delete": {
- geocodeModel.reset()
- break;
- }
- }
- map.state = ""
- }
- Component.onCompleted: {
- addItem("Info")
- addItem("Delete")
- }
- }
-
Rectangle {
id: infoLabel
width: backgroundRect.width + 10
@@ -671,8 +613,6 @@ Map {
anchors.fill: parent
onPressed : {
- map.resetState();
- map.state = ""
map.lastX = mouse.x
map.lastY = mouse.y
map.pressX = mouse.x
@@ -712,7 +652,6 @@ Map {
if (Math.abs(map.pressX - mouse.x ) < map.jitterThreshold
&& Math.abs(map.pressY - mouse.y ) < map.jitterThreshold) {
showMainMenu(lastCoordinate);
- map.state = ""
}
}
}
@@ -874,21 +813,11 @@ Map {
return dist
}
- // states of map
- states: [
- State {
- name: "RoutePopupMenu"
- PropertyChanges { target: routeMenu; opacity: 1}
- PropertyChanges { target: routeMenu; x: ((map.lastX + routeMenu.width > map.width) ? map.width - routeMenu.width : map.lastX)}
- PropertyChanges { target: routeMenu; y: ((map.lastY + routeMenu.height > map.height - 40) ? map.height - routeMenu.height - 40 : map.lastY)}
- },
- State {
- name: "PointPopupMenu"
- PropertyChanges { target: pointMenu; opacity: 1}
- PropertyChanges { target: pointMenu; x: ((map.lastX + pointMenu.width > map.width) ? map.width - pointMenu.width : map.lastX)}
- PropertyChanges { target: pointMenu; y: ((map.lastY + pointMenu.height > map.height - 40) ? map.height - pointMenu.height - 40 : map.lastY)}
- }
- ]
+ function clearRoute() {
+ routeModel.reset()
+ routeInfoModel.update()
+ }
+
//! [end]
}
//! [end]
diff --git a/examples/location/mapviewer/mapviewer.qml b/examples/location/mapviewer/mapviewer.qml
index e2b41611..1472b77f 100644
--- a/examples/location/mapviewer/mapviewer.qml
+++ b/examples/location/mapviewer/mapviewer.qml
@@ -293,9 +293,6 @@ ApplicationWindow {
onShowGeocodeInfo:{\
showMessage(qsTr("Location"),geocodeMessage(),page);\
}\
- onResetState: {\
- page.state = "";\
- }\
onErrorChanged: {\
if (map.error != Map.NoError) {\
var title = qsTr("ProviderError");\
@@ -312,6 +309,12 @@ ApplicationWindow {
onShowMarkerMenu: {\
markerPopupMenu.show(coordinate);\
}\
+ onShowRouteMenu: {\
+ itemPopupMenu.show("Route",coordinate);\
+ }\
+ onShowPointMenu: {\
+ itemPopupMenu.show("Point",coordinate);\
+ }\
}',page)
map.plugin = plugin;
map.zoomLevel = (map.maximumZoomLevel - map.minimumZoomLevel)/2
@@ -440,6 +443,39 @@ ApplicationWindow {
}
+ ItemPopupMenu {
+
+ id: itemPopupMenu
+
+ function show(type,coordinate) {
+ stackView.pop(page)
+ itemPopupMenu.type = type
+ itemPopupMenu.update()
+ itemPopupMenu.popup()
+ }
+
+ onItemClicked: {
+ stackView.pop(page)
+ switch (item) {
+ case "infoRoute":
+ //ignore till next commit
+ break;
+ case "deleteRoute":
+ map.clearRoute()
+ break;
+ case "infoPoint":
+ map.showGeocodeInfo()
+ break;
+ case "deletePoint":
+ map.geocodeModel.reset()
+ break;
+ default:
+ console.log("Unsupported operation")
+ }
+ }
+
+ }
+
StackView {
id: stackView
diff --git a/examples/location/mapviewer/mapviewerwrapper.qrc b/examples/location/mapviewer/mapviewerwrapper.qrc
index b5fcc9ac..5ee8d029 100644
--- a/examples/location/mapviewer/mapviewerwrapper.qrc
+++ b/examples/location/mapviewer/mapviewerwrapper.qrc
@@ -24,6 +24,7 @@
<file>ReverseGeocode.qml</file>
<file>MapPopupMenu.qml</file>
<file>MarkerPopupMenu.qml</file>
+ <file>ItemPopupMenu.qml</file>
<file>Locale.qml</file>
</qresource>
</RCC>