From 8a26fe09bb41261368c4c72021268885391092e5 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Tue, 12 Jun 2018 09:47:18 +0200 Subject: Use overlap query in PeriodDayEventModel --- framework/src/domain/perioddayeventmodel.cpp | 22 +++++++++++++--------- 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 @@ -31,6 +31,11 @@ PeriodDayEventModel::PeriodDayEventModel(QObject *parent) : QAbstractItemModel(parent), partitionedEvents(7) +{ + updateQuery(); +} + +void PeriodDayEventModel::updateQuery() { Sink::Query query; query.setFlags(Sink::Query::LiveQuery); @@ -39,6 +44,10 @@ PeriodDayEventModel::PeriodDayEventModel(QObject *parent) query.request(); query.request(); + auto periodEnd = mPeriodStart.addDays(mPeriodLength); + + query.filter( + Sink::Query::Comparator(QVariantList{mPeriodStart, periodEnd}, Sink::Query::Comparator::Overlap)); query.filter(false); eventModel = Sink::Store::loadModel(query); @@ -72,10 +81,8 @@ void PeriodDayEventModel::partitionData() int bucket = bucketOf(eventDate); - if (bucket >= 0) { - SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket; - partitionedEvents[bucket].append(event); - } + SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket; + partitionedEvents[bucket].append(event); } endResetModel(); @@ -84,9 +91,6 @@ void PeriodDayEventModel::partitionData() int PeriodDayEventModel::bucketOf(const QDate &candidate) const { int bucket = mPeriodStart.daysTo(candidate); - if (bucket >= mPeriodLength || bucket < 0) { - return -1; - } return bucket; } @@ -238,7 +242,7 @@ void PeriodDayEventModel::setPeriodStart(const QDate &start) } mPeriodStart = start; - partitionData(); + updateQuery(); } void PeriodDayEventModel::setPeriodStart(const QVariant &start) @@ -254,5 +258,5 @@ int PeriodDayEventModel::periodLength() const void PeriodDayEventModel::setPeriodLength(int length) { mPeriodLength = length; - partitionData(); + updateQuery(); } 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: void setPeriodLength(int); private: + void updateQuery(); void partitionData(); int bucketOf(const QDate &candidate) const; -- cgit v1.2.3