Warning, /pim/itinerary/src/app/IndoorMapPlatformSheet.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.kpublictransport as PublicTransport
0012 import org.kde.kosmindoormap
0013 import org.kde.itinerary
0014 
0015 Kirigami.OverlaySheet {
0016     id: platformSheet
0017     property var model
0018 
0019     header: Kirigami.Heading {
0020         text: i18n("Find Platform")
0021     }
0022 
0023     ListView {
0024         model: platformSheet.model
0025         clip: true
0026         Layout.preferredWidth: Kirigami.Units.gridUnit * 25
0027 
0028         Component {
0029             id: platformDelegate
0030             QQC2.ItemDelegate {
0031                 property var platform: model
0032                 width: ListView.view.width
0033                 contentItem: Row {
0034                     spacing: Kirigami.Units.smallSpacing
0035                     QQC2.Label {
0036                         id: label
0037                         text: {
0038                             if (platform.isDeparturePlatform && platform.isArrivalPlatform)
0039                                 return i18nc("train arrival/departure platform", "%1 (arrival/departure)", platform.display);
0040                             if (platform.isDeparturePlatform)
0041                                 return i18nc("train departure platform", "%1 (departure)", platform.display);
0042                             if (platform.isArrivalPlatform)
0043                                 return i18nc("train arrival platform", "%1 (arrival)", platform.display);
0044                             return platform.display
0045                         }
0046                     }
0047 
0048                     Repeater {
0049                         model: platform.lines
0050                         delegate: Image {
0051                             height: Kirigami.Units.iconSizes.small
0052                             width: Math.round(Kirigami.Units.iconSizes.small * implicitWidth / implicitHeight)
0053                             anchors.verticalCenter: label.verticalCenter
0054                             visible: source != ""
0055                             source: {
0056                                 switch (platform.mode) {
0057                                     case Platform.Rail:
0058                                         return PublicTransport.LineMetaData.lookup(modelData, platform.coordinate.y, platform.coordinate.x, PublicTransport.Line.Train, true).logo;
0059                                     case Platform.Tram:
0060                                         return PublicTransport.LineMetaData.lookup(modelData, platform.coordinate.y, platform.coordinate.x, PublicTransport.Line.Tramway, true).logo;
0061                                     case Platform.Subway:
0062                                         return PublicTransport.LineMetaData.lookup(modelData, platform.coordinate.y, platform.coordinate.x, PublicTransport.Line.Metro, true).logo;
0063                                 }
0064                                 return "";
0065                             }
0066                         }
0067                     }
0068                 }
0069                 highlighted: false
0070                 onClicked: {
0071                     map.view.floorLevel = model.level
0072                     map.view.centerOnGeoCoordinate(model.coordinate);
0073                     map.view.setZoomLevel(19, Qt.point(map.width / 2.0, map.height/ 2.0));
0074                     platformSheet.close();
0075                 }
0076             }
0077         }
0078 
0079         section.property: "mode"
0080         section.delegate: Kirigami.ListSectionHeader {
0081             text: switch(parseInt(section)) {
0082                 case Platform.Rail: return i18n("Railway");
0083                 case Platform.LightRail: return i18n("Light Rail");
0084                 case Platform.Subway: return i18n("Subway");
0085                 case Platform.Tram: return i18n("Tramway");
0086                 case Platform.Bus: return i18n("Bus");
0087                 default: return section;
0088             }
0089             width: ListView.view.width
0090         }
0091         section.criteria: ViewSection.FullString
0092 
0093         delegate: platformDelegate
0094     }
0095 }