summaryrefslogtreecommitdiff
path: root/examples
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
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')
-rw-r--r--examples/location/geojson_viewer/GeoJsonDelegate.qml6
-rw-r--r--examples/location/geojson_viewer/GeoJsonDelegateMapObject.qml6
-rw-r--r--examples/location/geojson_viewer/geojson_viewer.pro1
-rw-r--r--examples/location/geojson_viewer/main.cpp28
-rw-r--r--examples/location/geojson_viewer/main.qml60
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