Warning, /libraries/kosmindoormap/src/app/IndoorMapPage.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2020 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 0008 import QtQuick.Layouts 0009 import QtQuick.Controls as QQC2 0010 import org.kde.kirigami as Kirigami 0011 import org.kde.kosmindoormap 0012 0013 Kirigami.Page { 0014 title: map.floorLevels.hasName(map.view.floorLevel) ? map.floorLevels.name(map.view.floorLevel) : ("Floor " + map.floorLevels.name(map.view.floorLevel)); 0015 property point coordinate 0016 property alias map: map 0017 property alias debug: infoModel.debug 0018 property alias mapHoverEnabled: hoverHandler.enabled 0019 0020 topPadding: 0 0021 bottomPadding: 0 0022 leftPadding: 0 0023 rightPadding: 0 0024 0025 // prevent swipe to the right changing pages, we want to pan the map instead 0026 // TODO in theory we could make this conditional to having panned the map all the way to the right 0027 Kirigami.ColumnView.preventStealing: true 0028 0029 actions: [ 0030 Kirigami.Action { 0031 icon.name: "go-down-symbolic" 0032 enabled: map.floorLevels.hasFloorLevelBelow(map.view.floorLevel) 0033 onTriggered: map.view.floorLevel = map.floorLevels.floorLevelBelow(map.view.floorLevel) 0034 }, 0035 Kirigami.Action { 0036 icon.name: "go-up-symbolic" 0037 enabled: map.floorLevels.hasFloorLevelAbove(map.view.floorLevel) 0038 onTriggered: map.view.floorLevel = map.floorLevels.floorLevelAbove(map.view.floorLevel) 0039 } 0040 ] 0041 0042 OSMElementInformationModel { 0043 id: infoModel 0044 debug: true 0045 } 0046 0047 IndoorMapInfoSheet { 0048 id: elementDetailsSheet 0049 model: infoModel 0050 mapData: page.map.mapData 0051 } 0052 0053 FloorLevelChangeModel { 0054 id: floorLevelChangeModel 0055 currentFloorLevel: map.view.floorLevel 0056 floorLevelModel: map.floorLevels 0057 } 0058 0059 Kirigami.OverlaySheet { 0060 id: elevatorSheet 0061 header: Kirigami.Heading { 0062 text: floorLevelChangeModel.title 0063 } 0064 ListView { 0065 model: floorLevelChangeModel 0066 Layout.preferredWidth: Kirigami.Units.gridUnit * 10 0067 delegate: QQC2.ItemDelegate { 0068 highlighted: false 0069 width: ListView.view.width 0070 contentItem: Kirigami.TitleSubtitle { 0071 title: model.display 0072 font.bold: model.isCurrentFloor 0073 } 0074 onClicked: { 0075 elevatorSheet.close(); 0076 map.view.floorLevel = model.floorLevel; 0077 } 0078 } 0079 } 0080 } 0081 0082 IndoorMap { 0083 id: map 0084 anchors.fill: parent 0085 hoveredElement: map.elementAt(map.mapEventPointToScreen(hoverHandler.point)) 0086 0087 IndoorMapScale { 0088 map: map 0089 anchors.left: map.left 0090 anchors.bottom: map.bottom 0091 width: 0.3 * map.width 0092 } 0093 0094 IndoorMapAttributionLabel { 0095 anchors.right: map.right 0096 anchors.bottom: map.bottom 0097 } 0098 0099 onElementPicked: { 0100 floorLevelChangeModel.element = element; 0101 if (floorLevelChangeModel.hasSingleLevelChange) { 0102 showPassiveNotification("Switched to floor " + floorLevelChangeModel.destinationLevelName, "short"); 0103 map.view.floorLevel = floorLevelChangeModel.destinationLevel; 0104 return; 0105 } else if (floorLevelChangeModel.hasMultipleLevelChanges) { 0106 elevatorSheet.open(); 0107 return; 0108 } 0109 0110 infoModel.element = element; 0111 if (infoModel.name != "" || infoModel.debug) { 0112 elementDetailsSheet.open(); 0113 } 0114 } 0115 onElementLongPressed: { 0116 // this provides info model access for elements with other interactions 0117 infoModel.element = element; 0118 if (infoModel.name != "" || infoModel.debug) { 0119 elementDetailsSheet.open(); 0120 } 0121 } 0122 0123 HoverHandler { 0124 id: hoverHandler 0125 enabled: false 0126 acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad 0127 } 0128 } 0129 0130 onCoordinateChanged: map.mapLoader.loadForCoordinate(coordinate.y, coordinate.x); 0131 }