Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[nemo-qml-plugin-calendar] Add a displayLabel per occurrence. #14

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions src/calendardata.h
Expand Up @@ -49,6 +49,7 @@ struct EventOccurrence {
QDateTime recurrenceId;
QDateTime startTime;
QDateTime endTime;
QString displayLabel;
bool eventAllDay;

QString getId() const
Expand Down
25 changes: 24 additions & 1 deletion src/calendareventoccurrence.cpp
Expand Up @@ -42,7 +42,20 @@ CalendarEventOccurrence::CalendarEventOccurrence(const QString &eventUid,
const QDateTime &startTime,
const QDateTime &endTime,
QObject *parent)
: QObject(parent), mEventUid(eventUid), mRecurrenceId(recurrenceId), mStartTime(startTime), mEndTime(endTime)
: QObject(parent), mEventUid(eventUid), mRecurrenceId(recurrenceId), mStartTime(startTime), mEndTime(endTime)
{
connect(CalendarManager::instance(), SIGNAL(eventUidChanged(QString,QString)),
this, SLOT(eventUidChanged(QString,QString)));
}

CalendarEventOccurrence::CalendarEventOccurrence(const CalendarData::EventOccurrence &occurrence,
QObject *parent)
: QObject(parent)
, mEventUid(occurrence.eventUid)
, mRecurrenceId(occurrence.recurrenceId)
, mStartTime(occurrence.startTime)
, mEndTime(occurrence.endTime)
, mDisplayLabel(occurrence.displayLabel)
{
connect(CalendarManager::instance(), SIGNAL(eventUidChanged(QString,QString)),
this, SLOT(eventUidChanged(QString,QString)));
Expand Down Expand Up @@ -102,3 +115,13 @@ QDateTime CalendarEventOccurrence::endTimeInTz() const
const CalendarEvent *event = eventObject();
return event ? toEventDateTime(mEndTime, event->endTimeSpec(), event->endTimeZone()) : mEndTime;
}

QString CalendarEventOccurrence::displayLabel() const
{
if (mDisplayLabel.isEmpty()) {
const CalendarEvent *event = eventObject();
return event ? event->displayLabel() : QString();
} else {
return mDisplayLabel;
}
}
7 changes: 7 additions & 0 deletions src/calendareventoccurrence.h
Expand Up @@ -36,6 +36,8 @@
#include <QObject>
#include <QDateTime>

#include "calendardata.h"

class CalendarEvent;

class CalendarEventOccurrence : public QObject
Expand All @@ -47,6 +49,7 @@ class CalendarEventOccurrence : public QObject
// startTimeInTz and endTimeInTz are given in event startTime / endTime timezone
Q_PROPERTY(QDateTime startTimeInTz READ startTimeInTz CONSTANT)
Q_PROPERTY(QDateTime endTimeInTz READ endTimeInTz CONSTANT)
Q_PROPERTY(QString displayLabel READ displayLabel CONSTANT)
Q_PROPERTY(CalendarEvent *event READ eventObject CONSTANT)

public:
Expand All @@ -55,12 +58,15 @@ class CalendarEventOccurrence : public QObject
const QDateTime &startTime,
const QDateTime &endTime,
QObject *parent = 0);
CalendarEventOccurrence(const CalendarData::EventOccurrence &occurrence,
QObject *parent = 0);
~CalendarEventOccurrence();

QDateTime startTime() const;
QDateTime endTime() const;
QDateTime startTimeInTz() const;
QDateTime endTimeInTz() const;
QString displayLabel() const;
CalendarEvent *eventObject() const;

private slots:
Expand All @@ -71,6 +77,7 @@ private slots:
QDateTime mRecurrenceId;
QDateTime mStartTime;
QDateTime mEndTime;
QString mDisplayLabel;
};

#endif // CALENDAREVENTOCCURRENCE_H
6 changes: 1 addition & 5 deletions src/calendarimportevent.cpp
Expand Up @@ -202,9 +202,5 @@ QObject *CalendarImportEvent::nextOccurrence()
if (!mEvent)
return 0;

