Warning, /pim/itinerary/src/app/IndoorMapAmenityDelegate.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
0003 SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005
0006 import QtQuick
0007 import QtQuick.Layouts
0008 import QtQuick.Controls as QQC2
0009 import org.kde.kirigami as Kirigami
0010 import org.kde.kopeninghours
0011 import org.kde.kosmindoormap
0012
0013 QQC2.ItemDelegate {
0014 id: root
0015 required property string name
0016 required property string typeName
0017 required property string iconSource
0018 required property string cuisine
0019 required property string fallbackName
0020 required property string openingHours
0021
0022 required property var mapData
0023
0024 required property int index // for Kirigami
0025
0026 highlighted: false
0027 width: ListView.view.width
0028
0029 property var oh: {
0030 let v = OpeningHoursParser.parse(root.openingHours);
0031 v.region = root.mapData.regionCode;
0032 v.timeZone = root.mapData.timeZone;
0033 v.setLocation(root.mapData.center.y, root.mapData.center.x);
0034 if (v.error != OpeningHours.Null && v.error != OpeningHours.NoError) {
0035 console.log("Opening hours parsing error:", v.error, root.mapData.region, root.mapData.timeZone)
0036 }
0037 return v;
0038 }
0039
0040 contentItem: RowLayout {
0041 spacing: Kirigami.Units.largeSpacing
0042
0043 Kirigami.Icon {
0044 Layout.minimumHeight: Kirigami.Units.iconSizes.medium
0045 Layout.maximumHeight: Kirigami.Units.iconSizes.medium
0046 Layout.minimumWidth: Kirigami.Units.iconSizes.medium
0047 Layout.maximumWidth: Kirigami.Units.iconSizes.medium
0048 source: root.iconSource
0049 isMask: true
0050 }
0051
0052 ColumnLayout {
0053 Layout.alignment: Qt.AlignVCenter
0054 Layout.fillWidth: true
0055 spacing: 0
0056
0057 QQC2.Label {
0058 Layout.alignment: Qt.AlignLeft | Qt.AlignBottom
0059 Layout.fillWidth: true
0060 text: root.name !== "" ? root.name : root.typeName
0061 elide: Text.ElideRight
0062 }
0063
0064 QQC2.Label {
0065 Layout.alignment: Qt.AlignLeft | Qt.AlignTop
0066 Layout.fillWidth: true
0067 text: {
0068 if (root.cuisine && root.name === "")
0069 return root.cuisine;
0070 if (root.cuisine)
0071 return root.typeName + " (" + root.cuisine + ")";
0072 return root.name === "" && root.fallbackName !== "" ? root.fallbackName : root.typeName;
0073 }
0074 elide: Text.ElideRight
0075 font: Kirigami.Theme.smallFont
0076 opacity: 0.7
0077 }
0078
0079 QQC2.Label {
0080 Layout.fillWidth: true
0081 text: Display.currentState(root.oh)
0082 color: {
0083 if (root.highlighted || root.checked || root.down)
0084 return Kirigami.Theme.highlightedTextColor
0085 const currentInterval = root.oh.interval(new Date());
0086 switch (currentInterval.state) {
0087 case Interval.Open: return Kirigami.Theme.positiveTextColor;
0088 case Interval.Closed: return Kirigami.Theme.negativeTextColor;
0089 default: return Kirigami.Theme.textColor;
0090 }
0091 }
0092 elide: Text.ElideRight
0093 font: Kirigami.Theme.smallFont
0094 visible: text !== ""
0095 }
0096 }
0097 }
0098 }