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

0001 /*
0002     SPDX-FileCopyrightText: 2018 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 QtQuick.Templates as T
0011 import org.kde.kirigami as Kirigami
0012 import org.kde.kirigamiaddons.components
0013 import org.kde.kitinerary
0014 import org.kde.itinerary
0015 
0016 Kirigami.ScrollablePage {
0017     id: root
0018 
0019     property var batchId: controller ? controller.batchId : undefined
0020     property QtObject controller: null
0021     property var reservation: ReservationManager.reservation(root.batchId);
0022 
0023     property T.Action saveAction: QQC2.Action {
0024         text: i18nc("@action:button", "Save")
0025         icon.name: "document-save"
0026         enabled: root.isValidInput
0027         onTriggered: {
0028             const newRes = root.apply(root.reservation);
0029             if (root.batchId) { // update to an existing element
0030                 ReservationManager.updateReservation(root.batchId, newRes);
0031             } else { // newly added element
0032                 ReservationManager.importReservation(newRes);
0033             }
0034             pageStack.pop();
0035         }
0036     }
0037 
0038     /** Input validation for derived pages. */
0039     property bool isValidInput: true
0040 
0041     /** Returns the city/region/country we are assumed to be in at the given time. */
0042     function cityAtTime(dt) {
0043         let city = Factory.makePlace();
0044         let addr = city.address;
0045         const loc = TimelineModel.locationAtTime(dt);
0046         if (loc && !loc.address.isEmpty) {
0047             addr.addressLocality = loc.address.addressLocality;
0048             addr.addressRegion = loc.address.addressRegion;
0049             addr.addressCountry = loc.address.addressCountry;
0050         } else {
0051             addr.addressCountry = Settings.homeCountryIsoCode;
0052         }
0053         city.address = addr;
0054         return city;
0055     }
0056 
0057     leftPadding: 0
0058     rightPadding: 0
0059 
0060     data: FloatingButton {
0061         anchors {
0062             right: parent.right
0063             rightMargin: Kirigami.Units.largeSpacing + (root.contentItem.QQC2.ScrollBar && root.contentItem.QQC2.ScrollBar.vertical ? root.contentItem.QQC2.ScrollBar.vertical.width : 0)
0064             bottom: parent.bottom
0065             bottomMargin: Kirigami.Units.largeSpacing
0066         }
0067         action: root.saveAction
0068     }
0069 }