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 /core/pim/datebook | |
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 | |||
@@ -408,106 +408,85 @@ void DateBook::duplicateEvent( const Event &e ) | |||
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(); |