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 | |
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')
5 files changed, 58 insertions, 43 deletions
diff --git a/examples/location/geojson_viewer/GeoJsonDelegate.qml b/examples/location/geojson_viewer/GeoJsonDelegate.qml index afbafe95..8fa92030 100644 --- a/examples/location/geojson_viewer/GeoJsonDelegate.qml +++ b/examples/location/geojson_viewer/GeoJsonDelegate.qml @@ -49,9 +49,9 @@ ** ****************************************************************************/ -import QtQuick 2.12 -import QtPositioning 5.12 -import QtLocation 5.15 +import QtQuick +import QtPositioning +import QtLocation import Qt.labs.qmlmodels 1.0 DelegateChooser { diff --git a/examples/location/geojson_viewer/GeoJsonDelegateMapObject.qml b/examples/location/geojson_viewer/GeoJsonDelegateMapObject.qml index d1a144c8..ba95b1c8 100644 --- a/examples/location/geojson_viewer/GeoJsonDelegateMapObject.qml +++ b/examples/location/geojson_viewer/GeoJsonDelegateMapObject.qml @@ -49,10 +49,10 @@ ** ****************************************************************************/ -import QtQuick 2.12 -import QtPositioning 5.12 -import Qt.labs.location 1.0 +import QtQuick +import QtPositioning import Qt.labs.qmlmodels 1.0 +import Qt.labs.location DelegateChooser { id: dc diff --git a/examples/location/geojson_viewer/geojson_viewer.pro b/examples/location/geojson_viewer/geojson_viewer.pro index 4af6719f..00fbd303 100644 --- a/examples/location/geojson_viewer/geojson_viewer.pro +++ b/examples/location/geojson_viewer/geojson_viewer.pro @@ -2,6 +2,7 @@ TARGET = qml_location_geojsonviewer TEMPLATE = app QT += core qml network quick positioning location-private widgets +android: QT += core-private SOURCES += main.cpp CONFIG += c++11 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 ? diff --git a/examples/location/geojson_viewer/main.qml b/examples/location/geojson_viewer/main.qml index 1b55ef8b..ea65d1ac 100644 --- a/examples/location/geojson_viewer/main.qml +++ b/examples/location/geojson_viewer/main.qml @@ -1,7 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2019 Julian Sherollari <jdotsh@gmail.com> -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. @@ -49,19 +49,16 @@ ** ****************************************************************************/ -import QtQuick 2.11 -import QtQuick.Controls 1.4 as C1 -import QtQuick.Controls.Styles 1.4 -import Qt.labs.platform 1.1 -import QtQuick.Layouts 1.11 -import QtQuick.Window 2.11 -import QtPositioning 5.12 -import QtLocation 5.12 -import Qt.labs.qmlmodels 1.0 -import Qt.labs.location 1.0 -import Qt.GeoJson 1.0 - -C1.ApplicationWindow { +import QtQuick +import QtQuick.Dialogs +import QtQuick.Controls +import QtPositioning +import QtLocation +import Qt.labs.location +import Qt.labs.platform as Platform +import Qt.GeoJson + +ApplicationWindow { id: win visible: true width: 1024 @@ -75,9 +72,9 @@ C1.ApplicationWindow { id: fileDialog title: "Choose a GeoJSON file" fileMode: FileDialog.OpenFile - folder: dataPath + currentFolder: dataPath onAccepted: { - geoJsoner.load(fileDialog.file) + geoJsoner.load(fileDialog.selectedFile) } } @@ -86,9 +83,9 @@ C1.ApplicationWindow { id: fileWriteDialog title: "Write your geometry to a file" fileMode: FileDialog.SaveFile - folder: StandardPaths.writableLocation(StandardPaths.TempLocation) + currentFolder: Platform.StandardPaths.writableLocation(Platform.StandardPaths.TempLocation) onAccepted: { - geoJsoner.dumpGeoJSON(geoJsoner.toGeoJson(miv), fileWriteDialog.file); + geoJsoner.dumpGeoJSON(geoJsoner.toGeoJson(miv), fileWriteDialog.selectedFile); } } @@ -97,61 +94,58 @@ C1.ApplicationWindow { id: debugWriteDialog title: "Write Qvariant debug view" fileMode: FileDialog.SaveFile - folder: StandardPaths.writableLocation(StandardPaths.TempLocation) + currentFolder: Platform.StandardPaths.writableLocation(Platform.StandardPaths.TempLocation) onAccepted: { - geoJsoner.writeDebug(geoJsoner.toGeoJson(miv), debugWriteDialog.file); + geoJsoner.writeDebug(geoJsoner.toGeoJson(miv), debugWriteDialog.selectedFile); } } - C1.MenuBar { + MenuBar { id: mainMenu - C1.Menu { + Menu { title: "&File" id : geoJsonMenu - C1.MenuItem { + MenuItem { text: "&Open" - shortcut: StandardKey.Open onTriggered: { fileDialog.open() } } - C1.MenuItem { + MenuItem { text: "&Export" - shortcut: StandardKey.Save onTriggered: { fileWriteDialog.open() } } - C1.MenuItem { + MenuItem { text: "E&xit" - shortcut: StandardKey.Quit onTriggered: Qt.quit() } } - C1.Menu { + Menu { title: "&Debug" id : debugMenu - C1.MenuItem { + MenuItem { text: "Print debug data to &file" onTriggered: { debugWriteDialog.open() } } - C1.MenuItem { + MenuItem { text: "&Print debug data" onTriggered: { geoJsoner.print(miv) } } - C1.MenuItem { + MenuItem { text: "OpenGL Item backends" id: glBackendSelector checkable: true checked: false } - C1.MenuItem { + MenuItem { text: "Map Object Delegates" id: mapObjectsSelector checkable: true |