40 enum DateTimeComparison {
59 Equal = AtStart | Inside | AtEnd,
62 Outside = Before | AtStart | Inside | AtEnd | After,
67 StartsAt = AtStart | Inside | AtEnd | After,
72 EndsAt = Before | AtStart | Inside | AtEnd
107 DateTimeComparison compare(
const QDateTime &dt1,
bool isAllDay1,
const QDateTime &dt2,
bool isAllDay2)
118 start1 = dt1.
toUTC();
119 start2 = dt2.
toUTC();
125 if (isAllDay1 || isAllDay2) {
132 dt.setTime(
QTime(23, 59, 59, 999));
139 dt.setTime(
QTime(23, 59, 59, 999));
157 if (start1 == start2) {
158 return !isAllDay1 ? AtStart : (end1 == end2) ? Equal
159 : (end1 < end2) ?
static_cast<DateTimeComparison
>(AtStart | Inside)
160 : static_cast<DateTimeComparison>(AtStart | Inside | AtEnd | After);
163 if (start1 < start2) {
164 return (end1 < start2) ? Before
165 : (end1 == end2) ? static_cast<DateTimeComparison>(Before | AtStart | Inside | AtEnd)
166 : (end1 == start2) ? static_cast<DateTimeComparison>(Before | AtStart)
167 : (end1 < end2) ? static_cast<DateTimeComparison>(Before | AtStart | Inside) : Outside;
169 return (start1 > end2) ? After
170 : (start1 == end2) ? (end1 == end2 ? AtEnd : static_cast<DateTimeComparison>(AtEnd | After))
171 : (end1 == end2) ?
static_cast<DateTimeComparison
>(Inside | AtEnd)
172 : (end1 < end2) ? Inside :
static_cast<DateTimeComparison
>(Inside | AtEnd | After);
175 return (start1 == start2) ? Equal : (start1 < start2) ? Before : After;
180 DateTimeComparison res = compare(e1->dtStart(), e1->allDay(), e2->dtStart(), e2->allDay());
182 return Events::summaryLessThan(e1, e2);
184 return (res & Before || res & AtStart);
190 DateTimeComparison res = compare(e1->dtStart(), e1->allDay(), e2->dtStart(), e2->allDay());
192 return Events::summaryMoreThan(e1, e2);
194 return (res & After || res & AtEnd);
210 DateTimeComparison res = compare(e1->dtEnd(), e1->allDay(), e2->dtEnd(), e2->allDay());
212 return Events::summaryLessThan(e1, e2);
214 return (res & Before || res & AtStart);
220 DateTimeComparison res = compare(e1->dtEnd(), e1->allDay(), e2->dtEnd(), e2->allDay());
222 return Events::summaryMoreThan(e1, e2);
224 return (res & After || res & AtEnd);
230 DateTimeComparison res = compare(j1->dtStart(), j1->allDay(), j2->dtStart(), j2->allDay());
231 return (res & Before || res & AtStart);
236 DateTimeComparison res = compare(j1->dtStart(), j1->allDay(), j2->dtStart(), j2->allDay());
237 return (res & After || res & AtEnd);
250 bool KCalendarCore::Todos::startDateLessThan(
const Todo::Ptr &t1,
const Todo::Ptr &t2)
252 DateTimeComparison res = compare(t1->dtStart(), t1->allDay(), t2->dtStart(), t2->allDay());
254 return Todos::summaryLessThan(t1, t2);
256 return (res & Before || res & AtStart);
260 bool KCalendarCore::Todos::startDateMoreThan(
const Todo::Ptr &t1,
const Todo::Ptr &t2)
262 DateTimeComparison res = compare(t1->dtStart(), t1->allDay(), t2->dtStart(), t2->allDay());
264 return Todos::summaryMoreThan(t1, t2);
266 return (res & After || res & AtEnd);
272 DateTimeComparison res = compare(t1->dtDue(), t1->allDay(), t2->dtDue(), t2->allDay());
274 return Todos::summaryLessThan(t1, t2);
276 return (res & Before || res & AtStart);
282 DateTimeComparison res = compare(t1->dtDue(), t1->allDay(), t2->dtDue(), t2->allDay());
284 return Todos::summaryMoreThan(t1, t2);
286 return (res & After || res & AtEnd);
292 if (t1->priority() < t2->priority()) {
294 }
else if (t1->priority() == t2->priority()) {
295 return Todos::summaryLessThan(t1, t2);
303 if (t1->priority() > t2->priority()) {
305 }
else if (t1->priority() == t2->priority()) {
306 return Todos::summaryMoreThan(t1, t2);
314 if (t1->percentComplete() < t2->percentComplete()) {
316 }
else if (t1->percentComplete() == t2->percentComplete()) {
317 return Todos::summaryLessThan(t1, t2);
325 if (t1->percentComplete() > t2->percentComplete()) {
327 }
else if (t1->percentComplete() == t2->percentComplete()) {
328 return Todos::summaryMoreThan(t1, t2);
346 DateTimeComparison res = compare(t1->created(), t1->allDay(), t2->created(), t2->allDay());
348 return Todos::summaryLessThan(t1, t2);
350 return (res & Before || res & AtStart);
356 DateTimeComparison res = compare(t1->created(), t1->allDay(), t2->created(), t2->allDay());
358 return Todos::summaryMoreThan(t1, t2);
360 return (res & After || res & AtEnd);
364 bool KCalendarCore::Incidences::dateLessThan(
const Incidence::Ptr &i1,
370 return Incidences::summaryLessThan(i1, i2);
372 return (res & Before || res & AtStart);
376 bool KCalendarCore::Incidences::dateMoreThan(
const Incidence::Ptr &i1,
382 return Incidences::summaryMoreThan(i1, i2);
384 return (res & After || res & AtEnd);
388 bool KCalendarCore::Incidences::createdLessThan(
const Incidence::Ptr &i1,
391 DateTimeComparison res = compare(i1->created(), i1->allDay(), i2->created(), i2->allDay());
393 return Incidences::summaryLessThan(i1, i2);
395 return (res & Before || res & AtStart);
399 bool KCalendarCore::Incidences::createdMoreThan(
const Incidence::Ptr &i1,
402 DateTimeComparison res = compare(i1->created(), i1->allDay(), i2->created(), i2->allDay());
404 return Incidences::summaryMoreThan(i1, i2);
406 return (res & After || res & AtEnd);
410 bool KCalendarCore::Incidences::summaryLessThan(
const Incidence::Ptr &i1,
416 bool KCalendarCore::Incidences::summaryMoreThan(
const Incidence::Ptr &i1,
QDateTime toUTC() const const
Role for an incidence's date/time used when sorting.
This file is part of the API for handling calendar data and defines the Todo class.
This file is part of the API for handling calendar data and defines the Journal class.
Qt::TimeSpec timeSpec() const const
This file is part of the API for handling calendar data and defines the Event class.
int offsetFromUtc() const const
int compare(const QString &other, Qt::CaseSensitivity cs) const const
Namespace for all KCalendarCore types.
QTimeZone timeZone() const const