36 using namespace KCalCore;
43 class KCalCore::Duration::Private
47 return mDaily ? mDuration * 86400 : mDuration;
55 : d( new KCalCore::
Duration::Private() )
60 : d( new KCalCore::
Duration::Private() )
62 if ( start.time() == end.time() && start.timeSpec() == end.timeSpec() ) {
63 d->mDuration = start.daysTo( end );
66 d->mDuration = start.secsTo( end );
72 : d( new KCalCore::
Duration::Private() )
75 KDateTime endSt( end.toTimeSpec( start ) );
76 d->mDuration = start.daysTo( endSt );
79 if ( start < endSt ) {
80 if ( endSt.time() < start.time() ) {
84 if ( endSt.time() > start.time() ) {
91 d->mDuration = start.secsTo( end );
97 : d( new KCalCore::
Duration::Private() )
99 d->mDuration = duration;
100 d->mDaily = ( type ==
Days );
104 : d( new KCalCore::
Duration::Private( *duration.d ) )
116 if ( &duration ==
this ) {
124 Duration::operator bool()
const
131 if ( d->mDaily == other.d->mDaily ) {
133 return d->mDuration < other.d->mDuration;
135 return d->seconds() < other.d->seconds();
143 return d->mDuration == other.d->mDuration &&
144 d->mDaily == other.d->mDaily;
149 if ( d->mDaily == other.d->mDaily ) {
150 d->mDuration += other.d->mDuration;
151 }
else if ( d->mDaily ) {
152 d->mDuration = d->mDuration * 86400 + other.d->mDuration;
155 d->mDuration += other.d->mDuration + 86400;
172 d->mDuration *=
value;
178 d->mDuration /=
value;
184 return d->mDaily ? start.addDays( d->mDuration )
185 : start.addSecs( d->mDuration );
205 return d->mDaily ? d->mDuration : d->mDuration / 86400;