summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorTimo Ojala <timo.ojala@digia.com>2011-12-05 10:25:25 +0200
committerQt by Nokia <qt-info@nokia.com>2011-12-12 05:35:28 +0100
commit4a8c6da635a0f30fdcb597f7d7eb40216698a59a (patch)
tree15f075a8e72ebbdde94ad50bc00b80baba2d5261 /examples
parent1a3066cc750ad648f94864ab390d46429c2b196f (diff)
downloadqtlocation-4a8c6da635a0f30fdcb597f7d7eb40216698a59a.tar.gz
Added Marker popup menu to mapviewer
* Enabled Marker popup menu (delete, delete all, coordinates) * Added showing of distance to next marker Change-Id: I8d7ae58b9759cd33198523a96c4b6fa128562e01 Reviewed-by: Natalia Shubina <natalia.shubina@nokia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml53
-rw-r--r--examples/declarative/mapviewer/mapviewer/content/map/Marker.qml22
-rw-r--r--examples/declarative/mapviewer/mapviewer/mapviewer.qml9
3 files changed, 65 insertions, 19 deletions
diff --git a/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml b/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml
index 6124b1cc..e325815a 100644
--- a/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml
+++ b/examples/declarative/mapviewer/mapviewer/content/map/MapComponent.qml
@@ -57,7 +57,7 @@ Map {
property variant mapItems
property int markerCounter: 0 // counter for total amount of markers. Resets to 0 when number of markers = 0
property int mapGeoItemsCounter: 0 // counter for total amount of mapItems. Resets to 0 when number of markers = 0
- // property Marker currentMarker
+ property Marker currentMarker
signal mapPressed() // replace with
// signal mousePressed(MouseEvent mouse) when QTBUG-14550 is fixed
@@ -68,6 +68,7 @@ Map {
property int jitterThreshold : 10
property bool followme: false
property variant scaleLengths: [5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000]
+ signal showDistance(string distance);
Coordinate {
id: brisbaneCoordinate
@@ -517,25 +518,37 @@ Map {
y: 0
onClicked: {
map.state = ""
- /* switch (button) {
+ switch (button) {
case "Delete": {//remove marker
map.removeMarker(currentMarker)
break;
}
- case "Move to": {//move marker
- map.moveMarker()
+ case "Delete All": {//remove all markers
+ map.deleteMarkers()
break;
}
+// case "Move to": {//move marker
+// map.moveMarker()
+// break;
+// }
case "Coordinates": {//show marker's coordinates
map.coordinatesCaptured(currentMarker.coordinate.latitude, currentMarker.coordinate.longitude)
break;
}
case "Route to next points"://calculate route
case "Route to next point": {
- map.calculateRoute(currentMarker)
+// map.calculateRoute(currentMarker)
break;
}
- }*/
+ case "Distance to next point": {
+ var count = map.markers.length
+ for (var i = 0; i<count; i++) {
+ if (currentMarker == map.markers[i])
+ showDistance(formatDistance(currentMarker.coordinate.distanceTo(map.markers[i+1].coordinate)));
+ }
+ break;
+ }
+ }
}
}
@@ -851,7 +864,6 @@ Map {
}
}
- /*
function removeMarker(marker){
//update list of markers
var myArray = new Array()
@@ -860,29 +872,32 @@ Map {
if (marker != map.markers[i]) myArray.push(map.markers[i])
}
- map.removeMapObject(marker)
+ map.removeMapItem(marker)
marker.destroy()
map.markers = myArray
- if (markers.length == 0) counter = 0
+ if (markers.length == 0) markerCounter = 0
}
- function markerLongPress(){
+ function markerPopup(){
var array
var count = map.markers.length
markerMenu.clear()
- markerMenu.addItem("Delete")
- markerMenu.addItem("Move to")
markerMenu.addItem("Coordinates")
- if ((currentMarker != markers[count-1]) && (count > 2))
- if (currentMarker == markers[count-2]) markerMenu.addItem("Route to next point")
- else markerMenu.addItem("Route to next points")
- }
- else markerMenu.addItem("Route to next point")
-
+// if ((currentMarker != markers[count-1]) && (count > 2)) {
+// if (currentMarker == markers[count-2]) markerMenu.addItem("Route to next point")
+// else markerMenu.addItem("Route to next points")
+// }
+// else markerMenu.addItem("Route to next point")
+ if (currentMarker != markers[count-1])
+ markerMenu.addItem("Distance to next point")
+ markerMenu.addItem("Delete")
+ if (count > 1)
+ markerMenu.addItem("Delete All")
+// markerMenu.addItem("Move to")
map.state = "MarkerPopupMenu"
}
-
+/*
function calculateRoute(marker){
routeQuery.clearWaypoints();
var startPointFound = false
diff --git a/examples/declarative/mapviewer/mapviewer/content/map/Marker.qml b/examples/declarative/mapviewer/mapviewer/content/map/Marker.qml
index 43ba0b43..fe46f350 100644
--- a/examples/declarative/mapviewer/mapviewer/content/map/Marker.qml
+++ b/examples/declarative/mapviewer/mapviewer/content/map/Marker.qml
@@ -44,6 +44,8 @@ import "../components"
MapQuickItem { //to be used inside MapComponent only
id: marker
+ property alias lastMouseX: markerMouseArea.lastX
+ property alias lastMouseY: markerMouseArea.lastY
anchorPoint.x: image.width/4
anchorPoint.y: image.height
@@ -54,6 +56,11 @@ MapQuickItem { //to be used inside MapComponent only
source: markerMouseArea.containsMouse ? (markerMouseArea.pressed ? "../resources/marker_selected.png" :"../resources/marker_hovered.png") : "../resources/marker.png"
MapMouseArea {
id: markerMouseArea
+ property int pressX : -1
+ property int pressY : -1
+ property int jitterThreshold : 10
+ property int lastX: -1
+ property int lastY: -1
anchors.fill: parent
hoverEnabled : true
drag.target: marker
@@ -63,6 +70,21 @@ MapQuickItem { //to be used inside MapComponent only
drag.minimumY: -map.toScreenPosition(marker.coordinate).y
drag.maximumY: map.height + drag.minimumY
+ onPressed : {
+ map.pressX = mouse.x
+ map.pressY = mouse.y
+ map.currentMarker = marker
+ map.state = ""
+ }
+
+ onPressAndHold:{
+ if (Math.abs(map.pressX - mouse.x ) < map.jitterThreshold
+ && Math.abs(map.pressY - mouse.y ) < map.jitterThreshold) {
+ lastX = map.toScreenPosition(marker.coordinate).x
+ lastY = map.toScreenPosition(marker.coordinate).y
+ map.markerPopup()
+ }
+ }
// onReleased:{
// console.log("drag: implement me")
// }
diff --git a/examples/declarative/mapviewer/mapviewer/mapviewer.qml b/examples/declarative/mapviewer/mapviewer/mapviewer.qml
index 774ef5de..a91fcc5f 100644
--- a/examples/declarative/mapviewer/mapviewer/mapviewer.qml
+++ b/examples/declarative/mapviewer/mapviewer/mapviewer.qml
@@ -236,6 +236,10 @@ Item {
name: "LocationInfo"
PropertyChanges { target: messageDialog; title: "Location" }
PropertyChanges { target: messageDialog; text: geocodeMessage() }
+ },
+ State{
+ name: "Distance"
+ PropertyChanges { target: messageDialog; title: "Distance" }
}
]
}
@@ -534,6 +538,11 @@ Item {
else if (map.geocodeModel.status == GeocodeModel.Error) {messageDialog.state = "GeocodeError";}\
page.state = "Message";\
}\
+ onShowDistance:{\
+ messageDialog.state = "Distance";\
+ messageDialog.text = "<b>Distance:</b> " + distance;\
+ page.state = "Message";\
+ }\
}',page)
map.plugin = plugin
}