2
* GPS Navigation http://launchpad.net/unav
3
* Copyright (C) 2015-2016 Marcos Alvarez Costales https://launchpad.net/~costales
5
* GPS Navigation is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 3 of the License, or
8
* (at your option) any later version.
10
* GPS Navigation is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
17
import QtQuick.Layouts 1.1
18
import Ubuntu.Components 1.3
19
import Ubuntu.Components.Pickers 1.3
20
import Ubuntu.Components.Popups 1.3
25
title: i18n.tr("Coordinates")
34
mainPageStack.pop(coordPage)
35
mainPageStack.push(Qt.resolvedUrl("RoutePage.qml"))
39
model: [i18n.tr("Decimal"), i18n.tr("Sexagesimal")]
47
visible: !coordPage.head.sections.selectedIndex
48
anchors.horizontalCenter: parent.horizontalCenter
49
anchors.verticalCenter: parent.verticalCenter
58
anchors.verticalCenter: parent.verticalCenter
65
anchors.verticalCenter: parent.verticalCenter
69
placeholderText: '51.506177'
76
anchors.verticalCenter: parent.verticalCenter
77
text: i18n.tr("Long:")
83
anchors.verticalCenter: parent.verticalCenter
87
placeholderText: '-0.100236'
93
text: i18n.tr("Show on Map")
94
width: colCoordDec.width
95
anchors.topMargin: units.gu(5)
96
anchors.horizontalCenter: parent.horizontalCenter
97
color: UbuntuColors.green
100
var aux_lat = lat1.text;
101
var aux_lng = lng1.text;
102
if (!isNaN(aux_lat) && aux_lat.toString().indexOf('.') != -1 && !isNaN(aux_lng) && aux_lng.toString().indexOf('.') != -1 && aux_lat >= -90 && aux_lat <= 90 && aux_lng >= -180 && aux_lng <= 180) { // It's a float
103
mainPageStack.clickedLat = parseFloat(aux_lat).toFixed(5);
104
mainPageStack.clickedLng = parseFloat(aux_lng).toFixed(5);
105
if (mainPageStack.center_onpos === 2)
106
mainPageStack.center_onpos = 1;
107
mainPageStack.pop(coordPage);
108
mainPageStack.executeJavaScript(
109
"ui.markers_POI_set([{title: '', lat: " + mainPageStack.clickedLat + ", lng: " + mainPageStack.clickedLng + "}]);"
111
mainPageStack.favPopup = false;
112
goThereActionPopover.show();
115
PopupUtils.open(coordDecNotValid)
119
PopupUtils.open(coordDecNotValid)
128
title: i18n.tr("Coordinates are not valid")
129
text: i18n.tr("Enter valid decimal coordinates\n\nExpected format is:") + "\n51.506177\n-0.100236"
131
text: i18n.tr("Close")
132
onClicked: PopupUtils.close(dialogue)
141
visible: coordPage.head.sections.selectedIndex
142
anchors.horizontalCenter: parent.horizontalCenter
143
anchors.verticalCenter: parent.verticalCenter
151
anchors.verticalCenter: parent.verticalCenter
152
text: i18n.tr("Lat:")
158
anchors.verticalCenter: parent.verticalCenter
159
hasClearButton: false
161
placeholderText: '51'
164
anchors.verticalCenter: parent.verticalCenter
171
anchors.verticalCenter: parent.verticalCenter
172
hasClearButton: false
174
placeholderText: '30'
177
anchors.verticalCenter: parent.verticalCenter
184
anchors.verticalCenter: parent.verticalCenter
185
hasClearButton: false
187
placeholderText: '22.23'
190
anchors.verticalCenter: parent.verticalCenter
197
anchors.verticalCenter: parent.verticalCenter
198
hasClearButton: false
204
anchors.verticalCenter: parent.verticalCenter
211
anchors.verticalCenter: parent.verticalCenter
212
text: i18n.tr("Long:")
218
anchors.verticalCenter: parent.verticalCenter
219
hasClearButton: false
224
anchors.verticalCenter: parent.verticalCenter
231
anchors.verticalCenter: parent.verticalCenter
232
hasClearButton: false
237
anchors.verticalCenter: parent.verticalCenter
244
anchors.verticalCenter: parent.verticalCenter
245
hasClearButton: false
247
placeholderText: '0.84'
250
anchors.verticalCenter: parent.verticalCenter
257
anchors.verticalCenter: parent.verticalCenter
258
hasClearButton: false
264
anchors.verticalCenter: parent.verticalCenter
271
text: i18n.tr("Show on Map")
272
width: colCoordPolar.width
273
anchors.topMargin: units.gu(5)
274
anchors.horizontalCenter: parent.horizontalCenter
275
color: UbuntuColors.green
278
var aux_lat_day = parseInt(lat2a.text);
279
var aux_lat_min = parseFloat(lat2b.text);
280
var aux_lat_sec = lat2c.text === "" ? 0 : parseFloat(lat2c.text);
281
var aux_lat_dir = lat2d.text.toUpperCase();
282
var aux_lng_day = parseInt(lng2a.text);
283
var aux_lng_min = parseFloat(lng2b.text);
284
var aux_lng_sec = lng2c.text === "" ? 0 : parseFloat(lng2c.text);
285
var aux_lng_dir = lng2d.text.toUpperCase();
287
if ((!isNaN(aux_lat_day) && !isNaN(aux_lat_min) && !isNaN(aux_lat_sec) && (aux_lat_dir === 'S' || aux_lat_dir === 'N')) &&
288
(!isNaN(aux_lng_day) && !isNaN(aux_lng_min) && !isNaN(aux_lng_sec) && (aux_lng_dir === 'W' || aux_lng_dir === 'E'))) {
289
var aux_lat = aux_lat_day + aux_lat_min/60 + aux_lat_sec/(60*60);
290
if (aux_lat_dir === "S" || aux_lat_dir === "W")
291
aux_lat = aux_lat * -1;
293
var aux_lng = aux_lng_day + aux_lng_min/60 + aux_lng_sec/(60*60);
294
if (aux_lng_dir === "S" || aux_lng_dir === "W")
295
aux_lng = aux_lng * -1;
297
if (aux_lat >= -90 && aux_lat <= 90 && aux_lng >= -180 && aux_lng <= 180) {
298
mainPageStack.clickedLat = parseFloat(aux_lat).toFixed(5);
299
mainPageStack.clickedLng = parseFloat(aux_lng).toFixed(5);
300
if (mainPageStack.center_onpos === 2)
301
mainPageStack.center_onpos = 1;
302
mainPageStack.pop(coordPage);
303
mainPageStack.executeJavaScript(
304
"ui.markers_POI_set([{title: '', lat: " + mainPageStack.clickedLat + ", lng: " + mainPageStack.clickedLng + "}]);"
306
mainPageStack.favPopup = false;
307
goThereActionPopover.show();
310
PopupUtils.open(coordPolarNotValid)
314
PopupUtils.open(coordPolarNotValid)
318
PopupUtils.open(coordPolarNotValid)
324
id: coordPolarNotValid
327
title: i18n.tr("Coordinates are not valid")
328
text: i18n.tr("Enter valid sexagesimal coordinates\n\nExpected format is:") + "\n51° 30' 22.23'' N\n0° 6' 0.84'' W"
330
text: i18n.tr("Close")
331
onClicked: PopupUtils.close(dialogue)