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 ),
51 mDailyDuration( false )
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 ) {
124 return Duration( d->mStart, d->mEnd,
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 );