Warning, /pim/merkuro/src/calendar/qml/Controls/DateControls/DateCombo.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2021 Claudio Cambra <claudio.cambra@gmail.com> 0002 // SPDX-License-Identifier: LGPL-2.1-or-later 0003 0004 import QtQuick 2.15 0005 import QtQuick.Controls 2.15 as QQC2 0006 import QtQuick.Layouts 1.15 0007 import org.kde.kirigami 2.15 as Kirigami 0008 0009 import "dateutils.js" as DateUtils 0010 0011 QQC2.ComboBox { 0012 id: root 0013 0014 signal newDateChosen(int day, int month, int year) 0015 0016 property int timeZoneOffset: 0 0017 property string display: dateTime.toLocaleDateString(Qt.locale(), Locale.NarrowFormat) // Can override for better C++ time strings 0018 property date dateTime: new Date() 0019 property date dateFromText: DateUtils.parseDateString(editText) 0020 property bool validDate: !isNaN(dateFromText.getTime()) 0021 0022 onDateTimeChanged: { 0023 datePicker.selectedDate = dateTime; 0024 datePicker.clickedDate = dateTime; 0025 } 0026 0027 editable: true 0028 editText: activeFocus ? editText : display 0029 0030 onActiveFocusChanged: { 0031 // Set date from text here because it otherwise updates after this handler 0032 // Also make sure to only update after we switch from this field's focus to something else 0033 if(!activeFocus) { 0034 dateFromText = DateUtils.parseDateString(editText); 0035 0036 if (validDate) { 0037 datePicker.selectedDate = dateFromText; 0038 datePicker.clickedDate = dateFromText; 0039 newDateChosen(dateFromText.getDate(), dateFromText.getMonth() + 1, dateFromText.getFullYear()); 0040 } 0041 } 0042 } 0043 0044 popup: QQC2.Popup { 0045 id: datePopup 0046 0047 width: Kirigami.Units.gridUnit * 18 0048 height: Kirigami.Units.gridUnit * 18 0049 y: parent.y + parent.height 0050 z: 1000 0051 padding: 0 0052 0053 contentItem: DatePicker { 0054 id: datePicker 0055 0056 clickedDate: root.dateTime 0057 selectedDate: root.dateTime 0058 onDatePicked: { 0059 datePopup.close(); 0060 newDateChosen(pickedDate.getDate(), pickedDate.getMonth() + 1, pickedDate.getFullYear()); 0061 } 0062 } 0063 } 0064 }