mirror of https://github.com/qt/qtdoc.git
178 lines
4.8 KiB
QML
178 lines
4.8 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
import QtQuick
|
|
import QtLocation
|
|
import QtQuick.Layouts
|
|
import QtQuick.Controls
|
|
|
|
Item {
|
|
id: actionsLayer
|
|
|
|
property alias mapType: switchMap.mapType
|
|
property bool distanceLayerVisible: false
|
|
property bool lightningLayerVisible: false
|
|
|
|
signal recenterRequested();
|
|
|
|
GridLayout {
|
|
anchors.fill: parent
|
|
anchors.leftMargin: 15
|
|
anchors.rightMargin: 15
|
|
columns: 3
|
|
rows: 3
|
|
visible: LightningViewConfig.isLandscape
|
|
|
|
LayoutItemProxy { target: switchMap }
|
|
Item {
|
|
Layout.columnSpan: 2
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Item {
|
|
Layout.columnSpan: 3
|
|
Layout.fillHeight: true
|
|
}
|
|
|
|
MapLayersItem {
|
|
id: mapLayersItem
|
|
mapActionButton: mapLayersButtonComponent
|
|
onVisibleChanged: {
|
|
if (!visible && opened)
|
|
close();
|
|
}
|
|
}
|
|
Item { Layout.fillWidth: true }
|
|
LayoutItemProxy { target: recenterButton }
|
|
}
|
|
|
|
GridLayout {
|
|
anchors.right: parent.right
|
|
anchors.top: parent.top
|
|
anchors.margins: 15
|
|
height: parent.height
|
|
width: 60
|
|
rowSpacing: 15
|
|
columns: 1
|
|
rows: 5
|
|
visible: LightningViewConfig.isPortrait
|
|
|
|
Item {
|
|
Layout.fillHeight: true
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Loader {
|
|
width: 60
|
|
height: 60
|
|
Layout.alignment: Qt.AlignHCenter
|
|
sourceComponent: mapLayersButtonComponent
|
|
}
|
|
|
|
LayoutItemProxy { target: recenterButton }
|
|
|
|
LayoutItemProxy { target: switchMap; Layout.topMargin: -10 }
|
|
|
|
Item {
|
|
Layout.fillHeight: true
|
|
Layout.fillWidth: true
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: mapLayersButtonComponent
|
|
Button {
|
|
icon.source: "icons/map-layers.svg"
|
|
icon.color: !enabled ? "#808080" : checked ? "#80EBB6" : "#2CDE85"
|
|
icon.width: 24
|
|
icon.height: 24
|
|
checked: mapLayersButtonConfig.checked
|
|
onClicked: mapLayersButtonConfig.clicked()
|
|
}
|
|
}
|
|
QtObject {
|
|
id: mapLayersButtonConfig
|
|
property bool checked: false
|
|
signal clicked()
|
|
}
|
|
|
|
Button {
|
|
id: recenterButton
|
|
Layout.alignment: Qt.AlignHCenter
|
|
icon.source: "icons/recenter.svg"
|
|
icon.color: !enabled ? "#808080" : checked ? "#80EBB6" : "#2CDE85"
|
|
icon.width: 24
|
|
icon.height: 24
|
|
onClicked: actionsLayer.recenterRequested();
|
|
}
|
|
|
|
SwitchMap { id: switchMap }
|
|
|
|
MapLayersDrawer {
|
|
id: drawer
|
|
parent: Overlay.overlay
|
|
anchors.left: parent.left
|
|
anchors.bottom: parent.bottom
|
|
width: parent.width
|
|
height: 200
|
|
dragMargin: 30
|
|
onVisibleChanged: {
|
|
if (!visible && opened)
|
|
close();
|
|
}
|
|
visible: LightningViewConfig.isPortrait
|
|
}
|
|
|
|
states: [
|
|
State {
|
|
when: LightningViewConfig.isLandscape
|
|
PropertyChanges {
|
|
target: switchMap
|
|
orientation: Qt.Horizontal
|
|
}
|
|
PropertyChanges {
|
|
target: mapLayersButtonConfig
|
|
checked: mapLayersItem.opened
|
|
onClicked: mapLayersItem.toggle()
|
|
}
|
|
},
|
|
State {
|
|
when: LightningViewConfig.isPortrait
|
|
PropertyChanges {
|
|
target: switchMap
|
|
orientation: Qt.Vertical
|
|
}
|
|
PropertyChanges {
|
|
target: mapLayersButtonConfig
|
|
checked: drawer.opened
|
|
onClicked: drawer.toggle()
|
|
}
|
|
}
|
|
]
|
|
|
|
Binding {
|
|
mapLayersItem.lightningLayerVisible: actionsLayer.lightningLayerVisible
|
|
mapLayersItem.distanceLayerVisible: actionsLayer.distanceLayerVisible
|
|
drawer.lightningLayerVisible: actionsLayer.lightningLayerVisible
|
|
drawer.distanceLayerVisible: actionsLayer.distanceLayerVisible
|
|
}
|
|
Connections {
|
|
target: mapLayersItem
|
|
function onLightningLayerVisibleChanged() {
|
|
actionsLayer.lightningLayerVisible = mapLayersItem.lightningLayerVisible
|
|
}
|
|
function onDistanceLayerVisibleChanged() {
|
|
actionsLayer.distanceLayerVisible = mapLayersItem.distanceLayerVisible
|
|
}
|
|
}
|
|
Connections {
|
|
target: drawer
|
|
function onLightningLayerVisibleChanged() {
|
|
actionsLayer.lightningLayerVisible = drawer.lightningLayerVisible
|
|
}
|
|
function onDistanceLayerVisibleChanged() {
|
|
actionsLayer.distanceLayerVisible = drawer.distanceLayerVisible
|
|
}
|
|
}
|
|
}
|