summaryrefslogtreecommitdiff
path: root/library/backend
authorzecke <zecke>2003-02-21 11:35:52 (UTC)
committer zecke <zecke>2003-02-21 11:35:52 (UTC)
commit6917879c47d406b6f4ee234f84b89e17265dd0a5 (patch) (unidiff)
tree8d30ebd64d302cf3e7237154dff7939f2f2aa425 /library/backend
parent2d77abb5ff37abf61e04657431d7e0e1f5138d94 (diff)
downloadopie-6917879c47d406b6f4ee234f84b89e17265dd0a5.zip
opie-6917879c47d406b6f4ee234f84b89e17265dd0a5.tar.gz
opie-6917879c47d406b6f4ee234f84b89e17265dd0a5.tar.bz2
make allday events all bit less fscked up...
Basicly an AllDay Event should be pinned to a day but Qtopia suffers from a problem when changing timezones an AllDay event can span two days... This patch make it at least not span two days..
Diffstat (limited to 'library/backend') (more/less context) (ignore whitespace changes)
-rw-r--r--library/backend/event.cpp9
1 files changed, 3 insertions, 6 deletions
diff --git a/library/backend/event.cpp b/library/backend/event.cpp
index 0003fe9..d906f19 100644
--- a/library/backend/event.cpp
+++ b/library/backend/event.cpp
@@ -233,776 +233,773 @@ Qtopia::UidGen Event::sUidGen( Qtopia::UidGen::Qtopia );
233*/ 233*/
234 234
235/*! 235/*!
236 \fn bool Event::repeatForever() const 236 \fn bool Event::repeatForever() const
237 237
238 Returns FALSE if there is a date set for the event to continue until. 238 Returns FALSE if there is a date set for the event to continue until.
239 Otherwise returns TRUE. 239 Otherwise returns TRUE.
240*/ 240*/
241 241
242/*! 242/*!
243 \fn bool Event::doRepeat() const 243 \fn bool Event::doRepeat() const
244 \internal 244 \internal
245*/ 245*/
246 246
247/*! 247/*!
248 \fn bool Event::repeatOnWeekDay(int day) const 248 \fn bool Event::repeatOnWeekDay(int day) const
249 249
250 Returns TRUE if the event has a RepeatType of Weekly and is set to occur on 250 Returns TRUE if the event has a RepeatType of Weekly and is set to occur on
251 \a day each week. Otherwise returns FALSE. 251 \a day each week. Otherwise returns FALSE.
252 252
253 \sa QDate::dayName() 253 \sa QDate::dayName()
254*/ 254*/
255 255
256/*! 256/*!
257 \fn void Event::setRepeatOnWeekDay(int day, bool enable) 257 \fn void Event::setRepeatOnWeekDay(int day, bool enable)
258 258
259 If \a enable is TRUE then sets the event to occur on \a day each week. 259 If \a enable is TRUE then sets the event to occur on \a day each week.
260 Otherwise sets the event not to occur on \a day. 260 Otherwise sets the event not to occur on \a day.
261 261
262 \warning this function is only relavent for a event with RepeatType of 262 \warning this function is only relavent for a event with RepeatType of
263 Weekly. 263 Weekly.
264 264
265 \sa QDate::dayName() 265 \sa QDate::dayName()
266*/ 266*/
267 267
268/*! 268/*!
269 \fn int Event::frequency() const 269 \fn int Event::frequency() const
270 270
271 Returns how often the event repeats. 271 Returns how often the event repeats.
272 272
273 \sa repeatType() 273 \sa repeatType()
274*/ 274*/
275 275
276/*! 276/*!
277 \fn void Event::setRepeatType(RepeatType t) 277 \fn void Event::setRepeatType(RepeatType t)
278 278
279 Sets the repeat pattern type of the event to \a t. 279 Sets the repeat pattern type of the event to \a t.
280 280
281 \sa setFrequency() 281 \sa setFrequency()
282*/ 282*/
283 283
284/*! 284/*!
285 \fn void Event::setFrequency(int n) 285 \fn void Event::setFrequency(int n)
286 286
287 Sets how often the event occurs with in its repeat pattern. 287 Sets how often the event occurs with in its repeat pattern.
288 288
289 \sa setRepeatType() 289 \sa setRepeatType()
290*/ 290*/
291 291
292/*! 292/*!
293 \fn void Event::setRepeatTill(const QDate &d) 293 \fn void Event::setRepeatTill(const QDate &d)
294 294
295 Sets the event to repeat until \a d. 295 Sets the event to repeat until \a d.
296*/ 296*/
297 297
298/*! 298/*!
299 \fn void Event::setRepeatForever(bool enable) 299 \fn void Event::setRepeatForever(bool enable)
300 300
301 If \a enable is TRUE, sets the event to repeat forever. Otherwise 301 If \a enable is TRUE, sets the event to repeat forever. Otherwise
302 sets the event to stop repeating at some date. 302 sets the event to stop repeating at some date.
303 303
304 \warning This function may affect the specific date the event will repeat 304 \warning This function may affect the specific date the event will repeat
305 till. 305 till.
306*/ 306*/
307 307
308/*! 308/*!
309 \fn bool Event::match(const QRegExp &r) const 309 \fn bool Event::match(const QRegExp &r) const
310 310
311 Returns TRUE if the event matches the regular expression \a r. 311 Returns TRUE if the event matches the regular expression \a r.
312 Otherwise returns FALSE. 312 Otherwise returns FALSE.
313*/ 313*/
314 314
315/*! 315/*!
316 \fn char Event::day(int) 316 \fn char Event::day(int)
317 \internal 317 \internal
318*/ 318*/
319 319
320/*! 320/*!
321 Creates a new, empty event. 321 Creates a new, empty event.
322*/ 322*/
323Event::Event() : Record() 323Event::Event() : Record()
324{ 324{
325 startUTC = endUTC = time( 0 ); 325 startUTC = endUTC = time( 0 );
326 typ = Normal; 326 typ = Normal;
327 hAlarm = FALSE; 327 hAlarm = FALSE;
328 hRepeat = FALSE; 328 hRepeat = FALSE;
329 aMinutes = 0; 329 aMinutes = 0;
330 aSound = Silent; 330 aSound = Silent;
331 pattern.type = NoRepeat; 331 pattern.type = NoRepeat;
332 pattern.frequency = -1; 332 pattern.frequency = -1;
333} 333}
334 334
335/*! 335/*!
336 \internal 336 \internal
337*/ 337*/
338Event::Event( const QMap<int, QString> &map ) 338Event::Event( const QMap<int, QString> &map )
339{ 339{
340 setDescription( map[DatebookDescription] ); 340 setDescription( map[DatebookDescription] );
341 setLocation( map[Location] ); 341 setLocation( map[Location] );
342 setCategories( idsFromString( map[DatebookCategory] ) ); 342 setCategories( idsFromString( map[DatebookCategory] ) );
343 setTimeZone( map[TimeZone] ); 343 setTimeZone( map[TimeZone] );
344 setNotes( map[Note] ); 344 setNotes( map[Note] );
345 setStart( TimeConversion::fromUTC( map[StartDateTime].toUInt() ) ); 345 setStart( TimeConversion::fromUTC( map[StartDateTime].toUInt() ) );
346 setEnd( TimeConversion::fromUTC( map[EndDateTime].toUInt() ) ); 346 setEnd( TimeConversion::fromUTC( map[EndDateTime].toUInt() ) );
347 setType( (Event::Type) map[DatebookType].toInt() ); 347 setType( (Event::Type) map[DatebookType].toInt() );
348 setAlarm( ( map[HasAlarm] == "1" ? TRUE : FALSE ), map[AlarmTime].toInt(), (Event::SoundTypeChoice)map[SoundType].toInt() ); 348 setAlarm( ( map[HasAlarm] == "1" ? TRUE : FALSE ), map[AlarmTime].toInt(), (Event::SoundTypeChoice)map[SoundType].toInt() );
349 Event::RepeatPattern p; 349 Event::RepeatPattern p;
350 p.type = (Event::RepeatType) map[ RepeatPatternType ].toInt(); 350 p.type = (Event::RepeatType) map[ RepeatPatternType ].toInt();
351 p.frequency = map[ RepeatPatternFrequency ].toInt(); 351 p.frequency = map[ RepeatPatternFrequency ].toInt();
352 p.position = map[ RepeatPatternPosition ].toInt(); 352 p.position = map[ RepeatPatternPosition ].toInt();
353 p.days = map[ RepeatPatternDays ].toInt(); 353 p.days = map[ RepeatPatternDays ].toInt();
354 p.hasEndDate = map[ RepeatPatternHasEndDate ].toInt(); 354 p.hasEndDate = map[ RepeatPatternHasEndDate ].toInt();
355 p.endDateUTC = map[ RepeatPatternEndDate ].toUInt(); 355 p.endDateUTC = map[ RepeatPatternEndDate ].toUInt();
356 setRepeat( p ); 356 setRepeat( p );
357 357
358 setUid( map[ DatebookUid ].toInt() ); 358 setUid( map[ DatebookUid ].toInt() );
359} 359}
360 360
361/*! 361/*!
362 Destroys an event. 362 Destroys an event.
363*/ 363*/
364Event::~Event() 364Event::~Event()
365{ 365{
366} 366}
367 367
368/*! 368/*!
369 \internal 369 \internal
370*/ 370*/
371int Event::week( const QDate& date ) 371int Event::week( const QDate& date )
372{ 372{
373 // Calculates the week this date is in within that 373 // Calculates the week this date is in within that
374 // month. Equals the "row" is is in in the month view 374 // month. Equals the "row" is is in in the month view
375 int week = 1; 375 int week = 1;
376 QDate tmp( date.year(), date.month(), 1 ); 376 QDate tmp( date.year(), date.month(), 1 );
377 377
378 if ( date.dayOfWeek() < tmp.dayOfWeek() ) 378 if ( date.dayOfWeek() < tmp.dayOfWeek() )
379 ++week; 379 ++week;
380 380
381 week += ( date.day() - 1 ) / 7; 381 week += ( date.day() - 1 ) / 7;
382 return week; 382 return week;
383} 383}
384 384
385/*! 385/*!
386 \internal 386 \internal
387*/ 387*/
388int Event::occurrence( const QDate& date ) 388int Event::occurrence( const QDate& date )
389{ 389{
390 // calculates the number of occurrances of this day of the 390 // calculates the number of occurrances of this day of the
391 // week till the given date (e.g 3rd Wednesday of the month) 391 // week till the given date (e.g 3rd Wednesday of the month)
392 return ( date.day() - 1 ) / 7 + 1; 392 return ( date.day() - 1 ) / 7 + 1;
393} 393}
394 394
395/*! 395/*!
396 \internal 396 \internal
397*/ 397*/
398int Event::dayOfWeek( char day ) 398int Event::dayOfWeek( char day )
399{ 399{
400 int dayOfWeek = 1; 400 int dayOfWeek = 1;
401 char i = Event::MON; 401 char i = Event::MON;
402 while ( !( i & day ) && i <= Event::SUN ) { 402 while ( !( i & day ) && i <= Event::SUN ) {
403 i <<= 1; 403 i <<= 1;
404 ++dayOfWeek; 404 ++dayOfWeek;
405 } 405 }
406 return dayOfWeek; 406 return dayOfWeek;
407} 407}
408 408
409/*! 409/*!
410 \internal 410 \internal
411*/ 411*/
412int Event::monthDiff( const QDate& first, const QDate& second ) 412int Event::monthDiff( const QDate& first, const QDate& second )
413{ 413{
414 return ( second.year() - first.year() ) * 12 + 414 return ( second.year() - first.year() ) * 12 +
415 second.month() - first.month(); 415 second.month() - first.month();
416} 416}
417 417
418/*! 418/*!
419 \internal 419 \internal
420*/ 420*/
421QMap<int, QString> Event::toMap() const 421QMap<int, QString> Event::toMap() const
422{ 422{
423 QMap<int, QString> m; 423 QMap<int, QString> m;
424 424
425 if ( !description().isEmpty() ) 425 if ( !description().isEmpty() )
426 m.insert( DatebookDescription, description() ); 426 m.insert( DatebookDescription, description() );
427 if ( !location().isEmpty() ) 427 if ( !location().isEmpty() )
428 m.insert ( Location, location() ); 428 m.insert ( Location, location() );
429 if ( categories().count() ) 429 if ( categories().count() )
430 m.insert ( DatebookCategory, idsToString( categories() ) ); 430 m.insert ( DatebookCategory, idsToString( categories() ) );
431 if ( !timeZone().isEmpty() ) 431 if ( !timeZone().isEmpty() )
432 m.insert ( TimeZone, timeZone() ); 432 m.insert ( TimeZone, timeZone() );
433 if ( !notes().isEmpty() ) 433 if ( !notes().isEmpty() )
434 m.insert ( Note, notes() ); 434 m.insert ( Note, notes() );
435 435
436 m.insert ( StartDateTime, QString::number( TimeConversion::toUTC( start() ) ) ); 436 m.insert ( StartDateTime, QString::number( TimeConversion::toUTC( start() ) ) );
437 m.insert ( EndDateTime, QString::number( TimeConversion::toUTC( end() ) ) ); 437 m.insert ( EndDateTime, QString::number( TimeConversion::toUTC( end() ) ) );
438 m.insert ( DatebookType, QString::number( (int)type() ) ); 438 m.insert ( DatebookType, QString::number( (int)type() ) );
439 m.insert ( HasAlarm, ( hasAlarm() ? "1" : "0" ) ); 439 m.insert ( HasAlarm, ( hasAlarm() ? "1" : "0" ) );
440 m.insert ( SoundType, QString::number( (int)alarmSound() ) ); 440 m.insert ( SoundType, QString::number( (int)alarmSound() ) );
441 m.insert ( AlarmTime, QString::number( alarmTime() ) ); 441 m.insert ( AlarmTime, QString::number( alarmTime() ) );
442 m.insert ( RepeatPatternType, QString::number( static_cast<int>( repeatPattern().type ) ) ); 442 m.insert ( RepeatPatternType, QString::number( static_cast<int>( repeatPattern().type ) ) );
443 m.insert ( RepeatPatternFrequency, QString::number( repeatPattern().frequency ) ); 443 m.insert ( RepeatPatternFrequency, QString::number( repeatPattern().frequency ) );
444 m.insert ( RepeatPatternPosition, QString::number( repeatPattern().position ) ); 444 m.insert ( RepeatPatternPosition, QString::number( repeatPattern().position ) );
445 m.insert ( RepeatPatternDays, QString::number( repeatPattern().days ) ); 445 m.insert ( RepeatPatternDays, QString::number( repeatPattern().days ) );
446 m.insert ( RepeatPatternHasEndDate, QString::number( static_cast<int>( repeatPattern().hasEndDate ) ) ); 446 m.insert ( RepeatPatternHasEndDate, QString::number( static_cast<int>( repeatPattern().hasEndDate ) ) );
447 m.insert ( RepeatPatternEndDate, QString::number( repeatPattern().endDateUTC ) ); 447 m.insert ( RepeatPatternEndDate, QString::number( repeatPattern().endDateUTC ) );
448 448
449 m.insert( DatebookUid, QString::number( uid()) ); 449 m.insert( DatebookUid, QString::number( uid()) );
450 450
451 return m; 451 return m;
452} 452}
453 453
454/*! 454/*!
455 \internal 455 \internal
456*/ 456*/
457void Event::setRepeat( const RepeatPattern &p ) 457void Event::setRepeat( const RepeatPattern &p )
458{ 458{
459 setRepeat( p.type != NoRepeat, p ); 459 setRepeat( p.type != NoRepeat, p );
460} 460}
461 461
462/*! 462/*!
463 Sets the description of the event to \a s. 463 Sets the description of the event to \a s.
464*/ 464*/
465void Event::setDescription( const QString &s ) 465void Event::setDescription( const QString &s )
466{ 466{
467 descript = s; 467 descript = s;
468} 468}
469 469
470/*! 470/*!
471 Sets the location of the event to \a s. 471 Sets the location of the event to \a s.
472*/ 472*/
473void Event::setLocation( const QString &s ) 473void Event::setLocation( const QString &s )
474{ 474{
475 locat = s; 475 locat = s;
476} 476}
477 477
478// void Event::setCategory( const QString &s ) 478// void Event::setCategory( const QString &s )
479// { 479// {
480// categ = s; 480// categ = s;
481// } 481// }
482 482
483/*! 483/*!
484 \internal 484 \internal
485*/ 485*/
486void Event::setType( Type t ) 486void Event::setType( Type t )
487{ 487{
488 typ = t; 488 typ = t;
489} 489}
490 490
491/*! 491/*!
492 Sets the start date and time of the first or only occurance of this event 492 Sets the start date and time of the first or only occurance of this event
493 to the date and time \a d. \a d should be in local time. 493 to the date and time \a d. \a d should be in local time.
494*/ 494*/
495void Event::setStart( const QDateTime &d ) 495void Event::setStart( const QDateTime &d )
496{ 496{
497 startUTC = TimeConversion::toUTC( d ); 497 startUTC = TimeConversion::toUTC( d );
498} 498}
499 499
500/*! 500/*!
501 \internal 501 \internal
502*/ 502*/
503void Event::setStart( time_t time ) 503void Event::setStart( time_t time )
504{ 504{
505 startUTC = time; 505 startUTC = time;
506} 506}
507 507
508/*! 508/*!
509 Sets the end date and time of the first or only occurance of this event 509 Sets the end date and time of the first or only occurance of this event
510 to the date and time \a d. \a d should be in local time. 510 to the date and time \a d. \a d should be in local time.
511*/ 511*/
512void Event::setEnd( const QDateTime &d ) 512void Event::setEnd( const QDateTime &d )
513{ 513{
514 endUTC = TimeConversion::toUTC( d ); 514 endUTC = TimeConversion::toUTC( d );
515} 515}
516 516
517/*! 517/*!
518 \internal 518 \internal
519*/ 519*/
520void Event::setEnd( time_t time ) 520void Event::setEnd( time_t time )
521{ 521{
522 endUTC = time; 522 endUTC = time;
523} 523}
524 524
525/*! 525/*!
526 \internal 526 \internal
527*/ 527*/
528void Event::setTimeZone( const QString &z ) 528void Event::setTimeZone( const QString &z )
529{ 529{
530 tz = z; 530 tz = z;
531} 531}
532 532
533/*! 533/*!
534 \internal 534 \internal
535*/ 535*/
536void Event::setAlarm( bool b, int minutes, SoundTypeChoice s ) 536void Event::setAlarm( bool b, int minutes, SoundTypeChoice s )
537{ 537{
538 hAlarm = b; 538 hAlarm = b;
539 aMinutes = minutes; 539 aMinutes = minutes;
540 aSound = s; 540 aSound = s;
541} 541}
542 542
543/*! 543/*!
544 \internal 544 \internal
545*/ 545*/
546void Event::setRepeat( bool b, const RepeatPattern &p ) 546void Event::setRepeat( bool b, const RepeatPattern &p )
547{ 547{
548 hRepeat = b; 548 hRepeat = b;
549 pattern = p; 549 pattern = p;
550} 550}
551 551
552/*! 552/*!
553 Sets the notes for the event to \a n. 553 Sets the notes for the event to \a n.
554*/ 554*/
555void Event::setNotes( const QString &n ) 555void Event::setNotes( const QString &n )
556{ 556{
557 note = n; 557 note = n;
558} 558}
559 559
560/*! 560/*!
561 Returns the description of the event. 561 Returns the description of the event.
562*/ 562*/
563const QString &Event::description() const 563const QString &Event::description() const
564{ 564{
565 return descript; 565 return descript;
566} 566}
567 567
568/*! 568/*!
569 Returns the location of the event. 569 Returns the location of the event.
570*/ 570*/
571const QString &Event::location() const 571const QString &Event::location() const
572{ 572{
573 return locat; 573 return locat;
574} 574}
575 575
576// QString Event::category() const 576// QString Event::category() const
577// { 577// {
578// return categ; 578// return categ;
579// } 579// }
580 580
581/*! 581/*!
582 \internal 582 \internal
583*/ 583*/
584Event::Type Event::type() const 584Event::Type Event::type() const
585{ 585{
586 return typ; 586 return typ;
587} 587}
588/* 588/*
589QDateTime Event::start() const { 589QDateTime Event::start() const {
590 return start( TRUE ); 590 return start( TRUE );
591} 591}
592*/ 592*/
593/*! 593/*!
594 \internal 594 \internal
595*/ 595*/
596QDateTime Event::start( bool actual ) const 596QDateTime Event::start( bool actual ) const
597{ 597{
598 QDateTime dt = TimeConversion::fromUTC( startUTC ); 598 QDateTime dt = TimeConversion::fromUTC( startUTC );
599 599
600 if ( actual && typ == AllDay ) { 600 if ( actual && typ == AllDay ) {
601 QTime t = dt.time(); 601 QTime t = dt.time();
602 t.setHMS( 0, 0, 0 ); 602 t.setHMS( 0, 0, 0 );
603 dt.setTime( t ); 603 dt.setTime( t );
604 } 604 }
605 return dt; 605 return dt;
606} 606}
607/* 607/*
608QDateTime Event::end() const { 608QDateTime Event::end() const {
609 return end( TRUE ); 609 return end( TRUE );
610} 610}
611*/ 611*/
612/*! 612/*!
613 \internal 613 \internal
614*/ 614*/
615QDateTime Event::end( bool actual ) const 615QDateTime Event::end( bool actual ) const
616{ 616{
617 QDateTime dt = TimeConversion::fromUTC( endUTC ); 617 /* small work around... */
618
619 if ( actual && typ == AllDay ) { 618 if ( actual && typ == AllDay ) {
620 QTime t = dt.time(); 619 return QDateTime( TimeConversion::fromUTC( startUTC ).date(), QTime(23, 59, 59 ) );
621 t.setHMS( 23, 59, 59 );
622 dt.setTime( t );
623 } 620 }
624 return dt; 621 return TimeConversion::fromUTC( endUTC );
625} 622}
626 623
627/*! 624/*!
628 \internal 625 \internal
629*/ 626*/
630const QString &Event::timeZone() const 627const QString &Event::timeZone() const
631{ 628{
632 return tz; 629 return tz;
633} 630}
634 631
635/*! 632/*!
636 \internal 633 \internal
637*/ 634*/
638bool Event::hasAlarm() const 635bool Event::hasAlarm() const
639{ 636{
640 return hAlarm; 637 return hAlarm;
641} 638}
642 639
643/*! 640/*!
644 \internal 641 \internal
645*/ 642*/
646int Event::alarmTime() const 643int Event::alarmTime() const
647{ 644{
648 return aMinutes; 645 return aMinutes;
649} 646}
650 647
651/*! 648/*!
652 Returns the sound type for the alarm of this event. 649 Returns the sound type for the alarm of this event.
653*/ 650*/
654Event::SoundTypeChoice Event::alarmSound() const 651Event::SoundTypeChoice Event::alarmSound() const
655{ 652{
656 return aSound; 653 return aSound;
657} 654}
658 655
659/*! 656/*!
660 \internal 657 \internal
661*/ 658*/
662bool Event::hasRepeat() const 659bool Event::hasRepeat() const
663{ 660{
664 return doRepeat(); 661 return doRepeat();
665} 662}
666 663
667/*! 664/*!
668 \internal 665 \internal
669*/ 666*/
670const Event::RepeatPattern &Event::repeatPattern() const 667const Event::RepeatPattern &Event::repeatPattern() const
671{ 668{
672 return pattern; 669 return pattern;
673} 670}
674 671
675/*! 672/*!
676 \internal 673 \internal
677*/ 674*/
678Event::RepeatPattern &Event::repeatPattern() 675Event::RepeatPattern &Event::repeatPattern()
679{ 676{
680 return pattern; 677 return pattern;
681} 678}
682 679
683/*! 680/*!
684 Returns the notes for the event. 681 Returns the notes for the event.
685*/ 682*/
686const QString &Event::notes() const 683const QString &Event::notes() const
687{ 684{
688 return note; 685 return note;
689} 686}
690 687
691/*! 688/*!
692 \internal 689 \internal
693*/ 690*/
694bool Event::operator==( const Event &e ) const 691bool Event::operator==( const Event &e ) const
695{ 692{
696 if ( uid() && e.uid() == uid() ) 693 if ( uid() && e.uid() == uid() )
697 return TRUE; 694 return TRUE;
698 return ( e.descript == descript && 695 return ( e.descript == descript &&
699 e.locat == locat && 696 e.locat == locat &&
700 e.categ == categ && 697 e.categ == categ &&
701 e.typ == typ && 698 e.typ == typ &&
702 e.startUTC == startUTC && 699 e.startUTC == startUTC &&
703 e.endUTC == endUTC && 700 e.endUTC == endUTC &&
704 e.tz == tz && 701 e.tz == tz &&
705 e.hAlarm == hAlarm && 702 e.hAlarm == hAlarm &&
706 e.aMinutes == aMinutes && 703 e.aMinutes == aMinutes &&
707 e.aSound == aSound && 704 e.aSound == aSound &&
708 e.hRepeat == hRepeat && 705 e.hRepeat == hRepeat &&
709 e.pattern == pattern && 706 e.pattern == pattern &&
710 e.note == note ); 707 e.note == note );
711} 708}
712 709
713/*! 710/*!
714 \internal 711 \internal
715 Appends the contact information to \a buf. 712 Appends the contact information to \a buf.
716*/ 713*/
717void Event::save( QString& buf ) 714void Event::save( QString& buf )
718{ 715{
719 buf += " description=\"" + Qtopia::escapeString(descript) + "\""; 716 buf += " description=\"" + Qtopia::escapeString(descript) + "\"";
720 if ( !locat.isEmpty() ) 717 if ( !locat.isEmpty() )
721 buf += " location=\"" + Qtopia::escapeString(locat) + "\""; 718 buf += " location=\"" + Qtopia::escapeString(locat) + "\"";
722 // save the categoies differently.... 719 // save the categoies differently....
723 QString strCats = idsToString( categories() ); 720 QString strCats = idsToString( categories() );
724 buf += " categories=\"" + Qtopia::escapeString(strCats) + "\""; 721 buf += " categories=\"" + Qtopia::escapeString(strCats) + "\"";
725 buf += " uid=\"" + QString::number( uid() ) + "\""; 722 buf += " uid=\"" + QString::number( uid() ) + "\"";
726 if ( (Type)typ != Normal ) 723 if ( (Type)typ != Normal )
727 buf += " type=\"AllDay\""; 724 buf += " type=\"AllDay\"";
728 if ( hAlarm ) { 725 if ( hAlarm ) {
729 buf += " alarm=\"" + QString::number( aMinutes ) + "\" sound=\""; 726 buf += " alarm=\"" + QString::number( aMinutes ) + "\" sound=\"";
730 if ( aSound == Event::Loud ) 727 if ( aSound == Event::Loud )
731 buf += "loud"; 728 buf += "loud";
732 else 729 else
733 buf += "silent"; 730 buf += "silent";
734 buf += "\""; 731 buf += "\"";
735 } 732 }
736 if ( hRepeat ) 733 if ( hRepeat )
737 write( buf, pattern ); 734 write( buf, pattern );
738 735
739 buf += " start=\"" 736 buf += " start=\""
740 + QString::number( startUTC ) 737 + QString::number( startUTC )
741 + "\""; 738 + "\"";
742 739
743 buf += " end=\"" 740 buf += " end=\""
744 + QString::number( endUTC ) 741 + QString::number( endUTC )
745 + "\""; 742 + "\"";
746 743
747 if ( !note.isEmpty() ) 744 if ( !note.isEmpty() )
748 buf += " note=\"" + Qtopia::escapeString( note ) + "\""; 745 buf += " note=\"" + Qtopia::escapeString( note ) + "\"";
749 buf += customToXml(); 746 buf += customToXml();
750} 747}
751 748
752/*! 749/*!
753 \internal 750 \internal
754*/ 751*/
755bool Event::RepeatPattern::operator==( const Event::RepeatPattern &right ) const 752bool Event::RepeatPattern::operator==( const Event::RepeatPattern &right ) const
756{ 753{
757 // *sigh* 754 // *sigh*
758 return ( type == right.type 755 return ( type == right.type
759 && frequency == right.frequency 756 && frequency == right.frequency
760 && position == right.position 757 && position == right.position
761 && days == right.days 758 && days == right.days
762 && hasEndDate == right.hasEndDate 759 && hasEndDate == right.hasEndDate
763 && endDateUTC == right.endDateUTC 760 && endDateUTC == right.endDateUTC
764 && createTime == right.createTime ); 761 && createTime == right.createTime );
765} 762}
766 763
767/*! 764/*!
768 \class EffectiveEvent 765 \class EffectiveEvent
769 \brief The EffectiveEvent class the data for a single occurance of an event. 766 \brief The EffectiveEvent class the data for a single occurance of an event.
770 767
771 This class describes the event for a single occurance of it. For example if 768 This class describes the event for a single occurance of it. For example if
772 an Event occurs every week, the effective event might represent the third 769 an Event occurs every week, the effective event might represent the third
773 occurance of this Event. 770 occurance of this Event.
774 771
775 \ingroup qtopiaemb 772 \ingroup qtopiaemb
776 \ingroup qtopiadesktop 773 \ingroup qtopiadesktop
777 \warning This class will be phased out in Qtopia 3.x 774 \warning This class will be phased out in Qtopia 3.x
778*/ 775*/
779 776
780/*! 777/*!
781 \enum EffectiveEvent::Position 778 \enum EffectiveEvent::Position
782 \internal 779 \internal
783*/ 780*/
784 781
785/*! 782/*!
786 \fn EffectiveEvent &EffectiveEvent::operator=(const EffectiveEvent &) 783 \fn EffectiveEvent &EffectiveEvent::operator=(const EffectiveEvent &)
787 \internal 784 \internal
788*/ 785*/
789 786
790class EffectiveEventPrivate 787class EffectiveEventPrivate
791{ 788{
792public: 789public:
793 //currently the existence of the d pointer means multi-day repeating, 790 //currently the existence of the d pointer means multi-day repeating,
794 //msut be changed if we use the d pointer for anything else. 791 //msut be changed if we use the d pointer for anything else.
795 QDate startDate; 792 QDate startDate;
796 QDate endDate; 793 QDate endDate;
797}; 794};
798 795
799/*! 796/*!
800 \internal 797 \internal
801*/ 798*/
802EffectiveEvent::EffectiveEvent() 799EffectiveEvent::EffectiveEvent()
803{ 800{
804 mDate = QDate::currentDate(); 801 mDate = QDate::currentDate();
805 mStart = mEnd = QTime::currentTime(); 802 mStart = mEnd = QTime::currentTime();
806 d = 0; 803 d = 0;
807} 804}
808 805
809/*! 806/*!
810 \internal 807 \internal
811*/ 808*/
812EffectiveEvent::EffectiveEvent( const Event &e, const QDate &date, Position pos ) 809EffectiveEvent::EffectiveEvent( const Event &e, const QDate &date, Position pos )
813{ 810{
814 mEvent = e; 811 mEvent = e;
815 mDate = date; 812 mDate = date;
816 if ( pos & Start ) 813 if ( pos & Start )
817 mStart = e.start( TRUE ).time(); 814 mStart = e.start( TRUE ).time();
818 else 815 else
819 mStart = QTime( 0, 0, 0 ); 816 mStart = QTime( 0, 0, 0 );
820 817
821 if ( pos & End ) 818 if ( pos & End )
822 mEnd = e.end( TRUE ).time(); 819 mEnd = e.end( TRUE ).time();
823 else 820 else
824 mEnd = QTime( 23, 59, 59 ); 821 mEnd = QTime( 23, 59, 59 );
825 d = 0; 822 d = 0;
826} 823}
827 824
828/*! 825/*!
829 \internal 826 \internal
830*/ 827*/
831EffectiveEvent::~EffectiveEvent() 828EffectiveEvent::~EffectiveEvent()
832{ 829{
833 delete d; 830 delete d;
834} 831}
835 832
836/*! 833/*!
837 \internal 834 \internal
838*/ 835*/
839EffectiveEvent::EffectiveEvent( const EffectiveEvent &e ) 836EffectiveEvent::EffectiveEvent( const EffectiveEvent &e )
840{ 837{
841 d = 0; 838 d = 0;
842 *this = e; 839 *this = e;
843} 840}
844 841
845EffectiveEvent& EffectiveEvent::operator=( const EffectiveEvent & e ) 842EffectiveEvent& EffectiveEvent::operator=( const EffectiveEvent & e )
846{ 843{
847 if ( &e == this ) 844 if ( &e == this )
848 return *this; 845 return *this;
849 delete d; 846 delete d;
850 if ( e.d ) { 847 if ( e.d ) {
851 d = new EffectiveEventPrivate; 848 d = new EffectiveEventPrivate;
852 d->startDate = e.d->startDate; 849 d->startDate = e.d->startDate;
853 d->endDate = e.d->endDate; 850 d->endDate = e.d->endDate;
854 } else { 851 } else {
855 d = 0; 852 d = 0;
856 } 853 }
857 mEvent = e.mEvent; 854 mEvent = e.mEvent;
858 mDate = e.mDate; 855 mDate = e.mDate;
859 mStart = e.mStart; 856 mStart = e.mStart;
860 mEnd = e.mEnd; 857 mEnd = e.mEnd;
861 858
862 return *this; 859 return *this;
863 860
864} 861}
865 862
866// QString EffectiveEvent::category() const 863// QString EffectiveEvent::category() const
867// { 864// {
868// return mEvent.category(); 865// return mEvent.category();
869// } 866// }
870 867
871/*! 868/*!
872 Returns the description of the event for this effective event. 869 Returns the description of the event for this effective event.
873*/ 870*/
874const QString &EffectiveEvent::description( ) const 871const QString &EffectiveEvent::description( ) const
875{ 872{
876 return mEvent.description(); 873 return mEvent.description();
877} 874}
878 875
879/*! 876/*!
880\internal 877\internal
881*/ 878*/
882const QString &EffectiveEvent::location( ) const 879const QString &EffectiveEvent::location( ) const
883{ 880{
884 return mEvent.location(); 881 return mEvent.location();
885} 882}
886 883
887/*! 884/*!
888\internal 885\internal
889*/ 886*/
890const QString &EffectiveEvent::notes() const 887const QString &EffectiveEvent::notes() const
891{ 888{
892 return mEvent.notes(); 889 return mEvent.notes();
893} 890}
894 891
895/*! 892/*!
896 Returns the event associated with this effective event. 893 Returns the event associated with this effective event.
897*/ 894*/
898const Event &EffectiveEvent::event() const 895const Event &EffectiveEvent::event() const
899{ 896{
900 return mEvent; 897 return mEvent;
901} 898}
902 899
903/*! 900/*!
904 \internal 901 \internal
905*/ 902*/
906const QTime &EffectiveEvent::end() const 903const QTime &EffectiveEvent::end() const
907{ 904{
908 return mEnd; 905 return mEnd;
909} 906}
910 907
911/*! 908/*!
912 \internal 909 \internal
913*/ 910*/
914const QTime &EffectiveEvent::start() const 911const QTime &EffectiveEvent::start() const
915{ 912{
916 return mStart; 913 return mStart;
917} 914}
918 915
919/*! 916/*!
920 Returns the date the effective event occurs on. 917 Returns the date the effective event occurs on.
921*/ 918*/
922const QDate &EffectiveEvent::date() const 919const QDate &EffectiveEvent::date() const
923{ 920{
924 return mDate; 921 return mDate;
925} 922}
926 923
927/*! 924/*!
928 \internal 925 \internal
929*/ 926*/
930int EffectiveEvent::length() const 927int EffectiveEvent::length() const
931{ 928{
932 return (mEnd.hour() * 60 - mStart.hour() * 60) 929 return (mEnd.hour() * 60 - mStart.hour() * 60)
933 + QABS(mStart.minute() - mEnd.minute() ); 930 + QABS(mStart.minute() - mEnd.minute() );
934} 931}
935 932
936/*! 933/*!
937 \internal 934 \internal
938*/ 935*/
939void EffectiveEvent::setDate( const QDate &dt ) 936void EffectiveEvent::setDate( const QDate &dt )
940{ 937{
941 mDate = dt; 938 mDate = dt;
942} 939}
943 940
944/*! 941/*!
945 \internal 942 \internal
946*/ 943*/
947void EffectiveEvent::setStart( const QTime &start ) 944void EffectiveEvent::setStart( const QTime &start )
948{ 945{
949 mStart = start; 946 mStart = start;
950} 947}
951 948
952/*! 949/*!
953 \internal 950 \internal
954*/ 951*/
955void EffectiveEvent::setEnd( const QTime &end ) 952void EffectiveEvent::setEnd( const QTime &end )
956{ 953{
957 mEnd = end; 954 mEnd = end;
958} 955}
959 956
960/*! 957/*!
961 \internal 958 \internal
962*/ 959*/
963void EffectiveEvent::setEvent( Event e ) 960void EffectiveEvent::setEvent( Event e )
964{ 961{
965 mEvent = e; 962 mEvent = e;
966} 963}
967 964
968/*! 965/*!
969 \internal 966 \internal
970*/ 967*/
971bool EffectiveEvent::operator<( const EffectiveEvent &e ) const 968bool EffectiveEvent::operator<( const EffectiveEvent &e ) const
972{ 969{
973 if ( mDate < e.date() ) 970 if ( mDate < e.date() )
974 return TRUE; 971 return TRUE;
975 if ( mDate == e.date() ) 972 if ( mDate == e.date() )
976 return ( mStart < e.start() ); 973 return ( mStart < e.start() );
977 else 974 else
978 return FALSE; 975 return FALSE;
979} 976}
980 977
981/*! 978/*!
982 \internal 979 \internal
983*/ 980*/
984bool EffectiveEvent::operator<=( const EffectiveEvent &e ) const 981bool EffectiveEvent::operator<=( const EffectiveEvent &e ) const
985{ 982{
986 return (mDate <= e.date() ); 983 return (mDate <= e.date() );
987} 984}
988 985
989/*! 986/*!
990 \internal 987 \internal
991*/ 988*/
992bool EffectiveEvent::operator==( const EffectiveEvent &e ) const 989bool EffectiveEvent::operator==( const EffectiveEvent &e ) const
993{ 990{
994 return ( mDate == e.date() 991 return ( mDate == e.date()
995 && mStart == e.start() 992 && mStart == e.start()
996 && mEnd == e.end() 993 && mEnd == e.end()
997 && mEvent == e.event() ); 994 && mEvent == e.event() );
998} 995}
999 996
1000/*! 997/*!
1001 \internal 998 \internal
1002*/ 999*/
1003bool EffectiveEvent::operator!=( const EffectiveEvent &e ) const 1000bool EffectiveEvent::operator!=( const EffectiveEvent &e ) const
1004{ 1001{
1005 return !(*this == e); 1002 return !(*this == e);
1006} 1003}
1007 1004
1008/*! 1005/*!