-rw-r--r-- | library/backend/event.h | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/library/backend/event.h b/library/backend/event.h index 4610d85..118523f 100644 --- a/library/backend/event.h +++ b/library/backend/event.h | |||
@@ -11,199 +11,197 @@ | |||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #ifndef __EVENT_H__ | 21 | #ifndef __EVENT_H__ |
22 | #define __EVENT_H__ | 22 | #define __EVENT_H__ |
23 | 23 | ||
24 | #include <qdatetime.h> | 24 | #include <qdatetime.h> |
25 | #include <qvaluelist.h> | 25 | #include <qvaluelist.h> |
26 | #include <qcolor.h> | 26 | #include <qcolor.h> |
27 | 27 | ||
28 | #ifdef PALMTOPCENTER | 28 | #ifdef PALMTOPCENTER |
29 | #include <qpc/qsorter.h> | 29 | #include <qpc/qsorter.h> |
30 | #endif | 30 | #endif |
31 | #include <qtopia/private/palmtoprecord.h> | 31 | #include <qtopia/private/palmtoprecord.h> |
32 | 32 | ||
33 | #include <qpe/timeconversion.h> | 33 | #include <qpe/timeconversion.h> |
34 | 34 | ||
35 | static const QColor colorNormal = QColor(255, 0 , 0 ); | 35 | static const QColor colorNormal = QColor(255, 0 , 0 ); |
36 | static const QColor colorRepeat = QColor(0 , 0 , 255); | 36 | static const QColor colorRepeat = QColor(0 , 0 , 255); |
37 | static const QColor colorNormalLight = QColor(255, 220, 220); | 37 | static const QColor colorNormalLight = QColor(255, 220, 220); |
38 | static const QColor colorRepeatLight = QColor(200, 200, 255); | 38 | static const QColor colorRepeatLight = QColor(200, 200, 255); |
39 | 39 | ||
40 | class EventPrivate; | 40 | class EventPrivate; |
41 | class QPC_EXPORT Event : public Qtopia::Record | 41 | class QPC_EXPORT Event : public Qtopia::Record |
42 | { | 42 | { |
43 | public: | 43 | public: |
44 | enum RepeatType { NoRepeat = -1, Daily, Weekly, MonthlyDay, | 44 | enum RepeatType { NoRepeat = -1, Daily, Weekly, MonthlyDay, |
45 | MonthlyDate, Yearly }; | 45 | MonthlyDate, Yearly }; |
46 | 46 | ||
47 | // Don't use this. | 47 | // Don't use this. |
48 | enum Days { MON = 0x01, TUE = 0x02, WED = 0x04, THU = 0x08, | 48 | enum Days { MON = 0x01, TUE = 0x02, WED = 0x04, THU = 0x08, |
49 | FRI = 0x10, SAT = 0x20, SUN = 0x40 }; | 49 | FRI = 0x10, SAT = 0x20, SUN = 0x40 }; |
50 | // Don't use this. | 50 | // Don't use this. |
51 | struct QPC_EXPORT RepeatPattern | 51 | struct QPC_EXPORT RepeatPattern |
52 | { | 52 | { |
53 | RepeatPattern() { | 53 | RepeatPattern() { |
54 | type = NoRepeat; frequency = -1; days = 0; position = 0; createTime = -1; | 54 | type = NoRepeat; frequency = -1; days = 0; position = 0; createTime = -1; |
55 | hasEndDate = FALSE; endDateUTC = 0; } | 55 | hasEndDate = FALSE; endDateUTC = 0; } |
56 | bool operator ==( const RepeatPattern &right ) const; | 56 | bool operator ==( const RepeatPattern &right ) const; |
57 | 57 | ||
58 | RepeatType type; | 58 | RepeatType type; |
59 | int frequency; | 59 | int frequency; |
60 | int position;// the posistion in the month (e.g. the first sunday, etc) positive, count from the front negative count from the end... | 60 | int position;// the posistion in the month (e.g. the first sunday, etc) positive, count from the front negative count from the end... |
61 | char days; // a mask for days OR in your days! | 61 | char days; // a mask for days OR in your days! |
62 | bool hasEndDate; | 62 | bool hasEndDate; |
63 | QDate endDate() const { return TimeConversion::fromUTC( endDateUTC ).date(); } | 63 | QDate endDate() const { return TimeConversion::fromUTC( endDateUTC ).date(); } |
64 | void setEndDate( const QDate &dt ) { endDateUTC = TimeConversion::toUTC( dt ); } | 64 | void setEndDate( const QDate &dt ) { endDateUTC = TimeConversion::toUTC( dt ); } |
65 | time_t endDateUTC; | 65 | time_t endDateUTC; |
66 | time_t createTime; | 66 | time_t createTime; |
67 | }; | 67 | }; |
68 | 68 | ||
69 | Event(); | 69 | Event(); |
70 | Event( const QMap<int, QString > & map ); | 70 | Event( const QMap<int, QString > & map ); |
71 | virtual ~Event(); | 71 | virtual ~Event(); |
72 | 72 | ||
73 | QMap<int, QString> toMap() const; | 73 | QMap<int, QString> toMap() const; |
74 | 74 | ||
75 | static void writeVCalendar( const QString &filename, const QValueList<Event> &events); | 75 | static void writeVCalendar( const QString &filename, const QValueList<Event> &events); |
76 | static void writeVCalendar( const QString &filename, const Event &event); | 76 | static void writeVCalendar( const QString &filename, const Event &event); |
77 | static QValueList<Event> readVCalendar( const QString &filename ); | 77 | static QValueList<Event> readVCalendar( const QString &filename ); |
78 | 78 | ||
79 | enum Type { Normal, AllDay }; | 79 | enum Type { Normal, AllDay }; |
80 | enum SoundTypeChoice { Silent, Loud }; | 80 | enum SoundTypeChoice { Silent, Loud }; |
81 | 81 | ||
82 | // Don't use these, there are essentially meaningless. | 82 | // Don't use these, there are essentially meaningless. |
83 | bool operator<( const Event &e1) const { return start() < e1.start(); }; | 83 | bool operator<( const Event &e1) const { return start() < e1.start(); }; |
84 | bool operator<=( const Event &e1 ) const { return start() <= e1.start(); }; | 84 | bool operator<=( const Event &e1 ) const { return start() <= e1.start(); }; |
85 | bool operator!=( const Event &e1 ) const { return !( *this == e1 ); }; | 85 | bool operator!=( const Event &e1 ) const { return !( *this == e1 ); }; |
86 | bool operator>( const Event &e1 ) const { return start() > e1.start(); }; | 86 | bool operator>( const Event &e1 ) const { return start() > e1.start(); }; |
87 | bool operator>=(const Event &e1 ) const { return start() >= e1.start(); }; | 87 | bool operator>=(const Event &e1 ) const { return start() >= e1.start(); }; |
88 | bool operator==( const Event &e ) const; | 88 | bool operator==( const Event &e ) const; |
89 | 89 | ||
90 | void setDescription( const QString &s ); | 90 | void setDescription( const QString &s ); |
91 | const QString &description() const; | 91 | const QString &description() const; |
92 | 92 | ||
93 | void setLocation( const QString &s ); | 93 | void setLocation( const QString &s ); |
94 | const QString &location() const; | 94 | const QString &location() const; |
95 | 95 | ||
96 | void setNotes( const QString &n ); | 96 | void setNotes( const QString &n ); |
97 | const QString ¬es() const; | 97 | const QString ¬es() const; |
98 | 98 | ||
99 | void setType( Type t ); // Don't use me. | 99 | void setType( Type t ); // Don't use me. |
100 | Type type() const; // Don't use me. | 100 | Type type() const; // Don't use me. |
101 | 101 | ||
102 | void setAllDay(bool); | 102 | void setAllDay(bool); |
103 | bool isAllDay() const; | 103 | bool isAllDay() const; |
104 | 104 | ||
105 | void setStart( const QDateTime &d ); | 105 | void setStart( const QDateTime &d ); |
106 | void setStart( time_t time ); // don't use me. | 106 | void setStart( time_t time ); // don't use me. |
107 | QDateTime start( ) const; | 107 | QDateTime start( bool actual = FALSE) const; // don't use me. |
108 | QDateTime start( bool actual ) const; // don't use me. | ||
109 | time_t startTime() const { return startUTC; } // don't use me. | 108 | time_t startTime() const { return startUTC; } // don't use me. |
110 | void setEnd( const QDateTime &e ); | 109 | void setEnd( const QDateTime &e ); |
111 | void setEnd( time_t time ); // don't use me | 110 | void setEnd( time_t time ); // don't use me |
112 | QDateTime end( ) const; | 111 | QDateTime end( bool actual = FALSE ) const; // don't use me. |
113 | QDateTime end( bool actual ) const; // don't use me. | ||
114 | time_t endTime() const { return endUTC; } // don't use me. | 112 | time_t endTime() const { return endUTC; } // don't use me. |
115 | void setTimeZone( const QString & ); | 113 | void setTimeZone( const QString & ); |
116 | const QString &timeZone() const; | 114 | const QString &timeZone() const; |
117 | void setAlarm( int minutes, SoundTypeChoice ); | 115 | void setAlarm( int minutes, SoundTypeChoice ); |
118 | void clearAlarm(); | 116 | void clearAlarm(); |
119 | void setAlarm( bool b, int minutes, SoundTypeChoice ); // Don't use me. | 117 | void setAlarm( bool b, int minutes, SoundTypeChoice ); // Don't use me. |
120 | bool hasAlarm() const; | 118 | bool hasAlarm() const; |
121 | int alarmDelay() const; | 119 | int alarmDelay() const; |
122 | int alarmTime() const; // Don't use me. | 120 | int alarmTime() const; // Don't use me. |
123 | SoundTypeChoice alarmSound() const; | 121 | SoundTypeChoice alarmSound() const; |
124 | 122 | ||
125 | RepeatType repeatType() const; | 123 | RepeatType repeatType() const; |
126 | int frequency() const; | 124 | int frequency() const; |
127 | int weekOffset() const; | 125 | int weekOffset() const; |
128 | QDate repeatTill() const; | 126 | QDate repeatTill() const; |
129 | bool repeatForever() const; | 127 | bool repeatForever() const; |
130 | bool repeatOnWeekDay(int day) const; | 128 | bool repeatOnWeekDay(int day) const; |
131 | 129 | ||
132 | void setRepeatType(RepeatType); | 130 | void setRepeatType(RepeatType); |
133 | void setFrequency(int); | 131 | void setFrequency(int); |
134 | void setRepeatTill(const QDate &); | 132 | void setRepeatTill(const QDate &); |
135 | void setRepeatForever(bool); | 133 | void setRepeatForever(bool); |
136 | void setRepeatOnWeekDay(int day, bool enable); | 134 | void setRepeatOnWeekDay(int day, bool enable); |
137 | 135 | ||
138 | // Don't use any of these. | 136 | // Don't use any of these. |
139 | void setRepeat( bool b, const RepeatPattern &p ); | 137 | void setRepeat( bool b, const RepeatPattern &p ); |
140 | void setRepeat( const RepeatPattern &p ); | 138 | void setRepeat( const RepeatPattern &p ); |
141 | bool hasRepeat() const; | 139 | bool hasRepeat() const; |
142 | const RepeatPattern &repeatPattern() const; | 140 | const RepeatPattern &repeatPattern() const; |
143 | RepeatPattern &repeatPattern(); | 141 | RepeatPattern &repeatPattern(); |
144 | bool doRepeat() const { return pattern.type != NoRepeat; } | 142 | bool doRepeat() const { return pattern.type != NoRepeat; } |
145 | 143 | ||
146 | void save( QString& buf ); | 144 | void save( QString& buf ); |
147 | //void load( Node *n ); | 145 | //void load( Node *n ); |
148 | 146 | ||
149 | bool match( const QRegExp &r ) const; | 147 | bool match( const QRegExp &r ) const; |
150 | 148 | ||
151 | // Don't use these either. Functionality will be moved elsewhere. | 149 | // Don't use these either. Functionality will be moved elsewhere. |
152 | 150 | ||
153 | // helper function to calculate the week of the given date | 151 | // helper function to calculate the week of the given date |
154 | static int week( const QDate& date ); | 152 | static int week( const QDate& date ); |
155 | // calculates the number of occurrences of the week day of | 153 | // calculates the number of occurrences of the week day of |
156 | // the given date from the start of the month | 154 | // the given date from the start of the month |
157 | static int occurrence( const QDate& date ); | 155 | static int occurrence( const QDate& date ); |
158 | // returns a proper days-char for a given dayOfWeek() | 156 | // returns a proper days-char for a given dayOfWeek() |
159 | static char day( int dayOfWeek ) { return 1 << ( dayOfWeek - 1 ); } | 157 | static char day( int dayOfWeek ) { return 1 << ( dayOfWeek - 1 ); } |
160 | // returns the dayOfWeek for the *first* day it finds (ignores | 158 | // returns the dayOfWeek for the *first* day it finds (ignores |
161 | // any further days!). Returns 1 (Monday) if there isn't any day found | 159 | // any further days!). Returns 1 (Monday) if there isn't any day found |
162 | static int dayOfWeek( char day ); | 160 | static int dayOfWeek( char day ); |
163 | // returns the difference of months from first to second. | 161 | // returns the difference of months from first to second. |
164 | static int monthDiff( const QDate& first, const QDate& second ); | 162 | static int monthDiff( const QDate& first, const QDate& second ); |
165 | 163 | ||
166 | private: | 164 | private: |
167 | Qtopia::UidGen &uidGen() { return sUidGen; } | 165 | Qtopia::UidGen &uidGen() { return sUidGen; } |
168 | static Qtopia::UidGen sUidGen; | 166 | static Qtopia::UidGen sUidGen; |
169 | 167 | ||
170 | QString descript, locat, categ; | 168 | QString descript, locat, categ; |
171 | Type typ : 4; | 169 | Type typ : 4; |
172 | bool startTimeDirty : 1; | 170 | bool startTimeDirty : 1; |
173 | bool endTimeDirty : 1; | 171 | bool endTimeDirty : 1; |
174 | time_t startUTC, endUTC; | 172 | time_t startUTC, endUTC; |
175 | QString tz; | 173 | QString tz; |
176 | bool hAlarm, hRepeat; | 174 | bool hAlarm, hRepeat; |
177 | int aMinutes; | 175 | int aMinutes; |
178 | SoundTypeChoice aSound; | 176 | SoundTypeChoice aSound; |
179 | RepeatPattern pattern; | 177 | RepeatPattern pattern; |
180 | QString note; | 178 | QString note; |
181 | // ADDITION | 179 | // ADDITION |
182 | int mRid;// Recode ID | 180 | int mRid;// Recode ID |
183 | int mRinfo;// Recode Info | 181 | int mRinfo;// Recode Info |
184 | // | 182 | // |
185 | EventPrivate *d; | 183 | EventPrivate *d; |
186 | 184 | ||
187 | }; | 185 | }; |
188 | 186 | ||
189 | // Since an event spans multiple day, it is better to have this | 187 | // Since an event spans multiple day, it is better to have this |
190 | // class to represent a day instead of creating many | 188 | // class to represent a day instead of creating many |
191 | // dummy events... | 189 | // dummy events... |
192 | 190 | ||
193 | class EffectiveEventPrivate; | 191 | class EffectiveEventPrivate; |
194 | class QPC_EXPORT EffectiveEvent | 192 | class QPC_EXPORT EffectiveEvent |
195 | { | 193 | { |
196 | public: | 194 | public: |
197 | // If we calculate the effective event of a multi-day event | 195 | // If we calculate the effective event of a multi-day event |
198 | // we have to figure out whether we are at the first day, | 196 | // we have to figure out whether we are at the first day, |
199 | // at the end, or anywhere else ("middle"). This is important | 197 | // at the end, or anywhere else ("middle"). This is important |
200 | // for the start/end times (00:00/23:59) | 198 | // for the start/end times (00:00/23:59) |
201 | // MidWay: 00:00 -> 23:59, as we are "in the middle" of a multi- | 199 | // MidWay: 00:00 -> 23:59, as we are "in the middle" of a multi- |
202 | // day event | 200 | // day event |
203 | // Start: start time -> 23:59 | 201 | // Start: start time -> 23:59 |
204 | // End: 00:00 -> end time | 202 | // End: 00:00 -> end time |
205 | // Start | End == StartEnd: for single-day events (default) | 203 | // Start | End == StartEnd: for single-day events (default) |
206 | // here we draw start time -> end time | 204 | // here we draw start time -> end time |
207 | enum Position { MidWay = 0, Start = 1, End = 2, StartEnd = 3 }; | 205 | enum Position { MidWay = 0, Start = 1, End = 2, StartEnd = 3 }; |
208 | 206 | ||
209 | EffectiveEvent(); | 207 | EffectiveEvent(); |
@@ -248,128 +246,117 @@ private: | |||
248 | mEnd; | 246 | mEnd; |
249 | 247 | ||
250 | }; | 248 | }; |
251 | 249 | ||
252 | inline void Event::setAlarm( int minutes, SoundTypeChoice s ) | 250 | inline void Event::setAlarm( int minutes, SoundTypeChoice s ) |
253 | { | 251 | { |
254 | setAlarm(TRUE, minutes, s); | 252 | setAlarm(TRUE, minutes, s); |
255 | } | 253 | } |
256 | 254 | ||
257 | inline void Event::clearAlarm() | 255 | inline void Event::clearAlarm() |
258 | { | 256 | { |
259 | setAlarm(FALSE, 0, Silent); | 257 | setAlarm(FALSE, 0, Silent); |
260 | } | 258 | } |
261 | 259 | ||
262 | inline int Event::alarmDelay() const | 260 | inline int Event::alarmDelay() const |
263 | { | 261 | { |
264 | return alarmTime(); | 262 | return alarmTime(); |
265 | } | 263 | } |
266 | 264 | ||
267 | inline void Event::setAllDay(bool enable) | 265 | inline void Event::setAllDay(bool enable) |
268 | { | 266 | { |
269 | if (enable) | 267 | if (enable) |
270 | setType(AllDay); | 268 | setType(AllDay); |
271 | else | 269 | else |
272 | setType(Normal); | 270 | setType(Normal); |
273 | }; | 271 | }; |
274 | 272 | ||
275 | inline bool Event::isAllDay() const | 273 | inline bool Event::isAllDay() const |
276 | { | 274 | { |
277 | return type() == AllDay; | 275 | return type() == AllDay; |
278 | } | 276 | } |
279 | 277 | ||
280 | inline Event::RepeatType Event::repeatType() const | 278 | inline Event::RepeatType Event::repeatType() const |
281 | { | 279 | { |
282 | return repeatPattern().type; | 280 | return repeatPattern().type; |
283 | } | 281 | } |
284 | 282 | ||
285 | inline int Event::frequency() const | 283 | inline int Event::frequency() const |
286 | { | 284 | { |
287 | return repeatPattern().frequency; | 285 | return repeatPattern().frequency; |
288 | } | 286 | } |
289 | 287 | ||
290 | inline int Event::weekOffset() const | 288 | inline int Event::weekOffset() const |
291 | { | 289 | { |
292 | if (start().date().day() == 1) | 290 | if (start().date().day() == 1) |
293 | return 1; | 291 | return 1; |
294 | return (start().date().day() - 1) / 7 + 1; | 292 | return (start().date().day() - 1) / 7 + 1; |
295 | } | 293 | } |
296 | 294 | ||
297 | inline QDate Event::repeatTill() const | 295 | inline QDate Event::repeatTill() const |
298 | { | 296 | { |
299 | return repeatPattern().endDate(); | 297 | return repeatPattern().endDate(); |
300 | } | 298 | } |
301 | 299 | ||
302 | inline bool Event::repeatForever() const | 300 | inline bool Event::repeatForever() const |
303 | { | 301 | { |
304 | return !repeatPattern().hasEndDate; | 302 | return !repeatPattern().hasEndDate; |
305 | } | 303 | } |
306 | 304 | ||
307 | inline void Event::setRepeatType(RepeatType t) | 305 | inline void Event::setRepeatType(RepeatType t) |
308 | { | 306 | { |
309 | pattern.type = t; | 307 | pattern.type = t; |
310 | } | 308 | } |
311 | 309 | ||
312 | inline void Event::setFrequency(int f) | 310 | inline void Event::setFrequency(int f) |
313 | { | 311 | { |
314 | pattern.frequency = f; | 312 | pattern.frequency = f; |
315 | } | 313 | } |
316 | 314 | ||
317 | inline void Event::setRepeatTill(const QDate &d) | 315 | inline void Event::setRepeatTill(const QDate &d) |
318 | { | 316 | { |
319 | pattern.setEndDate(d); | 317 | pattern.setEndDate(d); |
320 | pattern.hasEndDate = TRUE; | 318 | pattern.hasEndDate = TRUE; |
321 | } | 319 | } |
322 | 320 | ||
323 | inline void Event::setRepeatForever(bool b) | 321 | inline void Event::setRepeatForever(bool b) |
324 | { | 322 | { |
325 | if (!b == pattern.hasEndDate) | 323 | if (!b == pattern.hasEndDate) |
326 | return; | 324 | return; |
327 | if (!b && !pattern.hasEndDate) | 325 | if (!b && !pattern.hasEndDate) |
328 | pattern.setEndDate(end().date()); | 326 | pattern.setEndDate(end().date()); |
329 | pattern.hasEndDate = !b; | 327 | pattern.hasEndDate = !b; |
330 | } | 328 | } |
331 | 329 | ||
332 | inline bool Event::repeatOnWeekDay(int day) const | 330 | inline bool Event::repeatOnWeekDay(int day) const |
333 | { | 331 | { |
334 | if (pattern.type != Weekly) | 332 | if (pattern.type != Weekly) |
335 | return FALSE; | 333 | return FALSE; |
336 | return ( (1 << (day - 1)) & pattern.days ) != 0; | 334 | return ( (1 << (day - 1)) & pattern.days ) != 0; |
337 | } | 335 | } |
338 | 336 | ||
339 | inline void Event::setRepeatOnWeekDay(int day, bool enable) | 337 | inline void Event::setRepeatOnWeekDay(int day, bool enable) |
340 | { | 338 | { |
341 | if ( repeatOnWeekDay( day ) != enable ) | 339 | if ( repeatOnWeekDay( day ) != enable ) |
342 | pattern.days ^= 1 << (day - 1); | 340 | pattern.days ^= 1 << (day - 1); |
343 | } | 341 | } |
344 | |||
345 | inline QDateTime Event::start( ) const | ||
346 | { | ||
347 | return start(FALSE); | ||
348 | } | ||
349 | |||
350 | inline QDateTime Event::end( ) const | ||
351 | { | ||
352 | return end(FALSE); | ||
353 | } | ||
354 | |||
355 | #ifdef PALMTOPCENTER | 342 | #ifdef PALMTOPCENTER |
356 | class QPC_EXPORT EffectiveEventSizeSorter : public QSorter<EffectiveEvent> | 343 | class QPC_EXPORT EffectiveEventSizeSorter : public QSorter<EffectiveEvent> |
357 | { | 344 | { |
358 | public: | 345 | public: |
359 | int compare( const EffectiveEvent& a, const EffectiveEvent& b ) const | 346 | int compare( const EffectiveEvent& a, const EffectiveEvent& b ) const |
360 | { | 347 | { |
361 | return a.size() - b.size(); | 348 | return a.size() - b.size(); |
362 | } | 349 | } |
363 | }; | 350 | }; |
364 | 351 | ||
365 | class QPC_EXPORT EffectiveEventTimeSorter : public QSorter<EffectiveEvent> | 352 | class QPC_EXPORT EffectiveEventTimeSorter : public QSorter<EffectiveEvent> |
366 | { | 353 | { |
367 | public: | 354 | public: |
368 | int compare( const EffectiveEvent& a, const EffectiveEvent& b ) const | 355 | int compare( const EffectiveEvent& a, const EffectiveEvent& b ) const |
369 | { | 356 | { |
370 | return a.start().secsTo( b.start() ); | 357 | return a.start().secsTo( b.start() ); |
371 | } | 358 | } |
372 | }; | 359 | }; |
373 | #endif | 360 | #endif |
374 | 361 | ||
375 | #endif | 362 | #endif |