summaryrefslogtreecommitdiff
path: root/src/plugins/position
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-01-10 21:37:50 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-01-10 21:37:51 +0100
commitd73f9d59e352b096af242ebe69c645def30f5672 (patch)
tree3619a2b57a6b9750e77ae257d7ef25ef87a3d5aa /src/plugins/position
parentc134f72060607be6caa622200c8930211a6e7e91 (diff)
parent1688c44d223145abfdca19a7b31faecbafb0d315 (diff)
downloadqtlocation-d73f9d59e352b096af242ebe69c645def30f5672.tar.gz
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts: .qmake.conf Change-Id: I0724ca9ffbb8099f698b090a4fdd993fad2c2302
Diffstat (limited to 'src/plugins/position')
-rw-r--r--src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java7
-rw-r--r--src/plugins/position/android/src/jnipositioning.cpp15
-rw-r--r--src/plugins/position/android/src/qgeopositioninfosource_android.cpp5
-rw-r--r--src/plugins/position/android/src/qgeopositioninfosource_android_p.h1
-rw-r--r--src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp5
5 files changed, 27 insertions, 6 deletions
diff --git a/src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java b/src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java
index 1ea0c071..d819e627 100644
--- a/src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java
+++ b/src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java
@@ -114,7 +114,7 @@ public class QtPositioning implements LocationListener
Log.w(TAG, "No locationManager available in QtPositioning");
return new int[0];
}
- List<String> providers = locationManager.getAllProviders();
+ List<String> providers = locationManager.getProviders(true);
int retList[] = new int[providers.size()];
for (int i = 0; i < providers.size(); i++) {
if (providers.get(i).equals(LocationManager.GPS_PROVIDER)) {
@@ -521,10 +521,9 @@ public class QtPositioning implements LocationListener
}
}
-
-
public static native void positionUpdated(Location update, int androidClassKey, boolean isSingleUpdate);
public static native void locationProvidersDisabled(int androidClassKey);
+ public static native void locationProvidersChanged(int androidClassKey);
public static native void satelliteUpdated(GpsSatellite[] update, int androidClassKey, boolean isSingleUpdate);
@Override
@@ -578,11 +577,13 @@ public class QtPositioning implements LocationListener
@Override
public void onProviderEnabled(String provider) {
Log.d(TAG, "Enabled provider: " + provider);
+ locationProvidersChanged(nativeClassReference);
}
@Override
public void onProviderDisabled(String provider) {
Log.d(TAG, "Disabled provider: " + provider);
+ locationProvidersChanged(nativeClassReference);
if (!expectedProvidersAvailable(expectedProviders))
locationProvidersDisabled(nativeClassReference);
}
diff --git a/src/plugins/position/android/src/jnipositioning.cpp b/src/plugins/position/android/src/jnipositioning.cpp
index 7d138ce4..0f358b42 100644
--- a/src/plugins/position/android/src/jnipositioning.cpp
+++ b/src/plugins/position/android/src/jnipositioning.cpp
@@ -528,6 +528,18 @@ static void locationProvidersDisabled(JNIEnv *env, jobject /*thiz*/, jint androi
QMetaObject::invokeMethod(source, "locationProviderDisabled", Qt::AutoConnection);
}
+static void locationProvidersChanged(JNIEnv *env, jobject /*thiz*/, jint androidClassKey)
+{
+ Q_UNUSED(env);
+ QObject *source = AndroidPositioning::idToPosSource()->value(androidClassKey);
+ if (!source) {
+ qWarning("locationProvidersChanged: source == 0");
+ return;
+ }
+
+ QMetaObject::invokeMethod(source, "locationProvidersChanged", Qt::AutoConnection);
+}
+
static void satelliteUpdated(JNIEnv *env, jobject /*thiz*/, jobjectArray satellites, jint androidClassKey, jboolean isSingleUpdate)
{
QList<QGeoSatelliteInfo> inUse;
@@ -564,7 +576,8 @@ if (!VAR) { \
static JNINativeMethod methods[] = {
{"positionUpdated", "(Landroid/location/Location;IZ)V", (void *)positionUpdated},
{"locationProvidersDisabled", "(I)V", (void *) locationProvidersDisabled},
- {"satelliteUpdated", "([Landroid/location/GpsSatellite;IZ)V", (void *)satelliteUpdated}
+ {"satelliteUpdated", "([Landroid/location/GpsSatellite;IZ)V", (void *)satelliteUpdated},
+ {"locationProvidersChanged", "(I)V", (void *) locationProvidersChanged}
};
static bool registerNatives(JNIEnv *env)
diff --git a/src/plugins/position/android/src/qgeopositioninfosource_android.cpp b/src/plugins/position/android/src/qgeopositioninfosource_android.cpp
index 59b8beab..38778ec4 100644
--- a/src/plugins/position/android/src/qgeopositioninfosource_android.cpp
+++ b/src/plugins/position/android/src/qgeopositioninfosource_android.cpp
@@ -206,6 +206,11 @@ void QGeoPositionInfoSourceAndroid::locationProviderDisabled()
setError(QGeoPositionInfoSource::ClosedError);
}
+void QGeoPositionInfoSourceAndroid::locationProvidersChanged()
+{
+ emit supportedPositioningMethodsChanged();
+}
+
void QGeoPositionInfoSourceAndroid::requestTimeout()
{
AndroidPositioning::stopUpdates(androidClassKeyForSingleRequest);
diff --git a/src/plugins/position/android/src/qgeopositioninfosource_android_p.h b/src/plugins/position/android/src/qgeopositioninfosource_android_p.h
index dbb27f83..61e107b1 100644
--- a/src/plugins/position/android/src/qgeopositioninfosource_android_p.h
+++ b/src/plugins/position/android/src/qgeopositioninfosource_android_p.h
@@ -79,6 +79,7 @@ public Q_SLOTS:
void processSinglePositionUpdate(const QGeoPositionInfo& pInfo);
void locationProviderDisabled();
+ void locationProvidersChanged();
private Q_SLOTS:
void requestTimeout();
diff --git a/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp b/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp
index 139a6b3d..b55d2ba3 100644
--- a/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp
+++ b/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp
@@ -179,7 +179,6 @@ int QGeoPositionInfoSourceWinRT::init()
});
if (FAILED(hr)) {
setError(QGeoPositionInfoSource::UnknownSourceError);
- qErrnoWarning(hr, "Could not register status changed callback");
return -1;
}
@@ -342,15 +341,17 @@ bool QGeoPositionInfoSourceWinRT::startHandler()
// registered. That could have helped in the single update case
ComPtr<IAsyncOperation<Geoposition*>> op;
hr = d->locator->GetGeopositionAsync(&op);
+ RETURN_HR_IF_FAILED("Could not start position operation");
hr = d->locator->add_PositionChanged(Callback<GeoLocatorPositionHandler>(this,
&QGeoPositionInfoSourceWinRT::onPositionChanged).Get(),
&d->positionToken);
+ RETURN_HR_IF_FAILED("Could not add position handler");
+
return hr;
});
if (FAILED(hr)) {
setError(QGeoPositionInfoSource::UnknownSourceError);
- qErrnoWarning(hr, "Could not add position handler");
return false;
}