summaryrefslogtreecommitdiff
path: root/examples/location
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@theqtcompany.com>2015-02-10 18:17:11 +0100
committerMichal Klocek <michal.klocek@theqtcompany.com>2015-04-13 14:53:33 +0000
commitb07ecac7cd8844af2818fb732a02b212a91b9a1c (patch)
tree1585e5cfdb31b6053b75e97b3f6f156ffd03cc4d /examples/location
parent306ba72d81e50ccb21271fc961581d0de5ba5f49 (diff)
downloadqtlocation-b07ecac7cd8844af2818fb732a02b212a91b9a1c.tar.gz
Replace route search dialogs in mapviewer example
Search dialogs use qtquickcontrols now. Change-Id: Ieb79ce5c58c3ac9fcd613fbfb89d395eb1982168 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'examples/location')
-rw-r--r--examples/location/mapviewer/MainMenu.qml3
-rw-r--r--examples/location/mapviewer/RouteAddress.qml144
-rw-r--r--examples/location/mapviewer/RouteCoordinate.qml85
-rw-r--r--examples/location/mapviewer/content/dialogs/RouteDialog.qml454
-rw-r--r--examples/location/mapviewer/mapviewer.qml209
-rw-r--r--examples/location/mapviewer/mapviewerwrapper.qrc3
6 files changed, 307 insertions, 591 deletions
diff --git a/examples/location/mapviewer/MainMenu.qml b/examples/location/mapviewer/MainMenu.qml
index fb982bd5..d930d727 100644
--- a/examples/location/mapviewer/MainMenu.qml
+++ b/examples/location/mapviewer/MainMenu.qml
@@ -108,7 +108,8 @@ MenuBar {
addItem(qsTr("Geocode")).triggered.connect(function(){selectTool("Geocode")})
}
if (map.plugin.supportsRouting()) {
- addItem(qsTr("Route")).triggered.connect(function(){selectTool("Route")})
+ addItem(qsTr("Route with coordinates")).triggered.connect(function(){selectTool("CoordinateRoute")})
+ addItem(qsTr("Route with address")).triggered.connect(function(){selectTool("AddressRoute")})
}
var item = addItem("")
diff --git a/examples/location/mapviewer/RouteAddress.qml b/examples/location/mapviewer/RouteAddress.qml
new file mode 100644
index 00000000..58480633
--- /dev/null
+++ b/examples/location/mapviewer/RouteAddress.qml
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** 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 QtLocation 5.3
+import QtPositioning 5.3
+import "forms"
+
+RouteAddressForm {
+
+ property alias plugin : tempGeocodeModel.plugin;
+ property variant fromAddress;
+ property variant toAddress;
+ signal showMessage(string topic, string message)
+ signal showRoute(variant startCoordinate,variant endCoordinate)
+ signal closeForm()
+
+ GeocodeModel {
+ id: tempGeocodeModel
+
+ property int success: 0
+ property variant startCoordinate
+ property variant endCoordinate
+
+ onCountChanged: {
+ if (success == 1 && count == 1) {
+ query = toAddress
+ update();
+ }
+ }
+
+ onStatusChanged: {
+ if ((status == GeocodeModel.Ready) && (count == 1)) {
+ success++
+ if (success == 1) {
+ startCoordinate.latitude = get(0).coordinate.latitude
+ startCoordinate.longitude = get(0).coordinate.longitude
+ }
+ if (success == 2) {
+ endCoordinate.latitude = get(0).coordinate.latitude
+ endCoordinate.longitude = get(0).coordinate.longitude
+ success = 0
+ if (startCoordinate.isValid && endCoordinate.isValid)
+ showRoute(startCoordinate,endCoordinate)
+ else
+ goButton.enabled = true
+ }
+ } else if ((status == GeocodeModel.Ready) || (status == GeocodeModel.Error)) {
+ var st = (success == 0 ) ? "start" : "end"
+ success = 0
+ if ((status == GeocodeModel.Ready) && (count == 0 )) {
+ showMessage(qsTr("Geocode Error"),qsTr("Unsuccessful geocode"));
+ goButton.enabled = true;
+ }
+ else if (status == GeocodeModel.Error) {
+ showMessage(qsTr("Geocode Error"),
+ qsTr("Unable to find location for the") + " " +
+ st + " " +qsTr("point"))
+ goButton.enabled = true;
+ }
+ else if ((status == GeocodeModel.Ready) && (count > 1 )) {
+ showMessage(qsTr("Ambiguous geocode"),
+ count + " " + qsTr("results found for the") +
+ " " + st + " " +qsTr("point, please specify location"))
+ goButton.enabled = true;
+ }
+ }
+ }
+ }
+
+ goButton.onClicked: {
+ tempGeocodeModel.reset()
+ fromAddress.country = fromCountry.text
+ fromAddress.street = fromStreet.text
+ fromAddress.city = fromCity.text
+ toAddress.country = toCountry.text
+ toAddress.street = toStreet.text
+ toAddress.city = toCity.text
+ tempGeocodeModel.startCoordinate = QtPositioning.coordinate()
+ tempGeocodeModel.endCoordinate = QtPositioning.coordinate()
+ tempGeocodeModel.query = fromAddress
+ tempGeocodeModel.update();
+ goButton.enabled = false;
+ }
+
+ clearButton.onClicked: {
+ fromStreet.text = ""
+ fromCity.text = ""
+ fromCountry.text = ""
+ toStreet.text = ""
+ toCity.text = ""
+ toCountry.text = ""
+ }
+
+ cancelButton.onClicked: {
+ closeForm()
+ }
+
+ Component.onCompleted: {
+ fromStreet.text = fromAddress.street
+ fromCity.text = fromAddress.city
+ fromCountry.text = fromAddress.country
+ toStreet.text = toAddress.street
+ toCity.text = toAddress.city
+ toCountry.text = toAddress.country
+ }
+}
diff --git a/examples/location/mapviewer/RouteCoordinate.qml b/examples/location/mapviewer/RouteCoordinate.qml
new file mode 100644
index 00000000..40d8fd4a
--- /dev/null
+++ b/examples/location/mapviewer/RouteCoordinate.qml
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** 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 QtPositioning 5.2
+import "forms"
+
+//Route Dialog
+//! [routedialog0]
+RouteCoordinateForm {
+ property variant toCoordinate
+ property variant fromCoordinate
+ signal showRoute(variant startCoordinate,variant endCoordinate)
+ signal closeForm()
+
+ //! [routedialog0]
+ goButton.onClicked: {
+ var startCoordinate = QtPositioning.coordinate(parseFloat(fromLatitude.text),
+ parseFloat(fromLongitude.text));
+ var endCoordinate = QtPositioning.coordinate(parseFloat(toLatitude.text),
+ parseFloat(toLongitude.text));
+ if (startCoordinate.isValid && endCoordinate.isValid) {
+ goButton.enabled = false;
+ showRoute(startCoordinate,endCoordinate)
+ }
+ }
+
+ clearButton.onClicked: {
+ fromLatitude.text = ""
+ fromLongitude.text = ""
+ toLatitude.text = ""
+ toLongitude.text = ""
+ }
+
+ cancelButton.onClicked: {
+ closeForm()
+ }
+
+ Component.onCompleted: {
+ fromLatitude.text = "" + fromCoordinate.latitude
+ fromLongitude.text = "" + fromCoordinate.longitude
+ toLatitude.text = "" + toCoordinate.latitude
+ toLongitude.text = "" + toCoordinate.longitude
+ }
+ //! [routedialog1]
+}
+//! [routedialog1]
+
diff --git a/examples/location/mapviewer/content/dialogs/RouteDialog.qml b/examples/location/mapviewer/content/dialogs/RouteDialog.qml
deleted file mode 100644
index 5762f905..00000000
--- a/examples/location/mapviewer/content/dialogs/RouteDialog.qml
+++ /dev/null
@@ -1,454 +0,0 @@
-/****************************************************************************
-**
-** 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.0
-import QtLocation 5.3
-import QtLocation.examples 5.0
-
-Dialog {
- id: dialog
-
- title: "Route"
- gap: 6
-
- property alias startLatitude: latFrom.text
- property alias startLongitude: longFrom.text
- property alias endLatitude: latTo.text
- property alias endLongitude: longTo.text
- property alias startStreet: streetFrom.text
- property alias startCity: cityFrom.text
- property alias startCountry: countryFrom.text
- property alias endStreet: streetTo.text
- property alias endCity: cityTo.text
- property alias endCountry: countryTo.text
- property alias byCoordinates: coord.enabled
-
- property int travelMode: RouteQuery.CarTravel // CarTravel, PedestrianTravel, BicycleTravel, PublicTransitTravel, TruckTravel
- property int routeOptimization: RouteQuery.FastestRoute // ShortestRoute, FastestRoute, MostEconomicRoute, MostScenicRoute
- property variant features: [] // NoFeature, TollFeature, HighwayFeature, PublicTransitFeature, FerryFeature, TunnelFeature, DirtRoadFeature, ParksFeature, MotorPoolLaneFeature
- property color fontColorNormal: "#242424"
- property color fontColorDisabled: "lightgrey"
- property color backgroundColorNormal: "#ECECEC"
- property color backgroundColorEnabled: "#98D0FC"
- property color backgroundColorDisabled: "grey"
-
- item: Flickable {
- id: f
-
- clip: true
- interactive: height + gap < contentHeight
- implicitHeight: contentItem.height
- contentHeight: contentItem.height
- contentWidth: contentItem.width
-
- Item {
- id: contentItem
- width: f.width
- height: childrenRect.height
-
- Column {
- id: options
- spacing: gap
- width: parent.width
-
- states: [
- State {
- name: "Address"
- PropertyChanges { target: coord; enabled: false }
- PropertyChanges { target: address; enabled: true }
- }
- ]
-
- //by coordinates
- Row {
- id: row1
- spacing: gap
- Image {
- id: optionButtonCoord
- anchors.verticalCenter:parent.verticalCenter
- source: coord.enabled ? "../../resources/option_button_selected.png" : "../../resources/option_button.png"
- MouseArea {
- anchors.fill: parent
- onClicked: { options.state = "" }
- }
- }
-
- Rectangle {
- id: coord
- color: enabled ? backgroundColorEnabled : backgroundColorDisabled
- radius: 5
- width:options.width - optionButtonCoord.width - row1.spacing
- height: longTo.y + longTo.height + gap
- enabled: true
-
- //start point
- Text {
- id: fromLabel;
- font.bold: true;
- enabled: coord.enabled
- anchors {
- top: latFrom.top
- topMargin:latFrom.height + gap/6 - fromLabel.height/2
- left: parent.left;
- leftMargin: gap
- }
- text: "From"
- color: enabled ? fontColorNormal : fontColorDisabled
- font.pixelSize: 14
- }
-
- TextWithLabel {
- id: latFrom
- width: parent.width - fromLabel.width - gap*3
- text: "-27.575"
- label: "latitude"
- enabled: coord.enabled
- anchors {
- left: fromLabel.right
- leftMargin: gap
- top: parent.top
- topMargin:gap
- }
- }
-
- TextWithLabel {
- id: longFrom
- width: latFrom.width
- text: "153.088"
- label: "longitude"
- enabled: coord.enabled
- anchors {
- left: latFrom.left
- top: latFrom.bottom
- topMargin:gap/3
- }
- }
-
- //end point
- Text {
- id: toLabel;
- font.bold: true;
- width: fromLabel.width
- enabled: coord.enabled
- anchors {
- top: latTo.top
- topMargin:latTo.height + gap/6 - toLabel.height/2
- left: parent.left;
- leftMargin: gap;
- }
- text: "To"
- color: enabled ? fontColorNormal : fontColorDisabled
- font.pixelSize: 14
- }
-
- TextWithLabel {
- id: latTo
- width: latFrom.width
- text: "-27.465"
- label: "latitude"
- enabled: coord.enabled
- anchors {
- left: toLabel.right
- leftMargin: gap
- top: longFrom.bottom
- topMargin:gap
- }
- }
-
- TextWithLabel {
- id: longTo
- width: latTo.width
- text: "153.023"
- label: "longitude"
- enabled: coord.enabled
- anchors {
- left: latTo.left
- top: latTo.bottom
- topMargin:gap/3
- }
- }
- }
- }
-
- //by address
- Row {
- id: row2
- spacing: gap
-
- Image {
- id: optionButtonAddress
- source: address.enabled ? "../../resources/option_button_selected.png" : "../../resources/option_button.png"
- anchors.verticalCenter: parent.verticalCenter
- MouseArea {
- anchors.fill: parent
- onClicked: { options.state = "Address" }
- }
- }
-
- Rectangle {
- id: address
- color: enabled ? backgroundColorEnabled : backgroundColorDisabled
- radius: 5
- width:coord.width
- height: countryTo.y + countryTo.height + gap
- enabled: false
-
- //start point
- Text {
- id: fromLabel2;
- font.bold: true;
- enabled: address.enabled
- anchors {
- top: cityFrom.top
- left: parent.left;
- leftMargin: gap
- }
- text: "From"
- color: enabled ? fontColorNormal : fontColorDisabled
- font.pixelSize: 14
- }
-
- TextWithLabel {
- id: streetFrom
- width: parent.width - fromLabel2.width - gap*3
- text: "Brandl st"
- label: "street"
- enabled: address.enabled
- anchors {
- left: fromLabel2.right
- leftMargin: gap
- top: parent.top
- topMargin:gap
- }
- }
-
- TextWithLabel {
- id: cityFrom
- width: streetFrom.width
- text: "Eight Mile Plains"
- label: "city"
- enabled: address.enabled
- anchors {
- left: streetFrom.left
- top: streetFrom.bottom
- topMargin:gap/3
- }
- }
-
- TextWithLabel {
- id: countryFrom
- width: streetFrom.width
- text: "Australia"
- label: "country"
- enabled: address.enabled
- anchors {
- left: streetFrom.left
- top: cityFrom.bottom
- topMargin:gap/3
- }
- }
-
- //end point
- Text {
- id: toLabel2;
- font.bold: true;
- enabled: address.enabled
- anchors {
- top: cityTo.top
- left: parent.left;
- leftMargin: gap
- }
- text: "To"
- color: enabled ? fontColorNormal : fontColorDisabled
- font.pixelSize: 14
- }
-
- TextWithLabel {
- id: streetTo
- width: parent.width - fromLabel2.width - gap*3
- text: "Heal st"
- label: "street"
- enabled: address.enabled
- anchors {
- left: fromLabel2.right
- leftMargin: gap
- top: countryFrom.bottom
- topMargin:gap
- }
- }
-
- TextWithLabel {
- id: cityTo
- width: streetTo.width
- text: "New Farm"
- label: "city"
- enabled: address.enabled
- anchors {
- left: streetTo.left
- top: streetTo.bottom
- topMargin:gap/3
- }
- }
-
- TextWithLabel {
- id: countryTo
- width: streetTo.width
- text: "Australia"
- label: "country"
- enabled: address.enabled
- anchors {
- left: streetTo.left
- top: cityTo.bottom
- topMargin:gap/3
- }
- }
- }
- }
- }
-
- Row {
- id: routeOptions
- anchors.top: options.bottom
- anchors.topMargin: gap
- anchors.left: parent.left
- anchors.leftMargin: gap
- width: parent.width - gap*2
- height: checkboxToll.height*2 + gap
- spacing: 0
- Column {//travel mode
- spacing: gap/3
- height: parent.height
- width: parent.width*0.325
- Optionbutton {
- id: optionbuttonVehicle
- width: parent.width
- text: "Vehicle"
- selected: true
- onClicked: {
- travelMode = RouteQuery.CarTravel
- optionbuttonPedestrian.selected = false
- }
- }
- Optionbutton {
- id: optionbuttonPedestrian
- width: parent.width
- text: "Pedestrian"
- onClicked: {
- travelMode = RouteQuery.PedestrianTravel
- optionbuttonVehicle.selected = false
- }
- }
- }
-
- Column {//Optimization
- spacing: gap/3
- height: parent.height
- width: parent.width*0.275
- Optionbutton {
- id: optionbuttonFastest
- width: parent.width
- text: "Fastest"
- selected: true
- onClicked: {
- routeOptimization = RouteQuery.FastestRoute
- optionbuttonShortest.selected = false
- }
- }
- Optionbutton {
- id: optionbuttonShortest
- width: parent.width
- text: "Shortest"
- onClicked: {
- routeOptimization = RouteQuery.ShortestRoute
- optionbuttonFastest.selected = false
- }
- }
- }
-
- Column {//Route features
- id: routeFeatures
- spacing: gap/3
- height: parent.height
- width: parent.width*0.4
- Checkbox {
- id: checkboxToll
- width: parent.width
- text: "Avoid toll roads"
- onSelectedChanged: {routeFeatures.updateRouteFeatures()}
- }
-
- Checkbox {
- id: checkboxHighways
- width: parent.width
- text: "Avoid highways"
- onSelectedChanged: {routeFeatures.updateRouteFeatures()}
- }
-
- function updateRouteFeatures(){
- features = []
- var myArray = new Array
-
- if (checkboxToll.selected) myArray.push(RouteQuery.TollFeature)
- if (checkboxHighways.selected) myArray.push(RouteQuery.HighwayFeature)
-
- features = myArray
- }
- }
- }
- }
- }
-
- onClearButtonClicked: {
- if (byCoordinates == true){
- latFrom.text = ""
- longFrom.text = ""
- latTo.text = ""
- longTo.text = ""
- }
- else {
- streetFrom.text = ""
- cityFrom.text = ""
- countryFrom.text = ""
- streetTo.text = ""
- cityTo.text = ""
- countryTo.text = ""
- }
- }
-}
diff --git a/examples/location/mapviewer/mapviewer.qml b/examples/location/mapviewer/mapviewer.qml
index cbd46c55..d46adb4c 100644
--- a/examples/location/mapviewer/mapviewer.qml
+++ b/examples/location/mapviewer/mapviewer.qml
@@ -44,7 +44,6 @@ import QtLocation 5.3
import QtPositioning 5.2
import QtLocation.examples 5.0 as OwnControls
import "content/map"
-import "content/dialogs"
ApplicationWindow {
id: appWindow
@@ -57,6 +56,26 @@ ApplicationWindow {
property variant minimap
property variant parameters
+ //defaults
+ property variant fromCoordinate: QtPositioning.coordinate(-27.575, 153.088)
+ property variant toCoordinate: QtPositioning.coordinate(-27.465, 153.023)
+
+ Address {
+ id :fromAddress
+ street: "53 Brandl St"
+ city: "Eight Mile Plains"
+ country: "Australia"
+ state : ""
+ postalCode: ""
+ }
+
+ Address {
+ id: toAddress
+ street: "Heal st"
+ city: "New Farm"
+ country: "Australia"
+ }
+
menuBar: MainMenu {
id: mainMenu
@@ -89,8 +108,26 @@ ApplicationWindow {
map.activeMapType = mapType
}
+
onSelectTool: {
- page.state = tool;
+ if (tool === "AddressRoute") {
+ stackView.push({ item: Qt.resolvedUrl("RouteAddress.qml") ,
+ properties: { "plugin": map.plugin,
+ "toAddress": toAddress,
+ "fromAddress": fromAddress}})
+ stackView.currentItem.showRoute.connect(showRoute)
+ stackView.currentItem.showMessage.connect(showMessage)
+ stackView.currentItem.closeForm.connect(closeForm)
+ } else if (tool === "CoordinateRoute") {
+ stackView.push({ item: Qt.resolvedUrl("RouteCoordinate.qml") ,
+ properties: { "toCoordinate": toCoordinate,
+ "fromCoordinate": fromCoordinate}})
+ stackView.currentItem.showRoute.connect(showRoute)
+ stackView.currentItem.closeForm.connect(closeForm)
+ } else {
+ stackView.pop(page)
+ page.state = tool
+ }
}
onToggleMapState: {
@@ -113,6 +150,35 @@ ApplicationWindow {
}
page.state = ""
}
+
+ //! [routerequest0]
+ function showRoute(startCoordinate, endCoordinate) {
+ // clear away any old data in the query
+ map.routeQuery.clearWaypoints();
+
+ // add the start and end coords as waypoints on the route
+ map.routeQuery.addWaypoint(startCoordinate)
+ map.routeQuery.addWaypoint(endCoordinate)
+ map.routeQuery.travelModes = RouteQuery.CarTravel
+ map.routeQuery.routeOptimizations = RouteQuery.FastestRoute
+ //! [routerequest0]
+
+ //! [routerequest0 feature weight]
+ for (var i=0; i<9; i++) {
+ map.routeQuery.setFeatureWeight(i, 0)
+ }
+ //for (var i=0; i<routeDialog.features.length; i++) {
+ // map.routeQuery.setFeatureWeight(routeDialog.features[i], RouteQuery.AvoidFeatureWeight)
+ //}
+ //! [routerequest0 feature weight]
+
+ //! [routerequest1]
+ map.routeModel.update();
+ // center the map on the start coord
+ map.center = startCoordinate;
+ stackView.pop(page);
+ //! [routerequest1]
+ }
}
function showMessage(title,message,backPage) {
@@ -129,6 +195,10 @@ ApplicationWindow {
stackView.pop(backPage)
}
+ function closeForm() {
+ stackView.pop(page)
+ }
+
function geocodeMessage(){
var street, district, city, county, state, countryCode, country, postalCode, latitude, longitude, text
latitude = Math.round(map.geocodeModel.get(0).coordinate.latitude * 10000) / 10000
@@ -201,7 +271,7 @@ ApplicationWindow {
page.state = "Coordinates";\
}\
onRouteError: {\
- showMessage(qsTr("Route Error"),qsTr("Unable to find a route for the given points"));\
+ showMessage(qsTr("Route Error"),qsTr("Unable to find a route for the given points"),page);\
}\
onRequestLocale:{\
page.state = "Locale";\
@@ -225,7 +295,6 @@ ApplicationWindow {
}',page)
map.plugin = plugin;
map.zoomLevel = (map.maximumZoomLevel - map.minimumZoomLevel)/2
- tempGeocodeModel.plugin = plugin;
}
function getPlugins(){
@@ -257,6 +326,7 @@ ApplicationWindow {
}
+
StackView {
id: stackView
anchors.fill: parent
@@ -273,129 +343,6 @@ ApplicationWindow {
//=====================Dialogs=====================
- //Route Dialog
- //! [routedialog0]
- RouteDialog {
- id: routeDialog
-
- property variant startCoordinate
- property variant endCoordinate
-
- //! [routedialog0]
- Address { id: startAddress }
- Address { id: endAddress }
-
- z: backgroundRect.z + 2
-
- GeocodeModel {
- id: tempGeocodeModel
-
- property int success: 0
-
- onCountChanged: {
- if (success == 1 && count == 1) {
- query = endAddress
- update();
- }
- }
-
- onStatusChanged: {
- if ((status == GeocodeModel.Ready) && (count == 1)) {
- success++
- if (success == 1){
- startCoordinate.latitude = get(0).coordinate.latitude
- startCoordinate.longitude = get(0).coordinate.longitude
- }
- if (success == 2) {
- endCoordinate.latitude = get(0).coordinate.latitude
- endCoordinate.longitude = get(0).coordinate.longitude
- success = 0
- routeDialog.calculateRoute()
- }
- }
- else if ((status == GeocodeModel.Ready) || (status == GeocodeModel.Error)){
- var st = (success == 0 ) ? "start" : "end"
- success = 0
- map.routeModel.clearAll()
- if ((status == GeocodeModel.Ready) && (count == 0 )) {
- showMessage(qsTr("Geocode Error"),qsTr("Unsuccessful geocode"));
- }
- else if (status == GeocodeModel.Error) {
- showMessage(qsTr("Geocode Error"),
- qsTr("Unable to find location for the") + " " +
- st + " " +qsTr("point"))
- }
- else if ((status == GeocodeModel.Ready) && (count > 1 )){
- showMessage(qsTr("Ambiguous geocode"),
- count + " " + qsTr("results found for the") +
- " " + st + " " +qsTr("point, please specify location"))
- }
- }
- }
- }
-
- onGoButtonClicked: {
- tempGeocodeModel.reset()
- if (routeDialog.byCoordinates) {
- startCoordinate = QtPositioning.coordinate(parseFloat(routeDialog.startLatitude),
- parseFloat(routeDialog.startLongitude));
- endCoordinate = QtPositioning.coordinate(parseFloat(routeDialog.endLatitude),
- parseFloat(routeDialog.endLongitude));
-
- calculateRoute()
- }
- else {
- startAddress.country = routeDialog.startCountry
- startAddress.street = routeDialog.startStreet
- startAddress.city = routeDialog.startCity
-
- endAddress.country = routeDialog.endCountry
- endAddress.street = routeDialog.endStreet
- endAddress.city = routeDialog.endCity
-
- tempGeocodeModel.query = startAddress
- tempGeocodeModel.update();
- }
- page.state = ""
- }
-
- onCancelButtonClicked: {
- page.state = ""
- }
-
- //! [routerequest0]
- function calculateRoute() {
- // clear away any old data in the query
- map.routeQuery.clearWaypoints();
-
- // add the start and end coords as waypoints on the route
- map.routeQuery.addWaypoint(startCoordinate)
- map.routeQuery.addWaypoint(endCoordinate)
- map.routeQuery.travelModes = routeDialog.travelMode
- map.routeQuery.routeOptimizations = routeDialog.routeOptimization
- //! [routerequest0]
-
- //! [routerequest0 feature weight]
- for (var i=0; i<9; i++) {
- map.routeQuery.setFeatureWeight(i, 0)
- }
-
- for (var i=0; i<routeDialog.features.length; i++) {
- map.routeQuery.setFeatureWeight(routeDialog.features[i], RouteQuery.AvoidFeatureWeight)
- }
- //! [routerequest0 feature weight]
-
- //! [routerequest1]
- map.routeModel.update();
-
- // center the map on the start coord
- map.center = startCoordinate;
- //! [routerequest1]
- }
- //! [routedialog1]
- }
- //! [routedialog1]
-
//Geocode Dialog
//! [geocode0]
OwnControls.InputDialog {
@@ -519,10 +466,6 @@ ApplicationWindow {
PropertyChanges { target: reverseGeocodeDialog; opacity: 1 }
},
State {
- name: "Route"
- PropertyChanges { target: routeDialog; opacity: 1 }
- },
- State {
name: "Geocode"
PropertyChanges { target: geocodeDialog; opacity: 1 }
},
@@ -543,10 +486,6 @@ ApplicationWindow {
NumberAnimation { properties: "opacity" ; duration: 500; easing.type: Easing.Linear }
},
Transition {
- to: "Route"
- NumberAnimation { properties: "opacity" ; duration: 500; easing.type: Easing.Linear }
- },
- Transition {
to: "Geocode"
NumberAnimation { properties: "opacity" ; duration: 500; easing.type: Easing.Linear }
},
diff --git a/examples/location/mapviewer/mapviewerwrapper.qrc b/examples/location/mapviewer/mapviewerwrapper.qrc
index 050fa7fa..0276d50c 100644
--- a/examples/location/mapviewer/mapviewerwrapper.qrc
+++ b/examples/location/mapviewer/mapviewerwrapper.qrc
@@ -8,7 +8,6 @@
<file>content/map/RectangleItem.qml</file>
<file>content/map/CircleItem.qml</file>
<file>content/map/PolygonItem.qml</file>
- <file>content/dialogs/RouteDialog.qml</file>
<file>content/map/ImageItem.qml</file>
<file>content/map/MiniMap.qml</file>
<file>MainMenu.qml</file>
@@ -19,5 +18,7 @@
<file>forms/RouteAddressForm.ui.qml</file>
<file>forms/LocaleForm.ui.qml</file>
<file>Message.qml</file>
+ <file>RouteCoordinate.qml</file>
+ <file>RouteAddress.qml</file>
</qresource>
</RCC>