Warning, /pim/itinerary/src/app/EventEditor.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2020 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.kirigamiaddons.formcard as FormCard
0012 import org.kde.i18n.localeData
0013 import org.kde.kitinerary
0014 import org.kde.itinerary
0015
0016 EditorPage {
0017 id: root
0018
0019 title: i18nc("event as in concert/conference/show, not as in appointment", "Edit Event")
0020
0021 isValidInput: eventName.text !== "" && startDateEdit.hasValue && (!endDateEdit.hasValue || startDateEdit.value < endDateEdit.value)
0022
0023 function apply(reservation) {
0024 let event = reservation.reservationFor;
0025 event.name = eventName.text;
0026 let loc = address.save(reservation.reservationFor.location ? reservation.reservationFor.location : Factory.makePlace());
0027 loc.name = venueName.text;
0028 event.location = loc;
0029 event.url = urlEdit.text;
0030
0031 if (entranceTimeEdit.isModified)
0032 event = Util.setDateTimePreserveTimezone(event, "doorTime", entranceTimeEdit.value);
0033 if (startDateEdit.isModified)
0034 event = Util.setDateTimePreserveTimezone(event, "startDate", startDateEdit.value);
0035 if (endDateEdit.isModified)
0036 event = Util.setDateTimePreserveTimezone(event, "endDate", endDateEdit.value);
0037
0038 let newRes = reservation;
0039 newRes.reservationFor = event;
0040 bookingEdit.apply(newRes);
0041 return newRes;
0042 }
0043
0044 ColumnLayout {
0045 spacing: 0
0046
0047 FormCard.FormHeader {
0048 title: i18nc("event as in concert/conference/show, not as in appointment", "Event")
0049 }
0050
0051 FormCard.FormCard {
0052 FormCard.FormTextFieldDelegate {
0053 id: eventName
0054 label: i18nc("event name", "Name")
0055 text: reservation.reservationFor.name
0056 status: Kirigami.MessageType.Error
0057 statusMessage: text === "" ? i18n("Name must not be empty.") : ""
0058 }
0059 FormCard.FormDelegateSeparator {}
0060 FormDateTimeEditDelegate {
0061 id: entranceTimeEdit
0062 text: i18nc("time of entrance", "Entrance")
0063 obj: reservation.reservationFor
0064 propertyName: "doorTime"
0065 initialValue: {
0066 let d = new Date(startDateEdit.value);
0067 d.setHours(d.getHours() - 2);
0068 return d;
0069 }
0070 status: Kirigami.MessageType.Warning
0071 statusMessage: {
0072 if (entranceTimeEdit.hasValue && entranceTimeEdit.value > startDateEdit.value)
0073 return i18n("Entrance time has to be before the start time.")
0074 return '';
0075 }
0076 }
0077 FormCard.FormDelegateSeparator {}
0078 FormDateTimeEditDelegate {
0079 id: startDateEdit
0080 text: i18n("Start Time")
0081 obj: reservation.reservationFor
0082 propertyName: "startDate"
0083 status: Kirigami.MessageType.Error
0084 statusMessage: startDateEdit.hasValue ? '' : i18n("Start time has to be set.")
0085 }
0086 FormCard.FormDelegateSeparator {}
0087 FormDateTimeEditDelegate {
0088 id: endDateEdit
0089 text: i18n("End Time")
0090 obj: reservation.reservationFor
0091 propertyName: "endDate"
0092 initialValue: {
0093 let d = new Date(startDateEdit.value);
0094 d.setHours(d.getHours() + 2);
0095 return d;
0096 }
0097 status: Kirigami.MessageType.Error
0098 statusMessage: {
0099 if (endDateEdit.hasValue && endDateEdit.value < startDateEdit.value)
0100 return i18n("End time has to be after the start time.")
0101 return '';
0102 }
0103 }
0104 FormCard.FormDelegateSeparator {}
0105 FormCard.FormTextFieldDelegate {
0106 id: urlEdit
0107 label: i18n("Website")
0108 text: root.reservation.reservationFor.url
0109 inputMethodHints: Qt.ImhUrlCharactersOnly
0110 }
0111 }
0112
0113 FormCard.FormHeader {
0114 title: i18n("Venue")
0115 }
0116
0117 FormCard.FormCard {
0118 FormCard.FormTextFieldDelegate {
0119 id: venueName
0120 label: i18nc("venue name", "Name")
0121 text: reservation.reservationFor.location ? reservation.reservationFor.location.name : ""
0122 }
0123 FormCard.FormDelegateSeparator {}
0124 FormPlaceEditorDelegate {
0125 id: address
0126 place: {
0127 if (root.reservation.reservationFor.location)
0128 return root.reservation.reservationFor.location;
0129 return cityAtTime(root.reservation.reservationFor.startDate);
0130 }
0131 }
0132 }
0133
0134 // TODO seat
0135
0136 BookingEditorCard {
0137 id: bookingEdit
0138 item: reservation
0139 defaultCurrency: Country.fromAlpha2(address.currentCountry).currencyCode
0140 }
0141 }
0142 }