Warning, /maui/mauikit-calendar/src/controls.6/DatePicker.qml is written in an unsupported language. File is not indexed.
0001 import QtQuick
0002 import QtQuick.Layouts
0003 import QtQuick.Controls
0004
0005 import org.mauikit.controls 1.3 as Maui
0006 import org.mauikit.calendar 1.0 as Kalendar
0007
0008 /**
0009 * @inherit QtQuick.Controls.Page
0010 * @brief A control for quickly picking a date in the format of year, month and day number.
0011 *
0012 * @image html datepicker.png
0013 *
0014 * @code
0015 * Maui.ApplicationWindow
0016 * {
0017 * id: root
0018 *
0019 * Maui.Page
0020 * {
0021 * anchors.fill: parent
0022 * Maui.Controls.showCSD: true
0023 * title: root.title
0024 *
0025 * MC.DatePicker
0026 * {
0027 * id: _datePicker
0028 * height: 300
0029 * width: 300
0030 * anchors.centerIn: parent
0031 *
0032 * onAccepted: (date) => root.title = date.toLocaleString()
0033 * }
0034 * }
0035 * }
0036 * @endcode
0037 */
0038 Page
0039 {
0040 id: control
0041
0042 /**
0043 * @brief
0044 */
0045 readonly property date startDate : new Date()
0046
0047 /**
0048 * @brief
0049 */
0050 property int selectedMonth : selectedDate.getUTCMonth()
0051
0052 /**
0053 * @brief
0054 */
0055 property int selectedYear: selectedDate.getUTCFullYear()
0056
0057 /**
0058 * @brief
0059 */
0060 property int selectedDay : selectedDate.getDate()
0061
0062 /**
0063 * @brief
0064 */
0065 property date selectedDate : startDate
0066
0067 /**
0068 * @brief
0069 *
0070 */
0071 signal accepted(var date)
0072
0073 padding: 0
0074
0075 header: Maui.ToolBar
0076 {
0077 width: parent.width
0078
0079 background: null
0080
0081 leftContent: Maui.ToolActions
0082 {
0083 autoExclusive: true
0084
0085 Action
0086 {
0087 text: control.selectedDay
0088 checked: _swipeView.currentIndex === 0
0089 onTriggered: _swipeView.currentIndex = 0
0090 }
0091
0092 Action
0093 {
0094 text: Qt.locale().standaloneMonthName(control.selectedMonth)
0095 checked: _swipeView.currentIndex === 1
0096 onTriggered: _swipeView.currentIndex = 1
0097
0098 }
0099
0100 Action
0101 {
0102 text: control.selectedYear
0103 checked: _swipeView.currentIndex === 2
0104 onTriggered: _swipeView.currentIndex = 2
0105 }
0106 }
0107
0108 rightContent: Button
0109 {
0110 text: i18n("Done")
0111 onClicked: control.accepted(control.selectedDate)
0112 }
0113 }
0114
0115 contentItem: SwipeView
0116 {
0117 id: _swipeView
0118 background: null
0119 clip: true
0120
0121 Kalendar.DaysGrid
0122 {
0123 id: _daysPane
0124 month: control.selectedMonth+1
0125 year: control.selectedYear
0126
0127 onDateClicked: (date) =>
0128 {
0129 control.updateSelectedDate(date.getDate(), control.selectedMonth, control.selectedYear)
0130 }
0131 }
0132
0133 Kalendar.MonthsGrid
0134 {
0135 id: _monthPage
0136 selectedMonth: control.selectedMonth
0137 onMonthSelected: (month) => control.updateSelectedDate(control.selectedDay, month, control.selectedYear)
0138 }
0139
0140 Kalendar.YearsGrid
0141 {
0142 id: _yearPane
0143 selectedYear: control.selectedYear
0144 onYearSelected: (year) => control.updateSelectedDate(control.selectedDay, control.selectedMonth, year)
0145 }
0146 }
0147
0148 /**
0149 * @brief
0150 */
0151 function updateSelectedDate(day, month, year)
0152 {
0153 control.selectedDay = day
0154 control.selectedMonth = month
0155 control.selectedYear = year
0156
0157 console.log("CREATING A NEW DATE WITH", day, month, year)
0158 control.selectedDate = new Date(year, month, day)
0159 _swipeView.incrementCurrentIndex()
0160 }
0161 }