diff options
author | Michal Klocek <michal.klocek@theqtcompany.com> | 2015-02-10 18:17:11 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@theqtcompany.com> | 2015-04-13 14:53:33 +0000 |
commit | b07ecac7cd8844af2818fb732a02b212a91b9a1c (patch) | |
tree | 1585e5cfdb31b6053b75e97b3f6f156ffd03cc4d /examples/location | |
parent | 306ba72d81e50ccb21271fc961581d0de5ba5f49 (diff) | |
download | qtlocation-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.qml | 3 | ||||
-rw-r--r-- | examples/location/mapviewer/RouteAddress.qml | 144 | ||||
-rw-r--r-- | examples/location/mapviewer/RouteCoordinate.qml | 85 | ||||
-rw-r--r-- | examples/location/mapviewer/content/dialogs/RouteDialog.qml | 454 | ||||
-rw-r--r-- | examples/location/mapviewer/mapviewer.qml | 209 | ||||
-rw-r--r-- | examples/location/mapviewer/mapviewerwrapper.qrc | 3 |
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> |