Warning, /libraries/kpublictransport/tests/JourneySectionPage.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 0012 0013 Kirigami.Page { 0014 property var journeySection 0015 0016 ColumnLayout { 0017 anchors.fill: parent 0018 spacing: Kirigami.Units.largeSpacing 0019 0020 GridLayout { 0021 Layout.fillWidth: true 0022 Layout.margins: Kirigami.Units.largeSpacing 0023 columns: 3 0024 rows: 4 0025 0026 Kirigami.Icon { 0027 Layout.rowSpan: 4 0028 id: icon 0029 source: journeySection.route.line.hasLogo ? journeySection.route.line.logo : journeySection.route.line.modeLogo 0030 width: height 0031 height: Kirigami.Units.iconSizes.large 0032 visible: source != "" 0033 } 0034 0035 QQC2.Label { 0036 Layout.row: 0 0037 Layout.column: 1 0038 Layout.fillWidth: true 0039 text: "<b>" + journeySection.route.line.modeString + " " + journeySection.route.line.name + "</b>" 0040 } 0041 0042 QQC2.Label { 0043 Layout.row: 0 0044 Layout.column: 2 0045 text: "<a href=\"#layout\">vehicle</a>" 0046 visible: journeySection.route.line.mode == Line.LongDistanceTrain 0047 onLinkActivated: applicationWindow().pageStack.push(vehicleLayoutPage, {"departure": journeySection.departure}); 0048 } 0049 0050 QQC2.Label { 0051 Layout.row: 1 0052 Layout.column: 1 0053 Layout.columnSpan: 2 0054 text: "Direction: " + journeySection.route.direction 0055 } 0056 0057 QQC2.Label { 0058 Layout.row: 2 0059 Layout.column: 1 0060 Layout.columnSpan: 2 0061 text: "Distance: " + journeySection.distance / 1000.0 + "km" 0062 } 0063 QQC2.Label { 0064 Layout.row: 3 0065 Layout.column: 1 0066 Layout.columnSpan: 2 0067 text: "CO₂: " + journeySection.co2Emission + "g" 0068 visible: journeySection.co2Emission >= 0 0069 } 0070 } 0071 0072 ListView { 0073 Layout.fillHeight: true 0074 Layout.fillWidth: true 0075 clip: true 0076 header: RowLayout { 0077 enabled: journeySection.departure.disruptionEffect != Disruption.NoService 0078 width: parent.width - 2 * Kirigami.Units.largeSpacing 0079 x: Kirigami.Units.largeSpacing 0080 Rectangle { 0081 Layout.fillHeight: true 0082 width: Kirigami.Units.largeSpacing 0083 color: journeySection.route.line.hasColor ? journeySection.route.line.color : Kirigami.Theme.textColor 0084 } 0085 0086 QQC2.Label { 0087 text: journeySection.scheduledDepartureTime.toTimeString() 0088 } 0089 QQC2.Label { 0090 text: (journeySection.departureDelay >= 0 ? "+" : "") + journeySection.departureDelay 0091 color: journeySection.departureDelay > 1 ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor 0092 visible: journeySection.hasExpectedDepartureTime 0093 } 0094 0095 QQC2.Label { 0096 Layout.fillWidth: true 0097 text: "<a href=\"#loc\">" + journeySection.from.name + "</a>" 0098 onLinkActivated: { 0099 locationDetailsSheet.location = journeySection.from; 0100 locationDetailsSheet.open(); 0101 } 0102 } 0103 0104 QQC2.Label { 0105 text: journeySection.hasExpectedDeparturePlatform ? journeySection.expectedDeparturePlatform : journeySection.scheduledDeparturePlatform 0106 color: JourneySection.hasExpectedDeparturePlatform ? (journeySection.departurePlatformChanged ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor) : Kirigami.Theme.textColor 0107 } 0108 } 0109 0110 delegate: QQC2.ItemDelegate { 0111 property var stop: modelData 0112 enabled: stop.disruptionEffect != Disruption.NoService 0113 highlighted: false 0114 width: ListView.view.width 0115 contentItem: GridLayout { 0116 columns: 5 0117 rows: 4 0118 Rectangle { 0119 Layout.column: 0 0120 Layout.row: 0 0121 Layout.fillHeight: true 0122 Layout.rowSpan: 4 0123 width: Kirigami.Units.largeSpacing 0124 color: stop.route.line.hasColor ? stop.route.line.color : Kirigami.Theme.textColor 0125 } 0126 0127 QQC2.Label { 0128 Layout.column: 1 0129 Layout.row: 0 0130 text: stop.scheduledArrivalTime.toTimeString() 0131 } 0132 QQC2.Label { 0133 Layout.column: 2 0134 Layout.row: 0 0135 text: (stop.arrivalDelay >= 0 ? "+" : "") + stop.arrivalDelay 0136 color: stop.arrivalDelay > 1 ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor 0137 visible: stop.hasExpectedArrivalTime 0138 } 0139 0140 QQC2.Label { 0141 Layout.column: 3 0142 Layout.row: 0 0143 Layout.rowSpan: loadData.visible ? 1 : 2 0144 Layout.fillWidth: true 0145 Layout.fillHeight: true 0146 text: "<a href=\"#loc\">" + stop.stopPoint.name + "</a>" + (stop.route.line.mode == Line.LongDistanceTrain ? " (<a href=\"#layout\">vehicle</a>)" : "") 0147 verticalAlignment: Qt.AlignVCenter 0148 onLinkActivated: { 0149 if (link == "#loc") { 0150 locationDetailsSheet.location = stop.stopPoint; 0151 locationDetailsSheet.open(); 0152 } else if (link == "#layout") { 0153 applicationWindow().pageStack.push(vehicleLayoutPage, {"departure": stop }); 0154 } 0155 } 0156 } 0157 0158 RowLayout { 0159 id: loadData 0160 Layout.column: 3 0161 Layout.row: 1 0162 Layout.fillWidth: true 0163 visible: stop.loadInformation.length > 0 0164 QQC2.Label { 0165 text: "Load: "; 0166 } 0167 Repeater { 0168 model: stop.loadInformation 0169 RowLayout { 0170 QQC2.Label { 0171 text: { 0172 switch (modelData.load) { 0173 case Load.Low: return "Low"; 0174 case Load.Medium: return "Medium"; 0175 case Load.High: return "High"; 0176 case Load.Full: return "Full"; 0177 default: return "?" 0178 } 0179 } 0180 color: { 0181 switch (modelData.load) { 0182 case Load.Low: return Kirigami.Theme.positiveTextColor; 0183 case Load.Medium: return Kirigami.Theme.neutralTextColor; 0184 case Load.High: 0185 case Load.Full: 0186 return Kirigami.Theme.negativeTextColor; 0187 default: 0188 return Kirigami.Theme.textColor; 0189 } 0190 } 0191 } 0192 QQC2.Label { 0193 text: "(class " + modelData.seatingClass + ")" 0194 visible: modelData.seatingClass != "" 0195 } 0196 } 0197 } 0198 } 0199 0200 QQC2.Label { 0201 Layout.column: 1 0202 Layout.row: 1 0203 text: stop.scheduledDepartureTime.toTimeString() 0204 } 0205 QQC2.Label { 0206 Layout.column: 2 0207 Layout.row: 1 0208 text: (stop.departureDelay >= 0 ? "+" : "") + stop.departureDelay 0209 color: stop.departureDelay > 1 ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor 0210 visible: stop.hasExpectedDepartureTime 0211 } 0212 0213 QQC2.Label { 0214 Layout.column: 4 0215 Layout.row: 0 0216 Layout.rowSpan: 2 0217 Layout.fillHeight: true 0218 verticalAlignment: Qt.AlignVCenter 0219 text: stop.hasExpectedPlatform ? stop.expectedPlatform : stop.scheduledPlatform 0220 color: stop.hasExpectedPlatform ? (stop.platformChanged ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor) : Kirigami.Theme.textColor 0221 } 0222 0223 QQC2.Label { 0224 Layout.column: 1 0225 Layout.row: 2 0226 Layout.columnSpan: 3 0227 text: stop.notes.join("<br/>") 0228 textFormat: Text.RichText 0229 visible: stop.notes.length > 0 0230 font.italic: true 0231 } 0232 } 0233 } 0234 0235 footer: RowLayout { 0236 enabled: journeySection.arrival.disruptionEffect != Disruption.NoService 0237 width: parent.width - 2 * Kirigami.Units.largeSpacing 0238 x: Kirigami.Units.largeSpacing 0239 Rectangle { 0240 Layout.fillHeight: true 0241 width: Kirigami.Units.largeSpacing 0242 color: journeySection.route.line.hasColor ? journeySection.route.line.color : Kirigami.Theme.textColor 0243 } 0244 0245 QQC2.Label { 0246 text: journeySection.scheduledArrivalTime.toTimeString() 0247 } 0248 QQC2.Label { 0249 text: (journeySection.arrivalDelay >= 0 ? "+" : "") + journeySection.arrivalDelay 0250 color: journeySection.arrivalDelay > 1 ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor 0251 visible: journeySection.hasExpectedArrivalTime 0252 } 0253 0254 QQC2.Label { 0255 Layout.fillWidth: true 0256 text: "<a href=\"#loc\">" + journeySection.to.name + "</a>" 0257 onLinkActivated: { 0258 locationDetailsSheet.location = journeySection.to; 0259 locationDetailsSheet.open(); 0260 } 0261 } 0262 0263 QQC2.Label { 0264 text: journeySection.hasExpectedArrivalPlatform ? journeySection.expectedArrivalPlatform : journeySection.scheduledArrivalPlatform 0265 color: JourneySection.hasExpectedArrivalPlatform ? (journeySection.arrivalPlatformChanged ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor) : Kirigami.Theme.textColor 0266 } 0267 } 0268 0269 model: journeySection.intermediateStops 0270 } 0271 } 0272 }