diff options
author | Rémi Nicole <nicole@kolabsystems.com> | 2018-06-19 11:08:33 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-06-19 11:11:43 +0200 |
commit | 9bd69f924b84df434f8ddcaca0001afd10cd6f50 (patch) | |
tree | d248e2fcab0ea2391910516f9e275121112877bf /framework | |
parent | e9f98dbe4ccc2066e35c626f003d2401a9ca83e2 (diff) | |
download | kube-9bd69f924b84df434f8ddcaca0001afd10cd6f50.tar.gz kube-9bd69f924b84df434f8ddcaca0001afd10cd6f50.zip |
Use Overlap Sink query in PeriodDayEventModel
Summary:
And completely removed filtering (SInk should guaranteed events returned are within the period so out-of-bounds segfaults should not happen)
Depends on D13477
Reviewers: cmollekopf
Tags: #kube
Differential Revision: https://phabricator.kde.org/D13490
Diffstat (limited to 'framework')
-rw-r--r-- | framework/src/domain/perioddayeventmodel.cpp | 22 | ||||
-rw-r--r-- | framework/src/domain/perioddayeventmodel.h | 1 |
2 files changed, 14 insertions, 9 deletions
diff --git a/framework/src/domain/perioddayeventmodel.cpp b/framework/src/domain/perioddayeventmodel.cpp index 827b4d4f..6fd6e0ff 100644 --- a/framework/src/domain/perioddayeventmodel.cpp +++ b/framework/src/domain/perioddayeventmodel.cpp | |||
@@ -32,6 +32,11 @@ | |||
32 | PeriodDayEventModel::PeriodDayEventModel(QObject *parent) | 32 | PeriodDayEventModel::PeriodDayEventModel(QObject *parent) |
33 | : QAbstractItemModel(parent), partitionedEvents(7) | 33 | : QAbstractItemModel(parent), partitionedEvents(7) |
34 | { | 34 | { |
35 | updateQuery(); | ||
36 | } | ||
37 | |||
38 | void PeriodDayEventModel::updateQuery() | ||
39 | { | ||
35 | Sink::Query query; | 40 | Sink::Query query; |
36 | query.setFlags(Sink::Query::LiveQuery); | 41 | query.setFlags(Sink::Query::LiveQuery); |
37 | query.request<Event::Summary>(); | 42 | query.request<Event::Summary>(); |
@@ -39,6 +44,10 @@ PeriodDayEventModel::PeriodDayEventModel(QObject *parent) | |||
39 | query.request<Event::StartTime>(); | 44 | query.request<Event::StartTime>(); |
40 | query.request<Event::EndTime>(); | 45 | query.request<Event::EndTime>(); |
41 | 46 | ||
47 | auto periodEnd = mPeriodStart.addDays(mPeriodLength); | ||
48 | |||
49 | query.filter<Event::StartTime, Event::EndTime>( | ||
50 | Sink::Query::Comparator(QVariantList{mPeriodStart, periodEnd}, Sink::Query::Comparator::Overlap)); | ||
42 | query.filter<Event::AllDay>(false); | 51 | query.filter<Event::AllDay>(false); |
43 | 52 | ||
44 | eventModel = Sink::Store::loadModel<Event>(query); | 53 | eventModel = Sink::Store::loadModel<Event>(query); |
@@ -72,10 +81,8 @@ void PeriodDayEventModel::partitionData() | |||
72 | 81 | ||
73 | int bucket = bucketOf(eventDate); | 82 | int bucket = bucketOf(eventDate); |
74 | 83 | ||
75 | if (bucket >= 0) { | 84 | SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket; |
76 | SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket; | 85 | partitionedEvents[bucket].append(event); |
77 | partitionedEvents[bucket].append(event); | ||
78 | } | ||
79 | } | 86 | } |
80 | 87 | ||
81 | endResetModel(); | 88 | endResetModel(); |
@@ -84,9 +91,6 @@ void PeriodDayEventModel::partitionData() | |||
84 | int PeriodDayEventModel::bucketOf(const QDate &candidate) const | 91 | int PeriodDayEventModel::bucketOf(const QDate &candidate) const |
85 | { | 92 | { |
86 | int bucket = mPeriodStart.daysTo(candidate); | 93 | int bucket = mPeriodStart.daysTo(candidate); |
87 | if (bucket >= mPeriodLength || bucket < 0) { | ||
88 | return -1; | ||
89 | } | ||
90 | 94 | ||
91 | return bucket; | 95 | return bucket; |
92 | } | 96 | } |
@@ -238,7 +242,7 @@ void PeriodDayEventModel::setPeriodStart(const QDate &start) | |||
238 | } | 242 | } |
239 | 243 | ||
240 | mPeriodStart = start; | 244 | mPeriodStart = start; |
241 | partitionData(); | 245 | updateQuery(); |
242 | } | 246 | } |
243 | 247 | ||
244 | void PeriodDayEventModel::setPeriodStart(const QVariant &start) | 248 | void PeriodDayEventModel::setPeriodStart(const QVariant &start) |
@@ -254,5 +258,5 @@ int PeriodDayEventModel::periodLength() const | |||
254 | void PeriodDayEventModel::setPeriodLength(int length) | 258 | void PeriodDayEventModel::setPeriodLength(int length) |
255 | { | 259 | { |
256 | mPeriodLength = length; | 260 | mPeriodLength = length; |
257 | partitionData(); | 261 | updateQuery(); |
258 | } | 262 | } |
diff --git a/framework/src/domain/perioddayeventmodel.h b/framework/src/domain/perioddayeventmodel.h index 9458fc03..672afbea 100644 --- a/framework/src/domain/perioddayeventmodel.h +++ b/framework/src/domain/perioddayeventmodel.h | |||
@@ -117,6 +117,7 @@ public: | |||
117 | void setPeriodLength(int); | 117 | void setPeriodLength(int); |
118 | 118 | ||
119 | private: | 119 | private: |
120 | void updateQuery(); | ||
120 | void partitionData(); | 121 | void partitionData(); |
121 | 122 | ||
122 | int bucketOf(const QDate &candidate) const; | 123 | int bucketOf(const QDate &candidate) const; |