diff options
Diffstat (limited to 'examples/location/mapviewer/content/dialogs/RouteDialog.qml')
-rw-r--r-- | examples/location/mapviewer/content/dialogs/RouteDialog.qml | 454 |
1 files changed, 454 insertions, 0 deletions
diff --git a/examples/location/mapviewer/content/dialogs/RouteDialog.qml b/examples/location/mapviewer/content/dialogs/RouteDialog.qml new file mode 100644 index 00000000..73e5f3d1 --- /dev/null +++ b/examples/location/mapviewer/content/dialogs/RouteDialog.qml @@ -0,0 +1,454 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc and its Subsidiary(-ies) 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.0 +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 = "" + } + } +} |