qtdoc/examples/demos/lightningviewer/LightningViewer/LightningView.qml

74 lines
2.1 KiB
QML

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtCore
import QtQuick
import QtQuick.Controls
import QtQuick.Dialogs
Item {
visible: true
LocationPermission {
id: permission
accuracy: LocationPermission.Precise
availability: LocationPermission.WhenInUse
Component.onCompleted: request();
}
MapView {
id: mapView
anchors.fill: parent
zoomLevel: 5
mapType: actionsLayer.mapType
lightningLayerVisible: actionsLayer.lightningLayerVisible
distanceLayerVisible: locationAllowed && actionsLayer.distanceLayerVisible
locationAllowed: permission.status === Qt.Granted
}
ActionsLayer {
id: actionsLayer
anchors.fill: parent
anchors.margins: 15
lightningLayerVisible: true
distanceLayerVisible: false
onRecenterRequested: {
switch (permission.status) {
case Qt.Granted:
mapView.recenter();
break;
case Qt.Denied:
permissionMessageDialog.open();
break;
default:
permission.request();
break;
}
}
onDistanceLayerVisibleChanged: {
if (permission.status !== Qt.Granted) {
distanceLayerVisible = false;
permissionMessageDialog.open();
}
}
}
Binding {
target: LightningController
property: "distanceTimeLayerEnabled"
value: actionsLayer.distanceLayerVisible
when: permission.status === Qt.Granted
}
MessageDialog {
id: permissionMessageDialog
buttons: MessageDialog.Ok
text: qsTr("The application does not have the permission to access the Location.")
informativeText: qsTr("Please grant the permission and restart the application.")
onButtonClicked: function(button, role) {
if (button === MessageDialog.Ok)
accept();
}
}
}