CalendarData::EventOccurrence eo = CalendarUtils::getNextOccurrence(mEvent);
return new CalendarEventOccurrence(eo.eventUid,
eo.recurrenceId,
eo.startTime,
eo.endTime);
return new CalendarEventOccurrence(CalendarUtils::getNextOccurrence(mEvent));
}
9 changes: 3 additions & 6 deletions src/calendarmanager.cpp
Expand Up @@ -402,9 +402,7 @@ void CalendarManager::updateAgendaModel(CalendarAgendaModel *model)
if (model->startDate() == model->endDate() || !model->endDate().isValid()) {
foreach (const QString &id, mEventOccurrenceForDates.value(model->startDate())) {
if (mEventOccurrences.contains(id)) {
CalendarData::EventOccurrence eo = mEventOccurrences.value(id);
filtered.append(new CalendarEventOccurrence(eo.eventUid, eo.recurrenceId,
eo.startTime, eo.endTime));
filtered.append(new CalendarEventOccurrence(mEventOccurrences.value(id)));
} else {
qWarning() << "no occurrence with id" << id;
}
Expand All @@ -425,8 +423,7 @@ void CalendarManager::updateAgendaModel(CalendarAgendaModel *model)
|| (eo.endTime.date() == start && (event->allDay()
|| eo.endTime.time() > QTime(0, 0)))))
|| (eo.startTime.date() >= start && eo.startTime.date() <= end)) {
filtered.append(new CalendarEventOccurrence(eo.eventUid, eo.recurrenceId,
eo.startTime, eo.endTime));
filtered.append(new CalendarEventOccurrence(eo));
}
}
}
Expand Down Expand Up @@ -759,7 +756,7 @@ CalendarEventOccurrence* CalendarManager::getNextOccurrence(const QString &uid,
return new CalendarEventOccurrence(QString(), QDateTime(), QDateTime(), QDateTime());
}

return new CalendarEventOccurrence(eo.eventUid, eo.recurrenceId, eo.startTime, eo.endTime);
return new CalendarEventOccurrence(eo);
}

QList<CalendarData::Attendee> CalendarManager::getEventAttendees(const QString &uid, const QDateTime &recurrenceId, bool *resultValid)
Expand Down
7 changes: 6 additions & 1 deletion src/calendarutils.cpp
Expand Up @@ -244,7 +244,8 @@ QList<QObject *> CalendarUtils::convertAttendeeList(const QList<CalendarData::At
}

CalendarData::EventOccurrence CalendarUtils::getNextOccurrence(const KCalendarCore::Event::Ptr &event,
const QDateTime &start)
const QDateTime &start,
const QString &notebookId)
{
const QTimeZone systemTimeZone = QTimeZone::systemTimeZone();

Expand Down Expand Up @@ -276,6 +277,10 @@ CalendarData::EventOccurrence CalendarUtils::getNextOccurrence(const KCalendarCo
occurrence.startTime = dtStart;
occurrence.endTime = dtEnd;
occurrence.eventAllDay = event->allDay();
// This UID is hard-coded in contactsd/plugin/birthday/cdbirthdaycalendar.cpp
if (notebookId == QString::fromLatin1("b1376da7-5555-1111-2222-227549c4e570")) {
occurrence.displayLabel = QString::fromLatin1("%1 (%2)").arg(event->summary()).arg(event->dtStart().daysTo(dtStart) / 365);
}
}

return occurrence;
Expand Down
3 changes: 2 additions & 1 deletion src/calendarutils.h
Expand Up @@ -52,7 +52,8 @@ QDateTime getReminderDateTime(const KCalendarCore::Event::Ptr &event);
QList<CalendarData::Attendee> getEventAttendees(const KCalendarCore::Event::Ptr &event);
QList<QObject*> convertAttendeeList(const QList<CalendarData::Attendee> &list);
CalendarData::EventOccurrence getNextOccurrence(const KCalendarCore::Event::Ptr &event,
const QDateTime &start = QDateTime::currentDateTime());
const QDateTime &start = QDateTime::currentDateTime(),
const QString &notebookId = QString());
bool importFromFile(const QString &fileName, KCalendarCore::Calendar::Ptr calendar);
bool importFromIcsRawData(const QByteArray &icsData, KCalendarCore::Calendar::Ptr calendar);
CalendarEvent::Response convertPartStat(KCalendarCore::Attendee::PartStat status);
Expand Down
7 changes: 6 additions & 1 deletion src/calendarworker.cpp
Expand Up @@ -742,6 +742,11 @@ CalendarWorker::eventOccurrences(const QList<CalendarData::Range> &ranges) const
occurrence.startTime = sdt;
occurrence.endTime = elapsed.end(sdt);
occurrence.eventAllDay = it.incidence()->allDay();
// This UID is hard-coded in contactsd/plugin/birthday/cdbirthdaycalendar.cpp
if (mNotebooks.value(mCalendar->notebook(it.incidence())).uid
== QString::fromLatin1("b1376da7-5555-1111-2222-227549c4e570")) {
occurrence.displayLabel = QString::fromLatin1("%1 (%2)").arg(it.incidence()->summary()).arg(it.incidence()->dtStart().daysTo(sdt) / 365);
}
filtered.insert(occurrence.getId(), occurrence);
}
}
Expand Down Expand Up @@ -1029,7 +1034,7 @@ CalendarData::EventOccurrence CalendarWorker::getNextOccurrence(const QString &u
const QDateTime &start) const
{
KCalendarCore::Event::Ptr event = mCalendar->event(uid, recurrenceId);
return CalendarUtils::getNextOccurrence(event, start);
return CalendarUtils::getNextOccurrence(event, start, mCalendar->notebook(event));
}

QList<CalendarData::Attendee> CalendarWorker::getEventAttendees(const QString &uid, const QDateTime &recurrenceId)
Expand Down