Warning, /maui/mauikit-calendar/src/controls.6/YearView.qml is written in an unsupported language. File is not indexed.
0001 // Copyright (C) 2018 Michael Bohlender, <bohlender@kolabsys.com> 0002 // Copyright (C) 2018 Christian Mollekopf, <mollekopf@kolabsys.com> 0003 // SPDX-FileCopyrightText: 2021 Claudio Cambra <claudio.cambra@gmail.com> 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 import QtQuick 0007 import QtQuick.Layouts 0008 import QtQuick.Controls 0009 0010 import org.mauikit.controls 1.3 as Maui 0011 import org.mauikit.calendar 1.0 as Kalendar 0012 0013 import "dateutils.js" as DateUtils 0014 0015 /** 0016 * @inherit QtQuick.Controls.Pane 0017 * @brief A browsing view of the calendar organized by years. 0018 * 0019 * @image html yearview.png 0020 * 0021 * @code 0022 * Maui.ApplicationWindow 0023 * { 0024 * id: root 0025 * title: _view.title 0026 * 0027 * Maui.Page 0028 * { 0029 * anchors.fill: parent 0030 * Maui.Controls.showCSD: true 0031 * title: root.title 0032 * 0033 * MC.YearView 0034 * { 0035 * id: _view 0036 * anchors.fill: parent 0037 * 0038 * onSelectedDateChanged: root.title = selectedDate.toString() 0039 * 0040 * onMonthClicked: (month) => console.log("Month Clicked, ", month) 0041 * } 0042 * } 0043 * } 0044 * @endcode 0045 */ 0046 Pane 0047 { 0048 id: control 0049 0050 /** 0051 * @brief 0052 */ 0053 property date selectedDate: currentDate 0054 0055 /** 0056 * @brief 0057 */ 0058 readonly property date currentDate: new Date() 0059 0060 /** 0061 * @brief 0062 */ 0063 property date startDate 0064 0065 /** 0066 * @brief 0067 */ 0068 property date firstDayOfMonth 0069 0070 /** 0071 * @brief 0072 */ 0073 property int year : currentDate.getUTCFullYear() 0074 0075 /** 0076 * @brief 0077 */ 0078 property bool initialMonth: true 0079 0080 /** 0081 * @brief 0082 */ 0083 readonly property bool isLarge: width > Maui.Style.units.gridUnit * 40 0084 0085 /** 0086 * @brief 0087 */ 0088 readonly property bool isTiny: width <= Maui.Style.units.gridUnit * 40 0089 0090 /** 0091 * @brief 0092 */ 0093 readonly property alias gridView : _gridView 0094 0095 /** 0096 * @brief 0097 */ 0098 readonly property string title: control.year 0099 0100 /** 0101 * @brief 0102 * @param date 0103 */ 0104 signal monthClicked(var date) 0105 0106 contentItem: Maui.GridBrowser 0107 { 0108 id: _gridView 0109 0110 itemHeight: Math.max(itemSize, 160) 0111 itemSize: Math.min(width/3, 400) 0112 0113 currentIndex: currentDate.getUTCMonth() 0114 model: 12 0115 0116 delegate: Loader 0117 { 0118 id: viewLoader 0119 0120 property bool isNextOrCurrentItem: index >= _gridView.currentIndex -1 && index <= _gridView.currentIndex + 1 0121 property bool isCurrentItem: GridView.isCurrentItem 0122 0123 active: true 0124 asynchronous: !isCurrentItem 0125 visible: status === Loader.Ready 0126 0127 width: GridView.view.cellWidth - (control.isTiny ? 0 : Maui.Style.space.small) 0128 height: GridView.view.cellHeight - (control.isTiny ? 0 : Maui.Style.space.small) 0129 0130 sourceComponent: Kalendar.DaysGrid 0131 { 0132 // Maui.Theme.colorSet: Maui.Theme.Button 0133 // Maui.Theme.inherit: false 0134 // 0135 id: _monthDelegate 0136 year: control.year 0137 month: modelData+1 0138 compact: control.isTiny 0139 onDateClicked: control.selectedDate = date 0140 header: Maui.LabelDelegate 0141 { 0142 width: parent.width 0143 isSection: true 0144 color: Maui.Theme.textColor 0145 text: _monthDelegate.title 0146 } 0147 0148 background: Rectangle 0149 { 0150 color: _monthDelegate.month === control.currentDate.getUTCMonth()+1 ? Maui.Theme.alternateBackgroundColor : (_monthDelegate.hovered ? Maui.Theme.hoverColor : Maui.Theme.backgroundColor) 0151 radius: Maui.Style.radiusV 0152 0153 MouseArea 0154 { 0155 id: _mouseArea 0156 hoverEnabled: true 0157 anchors.fill: parent 0158 onClicked: control.monthClicked(new Date(_monthDelegate.year, _monthDelegate.month)) 0159 } 0160 } 0161 } 0162 } 0163 0164 Component.onCompleted: _gridView.flickable.positionViewAtIndex(_gridView.currentIndex, GridView.Visible) 0165 } 0166 0167 function resetDate() 0168 { 0169 control.year = control.currentDate.getUTCFullYear() 0170 } 0171 0172 function nextDate() 0173 { 0174 control.year++ 0175 } 0176 0177 function previousDate() 0178 { 0179 control.year-- 0180 } 0181 } 0182