summaryrefslogtreecommitdiff
path: root/examples/location/geojson_viewer/main.cpp
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2021-10-29 17:28:46 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2022-07-26 14:28:40 +0200
commit82e15358a1aaafe84b7882a8a4c084707a5fa5bb (patch)
treea74bd27378b701b36cfc99aa99f7ffe678953833 /examples/location/geojson_viewer/main.cpp
parentc4712ad8c5e7701429e9184db6ec91a4008566e2 (diff)
downloadqtlocation-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.cpp28
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 ?