47 class KCal::Alarm::Private
52 mType(
Alarm::Invalid ),
53 mAlarmSnoozeTime( 5 ),
54 mAlarmRepeatCount( 0 ),
57 mAlarmEnabled( false )
59 Private(
const Private &other )
60 : mParent( other.mParent ),
62 mDescription( other.mDescription ),
64 mMailSubject( other.mMailSubject ),
65 mMailAttachFiles( other.mMailAttachFiles ),
66 mMailAddresses( other.mMailAddresses ),
67 mAlarmTime( other.mAlarmTime ),
68 mAlarmSnoozeTime( other.mAlarmSnoozeTime ),
69 mAlarmRepeatCount( other.mAlarmRepeatCount ),
70 mOffset( other.mOffset ),
71 mEndOffset( other.mEndOffset ),
72 mHasTime( other.mHasTime ),
73 mAlarmEnabled( other.mAlarmEnabled )
82 QStringList mMailAttachFiles;
83 QList<Person> mMailAddresses;
88 int mAlarmRepeatCount;
116 d->mParent = a.d->mParent;
117 d->mType = a.d->mType;
118 d->mDescription = a.d->mDescription;
119 d->mFile = a.d->mFile;
120 d->mMailAttachFiles = a.d->mMailAttachFiles;
121 d->mMailAddresses = a.d->mMailAddresses;
122 d->mMailSubject = a.d->mMailSubject;
123 d->mAlarmSnoozeTime = a.d->mAlarmSnoozeTime;
124 d->mAlarmRepeatCount = a.d->mAlarmRepeatCount;
125 d->mAlarmTime = a.d->mAlarmTime;
126 d->mOffset = a.d->mOffset;
127 d->mEndOffset = a.d->mEndOffset;
128 d->mHasTime = a.d->mHasTime;
129 d->mAlarmEnabled = a.d->mAlarmEnabled;
135 if ( d->mType != rhs.d->mType ||
136 d->mAlarmSnoozeTime != rhs.d->mAlarmSnoozeTime ||
137 d->mAlarmRepeatCount != rhs.d->mAlarmRepeatCount ||
138 d->mAlarmEnabled != rhs.d->mAlarmEnabled ||
139 d->mHasTime != rhs.d->mHasTime ) {
144 if ( d->mAlarmTime != rhs.d->mAlarmTime ) {
148 if ( d->mOffset != rhs.d->mOffset || d->mEndOffset != rhs.d->mEndOffset ) {
153 switch ( d->mType ) {
155 return d->mDescription == rhs.d->mDescription;
158 return d->mDescription == rhs.d->mDescription &&
159 d->mMailAttachFiles == rhs.d->mMailAttachFiles &&
160 d->mMailAddresses == rhs.d->mMailAddresses &&
161 d->mMailSubject == rhs.d->mMailSubject;
164 return d->mFile == rhs.d->mFile &&
165 d->mDescription == rhs.d->mDescription;
168 return d->mFile == rhs.d->mFile;
178 if ( type == d->mType ) {
184 d->mDescription =
"";
187 d->mFile = d->mDescription =
"";
193 d->mMailSubject = d->mDescription =
"";
194 d->mMailAddresses.clear();
195 d->mMailAttachFiles.clear();
204 d->mParent->updated();
218 d->mParent->updated();
224 if ( d->mType ==
Audio ) {
227 d->mParent->updated();
234 return ( d->mType ==
Audio ) ? d->mFile : QString();
238 const QString &arguments )
242 d->mDescription = arguments;
244 d->mParent->updated();
253 d->mParent->updated();
260 return ( d->mType ==
Procedure ) ? d->mFile : QString();
266 d->mDescription = arguments;
268 d->mParent->updated();
275 return ( d->mType ==
Procedure ) ? d->mDescription : QString();
279 const QList<Person> &addressees,
280 const QStringList &attachments )
283 d->mMailSubject = subject;
284 d->mDescription =
text;
285 d->mMailAddresses = addressees;
286 d->mMailAttachFiles = attachments;
288 d->mParent->updated();
294 if ( d->mType ==
Email ) {
295 d->mMailAddresses.clear();
296 d->mMailAddresses += mailAddress;
298 d->mParent->updated();
305 if ( d->mType ==
Email ) {
308 d->mParent->updated();
315 if ( d->mType ==
Email ) {
316 d->mMailAddresses += mailAddress;
318 d->mParent->updated();
325 return ( d->mType ==
Email ) ? d->mMailAddresses : QList<Person>();
330 if ( d->mType ==
Email ) {
331 d->mMailSubject = mailAlarmSubject;
333 d->mParent->updated();
340 return ( d->mType ==
Email ) ? d->mMailSubject : QString();
345 if ( d->mType ==
Email ) {
346 d->mMailAttachFiles.clear();
347 d->mMailAttachFiles += mailAttachFile;
349 d->mParent->updated();
356 if ( d->mType ==
Email ) {
357 d->mMailAttachFiles = mailAttachFiles;
359 d->mParent->updated();
366 if ( d->mType ==
Email ) {
367 d->mMailAttachFiles += mailAttachFile;
369 d->mParent->updated();
376 return ( d->mType ==
Email ) ? d->mMailAttachFiles : QStringList();
381 if ( d->mType ==
Email ) {
382 d->mDescription =
text;
384 d->mParent->updated();
391 return ( d->mType ==
Email ) ? d->mDescription : QString();
397 if ( !text.isNull() ) {
398 d->mDescription =
text;
401 d->mParent->updated();
408 d->mDescription =
text;
410 d->mParent->updated();
417 return ( d->mType ==
Display ) ? d->mDescription : QString();
422 d->mAlarmTime = alarmTime;
426 d->mParent->updated();
433 return d->mAlarmTime;
434 }
else if ( d->mParent ) {
435 if ( d->mEndOffset ) {
436 if ( d->mParent->type() ==
"Todo" ) {
437 Todo *t =
static_cast<Todo*
>( d->mParent );
438 return d->mOffset.end( t->
dtDue() );
440 return d->mOffset.end( d->mParent->dtEnd() );
443 return d->mOffset.end( d->mParent->dtStart() );
456 const KDateTime::Spec &newSpec )
458 d->mAlarmTime = d->mAlarmTime.toTimeSpec( oldSpec );
459 d->mAlarmTime.setTimeSpec( newSpec );
461 d->mParent->updated();
467 if ( alarmSnoozeTime.
value() > 0 ) {
468 d->mAlarmSnoozeTime = alarmSnoozeTime;
470 d->mParent->updated();
477 return d->mAlarmSnoozeTime;
482 d->mAlarmRepeatCount = alarmRepeatCount;
484 d->mParent->updated();
490 return d->mAlarmRepeatCount;
495 return Duration( d->mAlarmSnoozeTime.value() * d->mAlarmRepeatCount,
496 d->mAlarmSnoozeTime.type() );
501 KDateTime at =
time();
502 if ( at > preTime ) {
505 if ( !d->mAlarmRepeatCount ) {
510 int interval = d->mAlarmSnoozeTime.value();
511 bool daily = d->mAlarmSnoozeTime.isDaily();
513 int daysTo = at.daysTo( preTime );
514 if ( !preTime.isDateOnly() && preTime.time() <= at.time() ) {
517 repetition = daysTo / interval + 1;
519 repetition = at.secsTo_long( preTime ) / interval + 1;
521 if ( repetition > d->mAlarmRepeatCount ) {
525 return daily ? at.addDays(
int( repetition * interval ) )
526 : at.addSecs( repetition * interval );
531 KDateTime at =
time();
532 if ( at >= afterTime ) {
536 if ( !d->mAlarmRepeatCount ) {
540 int interval = d->mAlarmSnoozeTime.value();
541 bool daily = d->mAlarmSnoozeTime.isDaily();
543 int daysTo = at.daysTo( afterTime );
544 if ( afterTime.isDateOnly() || afterTime.time() <= at.time() ) {
547 repetition = daysTo / interval;
549 repetition = ( at.secsTo_long( afterTime ) - 1 ) / interval;
551 if ( repetition > d->mAlarmRepeatCount ) {
552 repetition = d->mAlarmRepeatCount;
554 return daily ? at.addDays(
int( repetition * interval ) )
555 : at.addSecs( repetition * interval );
560 if ( !d->mAlarmRepeatCount ) {
563 if ( d->mAlarmSnoozeTime.isDaily() ) {
564 return time().addDays( d->mAlarmRepeatCount * d->mAlarmSnoozeTime.asDays() );
566 return time().addSecs( d->mAlarmRepeatCount * d->mAlarmSnoozeTime.asSeconds() );
572 d->mAlarmEnabled = !d->mAlarmEnabled;
574 d->mParent->updated();
580 d->mAlarmEnabled = enable;
582 d->mParent->updated();
588 return d->mAlarmEnabled;
594 d->mEndOffset =
false;
597 d->mParent->updated();
603 return ( d->mHasTime || d->mEndOffset ) ?
Duration( 0 ) : d->mOffset;
608 return !d->mHasTime && !d->mEndOffset;
613 return !d->mHasTime && d->mEndOffset;
619 d->mEndOffset =
true;
622 d->mParent->updated();
628 return ( d->mHasTime || !d->mEndOffset ) ?
Duration( 0 ) : d->mOffset;
644 d->mParent->updated();