summaryrefslogtreecommitdiffstats
path: root/framework/src/domain
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2018-06-12 09:47:18 +0200
committerMinijackson <minijackson@riseup.net>2018-06-12 09:47:18 +0200
commit8a26fe09bb41261368c4c72021268885391092e5 (patch)
tree12c36b395e10ba9da54a329e9507198d1d88f27c /framework/src/domain
parent0a531922cd2f04eaa3d1c8b53d3d9b5d681b6eb7 (diff)
downloadkube-overlap.tar.gz
kube-overlap.zip
Use overlap query in PeriodDayEventModeloverlap
Diffstat (limited to 'framework/src/domain')
-rw-r--r--framework/src/domain/perioddayeventmodel.cpp22
-rw-r--r--framework/src/domain/perioddayeventmodel.h1
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 @@
32PeriodDayEventModel::PeriodDayEventModel(QObject *parent) 32PeriodDayEventModel::PeriodDayEventModel(QObject *parent)
33 : QAbstractItemModel(parent), partitionedEvents(7) 33 : QAbstractItemModel(parent), partitionedEvents(7)
34{ 34{
35 updateQuery();
36}
37
38void 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()
84int PeriodDayEventModel::bucketOf(const QDate &candidate) const 91int 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
244void PeriodDayEventModel::setPeriodStart(const QVariant &start) 248void PeriodDayEventModel::setPeriodStart(const QVariant &start)
@@ -254,5 +258,5 @@ int PeriodDayEventModel::periodLength() const
254void PeriodDayEventModel::setPeriodLength(int length) 258void 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
119private: 119private:
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;