Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-positioning for openSUSE:Factory checked in at 2024-10-17 18:37:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-positioning (Old) and /work/SRC/openSUSE:Factory/.qt6-positioning.new.19354 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-positioning" Thu Oct 17 18:37:47 2024 rev:25 rq:1207621 version:6.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-positioning/qt6-positioning.changes 2024-10-03 18:02:12.102737698 +0200 +++ /work/SRC/openSUSE:Factory/.qt6-positioning.new.19354/qt6-positioning.changes 2024-10-17 18:37:50.622514505 +0200 @@ -1,0 +2,6 @@ +Tue Oct 8 09:29:47 UTC 2024 - Christophe Marin <christo...@krop.fr> + +- Update to 6.8.0: + * https://www.qt.io/blog/qt-6.8-released + +------------------------------------------------------------------- Old: ---- qtpositioning-everywhere-src-6.7.3.tar.xz New: ---- qtpositioning-everywhere-src-6.8.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-positioning.spec ++++++ --- /var/tmp/diff_new_pack.3GpbiT/_old 2024-10-17 18:37:51.682558707 +0200 +++ /var/tmp/diff_new_pack.3GpbiT/_new 2024-10-17 18:37:51.686558874 +0200 @@ -1,7 +1,7 @@ # # spec file for package qt6-positioning # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,8 +16,8 @@ # -%define real_version 6.7.3 -%define short_version 6.7 +%define real_version 6.8.0 +%define short_version 6.8 %define tar_name qtpositioning-everywhere-src %define tar_suffix %{nil} # @@ -27,7 +27,7 @@ %endif # Name: qt6-positioning%{?pkg_suffix} -Version: 6.7.3 +Version: 6.8.0 Release: 0 Summary: Qt 6 Positioning plugins and libraries License: GPL-3.0-or-later ++++++ qtpositioning-everywhere-src-6.7.3.tar.xz -> qtpositioning-everywhere-src-6.8.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/.cmake.conf new/qtpositioning-everywhere-src-6.8.0/.cmake.conf --- old/qtpositioning-everywhere-src-6.7.3/.cmake.conf 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/.cmake.conf 2024-10-02 16:25:44.000000000 +0200 @@ -1,4 +1,4 @@ -set(QT_REPO_MODULE_VERSION "6.7.3") +set(QT_REPO_MODULE_VERSION "6.8.0") set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1") set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_LEAN_HEADERS=1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/.tag new/qtpositioning-everywhere-src-6.8.0/.tag --- old/qtpositioning-everywhere-src-6.7.3/.tag 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/.tag 2024-10-02 16:25:44.000000000 +0200 @@ -1 +1 @@ -415babffd1cfcfec64a5e9a15c896d476c9331b6 +0a6e079b80de16c4cd329c031741c8edd6b8f49e diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/config.tests/gypsy/main.cpp new/qtpositioning-everywhere-src-6.8.0/config.tests/gypsy/main.cpp --- old/qtpositioning-everywhere-src-6.7.3/config.tests/gypsy/main.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/config.tests/gypsy/main.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: BSD-3-Clause #include <gypsy/gypsy-satellite.h> #include <gypsy/gypsy-control.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/config.tests/winrt/main.cpp new/qtpositioning-everywhere-src-6.8.0/config.tests/winrt/main.cpp --- old/qtpositioning-everywhere-src-6.7.3/config.tests/winrt/main.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/config.tests/winrt/main.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: BSD-3-Clause #include <functional> #include <windows.system.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/dependencies.yaml new/qtpositioning-everywhere-src-6.8.0/dependencies.yaml --- old/qtpositioning-everywhere-src-6.7.3/dependencies.yaml 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/dependencies.yaml 2024-10-02 16:25:44.000000000 +0200 @@ -1,10 +1,10 @@ dependencies: ../qtbase: - ref: 92b685784960eea6eb353688cf0edeb94d69c6cd + ref: b839e9b36db3a4e50dfb34521d8ef8de1fd01969 required: true ../qtdeclarative: - ref: 34ffe0c15a9564fefcf01a738eb0bde370399959 + ref: 2884c601242f030307a5acdca984b3aa0d34e064 required: false ../qtserialport: - ref: 0b7a499e8a58c1e7b80d9beae86c10dbfedf5542 + ref: fc0a965d5bada8296595fcefacebc235dccf1a75 required: false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/examples/positioning/weatherinfo/doc/src/weatherinfo.qdoc new/qtpositioning-everywhere-src-6.8.0/examples/positioning/weatherinfo/doc/src/weatherinfo.qdoc --- old/qtpositioning-everywhere-src-6.7.3/examples/positioning/weatherinfo/doc/src/weatherinfo.qdoc 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/examples/positioning/weatherinfo/doc/src/weatherinfo.qdoc 2024-10-02 16:25:44.000000000 +0200 @@ -130,17 +130,4 @@ \snippet weatherinfo/WeatherInfo.qml 3 \snippet weatherinfo/WeatherInfo.qml 4 - - \section1 Files and Attributions - - The example bundles the following images from Third-Party sources: - - \table - \row - \li \l{weatherinfo-tango-icons}{Tango Icons} - \li Public Domain - \row - \li \l{weatherinfo-tango-weather-pack}{Tango Weather Icon Pack by Darkobra} - \li Public Domain - \endtable */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/3rdparty/poly2tri/qt_attribution.json new/qtpositioning-everywhere-src-6.8.0/src/3rdparty/poly2tri/qt_attribution.json --- old/qtpositioning-everywhere-src-6.7.3/src/3rdparty/poly2tri/qt_attribution.json 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/3rdparty/poly2tri/qt_attribution.json 2024-10-02 16:25:44.000000000 +0200 @@ -6,7 +6,7 @@ "Description": "Poly2Tri is a sweepline constrained Delaunay Polygon Triangulation Library.", "Homepage": "https://github.com/greenm01/poly2tri", - "Version": "commit 0be213d95f82471b95d96d0248a0490d0a934f9f", + "Version": "commit a922022da4c0d3a55b1d6b6d634219caea653053", "LicenseId": "BSD-3-Clause", "License": "BSD 3-clause \"New\" or \"Revised\" License", "LicenseFile": "LICENSE", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/3rdparty/poly2tri/sweep/sweep.cpp new/qtpositioning-everywhere-src-6.8.0/src/3rdparty/poly2tri/sweep/sweep.cpp --- old/qtpositioning-everywhere-src-6.7.3/src/3rdparty/poly2tri/sweep/sweep.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/3rdparty/poly2tri/sweep/sweep.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -252,6 +252,35 @@ } // True if HoleAngle exceeds 90 degrees. +// LargeHole_DontFill checks if the advancing front has a large hole. +// A "Large hole" is a triangle formed by a sequence of points in the advancing +// front where three neighbor points form a triangle. +// And angle between left-top, bottom, and right-top points is more than 90 degrees. +// The first part of the algorithm reviews only three neighbor points, e.g. named A, B, C. +// Additional part of this logic reviews a sequence of 5 points - +// additionally reviews one point before and one after the sequence of three (A, B, C), +// e.g. named X and Y. +// In this case, angles are XBC and ABY and this if angles are negative or more +// than 90 degrees LargeHole_DontFill returns true. +// But there is a configuration when ABC has a negative angle but XBC or ABY is less +// than 90 degrees and positive. +// Then function LargeHole_DontFill return false and initiates filling. +// This filling creates a triangle ABC and adds it to the advancing front. +// But in the case when angle ABC is negative this triangle goes inside the advancing front +// and can intersect previously created triangles. +// This triangle leads to making wrong advancing front and problems in triangulation in the future. +// Looks like such a triangle should not be created. +// The simplest way to check and fix it is to check an angle ABC. +// If it is negative LargeHole_DontFill should return true and +// not initiate creating the ABC triangle in the advancing front. +// X______A Y +// \ / +// \ / +// \ B / +// | / +// | / +// |/ +// C bool Sweep::LargeHole_DontFill(Node* node) { Node* nextNode = node->next; @@ -259,6 +288,9 @@ if (!AngleExceeds90Degrees(node->point, nextNode->point, prevNode->point)) return false; + if (AngleIsNegative(node->point, nextNode->point, prevNode->point)) + return true; + // Check additional points on front. Node* next2Node = nextNode->next; // "..Plus.." because only want angles on same side as point being added. @@ -273,6 +305,11 @@ return true; } +bool Sweep::AngleIsNegative(Point* origin, Point* pa, Point* pb) { + const double angle = Angle(*origin, *pa, *pb); + return angle < 0; +} + bool Sweep::AngleExceeds90Degrees(Point* origin, Point* pa, Point* pb) { double angle = Angle(*origin, *pa, *pb); bool exceeds90Degrees = ((angle > PI_div2) || (angle < -PI_div2)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/3rdparty/poly2tri/sweep/sweep.h new/qtpositioning-everywhere-src-6.8.0/src/3rdparty/poly2tri/sweep/sweep.h --- old/qtpositioning-everywhere-src-6.7.3/src/3rdparty/poly2tri/sweep/sweep.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/3rdparty/poly2tri/sweep/sweep.h 2024-10-02 16:25:44.000000000 +0200 @@ -33,7 +33,7 @@ * Zalik, B.(2008)'Sweep-line algorithm for constrained Delaunay triangulation', * International Journal of Geographical Information Science * - * "FlipScan" Constrained Edge Algorithm invented by Thomas Åhlén, thah...@gmail.com + * "FlipScan" Constrained Edge Algorithm invented by Thomas à hlén, thah...@gmail.com */ #ifndef SWEEP_H @@ -172,6 +172,7 @@ // Decision-making about when to Fill hole. // Contributed by ToolmakerSteve2 bool LargeHole_DontFill(Node* node); + bool AngleIsNegative(Point* origin, Point* pa, Point* pb); bool AngleExceeds90Degrees(Point* origin, Point* pa, Point* pb); bool AngleExceedsPlus90DegreesOrIsNegative(Point* origin, Point* pa, Point* pb); double Angle(Point& origin, Point& pa, Point& pb); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java --- old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java 2024-10-02 16:25:44.000000000 +0200 @@ -4,6 +4,7 @@ package org.qtproject.qt.android.positioning; import android.content.Context; +import android.location.altitude.AltitudeConverter; import android.location.GpsSatellite; import android.location.GpsStatus; import android.location.Location; @@ -22,7 +23,7 @@ import android.util.Log; -public class QtPositioning implements LocationListener +class QtPositioning implements LocationListener { private static final String TAG = "qt.positioning.android"; @@ -41,16 +42,16 @@ */ private int expectedProviders = 0; - public static final int QT_GPS_PROVIDER = 1; - public static final int QT_NETWORK_PROVIDER = 2; + static final int QT_GPS_PROVIDER = 1; + static final int QT_NETWORK_PROVIDER = 2; /* The following values must match the corresponding error enums in the Qt API*/ - public static final int QT_ACCESS_ERROR = 0; - public static final int QT_CLOSED_ERROR = 1; - public static final int QT_POSITION_UNKNOWN_SOURCE_ERROR = 2; - public static final int QT_POSITION_NO_ERROR = 3; - public static final int QT_SATELLITE_NO_ERROR = 2; - public static final int QT_SATELLITE_UNKNOWN_SOURCE_ERROR = -1; + static final int QT_ACCESS_ERROR = 0; + static final int QT_CLOSED_ERROR = 1; + static final int QT_POSITION_UNKNOWN_SOURCE_ERROR = 2; + static final int QT_POSITION_NO_ERROR = 3; + static final int QT_SATELLITE_NO_ERROR = 2; + static final int QT_SATELLITE_UNKNOWN_SOURCE_ERROR = -1; /* True, if updates were caused by requestUpdate() */ private boolean isSingleUpdate = false; @@ -63,14 +64,20 @@ private Location lastNetwork = null; /* If true this class acts as satellite signal monitor rather than location monitor */ private boolean isSatelliteUpdate = false; + /* Try to convert the altitude to MSL or not */ + private boolean useAltitudeConverter = false; private PositioningLooperBase looperThread; private boolean isLocationProvidersDisabledInvoked = false; - static public void setContext(Context context) + private static Context appContext = null; + private static AltitudeConverter altitudeConverter = null; + + static void setContext(Context context) { try { + appContext = context; locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); } catch(Exception e) { e.printStackTrace(); @@ -102,12 +109,28 @@ return retList; } - static public Location lastKnownPosition(boolean fromSatelliteOnly) + static private void addMslAltitude(Location location) + { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { + if (altitudeConverter == null) + altitudeConverter = new AltitudeConverter(); + try { + altitudeConverter.addMslAltitudeToLocation(appContext, location); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + static Location lastKnownPosition(boolean fromSatelliteOnly, + boolean useAltitudeConverter) { Location gps = null; Location network = null; try { gps = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); + if (useAltitudeConverter) + addMslAltitude(gps); } catch (Exception e) { // This can throw if we only use ACCESS_COARSE_LOCATION. However, // if we didn't set fromSatelliteOnly to true, that is not an error. @@ -118,6 +141,8 @@ if (!fromSatelliteOnly) { try { network = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); + if (useAltitudeConverter) + addMslAltitude(network); } catch(Exception e) { e.printStackTrace(); network = null; @@ -197,7 +222,8 @@ } - static public int startUpdates(int androidClassKey, int locationProvider, int updateInterval) + static int startUpdates(int androidClassKey, int locationProvider, int updateInterval, + boolean useAltitudeConverter) { synchronized (m_syncObject) { try { @@ -207,6 +233,7 @@ positioningListener.nativeClassReference = androidClassKey; positioningListener.expectedProviders = locationProvider; positioningListener.isSatelliteUpdate = false; + positioningListener.useAltitudeConverter = useAltitudeConverter; if (updateInterval == 0) updateInterval = 50; //don't update more often than once per 50ms @@ -258,7 +285,7 @@ } } - static public void stopUpdates(int androidClassKey) + static void stopUpdates(int androidClassKey) { synchronized (m_syncObject) { try { @@ -271,7 +298,8 @@ } } - static public int requestUpdate(int androidClassKey, int locationProvider, int timeout) + static int requestUpdate(int androidClassKey, int locationProvider, int timeout, + boolean useAltitudeConverter) { synchronized (m_syncObject) { try { @@ -282,6 +310,7 @@ positioningListener.isSingleUpdate = true; positioningListener.expectedProviders = locationProvider; positioningListener.isSatelliteUpdate = false; + positioningListener.useAltitudeConverter = useAltitudeConverter; if ((locationProvider & QT_GPS_PROVIDER) > 0) { Log.d(TAG, "Single update using GPS"); @@ -328,7 +357,7 @@ } } - static public int startSatelliteUpdates(int androidClassKey, int updateInterval, boolean isSingleRequest) + static int startSatelliteUpdates(int androidClassKey, int updateInterval, boolean isSingleRequest) { synchronized (m_syncObject) { try { @@ -374,7 +403,7 @@ } } - public QtPositioning() + QtPositioning() { // Use GpsStatus for API Level <= 23 (version M and below) and // GnssStatus for other API levels. @@ -384,7 +413,7 @@ looperThread = new PositioningLooperGnss(); } - public Looper looper() + Looper looper() { return looperThread.looper(); } @@ -429,6 +458,7 @@ looperRunning = false; } + @Override public void run() { Looper.prepare(); @@ -447,24 +477,24 @@ } } - public void quitLooper() + void quitLooper() { if (isSatelliteLooper) removeSatelliteInfoListener(); looper().quit(); } - public synchronized boolean isReady() + synchronized boolean isReady() { return looperRunning; } - public void isSatelliteListener(boolean isListener) + void isSatelliteListener(boolean isListener) { isSatelliteLooper = isListener; } - public Looper looper() + Looper looper() { return posLooper; } @@ -501,7 +531,7 @@ ArrayList<GpsSatellite> list = new ArrayList<GpsSatellite>(); while (it.hasNext()) { - GpsSatellite sat = (GpsSatellite) it.next(); + GpsSatellite sat = it.next(); list.add(sat); } GpsSatellite[] sats = list.toArray(new GpsSatellite[list.size()]); @@ -551,11 +581,11 @@ } } - 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 satelliteGpsUpdated(Object[] update, int androidClassKey, boolean isSingleUpdate); - public static native void satelliteGnssUpdated(GnssStatus update, int androidClassKey, boolean isSingleUpdate); + static native void positionUpdated(Location update, int androidClassKey, boolean isSingleUpdate); + static native void locationProvidersDisabled(int androidClassKey); + static native void locationProvidersChanged(int androidClassKey); + static native void satelliteGpsUpdated(Object[] update, int androidClassKey, boolean isSingleUpdate); + static native void satelliteGnssUpdated(GnssStatus update, int androidClassKey, boolean isSingleUpdate); @Override public void onLocationChanged(Location location) { @@ -563,6 +593,9 @@ if (location == null) return; + if (useAltitudeConverter) + addMslAltitude(location); + if (isSatelliteUpdate) //we are a QGeoSatelliteInfoSource -> ignore return; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/jnipositioning.cpp new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/jnipositioning.cpp --- old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/jnipositioning.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/jnipositioning.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -240,6 +240,16 @@ if (!qFuzzyIsNull(value)) coordinate.setAltitude(value); } + // MSL altitude, available in API Level 34+. + // It will be available only if we requested it when starting updates. + if (QNativeInterface::QAndroidApplication::sdkVersion() >= 34) { + attributeExists = jniObject.callMethod<jboolean>("hasMslAltitude"); + if (attributeExists) { + const jdouble value = jniObject.callMethod<jdouble>("getMslAltitudeMeters"); + if (!qFuzzyIsNull(value)) + coordinate.setAltitude(value); + } + } info.setCoordinate(coordinate); @@ -420,7 +430,8 @@ return sats; } - QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly) + QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly, + bool useAltitudeConverter) { QJniEnvironment env; if (!env.jniEnv()) @@ -434,7 +445,8 @@ return {}; QJniObject locationObj = QJniObject::callStaticMethod<jobject>( - positioningClass(), lastKnownPositionMethodId, fromSatellitePositioningMethodsOnly); + positioningClass(), lastKnownPositionMethodId, fromSatellitePositioningMethodsOnly, + useAltitudeConverter); jobject location = locationObj.object(); if (location == nullptr) return QGeoPositionInfo(); @@ -483,7 +495,7 @@ int errorCode = QJniObject::callStaticMethod<jint>( positioningClass(), startUpdatesMethodId, androidClassKey, positioningMethodToInt(preferredMethods), - source->updateInterval()); + source->updateInterval(), source->useAltitudeConverter()); switch (errorCode) { case 0: case 1: @@ -522,7 +534,7 @@ int errorCode = QJniObject::callStaticMethod<jint>( positioningClass(), requestUpdateMethodId, androidClassKey, positioningMethodToInt(preferredMethods), - timeout); + timeout, source->useAltitudeConverter()); switch (errorCode) { case 0: case 1: @@ -728,10 +740,12 @@ GET_AND_CHECK_STATIC_METHOD(providerListMethodId, "providerList", jintArray); GET_AND_CHECK_STATIC_METHOD(lastKnownPositionMethodId, "lastKnownPosition", - QtJniTypes::Location, bool); - GET_AND_CHECK_STATIC_METHOD(startUpdatesMethodId, "startUpdates", jint, jint, jint, jint); + QtJniTypes::Location, bool, bool); + GET_AND_CHECK_STATIC_METHOD(startUpdatesMethodId, "startUpdates", jint, jint, jint, jint, + bool); GET_AND_CHECK_STATIC_METHOD(stopUpdatesMethodId, "stopUpdates", void, jint); - GET_AND_CHECK_STATIC_METHOD(requestUpdateMethodId, "requestUpdate", jint, jint, jint, jint); + GET_AND_CHECK_STATIC_METHOD(requestUpdateMethodId, "requestUpdate", jint, jint, jint, jint, + bool); GET_AND_CHECK_STATIC_METHOD(startSatelliteUpdatesMethodId, "startSatelliteUpdates", jint, jint, jint, bool); @@ -747,6 +761,9 @@ __android_log_print(ANDROID_LOG_INFO, logTag, "Positioning start"); + const auto context = QNativeInterface::QAndroidApplication::context(); + QtJniTypes::QtPositioning::callStaticMethod<void>("setContext", context); + if (!registerNatives()) { __android_log_print(ANDROID_LOG_FATAL, logTag, "registerNatives() failed"); return -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/jnipositioning.h new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/jnipositioning.h --- old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/jnipositioning.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/jnipositioning.h 2024-10-02 16:25:44.000000000 +0200 @@ -13,7 +13,8 @@ void unregisterPositionInfoSource(int key); QGeoPositionInfoSource::PositioningMethods availableProviders(); - QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly); + QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly, + bool useAltitudeConverter); QGeoPositionInfoSource::Error startUpdates(int androidClassKey); void stopUpdates(int androidClassKey); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/positionfactory_android.cpp new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/positionfactory_android.cpp --- old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/positionfactory_android.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/positionfactory_android.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -7,8 +7,7 @@ QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryAndroid::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parameters) - QGeoPositionInfoSourceAndroid *src = new QGeoPositionInfoSourceAndroid(parent); + QGeoPositionInfoSourceAndroid *src = new QGeoPositionInfoSourceAndroid(parameters, parent); return src; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/qgeopositioninfosource_android.cpp new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/qgeopositioninfosource_android.cpp --- old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/qgeopositioninfosource_android.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/qgeopositioninfosource_android.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -4,16 +4,24 @@ #include "qgeopositioninfosource_android_p.h" #include "jnipositioning.h" #include <QGeoPositionInfo> +#include <QVariantMap> + +using namespace Qt::StringLiterals; static constexpr int kUpdateFromColdStart = 2 * 60 * 1000; static constexpr int kRegularUpdatesTimerInterval = 30 * 1000; -QGeoPositionInfoSourceAndroid::QGeoPositionInfoSourceAndroid(QObject *parent) : +static constexpr auto kUseAltitudeConverter = "useMslAltitude"_L1; + +QGeoPositionInfoSourceAndroid::QGeoPositionInfoSourceAndroid(const QVariantMap ¶meters, + QObject *parent) : QGeoPositionInfoSource(parent) { androidClassKeyForUpdate = AndroidPositioning::registerPositionInfoSource(this); androidClassKeyForSingleRequest = AndroidPositioning::registerPositionInfoSource(this); + parseParameters(parameters); + //by default use all methods setPreferredPositioningMethods(AllPositioningMethods); @@ -55,7 +63,8 @@ QGeoPositionInfo QGeoPositionInfoSourceAndroid::lastKnownPosition(bool fromSatellitePositioningMethodsOnly) const { - return AndroidPositioning::lastKnownPosition(fromSatellitePositioningMethodsOnly); + return AndroidPositioning::lastKnownPosition(fromSatellitePositioningMethodsOnly, + useAltitudeConverter()); } QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSourceAndroid::supportedPositioningMethods() const @@ -84,6 +93,11 @@ return m_error; } +bool QGeoPositionInfoSourceAndroid::useAltitudeConverter() const +{ + return m_useAltitudeConverter; +} + void QGeoPositionInfoSourceAndroid::setError(Error error) { m_error = error; @@ -91,6 +105,11 @@ emit QGeoPositionInfoSource::errorOccurred(m_error); } +void QGeoPositionInfoSourceAndroid::parseParameters(const QVariantMap ¶meters) +{ + m_useAltitudeConverter = parameters.value(kUseAltitudeConverter, false).toBool(); +} + void QGeoPositionInfoSourceAndroid::startUpdates() { if (updatesRunning) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/qgeopositioninfosource_android_p.h new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/qgeopositioninfosource_android_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/plugins/position/android/src/qgeopositioninfosource_android_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/plugins/position/android/src/qgeopositioninfosource_android_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -22,7 +22,7 @@ { Q_OBJECT public: - QGeoPositionInfoSourceAndroid(QObject *parent = 0); + QGeoPositionInfoSourceAndroid(const QVariantMap ¶meters, QObject *parent = 0); ~QGeoPositionInfoSourceAndroid(); // From QGeoPositionInfoSource @@ -33,6 +33,8 @@ int minimumUpdateInterval() const override; Error error() const override; + bool useAltitudeConverter() const; + public Q_SLOTS: virtual void startUpdates() override; virtual void stopUpdates() override; @@ -51,6 +53,7 @@ private: void reconfigureRunningSystem(); void setError(Error error); + void parseParameters(const QVariantMap ¶meters); bool updatesRunning = false; int androidClassKeyForUpdate; @@ -61,6 +64,7 @@ QTimer m_regularUpdatesTimer; qint64 m_lastUpdateTime = 0; bool m_regularUpdatesErrorRaised = false; + bool m_useAltitudeConverter = false; }; #endif // QGEOPOSITIONINFOSOURCE_ANDROID_P_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/CMakeLists.txt new/qtpositioning-everywhere-src-6.8.0/src/positioning/CMakeLists.txt --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/CMakeLists.txt 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/CMakeLists.txt 2024-10-02 16:25:44.000000000 +0200 @@ -45,15 +45,13 @@ Qt::Core PRIVATE_MODULE_INTERFACE Qt::CorePrivate - GENERATE_CPP_EXPORTS - GENERATE_PRIVATE_CPP_EXPORTS DEFINES QT_NO_CONTEXTLESS_CONNECT ) if(ANDROID) set_property(TARGET Positioning APPEND PROPERTY QT_ANDROID_BUNDLED_JAR_DEPENDENCIES - jar/Qt${QtLocation_VERSION_MAJOR}AndroidPositioning.jar:org.qtproject.qt.android.positioning.QtPositioning # special case + jar/Qt${QtLocation_VERSION_MAJOR}AndroidPositioning.jar ) set_property(TARGET Positioning APPEND PROPERTY QT_ANDROID_LIB_DEPENDENCIES ${INSTALL_PLUGINSDIR}/position/libplugins_position_qtposition_android.so diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/doc/src/plugins/android.qdoc new/qtpositioning-everywhere-src-6.8.0/src/positioning/doc/src/plugins/android.qdoc --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/doc/src/plugins/android.qdoc 1970-01-01 01:00:00.000000000 +0100 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/doc/src/plugins/android.qdoc 2024-10-02 16:25:44.000000000 +0200 @@ -0,0 +1,99 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + +\page position-plugin-android.html +\title Qt Positioning Android plugin +\ingroup QtPositioning-plugins + +\brief Wraps Android positioning subsystem. + +\section1 Overview + +The Qt Positioning Android plugin wraps native Android APIs and provides +access to positioning and satellite information. + +The plugin can be loaded by using the provider name \b android. + +\section1 Parameters + +The following table lists parameters that \e can be passed to the Android +plugin. + +\table +\header + \li Parameter + \li Description +\row + \li useMslAltitude + \li The parameter is introduced in Qt 6.8. It determines if the plugin will + try to provide an altitude above Mean Sea Level (MSL). The default value + is \c false, which means that it provides the altitude in WGS84 format. + This parameter is only relevant for Android 14 and later. See + \l {Altitude Conversion} section for more details. +\endtable + +\section2 Altitude conversion + +Android traditionally provides altitude above the World Geodetic System 1984 +(WGS84) reference ellipsoid. However, starting from Android 14, a new +\l {https://developer.android.com/reference/android/location/altitude/AltitudeConverter} +{AltitudeConverter} class was introduced. This class allows to convert the +WGS84 altitude into \e {altitude above Mean Sea Level (MSL)} format. + +If the \c {useMslAltitude} plugin parameter is set to \c {true}, and the +application is running on \b {Android 14} or later, the +\l QGeoCoordinate::altitude component of \l QGeoPositionInfo objects retrieved +during position updates will contain the MSL altitude. + +\note According to the Android +\l {https://developer.android.com/reference/android/location/altitude/AltitudeConverter#addMslAltitudeToLocation(android.content.Context,%20android.location.Location)} +{documentation}, the conversion to the MSL altitude \e may take several seconds. +It means that \l {QGeoPositionInfoSource::}{lastKnownPosition()} requests \e may +execute longer when this feature is enabled, because the method is synchronous. +Other position update requests are not affected. + +\section1 Examples + +The following examples show how to create an \b android \l PositionSource from +C++ and QML. + +\section2 QML + +The following snippet creates a \l PositionSource with no parameters. The +altitude will be reported in WGS84 format. + +\qml +PositionSource { + name: "android" +} +\endqml + +The next snippet explicitly adds the \c {useMslAltitude} \l PluginParameter +and sets its value to \c true. This \l PositionSource will report the altitude +in MSL format. + +\qml +PositionSource { + name: "android" + PluginParameter { + name: "useMslAltitude" + value: true + } +} +\endqml + +\section2 C++ + +The following snippet shows how to use C++ to create a +\l {QGeoPositionInfoSource}{position source} which reports the altitude in MSL +format. + +\code +QVariantMap params; +params["useMslAltitude"] = true; +QGeoPositionInfoSource *positionSource = QGeoPositionInfoSource::createSource("android", params, this); +\endcode + +*/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/doc/src/qtpositioning-plugins.qdoc new/qtpositioning-everywhere-src-6.8.0/src/positioning/doc/src/qtpositioning-plugins.qdoc --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/doc/src/qtpositioning-plugins.qdoc 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/doc/src/qtpositioning-plugins.qdoc 2024-10-02 16:25:44.000000000 +0200 @@ -15,7 +15,8 @@ \table \row \li \b android - \li Wraps Android positioning subsystem. Available only on Android. + \li Wraps \l {Qt Positioning Android plugin}{Android} positioning subsystem. + Available only on Android. \row \li \b corelocation \li Wraps iOS and macOS positioning subsystems. Available only on Apple platforms supporting corelocation. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qclipperutils_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qclipperutils_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qclipperutils_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qclipperutils_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -36,7 +36,7 @@ */ class QClipperUtilsPrivate; -class Q_POSITIONING_PRIVATE_EXPORT QClipperUtils +class Q_POSITIONING_EXPORT QClipperUtils { public: QClipperUtils(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qdoublematrix4x4_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qdoublematrix4x4_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qdoublematrix4x4_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qdoublematrix4x4_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -29,7 +29,7 @@ * Some methods have been removed. */ -class Q_POSITIONING_PRIVATE_EXPORT QDoubleMatrix4x4 +class Q_POSITIONING_EXPORT QDoubleMatrix4x4 { public: inline QDoubleMatrix4x4() { setToIdentity(); } @@ -78,7 +78,7 @@ friend QPointF operator*(const QDoubleMatrix4x4& matrix, const QPointF& point); friend QDoubleMatrix4x4 operator*(double factor, const QDoubleMatrix4x4& matrix); friend QDoubleMatrix4x4 operator*(const QDoubleMatrix4x4& matrix, double factor); - friend Q_POSITIONING_PRIVATE_EXPORT QDoubleMatrix4x4 operator/(const QDoubleMatrix4x4& matrix, double divisor); + friend Q_POSITIONING_EXPORT QDoubleMatrix4x4 operator/(const QDoubleMatrix4x4& matrix, double divisor); friend inline bool qFuzzyCompare(const QDoubleMatrix4x4& m1, const QDoubleMatrix4x4& m2); @@ -124,7 +124,7 @@ void optimize(); #ifndef QT_NO_DEBUG_STREAM - friend Q_POSITIONING_PRIVATE_EXPORT QDebug operator<<(QDebug dbg, const QDoubleMatrix4x4 &m); + friend Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QDoubleMatrix4x4 &m); #endif private: @@ -179,7 +179,7 @@ return m[aColumn][aRow]; } -Q_POSITIONING_PRIVATE_EXPORT QDoubleMatrix4x4 operator/(const QDoubleMatrix4x4& matrix, double divisor); +Q_POSITIONING_EXPORT QDoubleMatrix4x4 operator/(const QDoubleMatrix4x4& matrix, double divisor); inline bool QDoubleMatrix4x4::isAffine() const { @@ -896,12 +896,12 @@ } #ifndef QT_NO_DEBUG_STREAM -Q_POSITIONING_PRIVATE_EXPORT QDebug operator<<(QDebug dbg, const QDoubleMatrix4x4 &m); +Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QDoubleMatrix4x4 &m); #endif #ifndef QT_NO_DATASTREAM -Q_POSITIONING_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDoubleMatrix4x4 &); -Q_POSITIONING_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDoubleMatrix4x4 &); +Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QDoubleMatrix4x4 &); +Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QDoubleMatrix4x4 &); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qdoublevector2d_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qdoublevector2d_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qdoublevector2d_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qdoublevector2d_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -27,7 +27,7 @@ class QDoubleVector3D; -class Q_POSITIONING_PRIVATE_EXPORT QDoubleVector2D +class Q_POSITIONING_EXPORT QDoubleVector2D { public: Q_DECL_CONSTEXPR inline QDoubleVector2D(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qdoublevector3d_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qdoublevector3d_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qdoublevector3d_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qdoublevector3d_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -25,7 +25,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONING_PRIVATE_EXPORT QDoubleVector3D +class Q_POSITIONING_EXPORT QDoubleVector3D { public: Q_DECL_CONSTEXPR inline QDoubleVector3D(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qgeocoordinateobject_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qgeocoordinateobject_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qgeocoordinateobject_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qgeocoordinateobject_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -23,7 +23,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONING_PRIVATE_EXPORT QGeoCoordinateObject : public QObject +class Q_POSITIONING_EXPORT QGeoCoordinateObject : public QObject { Q_OBJECT Q_PROPERTY(QGeoCoordinate coordinate READ coordinate WRITE setCoordinate NOTIFY @@ -58,6 +58,6 @@ QT_END_NAMESPACE QT_DECL_METATYPE_EXTERN_TAGGED(QGeoCoordinateObject*, QGeoCoordinateObject_ptr, - Q_POSITIONING_PRIVATE_EXPORT) + Q_POSITIONING_EXPORT) #endif // QGEOCOORDINATEOBJECT_P_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qgeopath_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qgeopath_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qgeopath_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qgeopath_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -133,7 +133,7 @@ } // Lazy by default. Eager, within the module, used only in MapItems/MapObjectsQSG -class Q_POSITIONING_PRIVATE_EXPORT QGeoPathPrivate : public QGeoShapePrivate +class Q_POSITIONING_EXPORT QGeoPathPrivate : public QGeoShapePrivate { public: QGeoPathPrivate(); @@ -179,7 +179,7 @@ bool m_bboxDirty = false; }; -class Q_POSITIONING_PRIVATE_EXPORT QGeoPathPrivateEager : public QGeoPathPrivate +class Q_POSITIONING_EXPORT QGeoPathPrivateEager : public QGeoPathPrivate { public: QGeoPathPrivateEager(); @@ -207,7 +207,7 @@ }; // This is a mean of creating a QGeoPathPrivateEager and injecting it into QGeoPaths via operator= -class Q_POSITIONING_PRIVATE_EXPORT QGeoPathEager : public QGeoPath +class Q_POSITIONING_EXPORT QGeoPathEager : public QGeoPath { Q_GADGET public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qgeopolygon_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qgeopolygon_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qgeopolygon_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qgeopolygon_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -21,7 +21,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONING_PRIVATE_EXPORT QGeoPolygonPrivate : public QGeoPathPrivate +class Q_POSITIONING_EXPORT QGeoPolygonPrivate : public QGeoPathPrivate { public: QGeoPolygonPrivate(); @@ -54,7 +54,7 @@ QClipperUtils m_clipperWrapper; }; -class Q_POSITIONING_PRIVATE_EXPORT QGeoPolygonPrivateEager : public QGeoPolygonPrivate +class Q_POSITIONING_EXPORT QGeoPolygonPrivateEager : public QGeoPolygonPrivate { public: QGeoPolygonPrivateEager(); @@ -84,7 +84,7 @@ }; // This is a mean of creating a QGeoPolygonPrivateEager and injecting it into QGeoPolygons via operator= -class Q_POSITIONING_PRIVATE_EXPORT QGeoPolygonEager : public QGeoPolygon +class Q_POSITIONING_EXPORT QGeoPolygonEager : public QGeoPolygon { Q_GADGET public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qlocationutils_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qlocationutils_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qlocationutils_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qlocationutils_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -31,7 +31,7 @@ class QGeoPositionInfo; class QGeoSatelliteInfo; -class Q_POSITIONING_PRIVATE_EXPORT QLocationUtils +class Q_POSITIONING_EXPORT QLocationUtils { public: enum CardinalDirection { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qpositioningglobal_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qpositioningglobal_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qpositioningglobal_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qpositioningglobal_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -15,7 +15,6 @@ // #include "qpositioningglobal.h" -#include <QtPositioning/private/qtpositioningexports_p.h> #endif // QPOSITIONINGGLOBAL_P_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioning/qwebmercator_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioning/qwebmercator_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioning/qwebmercator_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioning/qwebmercator_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -23,7 +23,7 @@ class QGeoCoordinate; class QDoubleVector2D; -class Q_POSITIONING_PRIVATE_EXPORT QWebMercator +class Q_POSITIONING_EXPORT QWebMercator { public: static QDoubleVector2D coordToMercator(const QGeoCoordinate &coord); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/CMakeLists.txt new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/CMakeLists.txt --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/CMakeLists.txt 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/CMakeLists.txt 2024-10-02 16:25:44.000000000 +0200 @@ -40,8 +40,6 @@ PRIVATE_MODULE_INTERFACE Qt::PositioningPrivate Qt::QuickPrivate - GENERATE_CPP_EXPORTS - GENERATE_PRIVATE_CPP_EXPORTS ) qt_internal_extend_target(positioningquickplugin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/locationsingleton_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/locationsingleton_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/locationsingleton_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/locationsingleton_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -31,7 +31,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONINGQUICK_PRIVATE_EXPORT LocationSingleton : public QObject +class Q_POSITIONINGQUICK_EXPORT LocationSingleton : public QObject { Q_OBJECT QML_NAMED_ELEMENT(QtPositioning) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativegeoaddress_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativegeoaddress_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativegeoaddress_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativegeoaddress_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -22,7 +22,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONINGQUICK_PRIVATE_EXPORT QDeclarativeGeoAddress : public QObject +class Q_POSITIONINGQUICK_EXPORT QDeclarativeGeoAddress : public QObject { Q_OBJECT QML_NAMED_ELEMENT(Address) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativegeolocation_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativegeolocation_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativegeolocation_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativegeolocation_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -25,7 +25,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONINGQUICK_PRIVATE_EXPORT QDeclarativeGeoLocation : public QObject +class Q_POSITIONINGQUICK_EXPORT QDeclarativeGeoLocation : public QObject { Q_OBJECT QML_NAMED_ELEMENT(Location) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativepluginparameter_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativepluginparameter_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativepluginparameter_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativepluginparameter_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONINGQUICK_PRIVATE_EXPORT QDeclarativePluginParameter : public QObject +class Q_POSITIONINGQUICK_EXPORT QDeclarativePluginParameter : public QObject { Q_OBJECT QML_NAMED_ELEMENT(PluginParameter) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativeposition.cpp new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativeposition.cpp --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativeposition.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativeposition.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -12,7 +12,7 @@ /*! \qmltype Position - //! \instantiates QDeclarativePosition + //! \nativetype QDeclarativePosition \inqmlmodule QtPositioning \since 5.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativeposition_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativeposition_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativeposition_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativeposition_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -25,7 +25,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONINGQUICK_PRIVATE_EXPORT QDeclarativePosition : public QObject +class Q_POSITIONINGQUICK_EXPORT QDeclarativePosition : public QObject { Q_OBJECT QML_NAMED_ELEMENT(Position) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativepositionsource.cpp new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativepositionsource.cpp --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativepositionsource.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativepositionsource.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -16,7 +16,7 @@ /*! \qmltype PositionSource - //! \instantiates QDeclarativePositionSource + //! \nativetype QDeclarativePositionSource \inqmlmodule QtPositioning \since 5.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativepositionsource_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativepositionsource_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativepositionsource_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativepositionsource_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -29,7 +29,7 @@ class QFile; class QTcpSocket; -class Q_POSITIONINGQUICK_PRIVATE_EXPORT QDeclarativePositionSource : public QObject, public QQmlParserStatus +class Q_POSITIONINGQUICK_EXPORT QDeclarativePositionSource : public QObject, public QQmlParserStatus { Q_OBJECT QML_NAMED_ELEMENT(PositionSource) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativesatellitesource_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativesatellitesource_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qdeclarativesatellitesource_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qdeclarativesatellitesource_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -27,7 +27,7 @@ QT_BEGIN_NAMESPACE -class Q_POSITIONINGQUICK_PRIVATE_EXPORT QDeclarativeSatelliteSource : public QObject, public QQmlParserStatus +class Q_POSITIONINGQUICK_EXPORT QDeclarativeSatelliteSource : public QObject, public QQmlParserStatus { Q_OBJECT QML_NAMED_ELEMENT(SatelliteSource) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qpositioningquickglobal_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qpositioningquickglobal_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qpositioningquickglobal_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qpositioningquickglobal_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -15,11 +15,10 @@ // #include "qpositioningquickglobal.h" -#include <QtPositioningQuick/private/qtpositioningquickexports_p.h> QT_BEGIN_NAMESPACE -void Q_POSITIONINGQUICK_PRIVATE_EXPORT qml_register_types_QtPositioning(); +void Q_POSITIONINGQUICK_EXPORT qml_register_types_QtPositioning(); QT_END_NAMESPACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qquickgeocoordinateanimation_p.h new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qquickgeocoordinateanimation_p.h --- old/qtpositioning-everywhere-src-6.7.3/src/positioningquick/qquickgeocoordinateanimation_p.h 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/src/positioningquick/qquickgeocoordinateanimation_p.h 2024-10-02 16:25:44.000000000 +0200 @@ -23,7 +23,7 @@ class QQuickGeoCoordinateAnimationPrivate; -class Q_POSITIONINGQUICK_PRIVATE_EXPORT QQuickGeoCoordinateAnimation : public QQuickPropertyAnimation +class Q_POSITIONINGQUICK_EXPORT QQuickGeoCoordinateAnimation : public QQuickPropertyAnimation { Q_OBJECT QML_NAMED_ELEMENT(CoordinateAnimation) @@ -59,7 +59,7 @@ void directionChanged(); }; -QVariant Q_POSITIONINGQUICK_PRIVATE_EXPORT q_coordinateInterpolator(const QGeoCoordinate &from, const QGeoCoordinate &to, qreal progress); +QVariant Q_POSITIONINGQUICK_EXPORT q_coordinateInterpolator(const QGeoCoordinate &from, const QGeoCoordinate &to, qreal progress); QT_END_NAMESPACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtpositioning-everywhere-src-6.7.3/tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp new/qtpositioning-everywhere-src-6.8.0/tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp --- old/qtpositioning-everywhere-src-6.7.3/tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp 2024-09-19 20:59:08.000000000 +0200 +++ new/qtpositioning-everywhere-src-6.8.0/tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp 2024-10-02 16:25:44.000000000 +0200 @@ -758,7 +758,7 @@ << QString("-27%1 28' 3.3\", 153%1 1' 40.4\", 28.2341m").arg(DEGREES_SYMB); QTest::newRow("SE with alt, dms, hemisphere, 28.2341m") << southEastWithAlt << QGeoCoordinate::DegreesMinutesSecondsWithHemisphere - << QString("27%1 28' 3.3\" S, 153%1 1' 40.4\" E, 28.2341m").arg(DEGREES_SYMB);; + << QString("27%1 28' 3.3\" S, 153%1 1' 40.4\" E, 28.2341m").arg(DEGREES_SYMB); QTest::newRow("NW, dd, no hemisphere") << northWest << QGeoCoordinate::Degrees