diff options
Diffstat (limited to 'framework/src')
-rw-r--r-- | framework/src/domain/perioddayeventmodel.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/framework/src/domain/perioddayeventmodel.cpp b/framework/src/domain/perioddayeventmodel.cpp index af9ca110..bdbacc2f 100644 --- a/framework/src/domain/perioddayeventmodel.cpp +++ b/framework/src/domain/perioddayeventmodel.cpp | |||
@@ -85,15 +85,20 @@ void PeriodDayEventModel::partitionData() | |||
85 | continue; | 85 | continue; |
86 | } | 86 | } |
87 | 87 | ||
88 | int bucket = bucketOf(eventDate); | 88 | const int bucket = bucketOf(eventDate); |
89 | SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket; | 89 | SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket; |
90 | partitionedEvents[bucket].append(event); | 90 | //Avoid adding events that start in the past |
91 | if (bucket >= 0) { | ||
92 | Q_ASSERT(bucket >= 0 && bucket < partitionedEvents.size()); | ||
93 | partitionedEvents[bucket].append(event); | ||
94 | } | ||
91 | 95 | ||
92 | //Also add the event to all other days it spans | 96 | //Also add the event to all other days it spans |
93 | QDate endDate = event->getEndTime().date(); | 97 | const QDate endDate = event->getEndTime().date(); |
94 | if (endDate.isValid()) { | 98 | if (endDate.isValid()) { |
95 | const int endBucket = qMin(bucketOf(endDate), periodLength()); | 99 | const int endBucket = qMin(bucketOf(endDate), periodLength() - 1); |
96 | for (int i = bucket + 1; i <= endBucket; i++) { | 100 | for (int i = bucket + 1; i <= endBucket; i++) { |
101 | Q_ASSERT(i >= 0 && i < partitionedEvents.size()); | ||
97 | partitionedEvents[i].append(event); | 102 | partitionedEvents[i].append(event); |
98 | } | 103 | } |
99 | 104 | ||
@@ -130,7 +135,7 @@ QModelIndex PeriodDayEventModel::index(int row, int column, const QModelIndex &p | |||
130 | // Asking for an Event | 135 | // Asking for an Event |
131 | auto day = static_cast<int>(parent.row()); | 136 | auto day = static_cast<int>(parent.row()); |
132 | 137 | ||
133 | Q_ASSERT(0 <= day && day <= mPeriodLength); | 138 | Q_ASSERT(0 <= day && day < partitionedEvents.size()); |
134 | if (row >= partitionedEvents[day].size()) { | 139 | if (row >= partitionedEvents[day].size()) { |
135 | return {}; | 140 | return {}; |
136 | } | 141 | } |
@@ -160,7 +165,7 @@ int PeriodDayEventModel::rowCount(const QModelIndex &parent) const | |||
160 | } | 165 | } |
161 | 166 | ||
162 | auto day = parent.row(); | 167 | auto day = parent.row(); |
163 | 168 | Q_ASSERT(0 <= day && day < partitionedEvents.size()); | |
164 | return partitionedEvents[day].size(); | 169 | return partitionedEvents[day].size(); |
165 | } | 170 | } |
166 | 171 | ||
@@ -215,6 +220,7 @@ QVariant PeriodDayEventModel::data(const QModelIndex &id, int role) const | |||
215 | auto result = QVariantList{}; | 220 | auto result = QVariantList{}; |
216 | 221 | ||
217 | QMap<QTime, int> sorted; | 222 | QMap<QTime, int> sorted; |
223 | Q_ASSERT(0 <= day && day <= partitionedEvents.size()); | ||
218 | for (int i = 0; i < partitionedEvents[day].size(); ++i) { | 224 | for (int i = 0; i < partitionedEvents[day].size(); ++i) { |
219 | const auto eventId = index(i, 0, id); | 225 | const auto eventId = index(i, 0, id); |
220 | sorted.insert(data(eventId, StartTime).toDateTime().time(), i); | 226 | sorted.insert(data(eventId, StartTime).toDateTime().time(), i); |
@@ -258,6 +264,7 @@ QVariant PeriodDayEventModel::data(const QModelIndex &id, int role) const | |||
258 | auto day = id.internalId(); | 264 | auto day = id.internalId(); |
259 | SinkTrace() << "Fetching data for event on day" << day << "with role" | 265 | SinkTrace() << "Fetching data for event on day" << day << "with role" |
260 | << QMetaEnum::fromType<Roles>().valueToKey(role); | 266 | << QMetaEnum::fromType<Roles>().valueToKey(role); |
267 | Q_ASSERT(0 <= day && day < partitionedEvents.size()); | ||
261 | auto event = partitionedEvents[day].at(id.row()); | 268 | auto event = partitionedEvents[day].at(id.row()); |
262 | 269 | ||
263 | switch (role) { | 270 | switch (role) { |