Warning, /pim/itinerary/src/app/FlightPage.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org> 0002 // SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu> 0003 // SPDX-License-Identifier: LGPL-2.0-or-later 0004 0005 import QtQuick 0006 import QtQuick.Layouts 0007 import QtQuick.Controls as QQC2 0008 import org.kde.kirigami as Kirigami 0009 import org.kde.kirigamiaddons.formcard as FormCard 0010 import org.kde.kitinerary 0011 import org.kde.itinerary 0012 0013 DetailsPage { 0014 id: root 0015 title: i18n("Flight") 0016 property var resIds: ReservationManager.reservationsForBatch(root.batchId) 0017 editor: FlightEditor {} 0018 0019 function airportDisplayString(airport) { 0020 if (airport.name && airport.iataCode) { 0021 return airport.name + " (" + airport.iataCode + ")"; 0022 } else { 0023 return airport.name || airport.iataCode || ""; 0024 } 0025 } 0026 0027 data: BarcodeScanModeButton { 0028 page: root 0029 visible: ticketToken.hasBarcode 0030 } 0031 0032 ColumnLayout { 0033 spacing: 0 0034 0035 CardPageTitle { 0036 emojiIcon: "✈️" 0037 text: reservationFor.airline.iataCode + " " + reservationFor.flightNumber 0038 } 0039 0040 FormCard.FormCard { 0041 visible: ticketToken.ticketTokenCount > 0 || sequenceNumberDelegate.visible 0042 0043 // ticket barcode 0044 TicketTokenDelegate { 0045 id: ticketToken 0046 resIds: ReservationManager.reservationsForBatch(root.batchId) 0047 onCurrentReservationIdChanged: { 0048 if (!currentReservationId) 0049 return; 0050 root.currentReservationId = currentReservationId; 0051 } 0052 onScanModeToggled: scanModeController.toggle() 0053 } 0054 0055 FormCard.FormDelegateSeparator {} 0056 0057 // sequence number belongs to the selected barcode 0058 FormCard.FormTextDelegate { 0059 id: sequenceNumberDelegate 0060 text: i18n("Sequence Number:") 0061 description: root.reservation.passengerSequenceNumber 0062 visible: description 0063 } 0064 } 0065 0066 // flight data 0067 FormCard.FormHeader { 0068 visible: boardingTimeLabel.visible || boardingGroupLabel.visible || seatLabel.visible || airlineNameLabel.visible 0069 title: i18n("Boarding") 0070 } 0071 0072 FormCard.FormCard { 0073 visible: boardingTimeLabel.visible || boardingGroupLabel.visible || seatLabel.visible || airlineNameLabel.visible 0074 0075 FormCard.FormTextDelegate { 0076 id: boardingTimeLabel 0077 visible: reservationFor.boardingTime > 0 0078 text: i18n("Boarding time") 0079 description: Localizer.formatDateTime(reservationFor, "boardingTime") 0080 } 0081 0082 FormCard.FormDelegateSeparator { visible: boardingTimeLabel.visible } 0083 0084 FormCard.FormTextDelegate { 0085 id: boardingGroupLabel 0086 visible: reservation.boardingGroup.length > 0 0087 text: i18n("Boarding group") 0088 description: reservation.boardingGroup 0089 } 0090 0091 FormCard.FormDelegateSeparator { visible: boardingGroupLabel.visible } 0092 0093 FormCard.FormTextDelegate { 0094 id: seatLabel 0095 text: i18n("Seat") 0096 description: reservation.airplaneSeat 0097 visible: reservation.airplaneSeat.length > 0 0098 } 0099 0100 FormCard.FormDelegateSeparator { visible: seatLabel.visible } 0101 0102 FormCard.FormTextDelegate { 0103 id: airlineNameLabel 0104 text: i18n("Airline") 0105 description: reservationFor.airline.name 0106 visible: reservationFor.airline.name.length > 0 0107 } 0108 } 0109 0110 // departure data 0111 FormCard.FormHeader { 0112 title: i18nc("Flight departure", "Departure") 0113 } 0114 0115 FormCard.FormCard { 0116 FormCard.FormTextDelegate { 0117 id: departureTimeDelegate 0118 text: i18n("Departure time") 0119 description: Localizer.formatDateTime(reservationFor, "departureTime") 0120 visible: reservationFor.departureTime > 0 0121 } 0122 FormCard.FormTextDelegate { 0123 text: i18n("Departure date") 0124 visible: !departureTimeDelegate.visible && text.length > 0 0125 description: Localizer.formatDate(reservationFor, "departureDay") 0126 } 0127 0128 FormCard.FormDelegateSeparator {} 0129 0130 FormCard.FormTextDelegate { 0131 id: departureAirportDelegate 0132 text: i18n("Airport") 0133 description: airportDisplayString(reservationFor.departureAirport) 0134 visible: text.length > 0 0135 } 0136 0137 FormCard.FormDelegateSeparator { visible: departureAirportDelegate.text } 0138 0139 FormCard.FormTextDelegate { 0140 text: i18n("Terminal") 0141 description: reservationFor.departureTerminal 0142 visible: reservationFor.departureTerminal.length > 0 0143 } 0144 0145 FormCard.FormDelegateSeparator { visible: reservationFor.departureTerminal.length > 0 } 0146 0147 FormCard.FormTextDelegate { 0148 text: i18n("Gate") 0149 description: reservationFor.departureGate 0150 visible: reservationFor.departureGate.length > 0 0151 } 0152 0153 FormCard.FormDelegateSeparator { visible: reservationFor.departureGate.length > 0 } 0154 0155 FormPlaceDelegate { 0156 place: reservationFor.departureAirport 0157 controller: root.controller 0158 isRangeBegin: true 0159 } 0160 } 0161 0162 // arrival data 0163 FormCard.FormHeader { 0164 title: i18nc("Flight arrival", "Arrival") 0165 } 0166 0167 FormCard.FormCard { 0168 FormCard.FormTextDelegate { 0169 text: i18n("Arrival time") 0170 description: Localizer.formatDateTime(reservationFor, "arrivalTime") 0171 visible: reservationFor.arrivalTime > 0 0172 } 0173 0174 FormCard.FormDelegateSeparator { visible: reservationFor.arrivalTime > 0 } 0175 0176 FormCard.FormTextDelegate { 0177 id: arrivalAirportDelegate 0178 text: i18n("Airport") 0179 description: airportDisplayString(reservationFor.arrivalAirport) 0180 visible: text.length > 0 0181 } 0182 0183 FormCard.FormDelegateSeparator { visible: arrivalAirportDelegate.visible } 0184 0185 FormCard.FormTextDelegate { 0186 text: i18n("Terminal") 0187 description: reservationFor.arrivalTerminal 0188 visible: reservationFor.arrivalTerminal.length > 0 0189 } 0190 0191 FormCard.FormDelegateSeparator { visible: reservationFor.arrivalTerminal.length > 0 } 0192 0193 FormPlaceDelegate { 0194 place: reservationFor.arrivalAirport 0195 controller: root.controller 0196 isRangeEnd: true 0197 } 0198 } 0199 0200 BookingCard { 0201 reservation: root.reservation 0202 } 0203 0204 ProgramMembershipCard { 0205 programMembership: root.reservation.programMembershipUsed 0206 } 0207 0208 ReservationDocumentsCard { 0209 controller: root.controller 0210 } 0211 0212 ActionsCard { 0213 batchId: root.batchId 0214 editor: root.editor 0215 reservation: root.reservation 0216 } 0217 } 0218 }