You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2014/01/31 01:33:28 UTC
[1/4] git commit: add ubuntu platform
Updated Branches:
refs/heads/dev 3d62bc46d -> f5a26ebf7
add ubuntu platform
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/commit/04b60f87
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/tree/04b60f87
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/diff/04b60f87
Branch: refs/heads/dev
Commit: 04b60f870679e0756d1aa7e1b5e20cb5a437597d
Parents: 236ec15
Author: Maxim Ermilov <ma...@canonical.com>
Authored: Mon Jan 20 18:25:05 2014 +0400
Committer: Maxim Ermilov <ma...@canonical.com>
Committed: Mon Jan 20 18:25:05 2014 +0400
----------------------------------------------------------------------
plugin.xml | 22 ++++++++
src/ubuntu/geolocation.cpp | 119 ++++++++++++++++++++++++++++++++++++++++
src/ubuntu/geolocation.h | 69 +++++++++++++++++++++++
3 files changed, 210 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/04b60f87/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index 3f9877b..57558c2 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -148,6 +148,28 @@ xmlns:android="http://schemas.android.com/apk/res/android"
</platform>
+ <!-- ubuntu -->
+ <platform name="ubuntu">
+ <js-module src="www/Coordinates.js" name="Coordinates">
+ <clobbers target="Coordinates" />
+ </js-module>
+
+ <js-module src="www/PositionError.js" name="PositionError">
+ <clobbers target="PositionError" />
+ </js-module>
+
+ <js-module src="www/Position.js" name="Position">
+ <clobbers target="Position" />
+ </js-module>
+
+ <js-module src="www/geolocation.js" name="geolocation">
+ <clobbers target="navigator.geolocation" />
+ </js-module>
+
+ <source-file src="src/ubuntu/geolocation.cpp" />
+ <header-file src="src/ubuntu/geolocation.h" />
+ </platform>-->
+
<!-- wp7 -->
<platform name="wp7">
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/04b60f87/src/ubuntu/geolocation.cpp
----------------------------------------------------------------------
diff --git a/src/ubuntu/geolocation.cpp b/src/ubuntu/geolocation.cpp
new file mode 100644
index 0000000..c820cfe
--- /dev/null
+++ b/src/ubuntu/geolocation.cpp
@@ -0,0 +1,119 @@
+/*
+ *
+ * Copyright 2013 Canonical Ltd.
+ *
+ * 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.
+ *
+*/
+
+#include <QUuid>
+
+#include "geolocation.h"
+
+Geolocation::Geolocation(Cordova *cordova): CPlugin(cordova),
+ _geoPositionInfoSource(QGeoPositionInfoSource::createDefaultSource(this)) {
+ if (_geoPositionInfoSource.data() != 0) {
+ QObject::connect(_geoPositionInfoSource.data(), SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo)));
+ QObject::connect(_geoPositionInfoSource.data(), SIGNAL(updateTimeout()), this, SLOT(updateTimeout()));
+ }
+}
+
+void Geolocation::addWatch(int scId, int ecId, const QString &id, bool enableHighAccuracy) {
+ Q_UNUSED(enableHighAccuracy);
+
+ assert(_id2sc.find(id) == _id2sc.end());
+
+ if (!_geoPositionInfoSource.data()) {
+ QVariantMap err;
+ err.insert("code", POSITION_UNAVAILABLE);
+ err.insert("message", "unavailable");
+
+ this->cb(ecId, err);
+ return;
+ }
+
+ _id2sc[id] = scId;
+ _id2ec[id] = ecId;
+}
+
+void Geolocation::clearWatch(int scId, int ecId, const QString &id) {
+ _id2sc.remove(id);
+ _id2ec.remove(id);
+}
+
+void Geolocation::getLocation(int scId, int ecId, bool enableHighAccuracy, qint64 maximumAge) {
+ Q_UNUSED(maximumAge);
+ Q_UNUSED(enableHighAccuracy);
+
+ if (!_geoPositionInfoSource.data()) {
+ QVariantMap err;
+ err.insert("code", POSITION_UNAVAILABLE);
+ err.insert("message", "unavailable");
+
+ this->cb(ecId, err);
+ return;
+ }
+
+ _geoPositionInfoSource->requestUpdate();
+
+ QString id = QString("_INTERNAL_") + QUuid::createUuid().toString();
+
+ _id2sc[id] = scId;
+ _id2ec[id] = ecId;
+ _singleUpdate.insert(id);
+}
+
+void Geolocation::positionUpdated(const QGeoPositionInfo &update) {
+ QGeoCoordinate coordinate = update.coordinate();
+
+ QVariantMap p;
+
+ p.insert("latitude", coordinate.latitude());
+ p.insert("longitude", coordinate.longitude());
+ p.insert("altitude", coordinate.altitude());
+
+ if (update.hasAttribute(QGeoPositionInfo::VerticalAccuracy))
+ p.insert("accuracy", update.attribute(QGeoPositionInfo::VerticalAccuracy));
+ if (update.hasAttribute(QGeoPositionInfo::Direction))
+ p.insert("heading", update.attribute(QGeoPositionInfo::Direction));
+ if (update.hasAttribute(QGeoPositionInfo::GroundSpeed))
+ p.insert("velocity", update.attribute(QGeoPositionInfo::GroundSpeed));
+ if (update.hasAttribute(QGeoPositionInfo::HorizontalAccuracy))
+ p.insert("altitudeAccuracy", update.attribute(QGeoPositionInfo::HorizontalAccuracy));
+ p.insert("timestamp", update.timestamp().toMSecsSinceEpoch());
+
+ for (const QString &id: _id2sc.keys()) {
+ int scId = _id2sc[id];
+ this->cb(scId, p);
+ if (_singleUpdate.contains(id)) {
+ _singleUpdate.remove(id);
+ _id2sc.remove(id);
+ _id2ec.remove(id);
+ }
+ }
+}
+
+void Geolocation::updateTimeout() {
+ QVariantMap err;
+ err.insert("code", TIMEOUT);
+ err.insert("message", "timeout");
+
+ for (int ecId: _id2ec) {
+ this->cb(ecId, err);
+ }
+
+ _id2ec.clear();
+ _id2sc.clear();
+ _singleUpdate.clear();
+}
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/04b60f87/src/ubuntu/geolocation.h
----------------------------------------------------------------------
diff --git a/src/ubuntu/geolocation.h b/src/ubuntu/geolocation.h
new file mode 100644
index 0000000..7345bec
--- /dev/null
+++ b/src/ubuntu/geolocation.h
@@ -0,0 +1,69 @@
+/*
+ *
+ * Copyright 2013 Canonical Ltd.
+ *
+ * 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.
+ *
+*/
+
+#ifndef GEOLOCATION_H_SVO2013
+#define GEOLOCATION_H_SVO2013
+
+#include <QGeoPositionInfoSource>
+#include <QGeoPositionInfo>
+#include <QtCore>
+#include <cassert>
+
+#include <cplugin.h>
+
+class Geolocation: public CPlugin {
+ Q_OBJECT
+public:
+ explicit Geolocation(Cordova *cordova);
+
+ virtual const QString fullName() override {
+ return Geolocation::fullID();
+ }
+
+ virtual const QString shortName() override {
+ return "Geolocation";
+ }
+
+ static const QString fullID() {
+ return "Geolocation";
+ }
+
+public slots:
+ void getLocation(int scId, int ecId, bool enableHighAccuracy, qint64 maximumAge);
+ void addWatch(int scId, int ecId, const QString &id, bool enableHighAccuracy);
+ void clearWatch(int scId, int ecId, const QString &id);
+
+protected slots:
+ void positionUpdated(const QGeoPositionInfo &update);
+ void updateTimeout();
+
+private:
+ QMap<QString, int> _id2sc;
+ QMap<QString, int> _id2ec;
+ QSet<QString> _singleUpdate;
+ QSharedPointer<QGeoPositionInfoSource> _geoPositionInfoSource;
+
+ enum PositionError {
+ PERMISSION_DENIED = 1,
+ POSITION_UNAVAILABLE = 2,
+ TIMEOUT = 3
+ };
+};
+
+#endif
[4/4] git commit: cleaned up plugin.xml
Posted by st...@apache.org.
cleaned up plugin.xml
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/commit/f5a26ebf
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/tree/f5a26ebf
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/diff/f5a26ebf
Branch: refs/heads/dev
Commit: f5a26ebf7081c2e9f6808f9e5739c9daad7da459
Parents: 994c96f
Author: Steven Gill <st...@gmail.com>
Authored: Thu Jan 30 16:33:28 2014 -0800
Committer: Steven Gill <st...@gmail.com>
Committed: Thu Jan 30 16:33:28 2014 -0800
----------------------------------------------------------------------
plugin.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/f5a26ebf/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index 3a88809..5a58561 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -173,7 +173,7 @@ xmlns:android="http://schemas.android.com/apk/res/android"
<param policy_group="location" policy_version="1" />
</feature>
</config-file>
- </platform>-->
+ </platform>
<!-- wp7 -->
<platform name="wp7">
[2/4] git commit: [ubuntu] request location permission
Posted by st...@apache.org.
[ubuntu] request location permission
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/commit/52648f35
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/tree/52648f35
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/diff/52648f35
Branch: refs/heads/dev
Commit: 52648f3573caa77f50a45817bd757d922dd7abfd
Parents: 04b60f8
Author: Maxim Ermilov <ma...@canonical.com>
Authored: Tue Jan 21 15:31:16 2014 +0400
Committer: Maxim Ermilov <ma...@canonical.com>
Committed: Tue Jan 21 15:31:16 2014 +0400
----------------------------------------------------------------------
plugin.xml | 5 +++++
1 file changed, 5 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/52648f35/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index 57558c2..9d71799 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -168,6 +168,11 @@ xmlns:android="http://schemas.android.com/apk/res/android"
<source-file src="src/ubuntu/geolocation.cpp" />
<header-file src="src/ubuntu/geolocation.h" />
+ <config-file target="config.xml" parent="/*">
+ <feature name="Geolocation">
+ <param policy_group="location" policy_version="1" />
+ </feature>
+ </config-file>
</platform>-->
<!-- wp7 -->
[3/4] git commit: Merge branch 'dev' of
github.com:Zaspire/cordova-plugin-geolocation into dev
Posted by st...@apache.org.
Merge branch 'dev' of github.com:Zaspire/cordova-plugin-geolocation into dev
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/commit/994c96f1
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/tree/994c96f1
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/diff/994c96f1
Branch: refs/heads/dev
Commit: 994c96f114e9c16c93911b06dec275a3c97ce3b7
Parents: 3d62bc4 52648f3
Author: Steven Gill <st...@gmail.com>
Authored: Thu Jan 30 16:32:42 2014 -0800
Committer: Steven Gill <st...@gmail.com>
Committed: Thu Jan 30 16:32:42 2014 -0800
----------------------------------------------------------------------
plugin.xml | 27 +++++++++
src/ubuntu/geolocation.cpp | 119 ++++++++++++++++++++++++++++++++++++++++
src/ubuntu/geolocation.h | 69 +++++++++++++++++++++++
3 files changed, 215 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/994c96f1/plugin.xml
----------------------------------------------------------------------