summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--framework/src/domain/perioddayeventmodel.cpp38
-rw-r--r--framework/src/domain/perioddayeventmodel.h2
-rw-r--r--views/calendar/main.qml4
3 files changed, 36 insertions, 8 deletions
diff --git a/framework/src/domain/perioddayeventmodel.cpp b/framework/src/domain/perioddayeventmodel.cpp
index 39cc1bc3..ed853129 100644
--- a/framework/src/domain/perioddayeventmodel.cpp
+++ b/framework/src/domain/perioddayeventmodel.cpp
@@ -85,9 +85,19 @@ void PeriodDayEventModel::partitionData()
85 } 85 }
86 86
87 int bucket = bucketOf(eventDate); 87 int bucket = bucketOf(eventDate);
88
89 SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket; 88 SinkTrace() << "Adding event:" << event->getSummary() << "in bucket #" << bucket;
90 partitionedEvents[bucket].append(event); 89 partitionedEvents[bucket].append(event);
90
91 //Also add the event to all other days it spans
92 QDate endDate = event->getEndTime().date();
93 if (endDate.isValid()) {
94 const int endBucket = qMin(bucketOf(endDate), periodLength());
95 for (int i = bucket + 1; i <= endBucket; i++) {
96 partitionedEvents[i].append(event);
97 }
98
99 }
100
91 } 101 }
92 102
93 endResetModel(); 103 endResetModel();
@@ -167,6 +177,22 @@ QByteArray PeriodDayEventModel::getColor(const QByteArray &calendar) const
167 return mCalendarCache->getProperty(calendar, "color").toByteArray(); 177 return mCalendarCache->getProperty(calendar, "color").toByteArray();
168} 178}
169 179
180QDateTime PeriodDayEventModel::getStartTimeOfDay(const QDateTime &dateTime, int day) const
181{
182 if (bucketOf(dateTime.date()) < day) {
183 return QDateTime{mPeriodStart.addDays(day), QTime{0,0}};
184 }
185 return dateTime;
186}
187
188QDateTime PeriodDayEventModel::getEndTimeOfDay(const QDateTime &dateTime, int day) const
189{
190 if (bucketOf(dateTime.date()) > day) {
191 return QDateTime{mPeriodStart.addDays(day), QTime{23, 59, 59}};
192 }
193 return dateTime;
194}
195
170QVariant PeriodDayEventModel::data(const QModelIndex &id, int role) const 196QVariant PeriodDayEventModel::data(const QModelIndex &id, int role) const
171{ 197{
172 if (id.internalId() == DAY_ID) { 198 if (id.internalId() == DAY_ID) {
@@ -235,13 +261,13 @@ QVariant PeriodDayEventModel::data(const QModelIndex &id, int role) const
235 case Description: 261 case Description:
236 return event->getDescription(); 262 return event->getDescription();
237 case StartTime: 263 case StartTime:
238 return event->getStartTime(); 264 return getStartTimeOfDay(event->getStartTime(), day);
239 case EndTime: 265 case EndTime:
240 return event->getEndTime(); 266 return getEndTimeOfDay(event->getEndTime(), day);
241 case Duration: { 267 case Duration: {
242 auto start = event->getStartTime(); 268 auto start = getStartTimeOfDay(event->getStartTime(), day);
243 auto end = event->getEndTime(); 269 auto end = getEndTimeOfDay(event->getEndTime(), day);
244 return start.secsTo(end) / 3600; 270 return qRound(start.secsTo(end) / 3600.0);
245 } 271 }
246 case Color: 272 case Color:
247 return getColor(event->getCalendar()); 273 return getColor(event->getCalendar());
diff --git a/framework/src/domain/perioddayeventmodel.h b/framework/src/domain/perioddayeventmodel.h
index 2eaa7f1c..2d1d0177 100644
--- a/framework/src/domain/perioddayeventmodel.h
+++ b/framework/src/domain/perioddayeventmodel.h
@@ -126,6 +126,8 @@ private:
126 void updateQuery(); 126 void updateQuery();
127 void partitionData(); 127 void partitionData();
128 QByteArray getColor(const QByteArray &calendar) const; 128 QByteArray getColor(const QByteArray &calendar) const;
129 QDateTime getStartTimeOfDay(const QDateTime &dateTime, int day) const;
130 QDateTime getEndTimeOfDay(const QDateTime &dateTime, int day) const;
129 131
130 int bucketOf(const QDate &candidate) const; 132 int bucketOf(const QDate &candidate) const;
131 133
diff --git a/views/calendar/main.qml b/views/calendar/main.qml
index d27817f5..bf7179b7 100644
--- a/views/calendar/main.qml
+++ b/views/calendar/main.qml
@@ -76,8 +76,8 @@ ApplicationWindow {
76 resource: "caldavresource", 76 resource: "caldavresource",
77 summary: "Test Event4", 77 summary: "Test Event4",
78 description: "This is test event #4", 78 description: "This is test event #4",
79 starts: "2018-04-12T22:00:00", 79 starts: "2018-04-12T03:00:00",
80 ends: "2018-04-15T03:00:00", 80 ends: "2018-04-14T22:00:00",
81 }, 81 },
82 { 82 {
83 resource: "caldavresource", 83 resource: "caldavresource",