21#include "calendarmodel_p.h"
23#include <akonadi/changerecorder.h>
24#include <akonadi/itemfetchscope.h>
25#include <kcalcore/event.h>
26#include <kcalcore/todo.h>
27#include <kcalcore/journal.h>
29#include <KLocalizedString>
36static KCalCore::Incidence::Ptr incidence(
const Akonadi::Item &item)
39 item.hasPayload<KCalCore::Incidence::Ptr>() ?
40 item.payload<KCalCore::Incidence::Ptr>() :
41 KCalCore::Incidence::Ptr();
44static KCalCore::Todo::Ptr todo(
const Akonadi::Item &item)
47 item.hasPayload<KCalCore::Todo::Ptr>() ?
48 item.payload<KCalCore::Todo::Ptr>() :
49 KCalCore::Todo::Ptr();
52class CalendarModel::Private
59 QWeakPointer<CalendarModel> m_weakPointer;
71 CalendarModel *model =
new CalendarModel(monitor);
72 CalendarModel::Ptr modelPtr = CalendarModel::Ptr(model);
73 model->setWeakPointer(modelPtr.toWeakRef());
77CalendarModel::~CalendarModel()
82QWeakPointer<CalendarModel> CalendarModel::weakPointer()
const
84 return d->m_weakPointer;
87void CalendarModel::setWeakPointer(
const QWeakPointer<CalendarModel> &weakPointer)
89 d->m_weakPointer = weakPointer;
92QVariant CalendarModel::entityData(
const Akonadi::Item &item,
int column,
int role)
const
94 const KCalCore::Incidence::Ptr inc = incidence(item);
100 case Qt::DecorationRole:
101 if (column != Summary) {
104 if (inc->type() == KCalCore::IncidenceBase::TypeTodo) {
105 return SmallIcon(QLatin1String(
"view-pim-tasks"));
107 if (inc->type() == KCalCore::IncidenceBase::TypeJournal) {
108 return SmallIcon(QLatin1String(
"view-pim-journal"));
110 if (inc->type() == KCalCore::IncidenceBase::TypeEvent) {
111 return SmallIcon(QLatin1String(
"view-calendar"));
113 return SmallIcon(QLatin1String(
"network-wired"));
115 case Qt::DisplayRole:
118 return inc->summary();
121 return inc->dtStart().toString();
124 return inc->dateTime(KCalCore::Incidence::RoleEndTimeZone).toString();
127 if (KCalCore::Todo::Ptr t = todo(item)) {
128 return t->dtDue().toString();
134 if (KCalCore::Todo::Ptr t = todo(item)) {
135 return t->priority();
140 case PercentComplete:
141 if (KCalCore::Todo::Ptr t = todo(item)) {
142 return t->percentComplete();
148 return inc->typeStr();
156 return inc->summary();
159 return inc->dtStart().toUtc().dateTime();
162 return inc->dateTime(KCalCore::Incidence::RoleEndTimeZone).toUtc().dateTime();
165 if (KCalCore::Todo::Ptr t = todo(item)) {
166 return t->dtDue().toUtc().dateTime();
172 if (KCalCore::Todo::Ptr t = todo(item)) {
173 return t->priority();
178 case PercentComplete:
179 if (KCalCore::Todo::Ptr t = todo(item)) {
180 return t->percentComplete();
195 return inc->recurs();
205 int column,
int role)
const
213 return ItemColumnCount;
215 return CollectionColumnCount;
219QVariant CalendarModel::entityHeaderData(
int section, Qt::Orientation orientation,
222 if (role != Qt::DisplayRole || orientation != Qt::Horizontal) {
229 return i18nc(
"@title:column calendar event summary",
"Summary");
231 return i18nc(
"@title:column calendar event start date and time",
"Start Date and Time");
233 return i18nc(
"@title:column calendar event end date and time",
"End Date and Time");
235 return i18nc(
"@title:column calendar event type",
"Type");
237 return i18nc(
"@title:column todo item due date and time",
"Due Date and Time");
239 return i18nc(
"@title:column todo item priority",
"Priority");
240 case PercentComplete:
241 return i18nc(
"@title:column todo item completion in percent",
"Complete");
249 case CollectionTitle:
250 return i18nc(
"@title:column calendar title",
"Calendar");
Records and replays change notification.
Represents a collection of PIM items.
A model for collections and items together.
virtual QVariant entityData(const Item &item, int column, int role=Qt::DisplayRole) const
Provided for convenience of subclasses.
HeaderGroup
Describes what header information the model shall return.
@ CollectionTreeHeaders
Header information for a collection-only tree.
@ ItemListHeaders
Header information for a list of items.
void fetchAllAttributes(bool fetch=true)
Sets whether all available attributes should be fetched.
ItemFetchScope & itemFetchScope()
Returns the item fetch scope.
FreeBusyManager::Singleton.