author | umopapisdn <umopapisdn> | 2003-04-12 00:22:57 (UTC) |
---|---|---|
committer | umopapisdn <umopapisdn> | 2003-04-12 00:22:57 (UTC) |
commit | 59e2de381eebb33238ee1b257736a9ae0afdbb7e (patch) (unidiff) | |
tree | b86025f2f75318aba65534048105cec36d4b7766 | |
parent | d37f3eac6b876285eb7a03ab01194ea261458ea5 (diff) | |
download | opie-59e2de381eebb33238ee1b257736a9ae0afdbb7e.zip opie-59e2de381eebb33238ee1b257736a9ae0afdbb7e.tar.gz opie-59e2de381eebb33238ee1b257736a9ae0afdbb7e.tar.bz2 |
Bugfix: (bug #0000833) Duplicating an event should also duplicate the category.
-rw-r--r-- | core/pim/datebook/datebook.cpp | 137 |
1 files changed, 58 insertions, 79 deletions
diff --git a/core/pim/datebook/datebook.cpp b/core/pim/datebook/datebook.cpp index 3e18374..1bc82a5 100644 --- a/core/pim/datebook/datebook.cpp +++ b/core/pim/datebook/datebook.cpp | |||
@@ -378,166 +378,145 @@ void DateBook::view(int v, const QDate &d) { | |||
378 | } | 378 | } |
379 | } | 379 | } |
380 | 380 | ||
381 | void DateBook::viewDefault(const QDate &d) { | 381 | void DateBook::viewDefault(const QDate &d) { |
382 | Config config("DateBook"); | 382 | Config config("DateBook"); |
383 | config.setGroup("Main"); | 383 | config.setGroup("Main"); |
384 | int current=config.readNumEntry("defaultview", DAY); | 384 | int current=config.readNumEntry("defaultview", DAY); |
385 | 385 | ||
386 | view(current,d); | 386 | view(current,d); |
387 | } | 387 | } |
388 | 388 | ||
389 | void DateBook::viewDay() { | 389 | void DateBook::viewDay() { |
390 | view(DAY,currentDate()); | 390 | view(DAY,currentDate()); |
391 | } | 391 | } |
392 | 392 | ||
393 | void DateBook::viewWeek() { | 393 | void DateBook::viewWeek() { |
394 | view(WEEK,currentDate()); | 394 | view(WEEK,currentDate()); |
395 | } | 395 | } |
396 | 396 | ||
397 | void DateBook::viewWeekLst() { | 397 | void DateBook::viewWeekLst() { |
398 | view(WEEKLST,currentDate()); | 398 | view(WEEKLST,currentDate()); |
399 | } | 399 | } |
400 | 400 | ||
401 | void DateBook::viewMonth() { | 401 | void DateBook::viewMonth() { |
402 | view(MONTH,currentDate()); | 402 | view(MONTH,currentDate()); |
403 | } | 403 | } |
404 | 404 | ||
405 | void DateBook::duplicateEvent( const Event &e ) | 405 | void DateBook::duplicateEvent( const Event &e ) |
406 | { | 406 | { |
407 | qWarning("Hmmm..."); | 407 | qWarning("Hmmm..."); |
408 | // Alot of code duplication, as this is almost like editEvent(); | 408 | // Alot of code duplication, as this is almost like editEvent(); |
409 | if (syncing) { | 409 | if (syncing) { |
410 | QMessageBox::warning( this, tr("Calendar"), | 410 | QMessageBox::warning( this, tr("Calendar"), tr( "Can not edit data, currently syncing") ); |
411 | tr( "Can not edit data, currently syncing") ); | 411 | return; |
412 | return; | ||
413 | } | 412 | } |
414 | 413 | ||
415 | Event dupevent; | 414 | Event dupevent(e);// Make a duplicate. |
416 | dupevent.setStart(e.start()); | 415 | |
417 | dupevent.setEnd(e.end()); | ||
418 | dupevent.setDescription(e.description()); | ||
419 | dupevent.setLocation(e.location()); | ||
420 | // dupevent.setCategory(e.category());// how is this done?? | ||
421 | dupevent.setNotes(e.notes()); | ||
422 | dupevent.setAllDay(e.isAllDay()); | ||
423 | dupevent.setTimeZone(e.timeZone()); | ||
424 | if(e.hasAlarm()) dupevent.setAlarm(e.alarmDelay(),e.alarmSound()); | ||
425 | if(e.hasRepeat()) dupevent.setRepeat(e.repeatPattern()); | ||
426 | |||
427 | // workaround added for text input. | 416 | // workaround added for text input. |
428 | QDialog editDlg( this, 0, TRUE ); | 417 | QDialog editDlg( this, 0, TRUE ); |
429 | DateEntry *entry; | 418 | DateEntry *entry; |
430 | editDlg.setCaption( tr("Duplicate Event") ); | 419 | editDlg.setCaption( tr("Duplicate Event") ); |
431 | QVBoxLayout *vb = new QVBoxLayout( &editDlg ); | 420 | QVBoxLayout *vb = new QVBoxLayout( &editDlg ); |
432 | QScrollView *sv = new QScrollView( &editDlg, "scrollview" ); | 421 | QScrollView *sv = new QScrollView( &editDlg, "scrollview" ); |
433 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 422 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
434 | // KLUDGE!!! | 423 | // KLUDGE!!! |
435 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); | 424 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); |
436 | vb->addWidget( sv ); | 425 | vb->addWidget( sv ); |
437 | entry = new DateEntry( onMonday, dupevent, ampm, &editDlg, "editor" ); | 426 | entry = new DateEntry( onMonday, dupevent, ampm, &editDlg, "editor" ); |
438 | entry->timezone->setEnabled( FALSE ); | 427 | entry->timezone->setEnabled( FALSE ); |
439 | sv->addChild( entry ); | 428 | sv->addChild( entry ); |
440 | 429 | ||
441 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) | 430 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) |
442 | editDlg.showMaximized(); | 431 | editDlg.showMaximized(); |
443 | #endif | 432 | #endif |
444 | while (editDlg.exec() ) { | 433 | while (editDlg.exec() ) { |
445 | Event newEv = entry->event(); | 434 | Event newEv = entry->event(); |
446 | if(newEv.description().isEmpty() && newEv.notes().isEmpty() ) | 435 | QString error = checkEvent(newEv); |
447 | break; | 436 | if (!error.isNull()) { |
448 | newEv.setUid(e.uid()); // FIXME: Hack not to clear uid | 437 | if (QMessageBox::warning(this, "error box", error, "Fix it", "Continue", 0, 0, 1) == 0) |
449 | QString error = checkEvent(newEv); | 438 | continue; |
450 | if (!error.isNull()) { | 439 | } |
451 | if (QMessageBox::warning(this, "error box", | 440 | db->addEvent(newEv); |
452 | error, "Fix it", "Continue", | 441 | emit newEvent(); |
453 | 0, 0, 1) == 0) | 442 | break; |
454 | continue; | ||
455 | } | 443 | } |
456 | db->addEvent(newEv); | ||
457 | emit newEvent(); | ||
458 | break; | ||
459 | } | ||
460 | } | 444 | } |
461 | 445 | ||
462 | void DateBook::editEvent( const Event &e ) | 446 | void DateBook::editEvent( const Event &e ) |
463 | { | 447 | { |
464 | if (syncing) { | 448 | if (syncing) { |
465 | QMessageBox::warning( this, tr("Calendar"), | 449 | QMessageBox::warning( this, tr("Calendar"), tr( "Can not edit data, currently syncing") ); |
466 | tr( "Can not edit data, currently syncing") ); | 450 | return; |
467 | return; | 451 | } |
468 | } | ||
469 | 452 | ||
470 | // workaround added for text input. | 453 | // workaround added for text input. |
471 | QDialog editDlg( this, 0, TRUE ); | 454 | QDialog editDlg( this, 0, TRUE ); |
472 | DateEntry *entry; | 455 | DateEntry *entry; |
473 | editDlg.setCaption( tr("Edit Event") ); | 456 | editDlg.setCaption( tr("Edit Event") ); |
474 | QVBoxLayout *vb = new QVBoxLayout( &editDlg ); | 457 | QVBoxLayout *vb = new QVBoxLayout( &editDlg ); |
475 | QScrollView *sv = new QScrollView( &editDlg, "scrollview" ); | 458 | QScrollView *sv = new QScrollView( &editDlg, "scrollview" ); |
476 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 459 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
477 | // KLUDGE!!! | 460 | // KLUDGE!!! |
478 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); | 461 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); |
479 | vb->addWidget( sv ); | 462 | vb->addWidget( sv ); |
480 | entry = new DateEntry( onMonday, e, ampm, &editDlg, "editor" ); | 463 | entry = new DateEntry( onMonday, e, ampm, &editDlg, "editor" ); |
481 | entry->timezone->setEnabled( FALSE ); | 464 | entry->timezone->setEnabled( FALSE ); |
482 | sv->addChild( entry ); | 465 | sv->addChild( entry ); |
483 | 466 | ||
484 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) | 467 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) |
485 | editDlg.showMaximized(); | 468 | editDlg.showMaximized(); |
486 | #endif | 469 | #endif |
487 | while (editDlg.exec() ) { | 470 | while (editDlg.exec() ) { |
488 | Event newEv = entry->event(); | 471 | Event newEv = entry->event(); |
489 | if(newEv.description().isEmpty() && newEv.notes().isEmpty() ) | 472 | if(newEv.description().isEmpty() && newEv.notes().isEmpty() ) |
490 | break; | 473 | break; |
491 | newEv.setUid(e.uid()); // FIXME: Hack not to clear uid | 474 | newEv.setUid(e.uid()); // FIXME: Hack not to clear uid |
492 | QString error = checkEvent(newEv); | 475 | QString error = checkEvent(newEv); |
493 | if (!error.isNull()) { | 476 | if (!error.isNull()) { |
494 | if (QMessageBox::warning(this, "error box", | 477 | if (QMessageBox::warning(this, "error box", error, "Fix it", "Continue", 0, 0, 1) == 0) continue; |
495 | error, "Fix it", "Continue", | ||
496 | 0, 0, 1) == 0) | ||
497 | continue; | ||
498 | } | 478 | } |
499 | db->editEvent(e, newEv); | 479 | db->editEvent(e, newEv); |
500 | emit newEvent(); | 480 | emit newEvent(); |
501 | break; | 481 | break; |
502 | } | 482 | } |
503 | } | 483 | } |
504 | 484 | ||
505 | void DateBook::removeEvent( const Event &e ) | 485 | void DateBook::removeEvent( const Event &e ) |
506 | { | 486 | { |
507 | if (syncing) { | 487 | if (syncing) { |
508 | QMessageBox::warning( this, tr("Calendar"), | 488 | QMessageBox::warning( this, tr("Calendar"), tr( "Can not edit data, currently syncing") ); |
509 | tr( "Can not edit data, currently syncing") ); | 489 | return; |
510 | return; | 490 | } |
511 | } | ||
512 | 491 | ||
513 | QString strName = e.description(); | 492 | QString strName = e.description(); |
514 | 493 | ||
515 | if ( !QPEMessageBox::confirmDelete( this, tr( "Calendar" ),strName ) ) | 494 | if ( !QPEMessageBox::confirmDelete( this, tr( "Calendar" ),strName ) ) |
516 | return; | 495 | return; |
517 | 496 | ||
518 | db->removeEvent( e ); | 497 | db->removeEvent( e ); |
519 | if ( views->visibleWidget() == dayView && dayView ) | 498 | if ( views->visibleWidget() == dayView && dayView ) |
520 | dayView->redraw(); | 499 | dayView->redraw(); |
521 | } | 500 | } |
522 | 501 | ||
523 | void DateBook::addEvent( const Event &e ) | 502 | void DateBook::addEvent( const Event &e ) |
524 | { | 503 | { |
525 | QDate d = e.start().date(); | 504 | QDate d = e.start().date(); |
526 | initDay(); | 505 | initDay(); |
527 | dayView->setDate( d ); | 506 | dayView->setDate( d ); |
528 | } | 507 | } |
529 | 508 | ||
530 | void DateBook::showDay( int year, int month, int day ) | 509 | void DateBook::showDay( int year, int month, int day ) |
531 | { | 510 | { |
532 | QDate d(year, month, day); | 511 | QDate d(year, month, day); |
533 | view(DAY,d); | 512 | view(DAY,d); |
534 | } | 513 | } |
535 | 514 | ||
536 | void DateBook::initDay() | 515 | void DateBook::initDay() |
537 | { | 516 | { |
538 | if ( !dayView ) { | 517 | if ( !dayView ) { |
539 | dayView = new DateBookDay( ampm, onMonday, db, views, "day view" ); | 518 | dayView = new DateBookDay( ampm, onMonday, db, views, "day view" ); |
540 | views->addWidget( dayView, DAY ); | 519 | views->addWidget( dayView, DAY ); |
541 | dayView->setStartViewTime( startTime ); | 520 | dayView->setStartViewTime( startTime ); |
542 | dayView->setJumpToCurTime( bJumpToCurTime ); | 521 | dayView->setJumpToCurTime( bJumpToCurTime ); |
543 | dayView->setRowStyle( rowStyle ); | 522 | dayView->setRowStyle( rowStyle ); |