summaryrefslogtreecommitdiffstats
path: root/common/eventpreprocessor.cpp
diff options
context:
space:
mode:
authorRémi Nicole <nicole@kolabsystems.com>2018-04-13 11:51:18 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-04-13 11:51:24 +0200
commitcd81aed814286887911d99648d62bbb3c63e404c (patch)
treec98b6e65d56e5fff82ed8f8a431de47e149c38a1 /common/eventpreprocessor.cpp
parentedbb4c9c82e34e90ad15ad151901e65c2c2cfb66 (diff)
downloadsink-cd81aed814286887911d99648d62bbb3c63e404c.tar.gz
sink-cd81aed814286887911d99648d62bbb3c63e404c.zip
Change most of Event's properties to extracted properties
Summary: Fix T8485 Reviewers: cmollekopf Reviewed By: cmollekopf Tags: #sink Maniphest Tasks: T8485 Differential Revision: https://phabricator.kde.org/D12106
Diffstat (limited to 'common/eventpreprocessor.cpp')
-rw-r--r--common/eventpreprocessor.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/common/eventpreprocessor.cpp b/common/eventpreprocessor.cpp
new file mode 100644
index 0000000..e087563
--- /dev/null
+++ b/common/eventpreprocessor.cpp
@@ -0,0 +1,60 @@
1/*
2 * Copyright (C) 2018 Christian Mollekopf <chrigi_1@fastmail.fm>
3 * Copyright (C) 2018 Rémi Nicole <minijackson@riseup.net>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the
17 * Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21#include "eventpreprocessor.h"
22
23#include <KCalCore/ICalFormat>
24
25void EventPropertyExtractor::updatedIndexedProperties(Event &event, const QByteArray &rawIcal)
26{
27 auto incidence = KCalCore::ICalFormat().readIncidence(rawIcal);
28
29 if(!incidence) {
30 SinkWarning() << "Invalid ICal to process, ignoring...";
31 return;
32 }
33
34 if(incidence->type() != KCalCore::IncidenceBase::IncidenceType::TypeEvent) {
35 SinkWarning() << "ICal to process is not of type `Event`, ignoring...";
36 return;
37 }
38
39 auto icalEvent = dynamic_cast<const KCalCore::Event *>(incidence.data());
40 // Should be guaranteed by the incidence->type() condition above.
41 Q_ASSERT(icalEvent);
42
43 SinkTrace() << "Extracting properties for event:" << icalEvent->summary();
44
45 event.setExtractedUid(icalEvent->uid());
46 event.setExtractedSummary(icalEvent->summary());
47 event.setExtractedDescription(icalEvent->description());
48 event.setExtractedStartTime(icalEvent->dtStart());
49 event.setExtractedEndTime(icalEvent->dtEnd());
50}
51
52void EventPropertyExtractor::newEntity(Event &event)
53{
54 updatedIndexedProperties(event, event.getIcal());
55}
56
57void EventPropertyExtractor::modifiedEntity(const Event &oldEvent, Event &newEvent)
58{
59 updatedIndexedProperties(newEvent, newEvent.getIcal());
60}