From bbc8fcaefa1cc4c8dafb4d1453990154c7b00d3c Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 5 Aug 2018 12:21:13 +0200 Subject: A calendar filter --- framework/src/domain/daylongeventmodel.cpp | 15 +++++++++++++++ framework/src/domain/daylongeventmodel.h | 5 +++++ framework/src/domain/perioddayeventmodel.cpp | 14 ++++++++++++++ framework/src/domain/perioddayeventmodel.h | 5 +++++ 4 files changed, 39 insertions(+) (limited to 'framework/src/domain') diff --git a/framework/src/domain/daylongeventmodel.cpp b/framework/src/domain/daylongeventmodel.cpp index 7775310b..53b50652 100644 --- a/framework/src/domain/daylongeventmodel.cpp +++ b/framework/src/domain/daylongeventmodel.cpp @@ -99,6 +99,10 @@ bool DayLongEventModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourc auto idx = sourceModel()->index(sourceRow, 0, sourceParent); auto event = idx.data(Sink::Store::DomainObjectRole).value(); + if (!mCalendarFilter.contains(event->getCalendar())) { + return false; + } + auto eventStart = event->getStartTime().date(); auto eventEnd = event->getEndTime().date(); @@ -141,3 +145,14 @@ void DayLongEventModel::setPeriodLength(int length) mPeriodLength = length; invalidateFilter(); } + +QSet DayLongEventModel::calendarFilter() const +{ + return mCalendarFilter; +} + +void DayLongEventModel::setCalendarFilter(const QSet &filter) +{ + mCalendarFilter = filter; + invalidateFilter(); +} diff --git a/framework/src/domain/daylongeventmodel.h b/framework/src/domain/daylongeventmodel.h index 12827bef..cd7f4e4b 100644 --- a/framework/src/domain/daylongeventmodel.h +++ b/framework/src/domain/daylongeventmodel.h @@ -35,6 +35,7 @@ class KUBE_EXPORT DayLongEventModel : public QSortFilterProxyModel Q_PROPERTY(QVariant start READ periodStart WRITE setPeriodStart) Q_PROPERTY(int length READ periodLength WRITE setPeriodLength) + Q_PROPERTY(QSet calendarFilter READ calendarFilter WRITE setCalendarFilter) public: using Event = Sink::ApplicationDomain::Event; @@ -64,11 +65,15 @@ public: int periodLength() const; void setPeriodLength(int); + QSet calendarFilter() const; + void setCalendarFilter(const QSet &); + private: QByteArray getColor(const QByteArray &calendar) const; QSharedPointer mModel; QSharedPointer mCalendarCache; + QSet mCalendarFilter; QDate mPeriodStart; int mPeriodLength = 7; diff --git a/framework/src/domain/perioddayeventmodel.cpp b/framework/src/domain/perioddayeventmodel.cpp index ed853129..149c0fcb 100644 --- a/framework/src/domain/perioddayeventmodel.cpp +++ b/framework/src/domain/perioddayeventmodel.cpp @@ -83,6 +83,9 @@ void PeriodDayEventModel::partitionData() SinkWarning() << "Invalid date in the eventModel, ignoring..."; continue; } + if (!mCalendarFilter.contains(event->getCalendar())) { + continue; + } int bucket = bucketOf(eventDate); SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket; @@ -322,3 +325,14 @@ void PeriodDayEventModel::setPeriodLength(int length) mPeriodLength = length; updateQuery(); } + +QSet PeriodDayEventModel::calendarFilter() const +{ + return mCalendarFilter; +} + +void PeriodDayEventModel::setCalendarFilter(const QSet &filter) +{ + mCalendarFilter = filter; + updateQuery(); +} diff --git a/framework/src/domain/perioddayeventmodel.h b/framework/src/domain/perioddayeventmodel.h index 2d1d0177..2f53486c 100644 --- a/framework/src/domain/perioddayeventmodel.h +++ b/framework/src/domain/perioddayeventmodel.h @@ -86,6 +86,7 @@ class KUBE_EXPORT PeriodDayEventModel : public QAbstractItemModel Q_PROPERTY(QVariant start READ periodStart WRITE setPeriodStart) Q_PROPERTY(int length READ periodLength WRITE setPeriodLength) + Q_PROPERTY(QSet calendarFilter READ calendarFilter WRITE setCalendarFilter) public: using Event = Sink::ApplicationDomain::Event; @@ -122,6 +123,9 @@ public: int periodLength() const; void setPeriodLength(int); + QSet calendarFilter() const; + void setCalendarFilter(const QSet &); + private: void updateQuery(); void partitionData(); @@ -137,6 +141,7 @@ private: QSharedPointer eventModel; QVector>> partitionedEvents; QSharedPointer mCalendarCache; + QSet mCalendarFilter; static const constexpr quintptr DAY_ID = std::numeric_limits::max(); }; -- cgit v1.2.3