From 82e15358a1aaafe84b7882a8a4c084707a5fa5bb Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Fri, 29 Oct 2021 17:28:46 +0200 Subject: 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 --- examples/location/geojson_viewer/main.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'examples/location/geojson_viewer/main.cpp') 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 #include #include +#ifdef Q_OS_ANDROID +# include +#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 ? -- cgit v1.2.1