Warning, /pim/itinerary/src/app/BusEditor.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2019-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.kirigamiaddons.formcard as FormCard 0011 import org.kde.kitinerary 0012 import org.kde.kpublictransport 0013 import org.kde.itinerary 0014 0015 EditorPage { 0016 id: root 0017 title: i18n("Edit Bus Reservation") 0018 0019 property var departureBusStop: reservationFor.departureBusStop 0020 property var departureTime: Util.dateTimeStripTimezone(reservationFor, "departureTime") 0021 property var arrivalBusStop: reservationFor.arrivalBusStop 0022 property var arrivalTime: Util.dateTimeStripTimezone(reservationFor, "arrivalTime") 0023 0024 function apply(reservation) { 0025 let trip = reservation.reservationFor; 0026 trip.departureBusStop = root.departureBusStop; 0027 trip = Util.setDateTimePreserveTimezone(trip, "departureTime", root.departureTime); 0028 trip.departurePlatform = departurePlatform.text; 0029 trip.arrivalBusStop = root.arrivalBusStop; 0030 trip = Util.setDateTimePreserveTimezone(trip, "arrivalTime", root.arrivalTime); 0031 trip.arrivalPlatform = arrivalPlatform.text; 0032 0033 let ticket = reservation.reservedTicket ?? Factory.makeTicket(); 0034 let seat = ticket.ticketedSeat; 0035 seat.seatNumber = seatNumber.text; 0036 ticket.ticketedSeat = seat; 0037 0038 var newRes = reservation; 0039 newRes.reservationFor = trip; 0040 newRes.reservedTicket = ticket; 0041 bookingEdit.apply(newRes); 0042 return newRes; 0043 } 0044 0045 IntermediateStopSelector { 0046 id: boardSheet 0047 title: i18n("Board Later") 0048 model: root.controller.journey.intermediateStops 0049 action: Kirigami.Action { 0050 text: i18n("Change departure stop") 0051 onTriggered: { 0052 departureBusStop = PublicTransport.busStationFromLocation(root.controller.journey.intermediateStops[boardSheet.currentIndex].stopPoint) 0053 departureTime = Util.dateTimeStripTimezone(root.controller.journey.intermediateStops[boardSheet.currentIndex], "scheduledDepartureTime"); 0054 boardSheet.close(); 0055 } 0056 } 0057 } 0058 IntermediateStopSelector { 0059 id: alightSheet 0060 title: i18n("Alight Earlier") 0061 model: root.controller.journey.intermediateStops 0062 action: Kirigami.Action { 0063 text: i18n("Change arrival stop") 0064 onTriggered: { 0065 arrivalBusStop = PublicTransport.busStationFromLocation(root.controller.journey.intermediateStops[alightSheet.currentIndex].stopPoint); 0066 arrivalTime = Util.dateTimeStripTimezone(root.controller.journey.intermediateStops[alightSheet.currentIndex], "scheduledArrivalTime"); 0067 if (!arrivalTime) { 0068 arrivalTime = Util.dateTimeStripTimezone(root.controller.journey.intermediateStops[alightSheet.currentIndex], "scheduledDepartureTime"); 0069 } 0070 alightSheet.close(); 0071 } 0072 } 0073 } 0074 0075 ColumnLayout { 0076 spacing: 0 0077 0078 CardPageTitle { 0079 emojiIcon: "🚌" 0080 text: if (reservationFor.busNumber || reservationFor.busName) { 0081 return reservationFor.busName + " " + reservationFor.busNumber; 0082 } else { 0083 return i18nc("@title", "Bus") 0084 } 0085 } 0086 0087 FormCard.FormHeader { 0088 title: i18nc("bus departure", "Departure") 0089 } 0090 0091 FormCard.FormCard { 0092 FormCard.FormTextDelegate { 0093 text: i18nc("bus stop", "Stop") 0094 description: root.departureBusStop.name 0095 } 0096 FormCard.FormTextFieldDelegate { 0097 id: departurePlatform 0098 label: i18nc("bus stop platform", "Platform") 0099 text: reservationFor.departurePlatform 0100 } 0101 FormCard.FormButtonDelegate { 0102 text: i18n("Board later") 0103 icon.name: "arrow-right" 0104 visible: root.controller.journey && root.controller.journey.intermediateStops.length > 0 // TODO also check for preceding layovers 0105 onClicked: boardSheet.open(); 0106 } 0107 } 0108 0109 FormCard.FormHeader { 0110 title: i18nc("bus arrival", "Arrival") 0111 } 0112 0113 FormCard.FormCard { 0114 FormCard.FormTextDelegate { 0115 text: i18nc("bus stop", "Stop") 0116 description: root.arrivalBusStop.name 0117 } 0118 FormCard.FormTextFieldDelegate { 0119 id: arrivalPlatform 0120 label: i18nc("bus stop platform", "Platform") 0121 text: reservationFor.arrivalPlatform 0122 } 0123 FormCard.FormButtonDelegate { 0124 text: i18n("Alight earlier") 0125 icon.name: "arrow-left" 0126 visible: root.controller.journey && root.controller.journey.intermediateStops.length > 0 // TODO also check for subsequent layovers 0127 onClicked: alightSheet.open(); 0128 } 0129 } 0130 0131 // TODO the below is per reservation, not per batch, so add a selector for that! 0132 FormCard.FormHeader { 0133 title: i18n("Seat") 0134 } 0135 0136 FormCard.FormCard { 0137 FormCard.FormTextFieldDelegate { 0138 id: seatNumber 0139 label: i18n("Seat") 0140 text: reservation.reservedTicket ? reservation.reservedTicket.ticketedSeat.seatNumber : "" 0141 } 0142 } 0143 0144 BookingEditorCard { 0145 id: bookingEdit 0146 item: root.reservation 0147 } 0148 } 0149 }