Warning, /pim/itinerary/src/app/TransferDelegate.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2019 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 import org.kde.kirigamiaddons.formcard as FormCard
0014 
0015 FormCard.FormCard {
0016     id: root
0017     width: ListView.view.width
0018 
0019     required property var transfer
0020     property bool journeyDetailsExpanded: false
0021     property QtObject controller: TransferDelegateController {
0022         transfer: root.transfer
0023     }
0024     FormCard.AbstractFormDelegate {
0025         background: Rectangle {
0026             id: headerBackground
0027             color: Kirigami.Theme.backgroundColor
0028             Kirigami.Theme.colorSet: controller.isCurrent ? Kirigami.Theme.Selection : Kirigami.Theme.Header
0029             Kirigami.Theme.inherit: false
0030             Rectangle {
0031                 id: progressBar
0032                 visible: controller.isCurrent
0033                 anchors.bottom: headerBackground.bottom
0034                 anchors.left: headerBackground.left
0035                 height: Kirigami.Units.smallSpacing
0036                 width: controller.progress * headerBackground.width
0037                 color: Kirigami.Theme.visitedLinkColor
0038             }
0039         }
0040         onClicked: {
0041             if (transfer.state == Transfer.Selected) {
0042                 journeyDetailsExpanded = !journeyDetailsExpanded;
0043             } else {
0044                 applicationWindow().pageStack.push(detailsComponent);
0045             }
0046         }
0047         contentItem: RowLayout {
0048             id: headerLayout
0049             anchors.fill: parent
0050             anchors.margins: Kirigami.Units.largeSpacing
0051 
0052             Kirigami.Icon {
0053                 source: "qrc:///images/transfer.svg"
0054                 Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium
0055                 Layout.preferredHeight: Layout.preferredWidth
0056                 color: Kirigami.Theme.textColor
0057                 isMask: true
0058             }
0059             QQC2.Label {
0060                 id: headerLabel
0061                 text: i18n("%1 to %2", transfer.fromName, transfer.toName)
0062                 color: Kirigami.Theme.textColor
0063                 Layout.fillWidth: true
0064                 elide: Text.ElideRight
0065                 wrapMode: Text.WordWrap
0066                 maximumLineCount: 2
0067                 Accessible.ignored: true
0068             }
0069             QQC2.Label {
0070                 text: Localizer.formatTime(transfer.journey, "scheduledDepartureTime")
0071                 visible: transfer.state == Transfer.Selected
0072                 color: Kirigami.Theme.textColor
0073                 Accessible.ignored: !visible
0074             }
0075             QQC2.Label {
0076                 text: (transfer.journey.departureDelay >= 0 ? "+" : "") + transfer.journey.departureDelay
0077                 color: (transfer.journey.departureDelay > 1) ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor
0078                 visible: transfer.state == Transfer.Selected && transfer.journey.hasExpectedDepartureTime
0079                 Accessible.ignored: !visible
0080             }
0081 
0082             QQC2.BusyIndicator {
0083                 running: visible
0084                 visible: transfer.state == Transfer.Searching
0085                 Accessible.ignored: !visible
0086             }
0087         }
0088     }
0089 
0090     Repeater {
0091         id: journeyRepeater
0092         delegate: JourneySectionDelegate{
0093             Layout.fillWidth: true
0094             modelLength: journeyRepeater.count - 1
0095 
0096         }
0097         model: (transfer.state == Transfer.Selected && journeyDetailsExpanded) ? transfer.journey.sections : 0
0098     }
0099 
0100     JourneySummaryDelegate {
0101         journey: transfer.journey
0102         visible: transfer.state == Transfer.Selected && !journeyDetailsExpanded
0103         Layout.fillWidth: true
0104         onClicked: journeyDetailsExpanded = true
0105     }
0106 
0107     FormCard.FormButtonDelegate {
0108         icon.name: "checkmark"
0109         text: i18n("Select transfer")
0110         onClicked: applicationWindow().pageStack.push(detailsComponent)
0111         visible: transfer.state === Transfer.Pending
0112             || transfer.state === Transfer.Searching
0113             || transfer.state === Transfer.Selected && journeyDetailsExpanded
0114         Accessible.ignored: !visible
0115     }
0116 
0117     FormCard.FormButtonDelegate {
0118         icon.name: "edit-delete"
0119         text: i18n("Delete transfer")
0120         onClicked: TransferManager.discardTransfer(transfer)
0121         visible: transfer.state == Transfer.Pending || transfer.state == Transfer.Searching
0122         Accessible.ignored: !visible
0123     }
0124     Item{
0125         Component {
0126             id: detailsComponent
0127             TransferPage {
0128                 transfer: root.transfer
0129             }
0130         }
0131     }
0132 
0133     Accessible.name: headerLabel.text
0134 }