Eventviews

todoview.h
1/*
2 This file is part of KOrganizer.
3
4 SPDX-FileCopyrightText: 2000, 2001, 2003 Cornelius Schumacher <schumacher@kde.org>
5 SPDX-FileCopyrightText: 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6 SPDX-FileCopyrightText: 2005 Rafal Rzepecki <divide@users.sourceforge.net>
7 SPDX-FileCopyrightText: 2008 Thomas Thrainer <tom_t@gmx.at>
8
9 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
10*/
11#pragma once
12
13#include "eventview.h"
14#include <Akonadi/IncidenceChanger>
15
16#include <QPointer>
17#include <akonadi/collectioncalendar.h>
18
19class KJob;
21class TodoViewQuickAddLine;
22class TodoViewQuickSearch;
23class TodoViewSortFilterProxyModel;
24class TodoViewView;
25
26namespace Akonadi
27{
28class ETMViewStateSaver;
29}
30
31class QItemSelection;
32class QMenu;
33class QModelIndex;
34class QToolButton;
35class QTimer;
36class KConfig;
38namespace EventViews
39{
40
41class CalendarFilterModel;
42
43/**
44 * This class provides a view for Todo items.
45
46 * @short View for Todo components.
47 * @author Cornelius Schumacher <schumacher@kde.org>, Reinhold Kainhofer <reinhold@kainhofer.com>
48 * @see EventView
49 */
50class EVENTVIEWS_EXPORT TodoView : public EventViews::EventView
51{
52 Q_OBJECT
53 friend class ModelStack;
54
55public:
56 TodoView(const EventViews::PrefsPtr &preferences, bool sidebarView, QWidget *parent);
57 ~TodoView() override;
58
59 void setModel(QAbstractItemModel *model) override;
60 void addCalendar(const Akonadi::CollectionCalendar::Ptr &calendar) override;
61 void removeCalendar(const Akonadi::CollectionCalendar::Ptr &calendar) override;
62
63 [[nodiscard]] Akonadi::Item::List selectedIncidences() const override;
64 [[nodiscard]] KCalendarCore::DateList selectedIncidenceDates() const override;
65 [[nodiscard]] int currentDateCount() const override
66 {
67 return 0;
68 }
69
70 void setDocumentId(const QString &)
71 {
72 }
73
74 void saveLayout(KConfig *config, const QString &group) const;
75
76 void restoreLayout(KConfig *config, const QString &group, bool minimalDefaults);
77
78 /** documentation in baseview.h */
79 void getHighlightMode(bool &highlightEvents, bool &highlightTodos, bool &highlightJournals);
80
81 [[nodiscard]] bool usesFullWindow();
82
83 [[nodiscard]] bool supportsDateRangeSelection() const
84 {
85 return false;
86 }
87
88public Q_SLOTS:
89 void setIncidenceChanger(Akonadi::IncidenceChanger *changer) override;
90 void showDates(const QDate &start, const QDate &end, const QDate &preferredMonth = QDate()) override;
91 void showIncidences(const Akonadi::Item::List &incidenceList, const QDate &date) override;
92 void updateView() override;
93 virtual void changeIncidenceDisplay(const Akonadi::Item &incidence, Akonadi::IncidenceChanger::ChangeType changeType);
94 void updateConfig() override;
95 void clearSelection() override;
96 void expandIndex(const QModelIndex &index);
97 void restoreViewState();
98 void saveViewState();
99
100 void createNote();
101 void createEvent();
102
103protected Q_SLOTS:
104 void resizeEvent(QResizeEvent *) override;
105 void addQuickTodo(Qt::KeyboardModifiers modifier);
106
107 void contextMenu(QPoint pos);
108
109 void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
110
111 // slots used by popup-menus
112 void showTodo();
113 void editTodo();
114 void deleteTodo();
115 void newTodo();
116 void newSubTodo();
117 void copyTodoToDate(QDate date);
118
119private Q_SLOTS:
120 EVENTVIEWS_NO_EXPORT void scheduleResizeColumns();
121 EVENTVIEWS_NO_EXPORT void resizeColumns();
122 EVENTVIEWS_NO_EXPORT void itemDoubleClicked(const QModelIndex &index);
123 EVENTVIEWS_NO_EXPORT void setNewDate(QDate date);
124 EVENTVIEWS_NO_EXPORT void setStartDate(QDate date);
125 EVENTVIEWS_NO_EXPORT void setNewPercentage(QAction *action);
126 EVENTVIEWS_NO_EXPORT void setNewPriority(QAction *action);
127 EVENTVIEWS_NO_EXPORT void changedCategories(QAction *action);
128 EVENTVIEWS_NO_EXPORT void setFullView(bool fullView);
129
130 EVENTVIEWS_NO_EXPORT void setFlatView(bool flatView, bool notifyOtherViews = true);
131
132 EVENTVIEWS_NO_EXPORT void onRowsInserted(const QModelIndex &parent, int start, int end);
133 EVENTVIEWS_NO_EXPORT void onTagsFetched(KJob *);
134
135Q_SIGNALS:
136 void purgeCompletedSignal();
137 void unSubTodoSignal();
138 void unAllSubTodoSignal();
139 void configChanged();
140 void fullViewChanged(bool enabled);
141 void printPreviewTodo();
142 void printTodo();
143
144 void createNote(const Akonadi::Item &item);
145 void createEvent(const Akonadi::Item &item);
146
147private:
148 EVENTVIEWS_NO_EXPORT QMenu *createCategoryPopupMenu();
149 EVENTVIEWS_NO_EXPORT QString stateSaverGroup() const;
150
151 /** Creates a new todo with the given text as summary under the given parent */
152 void addTodo(const QString &summary, const Akonadi::Item &parentItem, const QStringList &categories = QStringList());
153
154 TodoViewView *mView = nullptr;
155 TodoViewSortFilterProxyModel *mProxyModel = nullptr;
156 TodoCategoriesDelegate *mCategoriesDelegate = nullptr;
157 std::unique_ptr<CalendarFilterModel> mCalendarFilterModel;
158
159 TodoViewQuickSearch *mQuickSearch = nullptr;
160 TodoViewQuickAddLine *mQuickAdd = nullptr;
161 QToolButton *mFullViewButton = nullptr;
162 QToolButton *mFlatViewButton = nullptr;
163
164 QMenu *mItemPopupMenu = nullptr;
165 KDatePickerPopup *mCopyPopupMenu = nullptr;
166 KDatePickerPopup *mMovePopupMenu = nullptr;
167 QMenu *mPriorityPopupMenu = nullptr;
168 QMenu *mPercentageCompletedPopupMenu = nullptr;
169 QList<QAction *> mItemPopupMenuItemOnlyEntries;
170 QList<QAction *> mItemPopupMenuReadWriteEntries;
171
172 QAction *mMakeTodoIndependent = nullptr;
173 QAction *mMakeSubtodosIndependent = nullptr;
174
175 QPointer<Akonadi::ETMViewStateSaver> mTreeStateRestorer;
176
177 QMap<QAction *, int> mPercentage;
178 QMap<QAction *, int> mPriority;
179 bool mSidebarView;
180 bool mResizeColumnsScheduled;
181 QTimer *mResizeColumnsTimer = nullptr;
182};
183}
EventView is the abstract base class from which all other calendar views for event data are derived.
Definition eventview.h:67
This class provides a view for Todo items.
Definition todoview.h:51
int currentDateCount() const override
Returns the number of currently shown dates.
Definition todoview.h:65
This delegate is responsible for displaying the categories of todos.
Q_SCRIPTABLE Q_NOREPLY void start()
Namespace EventViews provides facilities for displaying incidences, including events,...
Definition agenda.h:33
typedef KeyboardModifiers
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:12:29 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.