36 #include <KSystemTimeZone>
38 #include <QtCore/QHash>
40 using namespace KCalCore;
43 class KCalCore::Period::Private
46 Private() : mHasDuration(false), mDailyDuration(false) {}
47 Private(
const KDateTime &start,
const KDateTime &end,
bool hasDuration)
50 mHasDuration(hasDuration),
65 : d(new KCalCore::
Period::Private(start, end, false))
70 : d(new KCalCore::
Period::Private(start, duration.end(start), true))
72 d->mDailyDuration = duration.
isDaily();
76 : d(new KCalCore::
Period::Private(*period.d))
87 return d->mStart < other.d->mStart;
93 ((d->mStart == other.d->mStart) ||
94 (!d->mStart.isValid() && !other.d->mStart.isValid())) &&
95 ((d->mEnd == other.d->mEnd) ||
96 (!d->mEnd.isValid() && !other.d->mEnd.isValid())) &&
97 d->mHasDuration == other.d->mHasDuration;
103 if (&other ==
this) {
123 if (d->mHasDuration) {
127 return Duration(d->mStart, d->mEnd);
133 return Duration(d->mStart, d->mEnd, type);
138 return d->mHasDuration;
142 const KDateTime::Spec &newSpec)
144 if (oldSpec.isValid() && newSpec.isValid() && oldSpec != newSpec) {
145 d->mStart = d->mStart.toTimeSpec(oldSpec);
146 d->mStart.setTimeSpec(newSpec);
147 d->mEnd = d->mEnd.toTimeSpec(oldSpec);
148 d->mEnd.setTimeSpec(newSpec);
154 return stream << period.d->mStart
156 << period.d->mDailyDuration
157 << period.d->mHasDuration;
162 stream >> period.d->mStart
164 >> period.d->mDailyDuration
165 >> period.d->mHasDuration;
171 QString strToHash = key.
start().toString();
175 strToHash += key.
end().toString();
177 return qHash(strToHash);