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>
30 #include <KIconLoader>
34 using namespace Akonadi;
36 static KCalCore::Incidence::Ptr incidence(
const Akonadi::Item &item)
39 item.hasPayload<KCalCore::Incidence::Ptr>() ?
40 item.payload<KCalCore::Incidence::Ptr>() :
41 KCalCore::Incidence::Ptr();
44 static KCalCore::Todo::Ptr todo(
const Akonadi::Item &item)
47 item.hasPayload<KCalCore::Todo::Ptr>() ?
48 item.payload<KCalCore::Todo::Ptr>() :
49 KCalCore::Todo::Ptr();
52 class CalendarModel::Private
71 CalendarModel *model =
new CalendarModel(monitor);
73 model->setWeakPointer(modelPtr.
toWeakRef());
77 CalendarModel::~CalendarModel()
84 return d->m_weakPointer;
89 d->m_weakPointer = weakPointer;
92 QVariant 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) {
107 if (inc->type() == KCalCore::IncidenceBase::TypeJournal) {
110 if (inc->type() == KCalCore::IncidenceBase::TypeEvent) {
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;
219 QVariant 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");
void fetchAllAttributes(bool fetch=true)
Sets whether all available attributes should be fetched.
virtual QVariant entityData(const Item &item, int column, int role=Qt::DisplayRole) const
Provided for convenience of subclasses.
Represents a collection of PIM items.
Header information for a collection-only tree.
HeaderGroup
Describes what header information the model shall return.
ItemFetchScope & itemFetchScope()
Returns the item fetch scope.
Header information for a list of items.
QWeakPointer< T > toWeakRef() const
A model for collections and items together.
Records and replays change notification.