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 }