Warning, /pim/itinerary/src/app/BusDelegate.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2018 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 0012 import org.kde.itinerary 0013 0014 TimelineDelegate { 0015 id: root 0016 property bool expanded: false 0017 property var journeySection: root.controller.journey 0018 headerIconSource: departure.route.line.mode == Line.Unknown ? "qrc:///images/bus.svg" : PublicTransport.lineModeIcon(departure.route.line.mode) 0019 Item { 0020 JourneySectionModel { 0021 id: sectionModel 0022 journeySection: root.journeySection 0023 } 0024 } 0025 0026 headerItem: RowLayout { 0027 QQC2.Label { 0028 id: headerLabel 0029 text: { 0030 if (reservationFor.busName || reservationFor.busNumber ) { 0031 return reservationFor.busName + " " + reservationFor.busNumber 0032 } 0033 return i18n("%1 to %2", reservationFor.departureBusStop.name, reservationFor.arrivalBusStop.name); 0034 } 0035 color: root.headerTextColor 0036 Accessible.ignored: true 0037 } 0038 QQC2.Label { 0039 text: departure.route.direction? "→ " + departure.route.direction : "" 0040 color: root.headerTextColor 0041 elide: Text.ElideRight 0042 Layout.fillWidth: true 0043 } 0044 QQC2.Label { 0045 text: Localizer.formatTime(reservationFor, "departureTime") 0046 color: root.headerTextColor 0047 } 0048 QQC2.Label { 0049 text: (departure.departureDelay >= 0 ? "+" : "") + departure.departureDelay 0050 color: (departure.departureDelay > 1) ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor 0051 visible: departure.hasExpectedDepartureTime 0052 Accessible.ignored: !visible 0053 } 0054 } 0055 0056 0057 contentItem: Column { 0058 id: topLayout 0059 0060 RowLayout { 0061 width: parent.width 0062 JourneySectionStopDelegateLineSegment { 0063 0064 Layout.fillHeight: true 0065 lineColor: departure.route.line.hasColor ? departure.route.line.color : Kirigami.Theme.textColor 0066 isDeparture: true 0067 } 0068 0069 ColumnLayout{ 0070 Layout.bottomMargin: Kirigami.Units.largeSpacing 0071 0072 spacing:0 0073 Layout.fillHeight: true 0074 Layout.fillWidth: true 0075 RowLayout { 0076 Layout.fillHeight: true 0077 Layout.fillWidth: true 0078 RowLayout { 0079 Layout.minimumWidth: depTime.width + Kirigami.Units.largeSpacing * 3.5 0080 QQC2.Label { 0081 id: depTime 0082 text: Localizer.formatTime(reservationFor, "departureTime") 0083 } 0084 QQC2.Label { 0085 text: (departure.departureDelay >= 0 ? "+" : "") + departure.departureDelay 0086 color: (departure.departureDelay > 1) ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor 0087 visible: departure.hasExpectedDepartureTime 0088 Accessible.ignored: !visible 0089 } 0090 } 0091 QQC2.Label { 0092 Layout.fillWidth: true 0093 font.bold: true 0094 text: reservationFor.departureBusStop.name 0095 elide: Text.ElideRight 0096 } 0097 } 0098 0099 RowLayout{ 0100 Item{ 0101 Layout.minimumWidth: depTime.width + Kirigami.Units.largeSpacing * 3.5 0102 } 0103 QQC2.Label { 0104 Layout.fillWidth: true 0105 0106 visible: text.length > 0 0107 text: Localizer.formatAddressWithContext(reservationFor.departureBusStop.address, 0108 reservationFor.arrivalBusStop.address, 0109 Settings.homeCountryIsoCode) 0110 width: topLayout.width 0111 } 0112 } 0113 } 0114 } 0115 0116 RowLayout { 0117 width: parent.width 0118 JourneySectionStopDelegateLineSegment { 0119 Layout.fillHeight: true 0120 lineColor: departure.route.line.hasColor ? departure.route.line.color : Kirigami.Theme.textColor 0121 isDeparture: false 0122 hasStop: false 0123 } 0124 QQC2.ToolButton { 0125 visible: stopRepeater.count !== 0 0126 Layout.fillWidth: true 0127 onClicked: expanded = !expanded 0128 contentItem: RowLayout { 0129 spacing: 0 0130 Kirigami.Icon { 0131 source: expanded? "arrow-up" : "arrow-down" 0132 implicitHeight: Kirigami.Units.largeSpacing*2 0133 color: Kirigami.Theme.disabledTextColor 0134 } 0135 QQC2.Label { 0136 text: i18np("1 intermediate stop", "%1 intermediate stops", stopRepeater.count) 0137 color: Kirigami.Theme.disabledTextColor 0138 Layout.rightMargin: Kirigami.Units.largeSpacing 0139 } 0140 Kirigami.Separator { 0141 Layout.topMargin: Kirigami.Units.smallSpacing 0142 Layout.bottomMargin: Kirigami.Units.smallSpacing 0143 Layout.fillWidth: true 0144 } 0145 } 0146 } 0147 Kirigami.Separator { 0148 visible: stopRepeater.count === 0 0149 Layout.topMargin: Kirigami.Units.smallSpacing 0150 Layout.bottomMargin: Kirigami.Units.smallSpacing 0151 Layout.fillWidth: true 0152 } 0153 } 0154 0155 Repeater { 0156 id: stopRepeater 0157 model: sectionModel 0158 delegate: RowLayout { 0159 id: stopDelegate 0160 property bool hidden: !expanded 0161 0162 clip: true 0163 visible: false 0164 onHiddenChanged: 0165 if (!hidden) { 0166 visible = true 0167 showAnimation.running=true 0168 } else { 0169 hideAnimation.running = true 0170 } 0171 PropertyAnimation { id: showAnimation; 0172 target: stopDelegate; 0173 property: "height"; 0174 from: 0; 0175 to: stopDelegate.implicitHeight; 0176 duration: 200 0177 easing.type: Easing.InOutCubic 0178 } 0179 0180 PropertyAnimation { id: hideAnimation; 0181 target: stopDelegate; 0182 property: "height"; 0183 from: stopDelegate.implicitHeight; 0184 to: 0; 0185 duration: 200 0186 onFinished: stopDelegate.visible = false 0187 easing.type: Easing.InOutCubic 0188 0189 } 0190 width: parent.width 0191 JourneySectionStopDelegateLineSegment { 0192 0193 Layout.fillHeight: true 0194 lineColor: departure.route.line.hasColor ? departure.route.line.color : Kirigami.Theme.textColor 0195 hasStop: model.stopover.disruptionEffect !== Disruption.NoService 0196 } 0197 RowLayout { 0198 Layout.minimumWidth: depTime.width + Kirigami.Units.largeSpacing * 3.5 0199 QQC2.Label{ 0200 text: Localizer.formatTime(model.stopover , "scheduledDepartureTime") 0201 font.strikeout: model.stopover.disruptionEffect === Disruption.NoService 0202 } 0203 QQC2.Label { 0204 text: (model.stopover.arrivalDelay >= 0 ? "+" : "") + model.stopover.arrivalDelay 0205 color: (model.stopover.arrivalDelay > 1) ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor 0206 visible: model.stopover.hasExpectedArrivalTime && model.stopover.disruptionEffect !== Disruption.NoService 0207 Accessible.ignored: !visible 0208 } 0209 } 0210 QQC2.Label{ 0211 text: model.stopover.stopPoint.name 0212 Layout.fillWidth: true 0213 elide: Text.ElideRight 0214 font.strikeout: model.stopover.disruptionEffect === Disruption.NoService 0215 } 0216 } 0217 } 0218 0219 RowLayout { 0220 width: parent.width 0221 JourneySectionStopDelegateLineSegment { 0222 0223 Layout.fillHeight: true 0224 lineColor: departure.route.line.hasColor ? departure.route.line.color : Kirigami.Theme.textColor 0225 isArrival: true 0226 } 0227 ColumnLayout{ 0228 Layout.topMargin: Kirigami.Units.largeSpacing 0229 0230 spacing:0 0231 Layout.fillHeight: true 0232 Layout.fillWidth: true 0233 RowLayout { 0234 Layout.fillHeight: true 0235 Layout.fillWidth: true 0236 RowLayout { 0237 Layout.minimumWidth: depTime.width + Kirigami.Units.largeSpacing * 3.5 0238 QQC2.Label { 0239 text: Localizer.formatTime(reservationFor, "arrivalTime") 0240 } 0241 QQC2.Label { 0242 text: (arrival.arrivalDelay >= 0 ? "+" : "") + arrival.arrivalDelay 0243 color: (arrival.arrivalDelay > 1) ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor 0244 visible: arrival.hasExpectedArrivalTime 0245 Accessible.ignored: !visible 0246 } 0247 } 0248 QQC2.Label { 0249 Layout.fillWidth: true 0250 font.bold: true 0251 text: reservationFor.arrivalBusStop.name 0252 elide: Text.ElideRight 0253 } 0254 } 0255 0256 RowLayout { 0257 Item{ 0258 Layout.minimumWidth: depTime.width + Kirigami.Units.largeSpacing * 3.5 0259 } 0260 QQC2.Label { 0261 Layout.fillWidth: true 0262 0263 visible: text.length > 0 0264 width: topLayout.width 0265 text: Localizer.formatAddressWithContext(reservationFor.arrivalBusStop.address, 0266 reservationFor.departureBusStop.address, 0267 Settings.homeCountryIsoCode) 0268 } 0269 } 0270 } 0271 } 0272 } 0273 0274 onClicked: showDetailsPage(busDetailsPage, root.batchId) 0275 Accessible.name: headerLabel.text 0276 }