Warning, /pim/kube/views/calendar/qml/DateTimeChooser.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * Copyright (C) 2017 Michael Bohlender, <bohlender@kolabsys.com>
0003 * Copyright (C) 2018 Christian Mollekopf, <mollekopf@kolabsys.com>
0004 *
0005 * This program is free software; you can redistribute it and/or modify
0006 * it under the terms of the GNU General Public License as published by
0007 * the Free Software Foundation; either version 2 of the License, or
0008 * (at your option) any later version.
0009 *
0010 * This program is distributed in the hope that it will be useful,
0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0013 * GNU General Public License for more details.
0014 *
0015 * You should have received a copy of the GNU General Public License along
0016 * with this program; if not, write to the Free Software Foundation, Inc.,
0017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0018 */
0019
0020 import QtQuick 2.7
0021 import QtQuick.Layouts 1.2
0022 import org.kube.framework 1.0 as Kube
0023 import Qt.labs.calendar 1.0
0024
0025 import "dateutils.js" as DateUtils
0026
0027 RowLayout {
0028 id: root
0029 property bool enableTime: true
0030 property var notBefore: new Date(0)
0031 property var initialValue: null
0032
0033 property date dateTime: initialValue ? initialValue : new Date()
0034
0035 spacing: Kube.Units.smallSpacing
0036
0037 Component.onCompleted: {
0038 if (root.initialValue) {
0039 root.dateTime = root.initialValue
0040 }
0041 }
0042
0043
0044 Kube.Button {
0045 id: button
0046
0047 Layout.preferredWidth: implicitWidth
0048
0049 text: selector.selectedDate.toLocaleDateString()
0050
0051 onClicked: {
0052 popup.open()
0053 }
0054
0055 Kube.Popup {
0056 id: popup
0057
0058 x: button.x
0059 y: button.y + button.height
0060 width: selector.implicitWidth + Kube.Units.largeSpacing * 2
0061 height: selector.implicitHeight + Kube.Units.largeSpacing * 2
0062 modal: true
0063 focus: true
0064
0065 DateSelector {
0066 id: selector
0067 anchors.fill: parent
0068 notBefore: root.notBefore
0069 backgroundColor: Kube.Colors.backgroundColor
0070 textColor: Kube.Colors.textColor
0071 invertIcons: false
0072 selectedDate: root.dateTime
0073 onSelected: root.dateTime = date
0074 onNext: root.dateTime = DateUtils.nextMonth(selectedDate)
0075 onPrevious: root.dateTime = DateUtils.previousMonth(selectedDate)
0076 }
0077 }
0078 }
0079
0080 TimeSelector {
0081 id: timeEdit
0082 Layout.preferredWidth: Kube.Units.gridUnit * 3
0083 notBefore: root.notBefore
0084 dateTime: root.dateTime
0085 onDateTimeChanged: {
0086 //Intermediate variable is necessary for binding to be updated
0087 var newDate = root.dateTime
0088 newDate.setHours(dateTime.getHours(), dateTime.getMinutes())
0089 root.dateTime = newDate
0090 }
0091
0092 visible: root.enableTime
0093 }
0094 }