Warning, /plasma-mobile/calindori/src/contents/ui/TodosCardView.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 Kirigami.ScrollablePage {
0014     id: root
0015 
0016     property date todoDt
0017     property var calendar
0018 
0019     title: i18n("Tasks")
0020     leftPadding: 0
0021     rightPadding: 0
0022     visible: Kirigami.Settings.isMobile || (!Kirigami.Settings.isMobile && !pageStack.lastVisibleItem.hasOwnProperty("isEditorPage"))
0023 
0024     actions.main: Kirigami.Action {
0025         id: mainAction
0026 
0027         icon.name: "resource-calendar-insert"
0028         text: i18n("Create Task")
0029         onTriggered: pageStack.push(todoEditor, {startDt: todoDt})
0030     }
0031 
0032     Kirigami.PlaceholderMessage {
0033         anchors.centerIn: parent
0034         icon.name: "view-calendar-tasks"
0035         width: parent.width - (Kirigami.Units.largeSpacing * 4)
0036         visible: cardsListview.count == 0
0037         text: !isNaN(todoDt) ? i18n("No tasks scheduled for %1", todoDt.toLocaleDateString(_appLocale, Locale.ShortFormat)) : i18n("No tasks scheduled")
0038         helpfulAction: mainAction
0039     }
0040 
0041     Kirigami.CardsListView {
0042         id: cardsListview
0043 
0044         model: todosModel
0045         enabled: count > 0 && (root.state !== "deleting")
0046         clip: true
0047 
0048         delegate: TodoCard {
0049             id: cardDelegate
0050 
0051             dataModel: model
0052 
0053             actions: [
0054                 Kirigami.Action {
0055                     text: i18n("Delete")
0056                     icon.name: "delete"
0057 
0058                     onTriggered: {
0059                         deleteMsg.taskUid = model.uid;
0060                         deleteMsg.taskSummary = model.summary;
0061                         root.state = "deleting";
0062                     }
0063                 },
0064 
0065                 Kirigami.Action {
0066                     text: i18n("Edit")
0067                     icon.name: "editor"
0068 
0069                     onTriggered: pageStack.push(todoEditor, { startDt: model.dtstart, uid: model.uid, incidenceData: model })
0070                 }
0071             ]
0072         }
0073     }
0074 
0075     footer: Kirigami.InlineMessage {
0076         id: deleteMsg
0077 
0078         property string taskUid
0079         property string taskSummary
0080 
0081         text: i18n("Task %1 will be deleted", taskSummary)
0082         visible: false
0083 
0084         actions: [
0085             Kirigami.Action {
0086                 text: i18n("Delete")
0087 
0088                 onTriggered: {
0089                     Calindori.CalendarController.removeTodo(root.calendar, {"uid": deleteMsg.taskUid});
0090                     root.state = "";
0091                 }
0092             },
0093 
0094             Kirigami.Action {
0095                 text: i18n("Cancel")
0096 
0097                 onTriggered: root.state = ""
0098             }
0099         ]
0100     }
0101 
0102     Calindori.IncidenceModel {
0103         id: todosModel
0104 
0105         appLocale: _appLocale
0106         filterDt: root.todoDt
0107         filterMode: 6
0108     }
0109 
0110     Component {
0111         id: todoEditor
0112         TodoEditorPage {
0113             onEditcompleted: pageStack.pop()
0114         }
0115     }
0116 
0117     states: [
0118         State {
0119             name: ""
0120             PropertyChanges { target: deleteMsg; visible: false }
0121         },
0122         State {
0123             name: "deleting"
0124             PropertyChanges { target: deleteMsg; visible: true }
0125         }
0126     ]
0127 }