diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2021-10-29 17:28:46 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-07-26 14:28:40 +0200 |
commit | 82e15358a1aaafe84b7882a8a4c084707a5fa5bb (patch) | |
tree | a74bd27378b701b36cfc99aa99f7ffe678953833 /examples/location/geojson_viewer/main.cpp | |
parent | c4712ad8c5e7701429e9184db6ec91a4008566e2 (diff) | |
download | qtlocation-82e15358a1aaafe84b7882a8a4c084707a5fa5bb.tar.gz |
Migrate geojson_viewer example to Qt 6
This includes using QuickControls2 instead of QC1 and also refactoring
of the code for android permission requests.
Task-number: QTBUG-96795
Pick-to: 6.2
Change-Id: I2986d5f1572d5889b15ee6b5d031d51a7b6a3da9
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'examples/location/geojson_viewer/main.cpp')
-rw-r--r-- | examples/location/geojson_viewer/main.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/examples/location/geojson_viewer/main.cpp b/examples/location/geojson_viewer/main.cpp index 436a8e16..f7bf28fe 100644 --- a/examples/location/geojson_viewer/main.cpp +++ b/examples/location/geojson_viewer/main.cpp @@ -70,6 +70,9 @@ #include <QJsonArray> #include <QFileInfo> #include <QtCore/qobjectdefs.h> +#ifdef Q_OS_ANDROID +# include <QtCore/private/qandroidextras_p.h> +#endif class extractor { @@ -247,16 +250,33 @@ public: #include "main.moc" +#ifdef Q_OS_ANDROID +// Request permissions because we're using QStandardPaths::writableLocation() +bool requestStoragePermissions() +{ + const auto permission = QtAndroidPrivate::Storage; + auto checkFuture = QtAndroidPrivate::checkPermission(permission); + if (checkFuture.result() == QtAndroidPrivate::Denied) { + auto requestFuture = QtAndroidPrivate::requestPermission(permission); + if (requestFuture.result() != QtAndroidPrivate::Authorized) { + qWarning() << "Couldn't get permission: " << permission; + return false; + } + } + + return true; +} +#endif + int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication app(argc, argv); - auto permission = QPermission::WriteStorage; - if (QCoreApplication::requestPermission(permission).result() != QPermission::Authorized) { - qWarning() << "Couldn't get 'WriteStorage' permission!"; +#ifdef Q_OS_ANDROID + if (!requestStoragePermissions()) return -1; - } +#endif QQmlApplicationEngine engine; QUrl absoluteFilePath = argc > 1 ? |