From 0ed2885ececf079f16b42fec60a4dc86285b5101 Mon Sep 17 00:00:00 2001 From: zheng_wenlong Date: Wed, 7 Nov 2018 11:06:42 +0900 Subject: add tbtnavi source --- app/api/GPS.qml | 93 --- app/api/GeoClue.qml | 82 --- app/api/GeoFence.qml | 88 --- app/app.pri | 13 +- app/app.pro | 67 +- app/app.qrc | 8 + app/config.tests/libhomescreen/.qmake.stash | 24 + app/config.tests/libhomescreen/libhomescreen.cpp | 8 + app/config.tests/libhomescreen/libhomescreen.pro | 5 + app/config.tests/qlibwindowmanager/.qmake.stash | 24 + .../qlibwindowmanager/qlibwindowmanager.cpp | 8 + .../qlibwindowmanager/qlibwindowmanager.pro | 5 + app/dbus_client.cpp | 116 ++++ app/dbus_client.h | 46 ++ app/file_operation.cpp | 92 +++ app/file_operation.h | 40 ++ app/forms/Geocode.qml | 81 --- app/forms/GeocodeForm.ui.qml | 173 ----- app/forms/Locale.qml | 82 --- app/forms/LocaleForm.ui.qml | 153 ----- app/forms/Message.qml | 58 -- app/forms/MessageForm.ui.qml | 106 ---- app/forms/ReverseGeocode.qml | 75 --- app/forms/ReverseGeocodeForm.ui.qml | 140 ----- app/forms/RouteAddress.qml | 136 ---- app/forms/RouteAddressForm.ui.qml | 167 ----- app/forms/RouteCoordinate.qml | 79 --- app/forms/RouteCoordinateForm.ui.qml | 173 ----- app/forms/RouteList.qml | 87 --- app/forms/RouteListDelegate.qml | 82 --- app/forms/RouteListHeader.qml | 84 --- app/helper.js | 81 --- app/images/Thumbs.db | Bin 0 -> 3584 bytes app/images/arrow-0-large.png | Bin 0 -> 3587 bytes app/images/arrow-l-180-full.png | Bin 0 -> 21134 bytes app/images/arrow-l-180-large.png | Bin 0 -> 3982 bytes app/images/arrow-l-30-full.png | Bin 0 -> 17061 bytes app/images/arrow-l-30-large.png | Bin 0 -> 3817 bytes app/images/arrow-l-45-full.png | Bin 0 -> 17970 bytes app/images/arrow-l-45-large.png | Bin 0 -> 3749 bytes app/images/arrow-l-75-full.png | Bin 0 -> 22426 bytes app/images/arrow-l-75-large.png | Bin 0 -> 3970 bytes app/images/arrow-r-180-full.png | Bin 0 -> 21211 bytes app/images/arrow-r-180-large.png | Bin 0 -> 3966 bytes app/images/arrow-r-30-full.png | Bin 0 -> 16478 bytes app/images/arrow-r-30-large.png | Bin 0 -> 3808 bytes app/images/arrow-r-45-full.png | Bin 0 -> 17690 bytes app/images/arrow-r-45-large.png | Bin 0 -> 3763 bytes app/images/arrow-r-75-full.png | Bin 0 -> 23047 bytes app/images/arrow-r-75-large.png | Bin 0 -> 4036 bytes app/images/car-marker.png | Bin 0 -> 6248 bytes app/images/destination.png | Bin 0 -> 5375 bytes app/images/destination_full.png | Bin 0 -> 16658 bytes app/images/images.qrc | 28 + app/images/marker-end.png | Bin 0 -> 6199 bytes app/images/marker-green.png | Bin 0 -> 958 bytes app/images/simple-background-white.png | Bin 0 -> 4548 bytes app/images/simple-bottom-background-black.png | Bin 0 -> 4561 bytes app/main.cpp | 200 +++--- app/map/CircleItem.qml | 58 -- app/map/ImageItem.qml | 61 -- app/map/MapComponent.qml | 693 --------------------- app/map/Marker.qml | 116 ---- app/map/PolygonItem.qml | 63 -- app/map/PolylineItem.qml | 57 -- app/map/RectangleItem.qml | 59 -- app/mapviewer.qml | 486 --------------- app/mapviewer.qrc | 40 -- app/menus/ItemPopupMenu.qml | 53 -- app/menus/MainMenu.qml | 126 ---- app/menus/MapPopupMenu.qml | 64 -- app/menus/MarkerPopupMenu.qml | 76 --- app/org.agl.naviapi.xml | 28 + app/qcheapruler.cpp | 117 ++++ app/qcheapruler.hpp | 57 ++ app/qml/Main.qml | 25 + app/qml/MapWindow.qml | 283 +++++++++ app/qml/TbtBoard.qml | 187 ++++++ app/qml/qmldir | 2 + app/resources/car.png | Bin 78074 -> 0 bytes app/resources/icon.png | Bin 1859 -> 0 bytes app/resources/marker.png | Bin 752 -> 0 bytes app/resources/scale.png | Bin 98 -> 0 bytes app/resources/scale_end.png | Bin 93 -> 0 bytes 84 files changed, 1235 insertions(+), 4120 deletions(-) delete mode 100644 app/api/GPS.qml delete mode 100644 app/api/GeoClue.qml delete mode 100644 app/api/GeoFence.qml create mode 100644 app/app.qrc create mode 100644 app/config.tests/libhomescreen/.qmake.stash create mode 100644 app/config.tests/libhomescreen/libhomescreen.cpp create mode 100644 app/config.tests/libhomescreen/libhomescreen.pro create mode 100644 app/config.tests/qlibwindowmanager/.qmake.stash create mode 100644 app/config.tests/qlibwindowmanager/qlibwindowmanager.cpp create mode 100644 app/config.tests/qlibwindowmanager/qlibwindowmanager.pro create mode 100644 app/dbus_client.cpp create mode 100644 app/dbus_client.h create mode 100644 app/file_operation.cpp create mode 100644 app/file_operation.h delete mode 100644 app/forms/Geocode.qml delete mode 100644 app/forms/GeocodeForm.ui.qml delete mode 100644 app/forms/Locale.qml delete mode 100644 app/forms/LocaleForm.ui.qml delete mode 100644 app/forms/Message.qml delete mode 100644 app/forms/MessageForm.ui.qml delete mode 100644 app/forms/ReverseGeocode.qml delete mode 100644 app/forms/ReverseGeocodeForm.ui.qml delete mode 100644 app/forms/RouteAddress.qml delete mode 100644 app/forms/RouteAddressForm.ui.qml delete mode 100644 app/forms/RouteCoordinate.qml delete mode 100644 app/forms/RouteCoordinateForm.ui.qml delete mode 100644 app/forms/RouteList.qml delete mode 100644 app/forms/RouteListDelegate.qml delete mode 100644 app/forms/RouteListHeader.qml delete mode 100644 app/helper.js create mode 100644 app/images/Thumbs.db create mode 100755 app/images/arrow-0-large.png create mode 100755 app/images/arrow-l-180-full.png create mode 100755 app/images/arrow-l-180-large.png create mode 100755 app/images/arrow-l-30-full.png create mode 100755 app/images/arrow-l-30-large.png create mode 100755 app/images/arrow-l-45-full.png create mode 100755 app/images/arrow-l-45-large.png create mode 100755 app/images/arrow-l-75-full.png create mode 100755 app/images/arrow-l-75-large.png create mode 100755 app/images/arrow-r-180-full.png create mode 100755 app/images/arrow-r-180-large.png create mode 100755 app/images/arrow-r-30-full.png create mode 100755 app/images/arrow-r-30-large.png create mode 100755 app/images/arrow-r-45-full.png create mode 100755 app/images/arrow-r-45-large.png create mode 100755 app/images/arrow-r-75-full.png create mode 100755 app/images/arrow-r-75-large.png create mode 100755 app/images/car-marker.png create mode 100644 app/images/destination.png create mode 100644 app/images/destination_full.png create mode 100644 app/images/images.qrc create mode 100755 app/images/marker-end.png create mode 100644 app/images/marker-green.png create mode 100644 app/images/simple-background-white.png create mode 100755 app/images/simple-bottom-background-black.png delete mode 100644 app/map/CircleItem.qml delete mode 100644 app/map/ImageItem.qml delete mode 100644 app/map/MapComponent.qml delete mode 100644 app/map/Marker.qml delete mode 100644 app/map/PolygonItem.qml delete mode 100644 app/map/PolylineItem.qml delete mode 100644 app/map/RectangleItem.qml delete mode 100644 app/mapviewer.qml delete mode 100644 app/mapviewer.qrc delete mode 100644 app/menus/ItemPopupMenu.qml delete mode 100644 app/menus/MainMenu.qml delete mode 100644 app/menus/MapPopupMenu.qml delete mode 100644 app/menus/MarkerPopupMenu.qml create mode 100644 app/org.agl.naviapi.xml create mode 100644 app/qcheapruler.cpp create mode 100644 app/qcheapruler.hpp create mode 100644 app/qml/Main.qml create mode 100644 app/qml/MapWindow.qml create mode 100644 app/qml/TbtBoard.qml create mode 100644 app/qml/qmldir delete mode 100644 app/resources/car.png delete mode 100644 app/resources/icon.png delete mode 100644 app/resources/marker.png delete mode 100644 app/resources/scale.png delete mode 100644 app/resources/scale_end.png (limited to 'app') diff --git a/app/api/GPS.qml b/app/api/GPS.qml deleted file mode 100644 index 679c66e..0000000 --- a/app/api/GPS.qml +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2016 The Qt Company Ltd. - * Copyright (C) 2017 Konsulko Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import QtQuick 2.6 -import QtPositioning 5.5 -import QtWebSockets 1.0 - -WebSocket { - id: root - active: true - url: bindingAddress - - property string statusString: "waiting..." - property string apiString: "gps" - property string payloadLength: "9999" - - property bool loop_state: false - property bool running: false - - readonly property var msgid: { - "call": 2, - "retok": 3, - "reterr": 4, - "event": 5 - } - - onTextMessageReceived: { - var json = JSON.parse(message) - //console.debug("Raw response: " + message) - var request = json[2].request - var response = json[2].response - //console.debug("response: " + JSON.stringify(response)) - switch (json[0]) { - case msgid.call: - break - case msgid.retok: - break - case msgid.reterr: - root.statusString = "Bad return value, binding probably not installed" - break - case msgid.event: - var payload = JSON.parse(JSON.stringify(json[2])) - var event = payload.event - if (event == "gps/location") { - var data = json[2].data - var latitude = data.latitude - var longitude = data.longitude - var location = QtPositioning.coordinate(latitude, longitude) - if (map.followme || !map.location) { - map.center = location - } - map.location = location - if (data.speed > 1) { - map.updateCompass(data.track) - } - } - break - } - } - - onStatusChanged: { - switch (status) { - case WebSocket.Open: - console.debug("onStatusChanged: Open") - sendSocketMessage("subscribe", { value: "location" }) - break - case WebSocket.Error: - root.statusString = "WebSocket error: " + root.errorString - break - } - } - - function sendSocketMessage(verb, parameter) { - var requestJson = [ msgid.call, payloadLength, apiString + '/' - + verb, parameter ] - console.debug("sendSocketMessage: " + JSON.stringify(requestJson)) - sendTextMessage(JSON.stringify(requestJson)) - } -} diff --git a/app/api/GeoClue.qml b/app/api/GeoClue.qml deleted file mode 100644 index 6c8b2f1..0000000 --- a/app/api/GeoClue.qml +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2016 The Qt Company Ltd. - * Copyright (C) 2017 Konsulko Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import QtQuick 2.6 -import QtPositioning 5.5 -import QtWebSockets 1.0 - -WebSocket { - id: root - active: true - url: bindingAddress - - property string statusString: "waiting..." - property string apiString: "geoclue" - property string payloadLength: "9999" - - property bool loop_state: false - property bool running: false - - readonly property var msgid: { - "call": 2, - "retok": 3, - "reterr": 4, - "event": 5 - } - - onTextMessageReceived: { - var json = JSON.parse(message) - console.debug("Raw response: " + message) - var request = json[2].request - var response = json[2].response - console.debug("response: " + JSON.stringify(response)) - switch (json[0]) { - case msgid.call: - break - case msgid.retok: - var latitude = response.latitude - var longitude = response.longitude - map.location = QtPositioning.coordinate(latitude, longitude) - map.center = map.location - break - case msgid.reterr: - root.statusString = "Bad return value, binding probably not installed" - break - case msgid.event: - break - } - } - - onStatusChanged: { - switch (status) { - case WebSocket.Open: - console.debug("onStatusChanged: Open") - sendSocketMessage("location", 'None') - break - case WebSocket.Error: - root.statusString = "WebSocket error: " + root.errorString - break - } - } - - function sendSocketMessage(verb, parameter) { - var requestJson = [ msgid.call, payloadLength, apiString + '/' - + verb, parameter ] - console.debug("sendSocketMessage: " + JSON.stringify(requestJson)) - sendTextMessage(JSON.stringify(requestJson)) - } -} diff --git a/app/api/GeoFence.qml b/app/api/GeoFence.qml deleted file mode 100644 index 7061984..0000000 --- a/app/api/GeoFence.qml +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (C) 2016 The Qt Company Ltd. - * Copyright (C) 2017 Konsulko Group - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import QtQuick 2.6 -import QtPositioning 5.5 -import QtWebSockets 1.0 - -WebSocket { - id: root - active: true - url: bindingAddress - - property string statusString: "waiting..." - property string apiString: "geofence" - property string payloadLength: "9999" - - property bool loop_state: false - property bool running: false - - readonly property var msgid: { - "call": 2, - "retok": 3, - "reterr": 4, - "event": 5 - } - - onTextMessageReceived: { - var json = JSON.parse(message) - console.debug("Raw response: " + message) - var request = json[2].request - var response = json[2].response - console.debug("response: " + JSON.stringify(response)) - switch (json[0]) { - case msgid.call: - break - case msgid.retok: - break - case msgid.reterr: - root.statusString = "Bad return value, binding probably not installed" - break - case msgid.event: - var payload = JSON.parse(JSON.stringify(json[2])) - var event = payload.event - if (event == "geofence/fence") { - var data = json[2].data - console.log("geofence event - name: " + data.name + " state: " + data.state) - } - break - } - } - - onStatusChanged: { - switch (status) { - case WebSocket.Open: - console.debug("onStatusChanged: Open") - //sendSocketMessage("add_fence", { name: "Stop Sign", - // bbox: { min_longitude: -122.499217, max_longitude: -122.498732, - // min_latitude: 45.600136, max_latitude: 45.600384 } - // }) - sendSocketMessage("subscribe", { value: "fence" }) - break - case WebSocket.Error: - root.statusString = "WebSocket error: " + root.errorString - break - } - } - - function sendSocketMessage(verb, parameter) { - var requestJson = [ msgid.call, payloadLength, apiString + '/' - + verb, parameter ] - console.debug("sendSocketMessage: " + JSON.stringify(requestJson)) - sendTextMessage(JSON.stringify(requestJson)) - } -} diff --git a/app/app.pri b/app/app.pri index c3b1fd1..a1f6562 100644 --- a/app/app.pri +++ b/app/app.pri @@ -1,13 +1,18 @@ -TEMPLATE = app -QMAKE_LFLAGS += "-Wl,--hash-style=gnu -Wl,--as-needed" - load(configure) + qtCompileTest(libhomescreen) +qtCompileTest(qlibwindowmanager) config_libhomescreen { CONFIG += link_pkgconfig - PKGCONFIG += homescreen + PKGCONFIG += libhomescreen DEFINES += HAVE_LIBHOMESCREEN } +config_qlibwindowmanager { + CONFIG += link_pkgconfig + PKGCONFIG += qlibwindowmanager + DEFINES += HAVE_QLIBWINDOWMANAGER +} + DESTDIR = $${OUT_PWD}/../package/root/bin diff --git a/app/app.pro b/app/app.pro index 4eef717..594eca3 100644 --- a/app/app.pro +++ b/app/app.pro @@ -1,47 +1,36 @@ -TARGET = navigation +TARGET = tbtnavi +TEMPLATE = app -CONFIG += link_pkgconfig -PKGCONFIG += libhomescreen qlibwindowmanager +QT += qml network quick positioning location sql widgets dbus -QT = qml network quick positioning location quickcontrols2 +CONFIG += c++14 -static { - QTPLUGIN += qtvirtualkeyboardplugin - QT += svg +include(app.pri) + +ios|android { + QT -= widgets } -SOURCES += main.cpp +SOURCES += \ + main.cpp \ + qcheapruler.cpp \ + dbus_client.cpp \ + file_operation.cpp + +HEADERS += \ + qcheapruler.hpp \ + dbus_client.h \ + file_operation.h + +INCLUDEPATH += \ + ../include + +OTHER_FILES += \ + qmapboxlgapp.qml RESOURCES += \ - mapviewer.qrc - -OTHER_FILES +=mapviewer.qml \ - helper.js \ - map/MapComponent.qml \ - map/Marker.qml \ - map/CircleItem.qml \ - map/RectangleItem.qml \ - map/PolylineItem.qml \ - map/PolygonItem.qml \ - map/ImageItem.qml \ - menus/ItemPopupMenu.qml \ - menus/MainMenu.qml \ - menus/MapPopupMenu.qml \ - menus/MarkerPopupMenu \ - forms/Geocode.qml \ - forms/GeocodeForm.ui.qml\ - forms/Message.qml \ - forms/MessageForm.ui.qml \ - forms/ReverseGeocode.qml \ - forms/ReverseGeocodeForm.ui.qml \ - forms/RouteCoordinate.qml \ - forms/Locale.qml \ - forms/LocaleForm.ui.qml \ - forms/RouteAddress.qml \ - forms/RouteAddressForm.ui.qml \ - forms/RouteCoordinateForm.ui.qml \ - forms/RouteList.qml \ - forms/RouteListDelegate.qml \ - forms/RouteListHeader.qml + images/images.qrc \ + app.qrc -include(app.pri) +DBUS_ADAPTORS += org.agl.naviapi.xml +DBUS_INTERFACES += org.agl.naviapi.xml diff --git a/app/app.qrc b/app/app.qrc new file mode 100644 index 0000000..7ffb6e2 --- /dev/null +++ b/app/app.qrc @@ -0,0 +1,8 @@ + + + qml/qmldir + qml/Main.qml + qml/MapWindow.qml + qml/TbtBoard.qml + + diff --git a/app/config.tests/libhomescreen/.qmake.stash b/app/config.tests/libhomescreen/.qmake.stash new file mode 100644 index 0000000..d0807e7 --- /dev/null +++ b/app/config.tests/libhomescreen/.qmake.stash @@ -0,0 +1,24 @@ +QMAKE_CXX.INCDIRS = \ + /usr/include/c++/5 \ + /usr/include/x86_64-linux-gnu/c++/5 \ + /usr/include/c++/5/backward \ + /usr/lib/gcc/x86_64-linux-gnu/5/include \ + /usr/local/include \ + /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed \ + /usr/include/x86_64-linux-gnu \ + /usr/include +QMAKE_CXX.LIBDIRS = \ + /usr/lib/gcc/x86_64-linux-gnu/5 \ + /usr/lib/x86_64-linux-gnu \ + /usr/lib \ + /lib/x86_64-linux-gnu \ + /lib +QMAKE_CXX.QT_COMPILER_STDCXX = 199711L +QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 5 +QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 4 +QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0 +QMAKE_CXX.COMPILER_MACROS = \ + QT_COMPILER_STDCXX \ + QMAKE_GCC_MAJOR_VERSION \ + QMAKE_GCC_MINOR_VERSION \ + QMAKE_GCC_PATCH_VERSION diff --git a/app/config.tests/libhomescreen/libhomescreen.cpp b/app/config.tests/libhomescreen/libhomescreen.cpp new file mode 100644 index 0000000..d698b05 --- /dev/null +++ b/app/config.tests/libhomescreen/libhomescreen.cpp @@ -0,0 +1,8 @@ +#include + +int main(int argc,char **argv) +{ + LibHomeScreen libHomeScreen; + return 0; +} + diff --git a/app/config.tests/libhomescreen/libhomescreen.pro b/app/config.tests/libhomescreen/libhomescreen.pro new file mode 100644 index 0000000..7d43112 --- /dev/null +++ b/app/config.tests/libhomescreen/libhomescreen.pro @@ -0,0 +1,5 @@ +SOURCES = libhomescreen.cpp + +CONFIG -= qt +CONFIG += link_pkgconfig +PKGCONFIG += libhomescreen diff --git a/app/config.tests/qlibwindowmanager/.qmake.stash b/app/config.tests/qlibwindowmanager/.qmake.stash new file mode 100644 index 0000000..d0807e7 --- /dev/null +++ b/app/config.tests/qlibwindowmanager/.qmake.stash @@ -0,0 +1,24 @@ +QMAKE_CXX.INCDIRS = \ + /usr/include/c++/5 \ + /usr/include/x86_64-linux-gnu/c++/5 \ + /usr/include/c++/5/backward \ + /usr/lib/gcc/x86_64-linux-gnu/5/include \ + /usr/local/include \ + /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed \ + /usr/include/x86_64-linux-gnu \ + /usr/include +QMAKE_CXX.LIBDIRS = \ + /usr/lib/gcc/x86_64-linux-gnu/5 \ + /usr/lib/x86_64-linux-gnu \ + /usr/lib \ + /lib/x86_64-linux-gnu \ + /lib +QMAKE_CXX.QT_COMPILER_STDCXX = 199711L +QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 5 +QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 4 +QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0 +QMAKE_CXX.COMPILER_MACROS = \ + QT_COMPILER_STDCXX \ + QMAKE_GCC_MAJOR_VERSION \ + QMAKE_GCC_MINOR_VERSION \ + QMAKE_GCC_PATCH_VERSION diff --git a/app/config.tests/qlibwindowmanager/qlibwindowmanager.cpp b/app/config.tests/qlibwindowmanager/qlibwindowmanager.cpp new file mode 100644 index 0000000..bb95c93 --- /dev/null +++ b/app/config.tests/qlibwindowmanager/qlibwindowmanager.cpp @@ -0,0 +1,8 @@ +#include + +int main(int argc,char **argv) +{ + QLibWindowmanager qwm; + return 0; +} + diff --git a/app/config.tests/qlibwindowmanager/qlibwindowmanager.pro b/app/config.tests/qlibwindowmanager/qlibwindowmanager.pro new file mode 100644 index 0000000..cb51d98 --- /dev/null +++ b/app/config.tests/qlibwindowmanager/qlibwindowmanager.pro @@ -0,0 +1,5 @@ +SOURCES = qlibwindowmanager.cpp + +CONFIG += qt +CONFIG += link_pkgconfig +PKGCONFIG += qlibwindowmanager diff --git a/app/dbus_client.cpp b/app/dbus_client.cpp new file mode 100644 index 0000000..6b5b5fb --- /dev/null +++ b/app/dbus_client.cpp @@ -0,0 +1,116 @@ +#include "dbus_client.h" + +dbus_client::dbus_client(const QString &pathName, + const QString &objName, + const QString &serverName, + QObject *parent) : + m_serverName(serverName), + m_pathName(pathName + serverName), + m_objName(objName + serverName) +{ + //DBus & api ini + initDBus(); + initAPIs(parent); +} + +dbus_client::~dbus_client(){} + +void dbus_client::initDBus(){ + + new NaviapiAdaptor(this); + + //make a connect session to navigation service(add route info) + if (!QDBusConnection::sessionBus().connect( + QString(), + QString(), + m_pathName, + "signalRouteInfo", + this, + SLOT(addRoutePointsSlot(double, double, double, double)))) { //slot + qDebug() << m_serverName << "sessionBus.connect(): signalRouteInfo failed"; + } + + //make a connect session to navigation service(current postion info) + if (!QDBusConnection::sessionBus().connect( + QString(), + QString(), + m_pathName, + "signalPosInfo", + this, + SLOT(positionSlot(double, double, double, double)))) { //slot + qDebug() << m_serverName << "sessionBus.connect(): signalPosInfo failed"; + } + + //make a connect session to navigation service(when demo stopped) + if (!QDBusConnection::sessionBus().connect( + QString(), + QString(), + m_pathName, + "signalStopDemo", + this, + SLOT(stopdemoSlot()))) { //slot + qDebug() << m_serverName << "sessionBus.connect(): signalStopDemo failed"; + } + + //make a connect session to navigation service(when arrived destination) + if (!QDBusConnection::sessionBus().connect( + QString(), + QString(), + m_pathName, + "signalArrvied", + this, + SLOT(arrivedestSlot()))) { //slot + qDebug() << m_serverName << "sessionBus.connect(): signalArrvied failed"; + } +} + +void dbus_client::initAPIs(QObject *parent){ + //connect the signal to qml inside function(addRoutePointsQml -> do_addRoutePoint) + if(!QObject::connect(this, SIGNAL(addRoutePointsQml(QVariant, QVariant, QVariant, QVariant)), + parent, SLOT(do_addRoutePoint(QVariant, QVariant, QVariant, QVariant)))) { + qDebug() << m_serverName << "SIGNAL:addRoutePointsQml to qmlSLOT:do_addRoutePoint connect is failed"; + } + + //connect the signal to qml inside function(positionQml -> do_setCoordinate) + if(!QObject::connect(this, SIGNAL(positionQml(QVariant, QVariant,QVariant, QVariant)), + parent, SLOT(do_setCoordinate(QVariant, QVariant,QVariant, QVariant)))) { + qDebug() << m_serverName << "SIGNAL:positionQml to qmlSLOT:do_setCoordinate connect is failed"; + } + + //connect the signal to qml inside function(stopdemoQml -> do_stopnavidemo) + if(!QObject::connect(this, SIGNAL(stopdemoQml()), + parent, SLOT(do_stopnavidemo()))) { + qDebug() << m_serverName << "SIGNAL:stopdemoQml to qmlSLOT:do_stopnavidemo connect is failed"; + } + + //connect the signal to qml inside function(arrivedestQml -> do_arrivedest) + if(!QObject::connect(this, SIGNAL(arrivedestQml()), + parent, SLOT(do_arrivedest()))) { + qDebug() << m_serverName << "SIGNAL:arrivedestQml to qmlSLOT:do_arrivedest connect is failed"; + } +} + +//Signal&&Method +//addRoutePointsSlot -> addRoutePointsQml(use for qml) +void dbus_client::addRoutePointsSlot(double route_Lat_s, double route_Lon_s, double route_Lat_e, double route_Lon_e) +{ + emit addRoutePointsQml(route_Lat_s, route_Lon_s, route_Lat_e, route_Lon_e); +} + +//positionSlot -> positionQml(use for qml) +void dbus_client::positionSlot(double cur_Lat_p, double cur_Lon_p,double cur_direction, double cur_distance) +{ + emit positionQml(cur_Lat_p, cur_Lon_p,cur_direction,cur_distance); +} + +//stopdemoSlot -> stopdemoQml(use for qml) +void dbus_client::stopdemoSlot() +{ + emit stopdemoQml(); +} + +//arrivedestSlot -> arrivedestQml(use for qml) +void dbus_client::arrivedestSlot() +{ + emit arrivedestQml(); +} diff --git a/app/dbus_client.h b/app/dbus_client.h new file mode 100644 index 0000000..0abae31 --- /dev/null +++ b/app/dbus_client.h @@ -0,0 +1,46 @@ +#ifndef DBUS_CLIENT_H +#define DBUS_CLIENT_H + +#include "naviapi_interface.h" +#include "naviapi_adaptor.h" +#include + +class dbus_client : public QObject{ + Q_OBJECT + QString m_serverName; + QString m_pathName; + QString m_objName; + +public: + dbus_client(const QString &pathName, + const QString &objName, + const QString &serverName, + QObject *parent = nullptr); + ~dbus_client(); + +private: + //DBus & API init + void initDBus(); + void initAPIs(QObject*); + +signals: + //notify add routepoints signal to qml + void addRoutePointsQml(QVariant, QVariant, QVariant, QVariant); + //notify current position signal to qml + void positionQml(QVariant, QVariant,QVariant, QVariant); + //notify stop demo signal to qml + void stopdemoQml(); + //notify arrive destination signal to qml + void arrivedestQml(); + +private slots: + //receive add routepoints notify from navigation service + void addRoutePointsSlot(double route_Lat_s, double route_Lon_s, double route_Lat_e, double route_Lon_e); + //receive current position notify from navigation service + void positionSlot(double cur_Lat_p, double cur_Lon_p,double cur_direction, double cur_distance); + //receive stop demo notify from navigation service + void stopdemoSlot(); + //receive arrive destination notify from navigation service + void arrivedestSlot(); +}; +#endif // DBUS_CLIENT_H diff --git a/app/file_operation.cpp b/app/file_operation.cpp new file mode 100644 index 0000000..a191c76 --- /dev/null +++ b/app/file_operation.cpp @@ -0,0 +1,92 @@ +#include "file_operation.h" + +File_Operation::File_Operation(){ + initFileOperation(); +} + +File_Operation::~File_Operation(){ + +} + +void File_Operation::initFileOperation(){ + + m_mapAccessToken = ""; + m_car_speed = 60; // set default Km/h + m_update_interval = 100; // set default millisecond + m_start_latitude = 35.692396; // set default coordinate Tokyo Hilton + m_start_longitute = 139.691102; + + QFile file(NAVI_CONFIG_FILEPATH); + if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){ + fprintf(stderr,"Failed to open mapAccessToken file \"%s\": %m", qPrintable(NAVI_CONFIG_FILEPATH)); + return; + } + + QByteArray data = file.readAll(); + QJsonDocument jsonDoc(QJsonDocument::fromJson(data)); + QJsonObject jsonObj(jsonDoc.object()); + + if(jsonObj.contains("mapAccessToken")){ + m_mapAccessToken = jsonObj["mapAccessToken"].toString(); + }else{ + fprintf(stderr,"Failed to find mapAccessToken data \"%s\": %m", qPrintable(NAVI_CONFIG_FILEPATH)); + return; + } + if(jsonObj.contains("mapStyle")){ + m_mapStyle = jsonObj["mapStyle"].toString(); + }else{ + fprintf(stderr,"Failed to find mapStyle data \"%s\": %m", qPrintable(NAVI_CONFIG_FILEPATH)); + return; + } + + if(jsonObj.contains("speed")){ + m_car_speed = jsonObj["speed"].toDouble(); + }else{ + fprintf(stderr,"Failed to find speed data \"%s\": %m", qPrintable(NAVI_CONFIG_FILEPATH)); + return; + } + + if(jsonObj.contains("interval")){ + m_update_interval = jsonObj["interval"].toInt(); + }else{ + fprintf(stderr,"Failed to find interval data \"%s\": %m", qPrintable(NAVI_CONFIG_FILEPATH)); + return; + } + + if(jsonObj.contains("latitude")){ + m_start_latitude = jsonObj["latitude"].toDouble(); + }else{ + fprintf(stderr,"Failed to find latitude data \"%s\": %m", qPrintable(NAVI_CONFIG_FILEPATH)); + return; + } + + if(jsonObj.contains("longitute")){ + m_start_longitute = jsonObj["longitute"].toDouble(); + }else{ + fprintf(stderr,"Failed to find longitute data \"%s\": %m", qPrintable(NAVI_CONFIG_FILEPATH)); + return; + } + + file.close(); + + return; +} + +QString File_Operation::getMapAccessToken() { + return m_mapAccessToken; +} +QString File_Operation::getMapStyle() { + return m_mapStyle; +} +double File_Operation::getCarSpeed(){ + return m_car_speed; +} +int File_Operation::getUpdateInterval(){ + return m_update_interval; +} +double File_Operation::getStartLatitude(){ + return m_start_latitude; +} +double File_Operation::getStartLongitute(){ + return m_start_longitute; +} diff --git a/app/file_operation.h b/app/file_operation.h new file mode 100644 index 0000000..65df54a --- /dev/null +++ b/app/file_operation.h @@ -0,0 +1,40 @@ +#ifndef FILE_OPERATION_H +#define FILE_OPERATION_H +#include +#include +#include +#include +#include + +/****************************************************** + * Write navigation config in /etc/naviconfig.ini + ******************************************************/ +#define NAVI_CONFIG_FILEPATH "/etc/naviconfig.ini" + +class File_Operation: public QObject{ + + Q_OBJECT + + QString m_mapAccessToken; + QString m_mapStyle; + double m_car_speed; // set Km/h + int m_update_interval; // set millisecond + double m_start_latitude; + double m_start_longitute; + +public: + File_Operation(); + ~File_Operation(); + + Q_INVOKABLE QString getMapAccessToken(); + Q_INVOKABLE QString getMapStyle(); + Q_INVOKABLE double getCarSpeed(); + Q_INVOKABLE int getUpdateInterval(); + Q_INVOKABLE double getStartLatitude(); + Q_INVOKABLE double getStartLongitute(); + +private: + void initFileOperation(); +}; + +#endif // FILE_OPERATION_H diff --git a/app/forms/Geocode.qml b/app/forms/Geocode.qml deleted file mode 100644 index 9e27325..0000000 --- a/app/forms/Geocode.qml +++ /dev/null @@ -1,81 +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.5 -import QtPositioning 5.5 - -GeocodeForm { - - property variant address - signal showPlace(variant address) - signal closeForm() - - goButton.onClicked: { - // fill out the Address element - address.street = street.text - address.city = city.text - address.state = state.text - address.country = country.text - address.postalCode = postalCode.text - showPlace(address) - } - - clearButton.onClicked: { - street.text = "" - city.text = "" - state.text = "" - country.text = "" - postalCode.text = "" - } - - cancelButton.onClicked: { - closeForm() - } - - Component.onCompleted: { - street.text = address.street - city.text = address.city - state.text = address.state - country.text = address.country - postalCode.text = address.postalCode - } -} - - diff --git a/app/forms/GeocodeForm.ui.qml b/app/forms/GeocodeForm.ui.qml deleted file mode 100644 index 3ed715a..0000000 --- a/app/forms/GeocodeForm.ui.qml +++ /dev/null @@ -1,173 +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.5 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.2 - -Item { - property alias goButton: goButton - property alias clearButton: clearButton - property alias postalCode: postalCode - property alias street: street - property alias city: city - property alias state: state - property alias country: country - property alias cancelButton: cancelButton - Rectangle { - id: tabRectangle - y: 20 - height: tabTitle.height * 2 - color: "#46a2da" - anchors.rightMargin: 0 - anchors.leftMargin: 0 - anchors.left: parent.left - anchors.right: parent.right - - Label { - id: tabTitle - color: "#ffffff" - text: qsTr("Geocode") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - Item { - id: item2 - anchors.rightMargin: 20 - anchors.leftMargin: 20 - anchors.bottomMargin: 20 - anchors.topMargin: 20 - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.top: tabRectangle.bottom - - - GridLayout { - id: gridLayout3 - anchors.rightMargin: 0 - anchors.bottomMargin: 0 - anchors.leftMargin: 0 - anchors.topMargin: 0 - rowSpacing: 10 - rows: 1 - columns: 2 - anchors.fill: parent - - Label { - id: label2 - text: qsTr("Street") - } - - TextField { - id: street - Layout.fillWidth: true - } - - Label { - id: label3 - text: qsTr("City") - } - - TextField { - id: city - Layout.fillWidth: true - } - - Label { - id: label4 - text: qsTr("State") - } - - TextField { - id: state - Layout.fillWidth: true - } - - Label { - id: label5 - text: qsTr("Country") - } - - TextField { - id: country - Layout.fillWidth: true - } - - Label { - id: label6 - text: qsTr("Postal Code") - } - - TextField { - id: postalCode - Layout.fillWidth: true - } - - RowLayout { - id: rowLayout1 - Layout.columnSpan: 2 - Layout.alignment: Qt.AlignRight - - Button { - id: goButton - text: qsTr("Proceed") - } - - Button { - id: clearButton - text: qsTr("Clear") - } - - Button { - id: cancelButton - text: qsTr("Cancel") - } - } - - Item { - Layout.fillHeight: true - Layout.columnSpan: 2 - } - } - } -} diff --git a/app/forms/Locale.qml b/app/forms/Locale.qml deleted file mode 100644 index 6e76c98..0000000 --- a/app/forms/Locale.qml +++ /dev/null @@ -1,82 +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.5 -import QtPositioning 5.5 - -LocaleForm { - property string locale - signal selectLanguage(string language) - signal closeForm() - - goButton.onClicked: { - - if (!languageGroup.current) return - - if (otherRadioButton.checked) { - selectLanguage(language.text) - } else { - selectLanguage(languageGroup.current.text) - } - } - - clearButton.onClicked: { - language.text = "" - } - - cancelButton.onClicked: { - closeForm() - } - - Component.onCompleted: { - switch (locale) { - case "en": - enRadioButton.checked = true; - break - case "fr": - frRadioButton.checked = true; - break - default: - otherRadioButton.checked = true; - language.text = locale - break - } - } -} diff --git a/app/forms/LocaleForm.ui.qml b/app/forms/LocaleForm.ui.qml deleted file mode 100644 index 91a0847..0000000 --- a/app/forms/LocaleForm.ui.qml +++ /dev/null @@ -1,153 +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.5 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.2 - -Item { - property alias clearButton: clearButton - property alias goButton: goButton - property alias cancelButton: cancelButton - property alias tabTitle: tabTitle - property alias languageGroup: languageGroup - property alias enRadioButton: enRadioButton - property alias frRadioButton: frRadioButton - property alias otherRadioButton: otherRadioButton - property alias language: language - - Rectangle { - id: tabRectangle - y: 20 - height: tabTitle.height * 2 - color: "#46a2da" - anchors.rightMargin: 0 - anchors.leftMargin: 0 - anchors.left: parent.left - anchors.right: parent.right - - Label { - id: tabTitle - color: "#ffffff" - text: "Locale" - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - Item { - id: item2 - anchors.rightMargin: 20 - anchors.leftMargin: 20 - anchors.bottomMargin: 20 - anchors.topMargin: 20 - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.top: tabRectangle.bottom - - GridLayout { - id: gridLayout3 - anchors.rightMargin: 0 - anchors.bottomMargin: 0 - anchors.leftMargin: 0 - anchors.topMargin: 0 - rowSpacing: 10 - rows: 1 - columns: 2 - anchors.fill: parent - - ExclusiveGroup { id: languageGroup } - RadioButton { - id: enRadioButton - text: qsTr("en") - exclusiveGroup: languageGroup - Layout.columnSpan: 2 - } - - RadioButton { - id: frRadioButton - text: qsTr("fr") - exclusiveGroup: languageGroup - Layout.columnSpan: 2 - } - - RadioButton { - id: otherRadioButton - text: qsTr("Other") - exclusiveGroup: languageGroup - } - - TextField { - id: language - Layout.fillWidth: true - placeholderText: qsTr("") - } - - RowLayout { - id: rowLayout1 - Layout.columnSpan: 2 - Layout.alignment: Qt.AlignRight - - Button { - id: goButton - text: qsTr("Proceed") - } - - Button { - id: clearButton - text: qsTr("Clear") - } - - Button { - id: cancelButton - text: qsTr("Cancel") - } - } - - Item { - Layout.fillHeight: true - Layout.columnSpan: 2 - } - - - } - } -} diff --git a/app/forms/Message.qml b/app/forms/Message.qml deleted file mode 100644 index 5d12c1f..0000000 --- a/app/forms/Message.qml +++ /dev/null @@ -1,58 +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.5 - -MessageForm { - property string title - property string message - property variant backPage - - signal closeForm(variant backPage) - - button.onClicked: { - closeForm(backPage) - } - - Component.onCompleted: { - messageText.text = message - messageTitle.text = title - } -} diff --git a/app/forms/MessageForm.ui.qml b/app/forms/MessageForm.ui.qml deleted file mode 100644 index a300841..0000000 --- a/app/forms/MessageForm.ui.qml +++ /dev/null @@ -1,106 +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.5 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.2 - -Item { - id: root - property alias messageText: messageText - property alias messageTitle: messageTitle - property alias button: button - - Rectangle { - id: tabRectangle - y: 20 - height: messageTitle.height * 2 - color: "#46a2da" - anchors.rightMargin: 0 - anchors.leftMargin: 0 - anchors.left: parent.left - anchors.right: parent.right - - Label { - id: messageTitle - color: "#ffffff" - text: qsTr("type") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - Item { - anchors.rightMargin: 20 - anchors.leftMargin: 20 - anchors.bottomMargin: 20 - anchors.topMargin: 20 - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.top: tabRectangle.bottom - - ColumnLayout { - id: columnLayout1 - spacing: 20 - anchors.fill: parent - - Label { - id: messageText - text: qsTr("message") - Layout.fillWidth: true - horizontalAlignment: Text.AlignHCenter - wrapMode: Text.WordWrap - textFormat: Text.RichText - } - - Button { - id: button - text: qsTr("OK") - Layout.alignment: Qt.AlignHCenter - } - - Item { - Layout.fillHeight: true - } - } - } -} - diff --git a/app/forms/ReverseGeocode.qml b/app/forms/ReverseGeocode.qml deleted file mode 100644 index 9e3cd65..0000000 --- a/app/forms/ReverseGeocode.qml +++ /dev/null @@ -1,75 +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.5 -import QtPositioning 5.5 - -//Reverse Geocode Dialog -ReverseGeocodeForm { - property string title; - property variant coordinate - signal showPlace(variant coordinate) - signal closeForm() - - goButton.onClicked: { - var coordinate = QtPositioning.coordinate(parseFloat(latitude.text), - parseFloat(longitude.text)); - if (coordinate.isValid) { - showPlace(coordinate) - } - } - - clearButton.onClicked: { - latitude.text = "" - longitude.text = "" - } - - cancelButton.onClicked: { - closeForm() - } - - Component.onCompleted: { - latitude.text = "" + coordinate.latitude - longitude.text = "" + coordinate.longitude - if (title.length != 0) { - tabTitle.text = title; - } - } -} diff --git a/app/forms/ReverseGeocodeForm.ui.qml b/app/forms/ReverseGeocodeForm.ui.qml deleted file mode 100644 index 29eaec9..0000000 --- a/app/forms/ReverseGeocodeForm.ui.qml +++ /dev/null @@ -1,140 +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.5 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.2 - -Item { - property alias clearButton: clearButton - property alias goButton: goButton - property alias longitude: longitude - property alias latitude: latitude - property alias cancelButton: cancelButton - property alias tabTitle: tabTitle - Rectangle { - id: tabRectangle - y: 20 - height: tabTitle.height * 2 - color: "#46a2da" - anchors.rightMargin: 0 - anchors.leftMargin: 0 - anchors.left: parent.left - anchors.right: parent.right - - Label { - id: tabTitle - color: "#ffffff" - text: qsTr("Reverse Geocode") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - Item { - id: item2 - anchors.rightMargin: 20 - anchors.leftMargin: 20 - anchors.bottomMargin: 20 - anchors.topMargin: 20 - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.top: tabRectangle.bottom - - GridLayout { - id: gridLayout3 - anchors.rightMargin: 0 - anchors.bottomMargin: 0 - anchors.leftMargin: 0 - anchors.topMargin: 0 - rowSpacing: 10 - rows: 1 - columns: 2 - anchors.fill: parent - - Label { - id: label2 - text: qsTr("Latitude") - } - - TextField { - id: latitude - Layout.fillWidth: true - } - - Label { - id: label3 - text: qsTr("Longitude") - } - - TextField { - id: longitude - Layout.fillWidth: true - placeholderText: qsTr("") - } - - RowLayout { - id: rowLayout1 - Layout.columnSpan: 2 - Layout.alignment: Qt.AlignRight - - Button { - id: goButton - text: qsTr("Proceed") - } - - Button { - id: clearButton - text: qsTr("Clear") - } - - Button { - id: cancelButton - text: qsTr("Cancel") - } - } - Item { - Layout.fillHeight: true - Layout.columnSpan: 2 - } - } - } -} diff --git a/app/forms/RouteAddress.qml b/app/forms/RouteAddress.qml deleted file mode 100644 index b8b8897..0000000 --- a/app/forms/RouteAddress.qml +++ /dev/null @@ -1,136 +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.5 -import QtLocation 5.6 -import QtPositioning 5.5 - -RouteAddressForm { - property alias plugin : tempGeocodeModel.plugin; - property variant toAddress; - property variant fromCoordinate; - signal showMessage(string topic, string message) - signal showRoute(variant startCoordinate,variant endCoordinate) - signal closeForm() - - goButton.onClicked: { - tempGeocodeModel.reset() - toAddress.country = toCountry.text - toAddress.street = toStreet.text - toAddress.city = toCity.text - toAddress.state = toState.text - tempGeocodeModel.startCoordinate = fromCoordinate - tempGeocodeModel.endCoordinate = QtPositioning.coordinate() - tempGeocodeModel.query = fromCoordinate - tempGeocodeModel.update(); - goButton.enabled = false; - } - - clearButton.onClicked: { - toStreet.text = "" - toCity.text = "" - toState.text = "" - toCountry.text = "" - } - - cancelButton.onClicked: { - closeForm() - } - - Component.onCompleted: { - toStreet.text = toAddress.street - toCity.text = toAddress.city - toState.text = toAddress.state - toCountry.text = toAddress.country - } - - 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; - } - } - } - } -} diff --git a/app/forms/RouteAddressForm.ui.qml b/app/forms/RouteAddressForm.ui.qml deleted file mode 100644 index a0ace76..0000000 --- a/app/forms/RouteAddressForm.ui.qml +++ /dev/null @@ -1,167 +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.5 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.2 - -Item { - property alias toStreet: toStreet - property alias toCity: toCity - property alias toState: toState - property alias toCountry: toCountry - property alias goButton: goButton - property alias clearButton: clearButton - property alias cancelButton: cancelButton - - Rectangle { - id: tabRectangle - y: 20 - height: tabTitle.height * 2 - color: "#46a2da" - anchors.rightMargin: 0 - anchors.leftMargin: 0 - anchors.left: parent.left - anchors.right: parent.right - - Label { - id: tabTitle - color: "#ffffff" - text: qsTr("Route Address") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - Item { - id: item2 - anchors.rightMargin: 20 - anchors.leftMargin: 20 - anchors.bottomMargin: 20 - anchors.topMargin: 20 - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.top: tabRectangle.bottom - - GridLayout { - id: gridLayout3 - rowSpacing: 10 - rows: 1 - columns: 2 - anchors.fill: parent - - Label { - id: label6 - text: qsTr("To") - font.bold: true - anchors.horizontalCenter: parent.horizontalCenter - Layout.columnSpan: 2 - } - - Label { - id: label4 - text: qsTr("Street") - } - - TextField { - id: toStreet - Layout.fillWidth: true - } - - Label { - id: label5 - text: qsTr("City") - } - - TextField { - id: toCity - Layout.fillWidth: true - } - - Label { - id: label9 - text: qsTr("State") - } - - TextField { - id: toState - Layout.fillWidth: true - } - - Label { - id: label8 - text: qsTr("Country") - } - - TextField { - id: toCountry - Layout.fillWidth: true - } - - RowLayout { - id: rowLayout1 - Layout.columnSpan: 2 - Layout.alignment: Qt.AlignRight - - Button { - id: goButton - text: qsTr("Proceed") - } - - Button { - id: clearButton - text: qsTr("Clear") - } - - Button { - id: cancelButton - text: qsTr("Cancel") - } - } - - Item { - Layout.fillHeight: true - Layout.columnSpan: 2 - } - } - } -} diff --git a/app/forms/RouteCoordinate.qml b/app/forms/RouteCoordinate.qml deleted file mode 100644 index f195ac7..0000000 --- a/app/forms/RouteCoordinate.qml +++ /dev/null @@ -1,79 +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.5 -import QtPositioning 5.5 - -RouteCoordinateForm { - property variant toCoordinate - property variant fromCoordinate - signal showRoute(variant startCoordinate,variant endCoordinate) - signal closeForm() - - 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 - } -} - diff --git a/app/forms/RouteCoordinateForm.ui.qml b/app/forms/RouteCoordinateForm.ui.qml deleted file mode 100644 index bd492d3..0000000 --- a/app/forms/RouteCoordinateForm.ui.qml +++ /dev/null @@ -1,173 +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.5 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.2 - -Item { - property alias fromLatitude: fromLatitude - property alias fromLongitude: fromLongitude - property alias toLatitude: toLatitude - property alias toLongitude: toLongitude - property alias clearButton: clearButton - property alias goButton: goButton - property alias cancelButton: cancelButton - - Rectangle { - id: tabRectangle - y: 20 - height: tabTitle.height * 2 - color: "#46a2da" - anchors.rightMargin: 0 - anchors.leftMargin: 0 - anchors.left: parent.left - anchors.right: parent.right - - Label { - id: tabTitle - color: "#ffffff" - text: qsTr("Route Coordinates") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - Item { - id: item2 - anchors.rightMargin: 20 - anchors.leftMargin: 20 - anchors.bottomMargin: 20 - anchors.topMargin: 20 - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.top: tabRectangle.bottom - - GridLayout { - id: gridLayout3 - rowSpacing: 10 - rows: 1 - columns: 2 - anchors.fill: parent - - Label { - id: label1 - text: qsTr("From") - anchors.horizontalCenter: parent.horizontalCenter - font.bold: true - Layout.columnSpan : 2 - } - - Label { - id: label2 - text: qsTr("Latitude") - } - - TextField { - id: fromLatitude - Layout.fillWidth: true - } - - Label { - id: label3 - text: qsTr("Longitude") - } - - TextField { - id: fromLongitude - Layout.fillWidth: true - } - - Label { - id: label6 - text: qsTr("To") - anchors.horizontalCenter: parent.horizontalCenter - font.bold: true - Layout.columnSpan: 2 - } - - Label { - id: label4 - text: qsTr("Latitude") - } - - TextField { - id: toLatitude - Layout.fillWidth: true - } - - Label { - id: label5 - text: qsTr("Longitude") - } - - TextField { - id: toLongitude - Layout.fillWidth: true - } - - RowLayout { - id: rowLayout1 - Layout.columnSpan: 2 - Layout.alignment: Qt.AlignRight - Button { - id: goButton - text: qsTr("Proceed") - } - - Button { - id: clearButton - text: qsTr("Clear") - } - - Button { - id: cancelButton - text: qsTr("Cancel") - } - } - Item { - Layout.fillHeight: true - Layout.columnSpan: 2 - } - } - } -} diff --git a/app/forms/RouteList.qml b/app/forms/RouteList.qml deleted file mode 100644 index 27fa572..0000000 --- a/app/forms/RouteList.qml +++ /dev/null @@ -1,87 +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.5 -import QtQuick.Controls 1.4 -import "../helper.js" as Helper - -//! [routeinfomodel0] -ListView { -//! [routeinfomodel0] - property variant routeModel - property string totalTravelTime - property string totalDistance - signal closeForm() -//! [routeinfomodel1] - interactive: true - model: ListModel { id: routeInfoModel } - header: RouteListHeader {} - delegate: RouteListDelegate{ - routeIndex.text: index + 1 - routeInstruction.text: instruction - routeDistance.text: distance - } -//! [routeinfomodel1] - footer: Button { - anchors.horizontalCenter: parent.horizontalCenter - text: qsTr("Close") - onClicked: { - closeForm() - } - } - - Component.onCompleted: { - //! [routeinfomodel2] - routeInfoModel.clear() - if (routeModel.count > 0) { - for (var i = 0; i < routeModel.get(0).segments.length; i++) { - routeInfoModel.append({ - "instruction": routeModel.get(0).segments[i].maneuver.instructionText, - "distance": Helper.formatDistance(routeModel.get(0).segments[i].maneuver.distanceToNextInstruction) - }); - } - } - //! [routeinfomodel2] - totalTravelTime = routeModel.count == 0 ? "" : Helper.formatTime(routeModel.get(0).travelTime) - totalDistance = routeModel.count == 0 ? "" : Helper.formatDistance(routeModel.get(0).distance) - } -//! [routeinfomodel3] -} -//! [routeinfomodel3] diff --git a/app/forms/RouteListDelegate.qml b/app/forms/RouteListDelegate.qml deleted file mode 100644 index 2dc9981..0000000 --- a/app/forms/RouteListDelegate.qml +++ /dev/null @@ -1,82 +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.5 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.2 - -Item { - id: root - property bool checked: false - property alias routeInstruction: instructionLabel - property alias routeDistance: distanceLabel - property alias routeIndex: indexLabel - - width: parent.width - height: indexLabel.height * 2 - - RowLayout { - spacing: 10 - anchors.left: parent.left - anchors.leftMargin: 30 - anchors.verticalCenter: parent.verticalCenter - Label { - id: indexLabel - } - Label { - id: instructionLabel - wrapMode: Text.Wrap - } - Label { - id: distanceLabel - } - } - - Rectangle { - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: 15 - height: 1 - color: "#46a2da" - } -} - - - diff --git a/app/forms/RouteListHeader.qml b/app/forms/RouteListHeader.qml deleted file mode 100644 index 383f892..0000000 --- a/app/forms/RouteListHeader.qml +++ /dev/null @@ -1,84 +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.5 -import QtQuick.Controls 1.4 - -Item { - property alias travelTime: travelTimeLabel - property alias distance: distanceLabel - width: parent.width - height: tabTitle.height * 3.0 - - Rectangle { - id: tabRectangle - y: tabTitle.height - height: tabTitle.height * 2 - 1 - color: "#46a2da" - anchors.left: parent.left - anchors.right: parent.right - - Label { - id: tabTitle - color: "#ffffff" - text: qsTr("Route Information") - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - - Label { - id: travelTimeLabel - text: totalTravelTime - color: "#ffffff" - font.bold: true - anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter - } - - Label { - id: distanceLabel - text: totalDistance - color: "#ffffff" - font.bold: true - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - } - } -} diff --git a/app/helper.js b/app/helper.js deleted file mode 100644 index 19201d0..0000000 --- a/app/helper.js +++ /dev/null @@ -1,81 +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$ -** -****************************************************************************/ - -.pragma library - -function roundNumber(number, digits) -{ - var multiple = Math.pow(10, digits); - return Math.round(number * multiple) / multiple; -} - -function formatTime(sec) -{ - var value = sec - var seconds = value % 60 - value /= 60 - value = (value > 1) ? Math.round(value) : 0 - var minutes = value % 60 - value /= 60 - value = (value > 1) ? Math.round(value) : 0 - var hours = value - if (hours > 0) value = hours + "h:"+ minutes + "m" - else value = minutes + "min" - return value -} - -function formatDistance(meters) -{ - var dist = Math.round(meters) - if (dist > 1000 ){ - if (dist > 100000){ - dist = Math.round(dist / 1000) - } - else{ - dist = Math.round(dist / 100) - dist = dist / 10 - } - dist = dist + " km" - } - else{ - dist = dist + " m" - } - return dist -} diff --git a/app/images/Thumbs.db b/app/images/Thumbs.db new file mode 100644 index 0000000..3ac30c1 Binary files /dev/null and b/app/images/Thumbs.db differ diff --git a/app/images/arrow-0-large.png b/app/images/arrow-0-large.png new file mode 100755 index 0000000..124b896 Binary files /dev/null and b/app/images/arrow-0-large.png differ diff --git a/app/images/arrow-l-180-full.png b/app/images/arrow-l-180-full.png new file mode 100755 index 0000000..0c71027 Binary files /dev/null and b/app/images/arrow-l-180-full.png differ diff --git a/app/images/arrow-l-180-large.png b/app/images/arrow-l-180-large.png new file mode 100755 index 0000000..cb4ff22 Binary files /dev/null and b/app/images/arrow-l-180-large.png differ diff --git a/app/images/arrow-l-30-full.png b/app/images/arrow-l-30-full.png new file mode 100755 index 0000000..de799ac Binary files /dev/null and b/app/images/arrow-l-30-full.png differ diff --git a/app/images/arrow-l-30-large.png b/app/images/arrow-l-30-large.png new file mode 100755 index 0000000..b660a71 Binary files /dev/null and b/app/images/arrow-l-30-large.png differ diff --git a/app/images/arrow-l-45-full.png b/app/images/arrow-l-45-full.png new file mode 100755 index 0000000..a3d8354 Binary files /dev/null and b/app/images/arrow-l-45-full.png differ diff --git a/app/images/arrow-l-45-large.png b/app/images/arrow-l-45-large.png new file mode 100755 index 0000000..6050cf7 Binary files /dev/null and b/app/images/arrow-l-45-large.png differ diff --git a/app/images/arrow-l-75-full.png b/app/images/arrow-l-75-full.png new file mode 100755 index 0000000..cd92e2d Binary files /dev/null and b/app/images/arrow-l-75-full.png differ diff --git a/app/images/arrow-l-75-large.png b/app/images/arrow-l-75-large.png new file mode 100755 index 0000000..5edd0b4 Binary files /dev/null and b/app/images/arrow-l-75-large.png differ diff --git a/app/images/arrow-r-180-full.png b/app/images/arrow-r-180-full.png new file mode 100755 index 0000000..d761b48 Binary files /dev/null and b/app/images/arrow-r-180-full.png differ diff --git a/app/images/arrow-r-180-large.png b/app/images/arrow-r-180-large.png new file mode 100755 index 0000000..22e8c9f Binary files /dev/null and b/app/images/arrow-r-180-large.png differ diff --git a/app/images/arrow-r-30-full.png b/app/images/arrow-r-30-full.png new file mode 100755 index 0000000..0bebfb9 Binary files /dev/null and b/app/images/arrow-r-30-full.png differ diff --git a/app/images/arrow-r-30-large.png b/app/images/arrow-r-30-large.png new file mode 100755 index 0000000..47bd445 Binary files /dev/null and b/app/images/arrow-r-30-large.png differ diff --git a/app/images/arrow-r-45-full.png b/app/images/arrow-r-45-full.png new file mode 100755 index 0000000..fa170f0 Binary files /dev/null and b/app/images/arrow-r-45-full.png differ diff --git a/app/images/arrow-r-45-large.png b/app/images/arrow-r-45-large.png new file mode 100755 index 0000000..b69a9e8 Binary files /dev/null and b/app/images/arrow-r-45-large.png differ diff --git a/app/images/arrow-r-75-full.png b/app/images/arrow-r-75-full.png new file mode 100755 index 0000000..08dc143 Binary files /dev/null and b/app/images/arrow-r-75-full.png differ diff --git a/app/images/arrow-r-75-large.png b/app/images/arrow-r-75-large.png new file mode 100755 index 0000000..537fd0b Binary files /dev/null and b/app/images/arrow-r-75-large.png differ diff --git a/app/images/car-marker.png b/app/images/car-marker.png new file mode 100755 index 0000000..34bab94 Binary files /dev/null and b/app/images/car-marker.png differ diff --git a/app/images/destination.png b/app/images/destination.png new file mode 100644 index 0000000..2d92322 Binary files /dev/null and b/app/images/destination.png differ diff --git a/app/images/destination_full.png b/app/images/destination_full.png new file mode 100644 index 0000000..e5c79d9 Binary files /dev/null and b/app/images/destination_full.png differ diff --git a/app/images/images.qrc b/app/images/images.qrc new file mode 100644 index 0000000..fc51ad3 --- /dev/null +++ b/app/images/images.qrc @@ -0,0 +1,28 @@ + + + car-marker.png + marker-green.png + marker-end.png + simple-bottom-background-black.png + arrow-l-30-full.png + arrow-l-45-full.png + arrow-l-75-full.png + arrow-l-180-full.png + arrow-r-30-full.png + arrow-r-45-full.png + arrow-r-75-full.png + arrow-r-180-full.png + arrow-0-large.png + arrow-l-30-large.png + arrow-l-45-large.png + arrow-l-75-large.png + arrow-l-180-large.png + arrow-r-30-large.png + arrow-r-45-large.png + arrow-r-75-large.png + arrow-r-180-large.png + simple-background-white.png + destination.png + destination_full.png + + diff --git a/app/images/marker-end.png b/app/images/marker-end.png new file mode 100755 index 0000000..2763c39 Binary files /dev/null and b/app/images/marker-end.png differ diff --git a/app/images/marker-green.png b/app/images/marker-green.png new file mode 100644 index 0000000..e2f2078 Binary files /dev/null and b/app/images/marker-green.png differ diff --git a/app/images/simple-background-white.png b/app/images/simple-background-white.png new file mode 100644 index 0000000..df9c2a0 Binary files /dev/null and b/app/images/simple-background-white.png differ diff --git a/app/images/simple-bottom-background-black.png b/app/images/simple-bottom-background-black.png new file mode 100755 index 0000000..5c70f5f Binary files /dev/null and b/app/images/simple-bottom-background-black.png differ diff --git a/app/main.cpp b/app/main.cpp index fb7dbed..6194c25 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -1,67 +1,39 @@ -/**************************************************************************** -** -** 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$ -** -****************************************************************************/ +#include +#include #include -#include -#include -#include -#include #include +#include #include -#include -#include -#include +#include +#include + +#include "qcheapruler.hpp" +#include "dbus_client.h" +#include "file_operation.h" + +#ifdef HAVE_LIBHOMESCREEN #include +#endif +#ifdef HAVE_QLIBWINDOWMANAGER #include +#endif int main(int argc, char *argv[]) { + if (!QDBusConnection::sessionBus().isConnected()) { + qWarning("Cannot connect to the D-Bus session bus.\n" + "Please check your system settings and try again.\n"); + return 1; + } - QString myname = QString("Navigation"); + QString myname = QString("tbtnavi"); - qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); QGuiApplication app(argc, argv); - - QQuickStyle::setStyle("AGL"); - QQmlApplicationEngine engine; - QQmlContext *context = engine.rootContext(); + app.setApplicationName(myname); + app.setApplicationVersion(QStringLiteral("0.1.0")); + app.setOrganizationDomain(QStringLiteral("automotivelinux.org")); + app.setOrganizationName(QStringLiteral("AutomotiveGradeLinux")); QCommandLineParser parser; parser.addPositionalArgument("port", app.translate("main", "port for binding")); @@ -71,66 +43,84 @@ int main(int argc, char *argv[]) parser.process(app); QStringList positionalArguments = parser.positionalArguments(); + QQmlApplicationEngine engine; + int port = 0; + QString secret; if (positionalArguments.length() == 2) { - int port = positionalArguments.takeFirst().toInt(); - QString secret = positionalArguments.takeFirst(); - QUrl bindingAddress; - bindingAddress.setScheme(QStringLiteral("ws")); - bindingAddress.setHost(QStringLiteral("localhost")); - bindingAddress.setPort(port); - bindingAddress.setPath(QStringLiteral("/api")); - QUrlQuery query; - query.addQueryItem(QStringLiteral("token"), secret); - bindingAddress.setQuery(query); - context->setContextProperty(QStringLiteral("bindingAddress"), bindingAddress); - std::string token = secret.toStdString(); - LibHomeScreen* hs = new LibHomeScreen(); - QLibWindowmanager* qwm = new QLibWindowmanager(); - - // WindowManager - if(qwm->init(port,secret) != 0){ - exit(EXIT_FAILURE); - } - // Request a surface as described in layers.json windowmanager’s file - if (qwm->requestSurface(myname) != 0) { - exit(EXIT_FAILURE); - } - // Create an event callback against an event type. Here a lambda is called when SyncDraw event occurs - qwm->set_event_handler(QLibWindowmanager::Event_SyncDraw, [qwm, myname](json_object *object) { - fprintf(stderr, "Surface got syncDraw!\n"); - qwm->endDraw(myname); - }); - - // HomeScreen - hs->init(port, token.c_str()); - // Set the event handler for Event_TapShortcut which will activate the surface for windowmanager - hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [qwm, myname](json_object *object){ - json_object *appnameJ = nullptr; - if(json_object_object_get_ex(object, "application_name", &appnameJ)) + port = positionalArguments.takeFirst().toInt(); + secret = positionalArguments.takeFirst(); + } + +#ifdef HAVE_QLIBWINDOWMANAGER + // WindowManager + QLibWindowmanager* qwm = new QLibWindowmanager(); + if(qwm->init(port,secret) != 0){ + exit(EXIT_FAILURE); + } + // Request a surface as described in layers.json windowmanager’s file + if(qwm->requestSurface(myname) != 0){ + exit(EXIT_FAILURE); + } +#endif + +#ifdef HAVE_LIBHOMESCREEN + // HomeScreen + LibHomeScreen* hs = new LibHomeScreen(); + std::string token = secret.toStdString(); + hs->init(port, token.c_str()); + // Set the event handler for Event_TapShortcut which will activate the surface for windowmanager + hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [qwm, myname](json_object *object){ + + json_object *appnameJ = nullptr; + if(json_object_object_get_ex(object, "application_name", &appnameJ)) + { + const char *appname = json_object_get_string(appnameJ); + if(QString::compare(myname, appname, Qt::CaseInsensitive) == 0) { - const char *appname = json_object_get_string(appnameJ); - if(myname == appname) - { - qDebug("Surface %s got tapShortcut\n", appname); - qwm->activateSurface(myname); - } + qDebug("Surface %s got tapShortcut\n", appname); + json_object *para, *area; + json_object_object_get_ex(object, "parameter", ¶); + json_object_object_get_ex(para, "area", &area); + const char *displayArea = json_object_get_string(area); + qDebug("Surface %s got tapShortcut area\n", displayArea); +// qwm->activateWindow(myname, QString(QLatin1String(displayArea))); + qwm->activateWindow(myname, "master.split.sub"); } - }); + } + }); +#endif + qmlRegisterType("com.mapbox.cheap_ruler", 1, 0, "CheapRuler"); - QVariantMap parameters; - parameters[QStringLiteral("osm.useragent")] = QStringLiteral("Automotive Grade Linux Navigation"); + File_Operation file; + engine.rootContext()->setContextProperty("fileOperation", &file); - engine.addImportPath(QStringLiteral(":/imports")); - engine.load(QUrl(QStringLiteral("qrc:/mapviewer.qml"))); - QObject::connect(&engine, SIGNAL(quit()), qApp, SLOT(quit())); + engine.load(QUrl(QStringLiteral("qrc:qml/Main.qml"))); - QObject *root = engine.rootObjects().first(); - QQuickWindow *window = qobject_cast(root); - QObject::connect(window, SIGNAL(frameSwapped()), qwm, SLOT(slotActivateSurface())); + QObject *root = engine.rootObjects().first(); + QQuickWindow *window = qobject_cast(root); - QMetaObject::invokeMethod(root, "initializeProviders", - Q_ARG(QVariant, QVariant::fromValue(parameters))); - } + //make the DBus connection info + QString pathBase = "org.agl."; + QString objBase = "/org/agl/"; + QString serverName = "naviapi"; + QObject *mapWindow = root->findChild("mapwindow"); + dbus_client dbus(pathBase, objBase, serverName, mapWindow); + +#ifdef HAVE_QLIBWINDOWMANAGER +// QObject::connect(window, SIGNAL(frameSwapped()), qwm, SLOT(slotActivateSurface())); + // Create an event callback against an event type. Here a lambda is called when SyncDraw event occurs + qwm->set_event_handler(QLibWindowmanager::Event_SyncDraw, [root, qwm, myname](json_object *object) { + fprintf(stderr, "Surface got syncDraw!\n"); + qwm->endDraw(myname); + }); + // Create an event callback against an event type. Here a lambda is called when SyncDraw event occurs + qwm->set_event_handler(QLibWindowmanager::Event_Active, [root](json_object *object) { + fprintf(stderr, "Surface got Event_Active!\n"); + }); +#else + window->resize(1024, 768); + window->setVisible(true); +#endif return app.exec(); } diff --git a/app/map/CircleItem.qml b/app/map/CircleItem.qml deleted file mode 100644 index 3b32ba5..0000000 --- a/app/map/CircleItem.qml +++ /dev/null @@ -1,58 +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.5 -import QtLocation 5.6 - -//TODO: remove/refactor me when items are integrated - -MapCircle { - - color: "#46a2da" - border.color: "#190a33" - border.width: 2 - smooth: true - opacity: 0.25 - - function setGeometry(markers, index){ - center.latitude = markers[index].coordinate.latitude - center.longitude = markers[index].coordinate.longitude - radius= center.distanceTo(markers[index + 1].coordinate) - } -} diff --git a/app/map/ImageItem.qml b/app/map/ImageItem.qml deleted file mode 100644 index 3bf4dfe..0000000 --- a/app/map/ImageItem.qml +++ /dev/null @@ -1,61 +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.5; -import QtLocation 5.6 - -MapQuickItem { //to be used inside MapComponent only - id: imageItem - - MouseArea { - anchors.fill: parent - drag.target: parent - } - - function setGeometry(markers, index) { - coordinate.latitude = markers[index].coordinate.latitude - coordinate.longitude = markers[index].coordinate.longitude - } - - sourceItem: Image { - id: testImage - source: "../resources/icon.png" - opacity: 0.7 - } -} diff --git a/app/map/MapComponent.qml b/app/map/MapComponent.qml deleted file mode 100644 index 161038c..0000000 --- a/app/map/MapComponent.qml +++ /dev/null @@ -1,693 +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.5 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 1.4 -import QtQuick.Extras 1.4 -import QtLocation 5.6 -import QtPositioning 5.5 -import "../helper.js" as Helper - -//! [top] -Map { - id: map -//! [top] - property variant markers - property variant mapItems - property variant location - property int markerCounter: 0 // counter for total amount of markers. Resets to 0 when number of markers = 0 - property int currentMarker - property int lastX : -1 - property int lastY : -1 - property int pressX : -1 - property int pressY : -1 - property int jitterThreshold : 30 - property bool followme: true - property variant scaleLengths: [5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000] - property alias routeQuery: routeQuery - property alias routeModel: routeModel - property alias geocodeModel: geocodeModel - - signal showGeocodeInfo() - signal geocodeFinished() - signal routeError() - signal coordinatesCaptured(double latitude, double longitude) - signal showMainMenu(variant coordinate) - signal showMarkerMenu(variant coordinate) - signal showRouteMenu(variant coordinate) - signal showPointMenu(variant coordinate) - signal showRouteList() - - - center { - // null island - latitude: 0 - longitude: 0 - } - - function geocodeMessage() - { - var street, district, city, county, state, countryCode, country, postalCode, latitude, longitude, text - latitude = Math.round(geocodeModel.get(0).coordinate.latitude * 10000) / 10000 - longitude =Math.round(geocodeModel.get(0).coordinate.longitude * 10000) / 10000 - street = geocodeModel.get(0).address.street - district = geocodeModel.get(0).address.district - city = geocodeModel.get(0).address.city - county = geocodeModel.get(0).address.county - state = geocodeModel.get(0).address.state - countryCode = geocodeModel.get(0).address.countryCode - country = geocodeModel.get(0).address.country - postalCode = geocodeModel.get(0).address.postalCode - - text = "Latitude: " + latitude + "
" - text +="Longitude: " + longitude + "
" + "
" - if (street) text +="Street: "+ street + "
" - if (district) text +="District: "+ district +"
" - if (city) text +="City: "+ city + "
" - if (county) text +="County: "+ county + "
" - if (state) text +="State: "+ state + "
" - if (countryCode) text +="Country code: "+ countryCode + "
" - if (country) text +="Country: "+ country + "
" - if (postalCode) text +="PostalCode: "+ postalCode + "
" - return text - } - - function calculateScale() - { - var coord1, coord2, dist, text, f - f = 0 - coord1 = map.toCoordinate(Qt.point(0,scale.y)) - coord2 = map.toCoordinate(Qt.point(0+scaleImage.sourceSize.width,scale.y)) - dist = Math.round(coord1.distanceTo(coord2)) - - if (dist === 0) { - // not visible - } else { - for (var i = 0; i < scaleLengths.length-1; i++) { - if (dist < (scaleLengths[i] + scaleLengths[i+1]) / 2 ) { - f = scaleLengths[i] / dist - dist = scaleLengths[i] - break; - } - } - if (f === 0) { - f = dist / scaleLengths[i] - dist = scaleLengths[i] - } - } - - text = Helper.formatDistance(dist) - scaleImage.width = (scaleImage.sourceSize.width * f) - 2 * scaleImageLeft.sourceSize.width - scaleText.text = text - } - - function deleteMarkers() - { - var count = map.markers.length - for (var i = 0; i= 0) - map.zoomLevel = value - } - } - - GridLayout { - z: map.z + 3 - columns: 1 - width: 300 - height: 300 - - ToggleButton { - id: followme - text: "GeoLocation Pan" - checked: map.followme - Layout.fillWidth: true - Layout.fillHeight: true - onClicked: { - map.followme = !map.followme - } - } - - Button { - text: "Lookup Route" - Layout.fillWidth: true - Layout.fillHeight: true - onClicked: { - stackView.pop({item:page, immediate: true}) - stackView.push(Qt.resolvedUrl("../forms/RouteAddress.qml"), - { "plugin": map.plugin, - "toAddress": toAddress, - "fromCoordinate": map.location}) - stackView.currentItem.showRoute.connect(map.calculateCoordinateRoute) - stackView.currentItem.showMessage.connect(stackView.showMessage) - stackView.currentItem.closeForm.connect(stackView.closeForm) - } - } - - Button { - text: "Reverse GeoCode" - Layout.fillWidth: true - Layout.fillHeight: true - onClicked: { - stackView.pop({item:page, immediate: true}) - stackView.push(Qt.resolvedUrl("../forms/ReverseGeocode.qml"), - { "coordinate": map.location}) - stackView.currentItem.showPlace.connect(map.geocode) - stackView.currentItem.closeForm.connect(stackView.closeForm) - } - } - - Button { - text: "Show Route List" - Layout.fillWidth: true - Layout.fillHeight: true - onClicked: { - stackView.showRouteListPage() - } - } - - Button { - text: "Clear Route" - Layout.fillWidth: true - Layout.fillHeight: true - enabled: map.routeModel.count - onClicked: { - map.routeModel.reset(); - map.zoomLevel = map.maximumZoomLevel - map.center = map.location - } - } - } - - Item { - id: scale - z: map.z + 3 - visible: scaleText.text != "0 m" - anchors.bottom: parent.bottom; - anchors.right: parent.right - anchors.margins: 20 - height: scaleText.height * 2 - width: scaleImage.width - - Image { - id: scaleImageLeft - source: "../resources/scale_end.png" - anchors.bottom: parent.bottom - anchors.right: scaleImage.left - } - Image { - id: scaleImage - source: "../resources/scale.png" - anchors.bottom: parent.bottom - anchors.right: scaleImageRight.left - } - Image { - id: scaleImageRight - source: "../resources/scale_end.png" - anchors.bottom: parent.bottom - anchors.right: parent.right - } - Label { - id: scaleText - color: "#004EAE" - anchors.centerIn: parent - text: "0 m" - } - Component.onCompleted: { - map.calculateScale(); - } - } - - //! [routemodel0] - RouteModel { - id: routeModel - plugin : map.plugin - query: RouteQuery { - id: routeQuery - } - onStatusChanged: { - if (status == RouteModel.Ready) { - switch (count) { - case 0: - // technically not an error - map.routeError() - break - case 1: - map.showRouteList() - break - } - } else if (status == RouteModel.Error) { - map.routeError() - } - } - } - //! [routemodel0] - - //! [routedelegate0] - Component { - id: routeDelegate - - MapRoute { - id: route - route: routeData - line.color: "#46a2da" - line.width: 5 - smooth: true - opacity: 0.8 - //! [routedelegate0] - MouseArea { - id: routeMouseArea - anchors.fill: parent - hoverEnabled: false - property variant lastCoordinate - - onPressed : { - 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 (mouse.button == Qt.LeftButton) { - map.lastX = mouse.x + parent.x - map.lastY = mouse.y + parent.y - } - } - - onPressAndHold:{ - if (Math.abs(map.pressX - parent.x- mouse.x ) < map.jitterThreshold - && Math.abs(map.pressY - parent.y - mouse.y ) < map.jitterThreshold) { - showRouteMenu(lastCoordinate); - } - } - - } - //! [routedelegate1] - } - } - //! [routedelegate1] - - //! [geocodemodel0] - GeocodeModel { - id: geocodeModel - plugin: map.plugin - onStatusChanged: { - if ((status == GeocodeModel.Ready) || (status == GeocodeModel.Error)) - map.geocodeFinished() - } - onLocationsChanged: - { - if (count == 1) { - map.center.latitude = get(0).coordinate.latitude - map.center.longitude = get(0).coordinate.longitude - } - } - } - //! [geocodemodel0] - - //! [pointdel0] - Component { - id: pointDelegate - - MapCircle { - id: point - color: "#46a2da" - border.color: "#190a33" - border.width: 2 - smooth: true - opacity: 0.25 - center: locationData.coordinate - //! [pointdel0] - MouseArea { - anchors.fill:parent - id: circleMouseArea - hoverEnabled: false - property variant lastCoordinate - - onPressed : { - 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 (Math.abs(map.pressX - parent.x- mouse.x ) > map.jitterThreshold || - Math.abs(map.pressY - parent.y -mouse.y ) > map.jitterThreshold) { - if (pressed) parent.radius = parent.center.distanceTo( - map.toCoordinate(Qt.point(mouse.x, mouse.y))) - } - if (mouse.button == Qt.LeftButton) { - map.lastX = mouse.x + parent.x - map.lastY = mouse.y + parent.y - } - } - - onPressAndHold:{ - if (Math.abs(map.pressX - parent.x- mouse.x ) < map.jitterThreshold - && Math.abs(map.pressY - parent.y - mouse.y ) < map.jitterThreshold) { - showPointMenu(lastCoordinate); - } - } - } - //! [pointdel1] - } - } - //! [pointdel1] - - //! [routeview0] - MapItemView { - model: routeModel - delegate: routeDelegate - //! [routeview0] - autoFitViewport: true - //! [routeview1] - } - //! [routeview1] - - //! [geocodeview] - MapItemView { - model: geocodeModel - delegate: pointDelegate - } - //! [geocodeview] - - Timer { - id: scaleTimer - interval: 100 - running: false - repeat: false - onTriggered: { - map.calculateScale() - } - } - - MouseArea { - id: mouseArea - property variant lastCoordinate - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton - - onPressed : { - map.lastX = mouse.x - map.lastY = mouse.y - map.pressX = mouse.x - map.pressY = mouse.y - lastCoordinate = map.toCoordinate(Qt.point(mouse.x, mouse.y)) - } - - onPositionChanged: { - if (mouse.button == Qt.LeftButton) { - map.lastX = mouse.x - map.lastY = mouse.y - } - } - - onDoubleClicked: { - var mouseGeoPos = map.toCoordinate(Qt.point(mouse.x, mouse.y)); - var preZoomPoint = map.fromCoordinate(mouseGeoPos, false); - if (mouse.button === Qt.LeftButton) { - map.zoomLevel++; - } else if (mouse.button === Qt.RightButton) { - map.zoomLevel--; - } - var postZoomPoint = map.fromCoordinate(mouseGeoPos, false); - var dx = postZoomPoint.x - preZoomPoint.x; - var dy = postZoomPoint.y - preZoomPoint.y; - - var mapCenterPoint = Qt.point(map.width / 2.0 + dx, map.height / 2.0 + dy); - map.center = map.toCoordinate(mapCenterPoint); - - lastX = -1; - lastY = -1; - } - - onPressAndHold:{ - if (Math.abs(map.pressX - mouse.x ) < map.jitterThreshold - && Math.abs(map.pressY - mouse.y ) < map.jitterThreshold) { - showMainMenu(lastCoordinate); - } - } - } -//! [end] -} -//! [end] diff --git a/app/map/Marker.qml b/app/map/Marker.qml deleted file mode 100644 index 3c0ed17..0000000 --- a/app/map/Marker.qml +++ /dev/null @@ -1,116 +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.5; -import QtLocation 5.6 - -//! [mqi-top] -MapQuickItem { - id: marker -//! [mqi-top] - property alias lastMouseX: markerMouseArea.lastX - property alias lastMouseY: markerMouseArea.lastY - -//! [mqi-anchor] - anchorPoint.x: image.width/4 - anchorPoint.y: image.height - - sourceItem: Image { - id: image -//! [mqi-anchor] - source: "../resources/marker.png" - opacity: markerMouseArea.pressed ? 0.6 : 1.0 - MouseArea { - 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 : false - drag.target: marker - preventStealing: true - - onPressed : { - map.pressX = mouse.x - map.pressY = mouse.y - map.currentMarker = -1 - for (var i = 0; i< map.markers.length; i++){ - if (marker == map.markers[i]){ - map.currentMarker = i - break - } - } - } - - onPressAndHold:{ - if (Math.abs(map.pressX - mouse.x ) < map.jitterThreshold - && Math.abs(map.pressY - mouse.y ) < map.jitterThreshold) { - var p = map.fromCoordinate(marker.coordinate) - lastX = p.x - lastY = p.y - map.showMarkerMenu(marker.coordinate) - } - } - } - - Text{ - id: number - y: image.height/10 - width: image.width - color: "white" - font.bold: true - font.pixelSize: 14 - horizontalAlignment: Text.AlignHCenter - Component.onCompleted: { - text = map.markerCounter - } - } - -//! [mqi-closeimage] - } -//! [mqi-closeimage] - - Component.onCompleted: coordinate = map.toCoordinate(Qt.point(markerMouseArea.mouseX, - markerMouseArea.mouseY)); -//! [mqi-close] -} -//! [mqi-close] diff --git a/app/map/PolygonItem.qml b/app/map/PolygonItem.qml deleted file mode 100644 index cab4e6c..0000000 --- a/app/map/PolygonItem.qml +++ /dev/null @@ -1,63 +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.5 -import QtLocation 5.6 - -//TODO: remove me when items are integrated - -MapPolygon { - - color: "#46a2da" - border.color: "#190a33" - border.width: 2 - smooth: true - opacity: 0.25 - - function setGeometry(markers, index){ - for (var i = index; i0) - plugin = Qt.createQmlObject ('import QtLocation 5.6; Plugin{ name:"' + provider + '"; parameters: appWindow.parameters}', appWindow) - else - plugin = Qt.createQmlObject ('import QtLocation 5.6; Plugin{ name:"' + provider + '"}', appWindow) - - var zoomLevel = null - var center = null - if (map) { - zoomLevel = map.zoomLevel - center = map.center - map.destroy() - } - - map = mapComponent.createObject(page); - map.plugin = plugin; - - if (zoomLevel != null) { - map.zoomLevel = zoomLevel - map.center = center - } else { - map.zoomLevel = map.maximumZoomLevel - } - - map.forceActiveFocus() - } - - function getPlugins() - { - var plugin = Qt.createQmlObject ('import QtLocation 5.6; Plugin {}', appWindow) - var myArray = new Array() - for (var i = 0; i" + qsTr("Distance:") + " " + distance) - break - case "drawImage": - map.addGeoItem("ImageItem") - break - case "drawRectangle": - map.addGeoItem("RectangleItem") - break - case "drawCircle": - map.addGeoItem("CircleItem") - break; - case "drawPolyline": - map.addGeoItem("PolylineItem") - break; - case "drawPolygonMenu": - map.addGeoItem("PolygonItem") - break - default: - console.log("Unsupported operation") - } - } - } - - ItemPopupMenu { - id: itemPopupMenu - - function show(type,coordinate) - { - stackView.pop(page) - itemPopupMenu.type = type - itemPopupMenu.update() - itemPopupMenu.popup() - } - - onItemClicked: { - stackView.pop(page) - switch (item) { - case "showRouteInfo": - stackView.showRouteListPage() - break; - case "deleteRoute": - map.routeModel.reset(); - break; - case "showPointInfo": - map.showGeocodeInfo() - break; - case "deletePoint": - map.geocodeModel.reset() - break; - default: - console.log("Unsupported operation") - } - } - } - - StackView { - id: stackView - anchors.fill: parent - focus: true - initialItem: Item { - id: page - } - - function showMessage(title,message,backPage) - { - push(Qt.resolvedUrl("forms/Message.qml"), - { - "title" : title, - "message" : message, - "backPage" : backPage - }) - currentItem.closeForm.connect(closeMessage) - } - - function closeMessage(backPage) - { - pop(backPage) - } - - function closeForm() - { - pop(page) - } - - function showRouteListPage() - { - push(Qt.resolvedUrl("forms/RouteList.qml") , - { - "routeModel" : map.routeModel - }) - currentItem.closeForm.connect(closeForm) - } - } - - Component { - id: mapComponent - - MapComponent{ - width: page.width - height: page.height - onFollowmeChanged: mainMenu.isFollowMe = map.followme - onSupportedMapTypesChanged: mainMenu.mapTypeMenu.createMenu(map) - onCoordinatesCaptured: { - var text = "" + qsTr("Latitude:") + " " + Helper.roundNumber(latitude,4) + "
" + qsTr("Longitude:") + " " + Helper.roundNumber(longitude,4) - stackView.showMessage(qsTr("Coordinates"),text); - } - onGeocodeFinished:{ - if (map.geocodeModel.status == GeocodeModel.Ready) { - if (map.geocodeModel.count == 0) { - stackView.showMessage(qsTr("Geocode Error"),qsTr("Unsuccessful geocode")) - } else if (map.geocodeModel.count > 1) { - stackView.showMessage(qsTr("Ambiguous geocode"), map.geocodeModel.count + " " + - qsTr("results found for the given address, please specify location")) - } else { - stackView.showMessage(qsTr("Location"), geocodeMessage(),page) - } - } else if (map.geocodeModel.status == GeocodeModel.Error) { - stackView.showMessage(qsTr("Geocode Error"),qsTr("Unsuccessful geocode")) - } - } - onRouteError: stackView.showMessage(qsTr("Route Error"),qsTr("Unable to find a route for the given points"),page) - - onShowGeocodeInfo: stackView.showMessage(qsTr("Location"),geocodeMessage(),page) - - onErrorChanged: { - if (map.error != Map.NoError) { - var title = qsTr("ProviderError") - var message = map.errorString + "

" + qsTr("Try to select other provider") + "" - if (map.error == Map.MissingRequiredParameterError) - message += "
" + qsTr("or see") + " \'mapviewer --help\' " - + qsTr("how to pass plugin parameters.") - stackView.showMessage(title,message); - } - } - //onShowMainMenu: mapPopupMenu.show(coordinate) - onShowMarkerMenu: markerPopupMenu.show(coordinate) - onShowRouteMenu: itemPopupMenu.show("Route",coordinate) - onShowPointMenu: itemPopupMenu.show("Point",coordinate) - onShowRouteList: stackView.showRouteListPage() - } - } -} diff --git a/app/mapviewer.qrc b/app/mapviewer.qrc deleted file mode 100644 index c5dca44..0000000 --- a/app/mapviewer.qrc +++ /dev/null @@ -1,40 +0,0 @@ - - - mapviewer.qml - api/GPS.qml - api/GeoClue.qml - api/GeoFence.qml - map/MapComponent.qml - map/Marker.qml - map/PolylineItem.qml - map/RectangleItem.qml - map/CircleItem.qml - map/PolygonItem.qml - map/ImageItem.qml - forms/Message.qml - forms/MessageForm.ui.qml - forms/Geocode.qml - forms/GeocodeForm.ui.qml - forms/ReverseGeocode.qml - forms/ReverseGeocodeForm.ui.qml - forms/RouteCoordinate.qml - forms/RouteCoordinateForm.ui.qml - forms/RouteAddress.qml - forms/RouteAddressForm.ui.qml - forms/Locale.qml - forms/LocaleForm.ui.qml - forms/RouteList.qml - forms/RouteListDelegate.qml - forms/RouteListHeader.qml - menus/MainMenu.qml - menus/MapPopupMenu.qml - menus/MarkerPopupMenu.qml - menus/ItemPopupMenu.qml - helper.js - resources/car.png - resources/scale_end.png - resources/scale.png - resources/marker.png - resources/icon.png - - diff --git a/app/menus/ItemPopupMenu.qml b/app/menus/ItemPopupMenu.qml deleted file mode 100644 index 8d7e2f7..0000000 --- a/app/menus/ItemPopupMenu.qml +++ /dev/null @@ -1,53 +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.5 -import QtQuick.Controls 1.4 - -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/app/menus/MainMenu.qml b/app/menus/MainMenu.qml deleted file mode 100644 index fe2bfa1..0000000 --- a/app/menus/MainMenu.qml +++ /dev/null @@ -1,126 +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.5 -import QtQuick.Controls 1.4 -import QtLocation 5.6 - -MenuBar { - property variant providerMenu: providerMenu - property variant mapTypeMenu: mapTypeMenu - property variant toolsMenu: toolsMenu - property alias isFollowMe: toolsMenu.isFollowMe - - signal selectProvider(string providerName) - signal selectMapType(variant mapType) - signal selectTool(string tool); - signal toggleMapState(string state) - - Menu { - id: providerMenu - title: qsTr("Provider") - - function createMenu(plugins) - { - clear() - for (var i = 0; i < plugins.length; i++) { - createProviderMenuItem(plugins[i]); - } - } - - function createProviderMenuItem(provider) - { - var item = addItem(provider); - item.checkable = true; - item.triggered.connect(function(){selectProvider(provider)}) - } - } - - Menu { - id: mapTypeMenu - title: qsTr("MapType") - - function createMenu(map) - { - clear() - for (var i = 0; i 0) { - addItem(qsTr("Delete all markers")).triggered.connect(function(){itemClicked("deleteMarkers")}) - } - - if (mapItemsCount > 0) { - addItem(qsTr("Delete all items")).triggered.connect(function(){itemClicked("deleteItems")}) - } - } -} diff --git a/app/menus/MarkerPopupMenu.qml b/app/menus/MarkerPopupMenu.qml deleted file mode 100644 index 61855ff..0000000 --- a/app/menus/MarkerPopupMenu.qml +++ /dev/null @@ -1,76 +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.5 -import QtQuick.Controls 1.4 - -Menu { - property int currentMarker - property int markersCount - signal itemClicked(string item) - - function update() { - clear() - addItem(qsTr("Delete")).triggered.connect(function(){itemClicked("deleteMarker")}) - addItem(qsTr("Coordinates")).triggered.connect(function(){itemClicked("getMarkerCoordinate")}) - addItem(qsTr("Move to")).triggered.connect(function(){itemClicked("moveMarkerTo")}) - if (currentMarker == markersCount-2){ - addItem(qsTr("Route to next point")).triggered.connect(function(){itemClicked("routeToNextPoint")}); - addItem(qsTr("Distance to next point")).triggered.connect(function(){itemClicked("distanceToNextPoint")}); - } - if (currentMarker < markersCount-2){ - addItem(qsTr("Route to next points")).triggered.connect(function(){itemClicked("routeToNextPoints")}); - addItem(qsTr("Distance to next point")).triggered.connect(function(){itemClicked("distanceToNextPoint")}); - } - - var menu = addMenu(qsTr("Draw...")) - menu.addItem(qsTr("Image")).triggered.connect(function(){itemClicked("drawImage")}) - - if (currentMarker <= markersCount-2){ - menu.addItem(qsTr("Rectangle")).triggered.connect(function(){itemClicked("drawRectangle")}) - menu.addItem(qsTr("Circle")).triggered.connect(function(){itemClicked("drawCircle")}) - menu.addItem(qsTr("Polyline")).triggered.connect(function(){itemClicked("drawPolyline")}) - } - - if (currentMarker < markersCount-2){ - menu.addItem(qsTr("Polygon")).triggered.connect(function(){itemClicked("drawPolygonMenu")}) - } - } -} diff --git a/app/org.agl.naviapi.xml b/app/org.agl.naviapi.xml new file mode 100644 index 0000000..d1538e7 --- /dev/null +++ b/app/org.agl.naviapi.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/qcheapruler.cpp b/app/qcheapruler.cpp new file mode 100644 index 0000000..890fd63 --- /dev/null +++ b/app/qcheapruler.cpp @@ -0,0 +1,117 @@ +#include "qcheapruler.hpp" +#include "naviapi_adaptor.h" + +#include + +QCheapRuler::QCheapRuler() +{ + //set the default current position + // m_currentPosition = QGeoCoordinate(36.136261, -115.151254); + m_currentPosition = QGeoCoordinate(35.692396, 139.691102); +} + +QCheapRuler::~QCheapRuler() +{ +} + +//get route distance +double QCheapRuler::distance() const +{ + return m_distance; +} + +//get current distance along the route +double QCheapRuler::currentDistance() const +{ + return m_currentDistance; +} + +//set current position below the coordinate info from navigation service +void QCheapRuler::setCurrentPosition(double latitude, double longitude) +{ + //set coordinate info and notify the changes when latitude or longitude info has changed + if((m_currentPosition.latitude() != latitude) + ||(m_currentPosition.longitude() != longitude)) + { + m_currentPosition.setLatitude(latitude); + m_currentPosition.setLongitude(longitude); + emit currentPositionChanged(); + } +} + +void QCheapRuler::setCurrentDistance(double distance) +{ + //set current distance info and notify the changes when the info has changed + //but it will not send notify when it start or stop demo + if((m_currentDistance != distance) + &&(distance != 0.0)) + { + m_currentDistance = distance; + emit currentDistanceChanged(); + } +} + +//get current position(coordinate) +QGeoCoordinate QCheapRuler::currentPosition() const +{ + return m_currentPosition; +} + +QJSValue QCheapRuler::path() const +{ + // Should neveer be called. + return QJSValue(); +} + +//set route path and get the total distance +void QCheapRuler::setPath(const QJSValue &value) +{ + if (!value.isArray()) + return; + + m_path.clear(); + quint32 length = value.property(QStringLiteral("length")).toUInt(); + + //push back the coordinate info along the route + for (unsigned i = 0; i < length; ++i) { + auto property = value.property(i); + cr::point coordinate = { 0., 0. }; + + if (property.hasProperty(QStringLiteral("latitude"))) + coordinate.y = property.property(QStringLiteral("latitude")).toNumber(); + + if (property.hasProperty(QStringLiteral("longitude"))) + coordinate.x = property.property(QStringLiteral("longitude")).toNumber(); + + m_path.push_back(coordinate); + } + + //count the total distance along the route + double distance = ruler().lineDistance(m_path); + if (m_distance != distance) { + m_distance = distance; + } + + emit pathChanged(); +} + +//init the route and postion info when start in the first time.(can be called by qml) +void QCheapRuler::initRouteInfo() +{ + //send "getRouteInfo" message to the navigation service + QDBusMessage message = QDBusMessage::createSignal("/", "org.agl.naviapi", "getRouteInfo"); + if(!QDBusConnection::sessionBus().send(message)) + { + qDebug() << "initRouteInfo" << "sessionBus.send(): getRouteInfo failed"; + } +} + +//init the CheapRuler class +cr::CheapRuler QCheapRuler::ruler() const +{ + if (m_path.empty()) { + return cr::CheapRuler(0., cr::CheapRuler::Kilometers); + } else { + return cr::CheapRuler(m_currentPosition.latitude(), cr::CheapRuler::Kilometers); + } +} diff --git a/app/qcheapruler.hpp b/app/qcheapruler.hpp new file mode 100644 index 0000000..ce6a750 --- /dev/null +++ b/app/qcheapruler.hpp @@ -0,0 +1,57 @@ +#pragma once + +#include +#include +#include +#include + +#include + +namespace cr = mapbox::cheap_ruler; + +class QCheapRuler : public QObject{ + Q_OBJECT + //registy the read write¬ify function for qml + //the distance from start point to end point(read only) + Q_PROPERTY(double distance READ distance) + //the distance from start point to current postion along the route(read notify) + Q_PROPERTY(double currentDistance READ currentDistance NOTIFY currentDistanceChanged) + //the coordinate info of current postion(read) + Q_PROPERTY(QGeoCoordinate currentPosition READ currentPosition NOTIFY currentPositionChanged) + //the route path info postion(read write¬ify) + Q_PROPERTY(QJSValue path READ path WRITE setPath NOTIFY pathChanged) + +public: + QCheapRuler(); + ~QCheapRuler(); + + //read write¬ify function for qml + double distance() const; + double currentDistance() const; + QGeoCoordinate currentPosition() const; + QJSValue path() const; + void setPath(const QJSValue &value); + + //functions that can called by qml(Q_INVOKABLE) + Q_INVOKABLE void initRouteInfo(); + Q_INVOKABLE void setCurrentPosition(double, double); + Q_INVOKABLE void setCurrentDistance(double); + +signals: + //notify signals to qml + //notify signal when the distance from start point to current postion changed + void currentDistanceChanged(); + //notify signal when currentPosition changed + void currentPositionChanged(); + //notify signal when the distance from start point to current postion changed + void pathChanged(); + +private: + cr::CheapRuler ruler() const; + + double m_distance = 0.; + double m_currentDistance = 0.; + QGeoCoordinate m_currentPosition; + + cr::line_string m_path; +}; diff --git a/app/qml/Main.qml b/app/qml/Main.qml new file mode 100644 index 0000000..4139cb9 --- /dev/null +++ b/app/qml/Main.qml @@ -0,0 +1,25 @@ +import QtQuick 2.0 +import QtQuick.Controls 2.2 + +import "qrc:/qml" + +ApplicationWindow { + id: window + + title: "Turn By Turn Navigation Demo" + height: 720 + width: 640 + visible: true + + Item { + anchors.centerIn: parent + width: parent.width + height: parent.height + + MapWindow { + id:mapwindow + anchors.fill: parent + objectName: "mapwindow" + } + } +} diff --git a/app/qml/MapWindow.qml b/app/qml/MapWindow.qml new file mode 100644 index 0000000..8a41390 --- /dev/null +++ b/app/qml/MapWindow.qml @@ -0,0 +1,283 @@ +import QtLocation 5.9 +import QtPositioning 5.0 +import QtQuick 2.0 + +import com.mapbox.cheap_ruler 1.0 + +Item { + id: mapWindow + + property int disOffset: 70 + property real rotateAngle: 0 + property var startPoint + property var endPoint + + //turn by turn board view + TbtBoard { + id: tbt_board + z: 1 + visible: false + anchors.fill: parent + } + + //mapview and route views + Map { + id: map + anchors.fill: parent + + plugin: Plugin { + name: "mapboxgl" + + PluginParameter { + name: "mapboxgl.mapping.items.insert_before" + value: "road-label-small" + } + + PluginParameter { + name: "mapboxgl.mapping.additional_style_urls" + value: "mapbox://styles/mapbox/streets-v9" + } + + PluginParameter { + name: "mapboxgl.access_token" + value: fileOperation.getMapAccessToken() + } + + PluginParameter { + name: "mapboxgl.mapping.cache.directory" + value: "/home/0/app-data/navigation/" + } + } + + center: ruler.currentPosition + zoomLevel: 20 + tilt: 60 + gesture.acceptedGestures:MapGestureArea.NoGesture + copyrightsVisible: false + + RotationAnimation on bearing { + id: bearingAnimation + + duration: 250 + alwaysRunToEnd: false + direction: RotationAnimation.Shortest + running: true + } + + Location { + id: previousLocation + coordinate: QtPositioning.coordinate(0, 0); + } + + onCenterChanged: { + if (previousLocation.coordinate === center) + return; + + bearingAnimation.to = previousLocation.coordinate.azimuthTo(center); + bearingAnimation.start(); + + previousLocation.coordinate = center; + } + + MapQuickItem { + id: startMarker + + sourceItem: Image { + id: greenMarker + source: "qrc:///marker-green.png" + } + anchorPoint.x: greenMarker.width / 2 + anchorPoint.y: greenMarker.height / 2 + } + + MapQuickItem { + id: endMarker + + sourceItem: Image { + id: redMarker + source: "qrc:///marker-end.png" + } + anchorPoint.x: redMarker.width / 2 + anchorPoint.y: redMarker.height / 2 + } + + MapItemView { + model: routeModel + + delegate: MapRoute { + route: routeData + line.color: "#6b43a1" + line.width: map.zoomLevel - 5 + opacity: (index == 0) ? 1.0 : 0.3 + + onRouteChanged: { + ruler.path = routeData.path; + } + } + } + + MapQuickItem { + zoomLevel: map.zoomLevel + + sourceItem: Image { + id: carMarker + source: "qrc:///car-marker.png" + transform: Rotation { + origin.x: carMarker.width / 2; + origin.y: carMarker.height / 2; + angle: rotateAngle + } + } + + coordinate: ruler.currentPosition + anchorPoint.x: carMarker.width / 2 + anchorPoint.y: carMarker.height / 2 + + Location { + id: previousCarLocation + coordinate: QtPositioning.coordinate(0, 0); + } + + onCoordinateChanged: { + if(coordinate === mapWindow.startPoint) + return; + rotateAngle = previousCarLocation.coordinate.azimuthTo(coordinate); + previousCarLocation.coordinate = coordinate; + } + } + + //add route view in the map + function updateRoute() { + routeQuery.clearWaypoints(); + routeQuery.addWaypoint(startMarker.coordinate); + routeQuery.addWaypoint(endMarker.coordinate); + map.addMapItem(startMarker) + map.addMapItem(endMarker) + } + + //clear route view in the map + function clearRoute() { + routeQuery.clearWaypoints(); + routeModel.reset(); + map.removeMapItem(startMarker) + map.removeMapItem(endMarker) + } + + CheapRuler { + id: ruler + + onCurrentDistanceChanged: { + var total = 0; + var i = 0; + var alldistance = ruler.distance * 1000; + + if((routeModel.status === RouteModel.Ready) + && (routeModel.count === 1)) + { + // XXX: Use car speed in meters to pre-warn the turn instruction + while (total < ruler.currentDistance && i < routeModel.get(0).segments.length) + { + total += routeModel.get(0).segments[i++].maneuver.distanceToNextInstruction; + } + + //show the tbt board(it will be always show when demo start) + tbt_board.visible = true + + // Set turn instruction + tbt_board.do_setTurnInstructions(routeModel.get(0).segments[i].maneuver.instructionText) + tbt_board.state = routeModel.get(0).segments[i].maneuver.direction + + //when goto the last instruction,set the states to "arriveDest" + if(i >= (routeModel.get(0).segments.length-1)) + { + total = alldistance; + tbt_board.state = "arriveDest"; + } + + var dis = (total - ruler.currentDistance).toFixed(1); + + // Set distance + tbt_board.do_setDistance(dis) + + // Set board status + if(dis < mapWindow.disOffset && i < routeModel.get(0).segments.length) + { + //show the tbt board(the big one) + tbt_board.do_showTbtboard(true) + } + else + { + //disvisible the tbt board(the big one) + tbt_board.do_showTbtboard(false) + } + } + } + } + } + + //the route view display by RouteModel + RouteModel { + id: routeModel + + autoUpdate: true + query: routeQuery + + plugin: Plugin { + name: "mapbox" + + // Development access token, do not use in production. + PluginParameter { + name: "mapbox.access_token" + value: fileOperation.getMapAccessToken() + } + } + } + + RouteQuery { + id: routeQuery + } + + Component.onCompleted: { + //request the route info when map load finish + if (ruler) { + ruler.initRouteInfo(); + ruler.setCurrentPosition(fileOperation.getStartLatitude(), fileOperation.getStartLongitute()); + } + } + + //the functions can be called by outside + //add route signal function + function do_addRoutePoint(poi_Lat_s, poi_Lon_s, poi_Lat_e, poi_Lon_e) { + //set the startPoint and endPoint + startPoint= QtPositioning.coordinate(poi_Lat_s,poi_Lon_s); + endPoint = QtPositioning.coordinate(poi_Lat_e,poi_Lon_e); + startMarker.coordinate = startPoint; + endMarker.coordinate = endPoint; + //update the route view + if (map) { + map.updateRoute(); + } + } + + //set the current position + function do_setCoordinate(latitude,longitude,direction,distance) { + ruler.setCurrentPosition(latitude, longitude); + ruler.setCurrentDistance(distance); + } + + //stop navidemo signal + function do_stopnavidemo() { + //disvisible the tbt board + tbt_board.visible = false + //clear the routeview + if (map) { + map.clearRoute(); + } + } + + //arrvice the destination signal + function do_arrivedest(){ + //disvisible the tbt board + tbt_board.visible = false + } +} diff --git a/app/qml/TbtBoard.qml b/app/qml/TbtBoard.qml new file mode 100644 index 0000000..cf6f537 --- /dev/null +++ b/app/qml/TbtBoard.qml @@ -0,0 +1,187 @@ +import QtQuick 2.0 + +//turn by turn board view +Item { + id: tbt_board + + property bool showboard: false + + // the backgroud image(the small one) + Image { + id: whitebackgroud + visible: !showboard + anchors.top: parent.top + width:turnDirection.width + height:turnDirection.height + distance.height + source: "qrc:simple-background-white.png" + z: 1 + } + + // turn direction arrow board image(the small one) + Image { + id: turnDirection + visible: !showboard + anchors.top: parent.top + z: 3 + } + + // the distance to the next crossing road(textview)(the small one) + Text { + id: distance + visible: !showboard + anchors.top: turnDirection.bottom + z: 3 + font.pixelSize: 23 + width:turnDirection.width + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + font.family: "Lato" + font.weight: Font.Light + color: "#000000" + } + + // the backgroud image + Image { + id: backgroudBoard + visible: showboard + anchors.fill: parent + source: "qrc:simple-bottom-background-black.png" + z: 1 + } + + // turn direction arrow board image + Image { + id: turnDirectionBoard + visible: showboard + width : parent.height - turnInstructionsBoard.height - distanceBoard.height + height: parent.height - turnInstructionsBoard.height - distanceBoard.height + anchors.centerIn: parent + z: 3 + } + + // the distance to the next crossing road(textview) + Text { + id: distanceBoard + visible: showboard + anchors.bottom: turnInstructionsBoard.top + z: 3 + font.pixelSize: 45 + width:tbt_board.width + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + font.family: "Lato" + font.weight: Font.Light + color: "#FFFFFF" + } + + // the description of the next crossing road(textview) + Text { + id: turnInstructionsBoard + visible: showboard + anchors.bottom: parent.bottom + z: 3 + font.pixelSize: 30 + width:tbt_board.width + wrapMode: Text.Wrap + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + font.family: "Lato" + font.weight: Font.Light + color: "#FFFFFF" + } + + // the cases of direction arrow board + states: [ + State { + name: "arriveDest" //arrive the destination + PropertyChanges { target: turnDirectionBoard; source: "qrc:destination_full.png" } + PropertyChanges { target: turnDirection; source: "qrc:destination.png" } + }, + State { + name: "0" // NoDirection + PropertyChanges { target: turnDirectionBoard; source: "" } + PropertyChanges { target: turnDirection; source: "" } + }, + State { + name: "1" // DirectionForward + PropertyChanges { target: turnDirectionBoard; source: "" } + PropertyChanges { target: turnDirection; source: "" } + }, + State { + name: "2" // DirectionBearRight + PropertyChanges { target: turnDirectionBoard; source: "" } + PropertyChanges { target: turnDirection; source: "" } + }, + State { + name: "3" // DirectionLightRight + PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-r-30-full.png" } + PropertyChanges { target: turnDirection; source: "qrc:arrow-r-30-large.png" } + }, + State { + name: "4" // DirectionRight + PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-r-45-full.png" } + PropertyChanges { target: turnDirection; source: "qrc:arrow-r-45-large.png" } + }, + State { + name: "5" // DirectionHardRight + PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-r-75-full.png" } + PropertyChanges { target: turnDirection; source: "qrc:arrow-r-75-large.png" } + }, + State { + name: "6" // DirectionUTurnRight + //TODO modify qtlocation U-Turn best.For test, change app source. + PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-l-180-full.png" } + PropertyChanges { target: turnDirection; source: "qrc:arrow-l-180-large.png" } + }, + State { + name: "7" // DirectionUTurnLeft + //TODO modify qtlocation U-Turn best.For test, change app source. + PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-r-180-full.png" } + PropertyChanges { target: turnDirection; source: "qrc:arrow-r-180-large.png" } + }, + State { + name: "8" // DirectionHardLeft + PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-l-75-full.png" } + PropertyChanges { target: turnDirection; source: "qrc:arrow-l-75-large.png" } + }, + State { + name: "9" // DirectionLeft + PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-l-45-full.png" } + PropertyChanges { target: turnDirection; source: "qrc:arrow-l-45-large.png" } + }, + State { + name: "10" // DirectionLightLeft + PropertyChanges { target: turnDirectionBoard; source: "qrc:arrow-l-30-full.png" } + PropertyChanges { target: turnDirection; source: "qrc:arrow-l-30-large.png" } + }, + State { + name: "11" // DirectionBearLeft + PropertyChanges { target: turnDirectionBoard; source: "" } + PropertyChanges { target: turnDirection; source: "" } + } + ] + + // Set distance + function do_setDistance(dis) { + if(dis > 1000) + { + distanceBoard.text = (dis / 1000).toFixed(1) + " km" + } + else + { + distanceBoard.text = dis + " m" + } + + distance.text = (((dis/100).toFixed(0))*100) +"m" + } + + //set turnInstructions + function do_setTurnInstructions(turnInstructions) { + turnInstructionsBoard.text = turnInstructions + } + + //show the tbt board(the big one) + function do_showTbtboard(mvisible) { + showboard = mvisible + } +} diff --git a/app/qml/qmldir b/app/qml/qmldir new file mode 100644 index 0000000..7bbd751 --- /dev/null +++ b/app/qml/qmldir @@ -0,0 +1,2 @@ +MapWindow 1.0 MapWindow.qml +TbtBoard 1.0 TbtBoard.qml diff --git a/app/resources/car.png b/app/resources/car.png deleted file mode 100644 index 0a8195e..0000000 Binary files a/app/resources/car.png and /dev/null differ diff --git a/app/resources/icon.png b/app/resources/icon.png deleted file mode 100644 index 973a500..0000000 Binary files a/app/resources/icon.png and /dev/null differ diff --git a/app/resources/marker.png b/app/resources/marker.png deleted file mode 100644 index 2116dfd..0000000 Binary files a/app/resources/marker.png and /dev/null differ diff --git a/app/resources/scale.png b/app/resources/scale.png deleted file mode 100644 index c4f0812..0000000 Binary files a/app/resources/scale.png and /dev/null differ diff --git a/app/resources/scale_end.png b/app/resources/scale_end.png deleted file mode 100644 index 94510b1..0000000 Binary files a/app/resources/scale_end.png and /dev/null differ -- cgit