Philipp's comments to r1444.
[toast/confclerk.git] / src / mvc / eventmodel.cpp
index ee3222725b19db72baf4e561ab2851b84d4ab0b1..cfac1eece3ad501f919ddfa1284367eede07d0b8 100644 (file)
@@ -48,25 +48,33 @@ void EventModel::createTimeGroups()
     mParents.clear();
     if (mEvents.empty()) return;
 
-    const int minTimeSpan = 3600; // one hour
-    const int minChildCount = 3; // minimum number of events in one group
+    const int minTimeSpan = 3600; // one hour // minimum duration of a group
+    const int minChildCount = 3;  // minimum number of events in one group
 
     // Create the first time group. The events have to be sorted by start time at this point!
-    QTime groupStartTime(mEvents.first().start().time().hour(), 0);
-    QTime groupEndTime = groupStartTime.addSecs(mEvents.first().duration());
+    //    Remarks for the following non-comment line:
+    //    * As it is right now it could be written as
+    //      QDateTime groupStartDateTime = mEvents.first().start();
+    //    * Before r1444 the minutes were set to zero so that the time groups started at
+    //      whole hours.
+
+    // QDateTime groupStartDateTime(mEvents.first().start().date(), QTime(mEvents.first().start().time().hour(), 0));
+    QDateTime groupStartDateTime = mEvents.first().start();
+    QDateTime groupEndDateTime = groupStartDateTime.addSecs(mEvents.first().duration());
     mGroups << EventModel::Group("", 0);
     int timeSpan = minTimeSpan;
 
     for (int i = 0; i != mEvents.count(); ++i) {
-        QTime eventStartTime = mEvents.at(i).start().time();
-        QTime eventEndTime = eventStartTime.addSecs(mEvents.at(i).duration());
+        QDateTime eventStartDateTime = mEvents.at(i).start();
+        QDateTime eventEndDateTime = eventStartDateTime.addSecs(mEvents.at(i).duration());
 
-        if (eventStartTime >= groupStartTime.addSecs(timeSpan)) {
+        if (eventStartDateTime >= groupStartDateTime.addSecs(timeSpan)) {
             // a new group could be necessary
             if (mGroups.last().mChildCount < minChildCount) {
                 // too few events in the group => no new group
                 // except a gap in time would occur that is longer than minTimeSpan
-                if (i > 0 && qMax(mEvents.at(i-1).start().time().addSecs(mEvents.at(i-1).duration()), groupEndTime).secsTo(eventStartTime) < minTimeSpan) {
+                QDateTime prevEventStartDateTime = mEvents.at(i).start();
+                if (i > 0 && qMax(prevEventStartDateTime.addSecs(mEvents.at(i-1).duration()), groupEndDateTime).secsTo(eventStartDateTime) < minTimeSpan) {
                     timeSpan += minTimeSpan;
                     --i;
                     continue; // repeat with the same event
@@ -75,8 +83,8 @@ void EventModel::createTimeGroups()
 
             // a new group is necessary
             mGroups.last().setTitle(mEvents);
-            groupStartTime = groupStartTime.addSecs(timeSpan);
-            groupEndTime = groupStartTime.addSecs(mEvents.at(i).duration());
+            groupStartDateTime = groupStartDateTime.addSecs(timeSpan);
+            groupEndDateTime = groupStartDateTime.addSecs(mEvents.at(i).duration());
             mGroups << EventModel::Group("", i);
             timeSpan = minTimeSpan;
         }
@@ -84,7 +92,7 @@ void EventModel::createTimeGroups()
         // insert event into current group
         mParents[mEvents.at(i).id()] = mGroups.count() - 1;
         mGroups.last().mChildCount += 1;
-        groupEndTime = qMax(eventEndTime, groupEndTime);
+        groupEndDateTime = qMax(eventEndDateTime, groupEndDateTime);
     }
 
     // the last group needs a title as well