Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[nemo-qml-plugin-calendar] Export start and end time of occurrences i…
…n event time zone.
  • Loading branch information
dcaliste committed Aug 25, 2020
1 parent 4391e71 commit d4cc301
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/calendareventoccurrence.cpp
Expand Up @@ -32,6 +32,8 @@

#include "calendareventoccurrence.h"

#include <QTimeZone>

#include "calendarevent.h"
#include "calendarmanager.h"

Expand Down Expand Up @@ -70,3 +72,33 @@ void CalendarEventOccurrence::eventUidChanged(QString oldUid, QString newUid)
if (mEventUid == oldUid)
mEventUid = newUid;
}

static QDateTime toEventDateTime(const QDateTime &dateTime,
CalendarEvent::TimeSpec eventSpec,
const QString &eventTimezone)
{
switch (eventSpec) {
case (CalendarEvent::SpecTimeZone): {
const QDateTime dt = dateTime.toTimeZone(QTimeZone(eventTimezone.toUtf8()));
return QDateTime(dt.date(), dt.time());
}
case (CalendarEvent::SpecUtc): {
const QDateTime dt = dateTime.toUTC();
return QDateTime(dt.date(), dt.time());
}
default:
return dateTime;
}
}

QDateTime CalendarEventOccurrence::startTimeInTz() const
{
const CalendarEvent *event = eventObject();
return event ? toEventDateTime(mStartTime, event->startTimeSpec(), event->startTimeZone()) : mStartTime;
}

QDateTime CalendarEventOccurrence::endTimeInTz() const
{
const CalendarEvent *event = eventObject();
return event ? toEventDateTime(mEndTime, event->endTimeSpec(), event->endTimeZone()) : mEndTime;
}
6 changes: 6 additions & 0 deletions src/calendareventoccurrence.h
Expand Up @@ -43,8 +43,12 @@ class CalendarEvent;
class CalendarEventOccurrence : public QObject
{
Q_OBJECT
// startTime and endTime are givent in local time.
Q_PROPERTY(QDateTime startTime READ startTime CONSTANT)
Q_PROPERTY(QDateTime endTime READ endTime CONSTANT)
// 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(CalendarEvent *event READ eventObject CONSTANT)

public:
Expand All @@ -57,6 +61,8 @@ class CalendarEventOccurrence : public QObject

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

private slots:
Expand Down

0 comments on commit d4cc301

Please sign in to comment.