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

0001 /*
0002     SPDX-FileCopyrightText: 2019-2021 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 
0014 JourneyQueryPage {
0015     id: root
0016 
0017     required property QtObject controller
0018 
0019     title: i18n("Alternative Connections")
0020 
0021     journeyRequest: controller.journeyRequestFull
0022 
0023     function updateRequest() {
0024         root.journeyRequest = fullJourneyAction.chhecked ? controller.journexRequestFull : controller.journeyRequestOne;
0025 
0026         let allLineModes = true;
0027         for (const s of [longDistanceModeAction, localTrainModeAction, rapidTransitModeAction, busModeAction, ferryModeAction]) {
0028             if (!s.checked) {
0029                 allLineModes = false;
0030             }
0031         }
0032 
0033         let lineModes = [];
0034         if (!allLineModes) {
0035             if (longDistanceModeAction.checked)
0036                 lineModes.push(Line.LongDistanceTrain, Line.Train);
0037             if (localTrainModeAction.checked)
0038                 lineModes.push(Line.LocalTrain);
0039             if (rapidTransitModeAction.checked)
0040                 lineModes.push(Line.RapidTransit, Line.Metro, Line.Tramway, Line.RailShuttle);
0041             if (busModeAction.checked)
0042                 lineModes.push(Line.Bus, Line.Coach);
0043             if (ferryModeAction.checked)
0044                 lineModes.push(Line.Ferry, Line.Boat);
0045         }
0046         root.journeyRequest.lineModes = lineModes;
0047         return req;
0048     }
0049 
0050     onJourneyChanged: replaceWarningDialog.open()
0051 
0052     Component.onCompleted: {
0053         for (const action of [fullJourneyAction, oneJourneyAction, actionSeparator, longDistanceModeAction, localTrainModeAction, rapidTransitModeAction, busModeAction, ferryModeAction]) {
0054                 actions.push(action);
0055         }
0056     }
0057 
0058     data: [
0059         QQC2.ActionGroup { id: journeyActionGroup },
0060         Kirigami.Action {
0061             id: fullJourneyAction
0062             text: i18nc("to travel destination", "To %1", controller.journeyRequestFull.to.name)
0063             checkable: true
0064             checked: controller.journeyRequestFull.to.name == root.journeyRequest.to.name
0065             icon.name: "go-next-symbolic"
0066             visible: controller.journeyRequestFull.to.name != controller.journeyRequestOne.to.name
0067             QQC2.ActionGroup.group: journeyActionGroup
0068             onTriggered: updateRequest()
0069         },
0070         Kirigami.Action {
0071             id: oneJourneyAction
0072             text: i18nc("to travel destination", "To %1", controller.journeyRequestOne.to.name)
0073             checkable: true
0074             checked: controller.journeyRequestOne.to.name == root.journeyRequest.to.name
0075             icon.name: "go-next-symbolic"
0076             visible: controller.journeyRequestFull.to.name != controller.journeyRequestOne.to.name
0077             QQC2.ActionGroup.group: journeyActionGroup
0078             onTriggered: updateRequest()
0079         },
0080 
0081         Kirigami.Action {
0082             id: actionSeparator
0083             separator: true
0084         },
0085 
0086         Kirigami.Action {
0087             id: longDistanceModeAction
0088             text: i18nc("journey query search constraint, title", "Long distance trains")
0089             icon.source: PublicTransport.lineModeIcon(Line.LongDistanceTrain)
0090             checkable: true
0091             checked: true
0092             onTriggered: updateRequest()
0093         },
0094         Kirigami.Action {
0095             id: localTrainModeAction
0096             text: i18nc("journey query search constraint, title", "Local trains")
0097             icon.source: PublicTransport.lineModeIcon(Line.LocalTrain)
0098             checkable: true
0099             checked: true
0100             onTriggered: updateRequest()
0101         },
0102         Kirigami.Action {
0103             id: rapidTransitModeAction
0104             text: i18nc("journey query search constraint, title", "Rapid transit")
0105             icon.source: PublicTransport.lineModeIcon(Line.Tramway)
0106             checkable: true
0107             checked: true
0108             onTriggered: updateRequest()
0109         },
0110         Kirigami.Action {
0111             id: busModeAction
0112             text: i18nc("journey query search constraint, title", "Bus")
0113             icon.source: PublicTransport.lineModeIcon(Line.Bus)
0114             checkable: true
0115             checked: true
0116             onTriggered: updateRequest()
0117         },
0118         Kirigami.Action {
0119             id: ferryModeAction
0120             text: i18nc("journey query search constraint, title", "Ferry")
0121             icon.source: PublicTransport.lineModeIcon(Line.Ferry)
0122             checkable: true
0123             checked: true
0124             onTriggered: updateRequest()
0125         },
0126 
0127         Kirigami.PromptDialog {
0128             id: replaceWarningDialog
0129 
0130             title: i18n("Replace Journey")
0131             subtitle: i18n("Do you really want to replace your existing reservation with the newly selected journey?")
0132             standardButtons: QQC2.Dialog.No
0133             customFooterActions: [
0134                 Kirigami.Action {
0135                     text: i18n("Replace")
0136                     icon.name: "document-save"
0137                     onTriggered: {
0138                         controller.applyJourney(root.journey, root.journeyRequest.to.name == controller.journeyRequestFull.to.name);
0139                         replaceWarningDialog.close()
0140                         applicationWindow().pageStack.pop();
0141                     }
0142                 }
0143             ]
0144         }
0145     ]
0146 }