Warning, /plasma-mobile/calindori/src/contents/ui/DayView.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Dimitris Kardarakos <dimkard@posteo.net> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 import QtQuick 2.7 0008 import QtQuick.Controls 2.0 as Controls2 0009 import QtQuick.Layouts 1.3 0010 import org.kde.kirigami 2.12 as Kirigami 0011 import org.kde.calindori 0.1 as Calindori 0012 0013 ListView { 0014 id: root 0015 0016 property date selectedDate: Calindori.CalendarController.localSystemDateTime() 0017 property var cal 0018 property bool wideScreen 0019 0020 signal nextDay 0021 signal previousDay 0022 signal goToday 0023 signal addEvent 0024 signal addTodo 0025 0026 /** 0027 * @brief Remove the editor page from the stack. If an incidence page exists in the page stack, remove it as well 0028 * 0029 */ 0030 function removeEditorPage() { 0031 pageStack.pop(); 0032 if(pageStack.lastItem && pageStack.lastItem.hasOwnProperty("isIncidencePage")) { 0033 pageStack.pop(incidencePage); 0034 } 0035 } 0036 0037 onNextDay: { 0038 var next = selectedDate; 0039 next.setDate(selectedDate.getDate() + 1) 0040 selectedDate = next; 0041 } 0042 0043 onPreviousDay: { 0044 var prev = selectedDate; 0045 prev.setDate(selectedDate.getDate() - 1) 0046 selectedDate = prev; 0047 } 0048 0049 onGoToday: { 0050 selectedDate = Calindori.CalendarController.localSystemDateTime(); 0051 currentIndex = selectedDate.getHours(); 0052 } 0053 0054 onCurrentIndexChanged: { 0055 if (pageStack.depth > 1) { 0056 pageStack.pop(null); 0057 } 0058 } 0059 0060 model: 24 0061 currentIndex: selectedDate.getHours() 0062 0063 delegate: Kirigami.SwipeListItem { 0064 id: hourListItem 0065 0066 property var hour: model.index 0067 0068 alwaysVisibleActions: false 0069 0070 contentItem: RowLayout { 0071 spacing: Kirigami.Units.largeSpacing * 2 0072 0073 Controls2.Label { 0074 text: model.index < 10 ? "0" + model.index + ":00" : model.index + ":00" 0075 Layout.minimumWidth: Kirigami.Units.gridUnit * 2 0076 } 0077 0078 ColumnLayout { 0079 Repeater { 0080 model: Calindori.IncidenceModel { 0081 appLocale: _appLocale 0082 filterDt: root.selectedDate 0083 filterHour: hourListItem.hour 0084 filterMode: 1 0085 } 0086 0087 IncidenceItemDelegate { 0088 itemBackgroundColor: model.type === 0 ? Kirigami.Theme.backgroundColor : Qt.darker(Kirigami.Theme.backgroundColor, 1.1) 0089 label: model.summary 0090 subtitle: (model.type == 0 ? model.displayStartEndTime : (model.displayDueTime || model.displayStartTime)) 0091 Layout.fillWidth: true 0092 0093 onClicked: { 0094 if(pageStack.lastItem && pageStack.lastItem.hasOwnProperty("isIncidencePage")) { 0095 pageStack.pop(incidencePage); 0096 } 0097 0098 pageStack.push(incidencePage, { incidence: model }); 0099 } 0100 } 0101 } 0102 } 0103 } 0104 0105 actions: [ 0106 Kirigami.Action { 0107 iconName: "resource-calendar-insert" 0108 text: i18n("Create Event") 0109 0110 onTriggered: { 0111 var eventDt = selectedDate; 0112 eventDt.setHours(index); 0113 eventDt.setMinutes(0); 0114 eventDt.setSeconds(0); 0115 0116 pageStack.push(eventEditor, { startDt: eventDt }); 0117 } 0118 }, 0119 0120 Kirigami.Action { 0121 iconName: "task-new" 0122 text: i18n("Create Task") 0123 0124 onTriggered: { 0125 var todoDt = selectedDate; 0126 todoDt.setHours(index); 0127 todoDt.setMinutes(0); 0128 todoDt.setSeconds(0); 0129 0130 pageStack.push(todoEditor, { startDt: todoDt }); 0131 } 0132 } 0133 ] 0134 } 0135 0136 Component { 0137 id: incidencePage 0138 0139 IncidencePage { 0140 calendar: root.cal 0141 } 0142 } 0143 0144 Component { 0145 id: eventEditor 0146 0147 EventEditorPage { 0148 calendar: root.cal 0149 0150 onEditcompleted: removeEditorPage() 0151 } 0152 } 0153 0154 Component { 0155 id: todoEditor 0156 0157 TodoEditorPage { 0158 onEditcompleted: removeEditorPage() 0159 } 0160 } 0161 }