summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kolistview.cpp102
1 files changed, 50 insertions, 52 deletions
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index 4c815d8..1b4397f 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -468,69 +468,55 @@ void KOListView::setCat()
468 468
469void KOListView::setAlarm() 469void KOListView::setAlarm()
470{ 470{
471 KOAlarmPrefs kap( this); 471 KOAlarmPrefs kap( this);
472 if ( !kap.exec() ) 472 if ( !kap.exec() )
473 return; 473 return;
474 QPtrList<KOListViewItem> sel ; 474 QPtrList<Incidence> delSel = getSelectedIncidences( true, true, false, true ); // no journals, only due todos
475 QListViewItem *qitem = mListView->firstChild (); 475 Incidence* inc = delSel.first();
476 while ( qitem ) {
477 if ( qitem->isSelected() ) {
478 Incidence* inc = ((KOListViewItem *) qitem)->data();
479 if ( inc->typeID() != journalID ) {
480 if ( inc->typeID() == todoID ) {
481 if ( ((Todo*)inc)->hasDueDate() )
482 sel.append(((KOListViewItem *)qitem));
483 } else
484 sel.append(((KOListViewItem *)qitem));
485 }
486 }
487 qitem = qitem->nextSibling();
488 }
489 int count = 0; 476 int count = 0;
490 KOListViewItem * item, *temp; 477 while ( inc ) {
491 item = sel.first(); 478 ++count;
492 Incidence* inc; 479 if (kap.mAlarmButton->isChecked()) {
493 while ( item ) { 480 if (inc->alarms().count() == 0)
494 inc = item->data(); 481 inc->newAlarm();
495 ++count; 482 QPtrList<Alarm> alarms = inc->alarms();
496 if (kap.mAlarmButton->isChecked()) { 483 Alarm *alarm;
497 if (inc->alarms().count() == 0) 484 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) {
498 inc->newAlarm(); 485 alarm->setEnabled(true);
499 QPtrList<Alarm> alarms = inc->alarms(); 486 int j = kap.mAlarmTimeEdit->value()* -60;
500 Alarm *alarm; 487 if (kap.mAlarmIncrCombo->currentItem() == 1)
501 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { 488 j = j * 60;
502 alarm->setEnabled(true); 489 else if (kap.mAlarmIncrCombo->currentItem() == 2)
503 int j = kap.mAlarmTimeEdit->value()* -60; 490 j = j * (60 * 24);
504 if (kap.mAlarmIncrCombo->currentItem() == 1) 491 alarm->setStartOffset( j );
505 j = j * 60; 492
506 else if (kap.mAlarmIncrCombo->currentItem() == 2) 493 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) {
507 j = j * (60 * 24); 494 alarm->setProcedureAlarm(kap.mAlarmProgram);
508 alarm->setStartOffset( j );
509
510 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) {
511 alarm->setProcedureAlarm(kap.mAlarmProgram);
512 }
513 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn())
514 alarm->setAudioAlarm(kap.mAlarmSound);
515 else
516 alarm->setType(Alarm::Invalid);
517 //alarm->setAudioAlarm("default");
518 // TODO: Deal with multiple alarms
519 break; // For now, stop after the first alarm
520 } 495 }
521 } else { 496 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn())
522 Alarm* alarm = inc->alarms().first(); 497 alarm->setAudioAlarm(kap.mAlarmSound);
523 if ( alarm ) { 498 else
524 alarm->setEnabled(false);
525 alarm->setType(Alarm::Invalid); 499 alarm->setType(Alarm::Invalid);
526 } 500 //alarm->setAudioAlarm("default");
501 // TODO: Deal with multiple alarms
502 break; // For now, stop after the first alarm
527 } 503 }
504 } else {
505 Alarm* alarm = inc->alarms().first();
506 if ( alarm ) {
507 alarm->setEnabled(false);
508 alarm->setType(Alarm::Invalid);
509 }
510 }
511 KOListViewItem* item = getItemForEvent(inc);
512 if (item) {
528 ListItemVisitor v(item, mStartDate ); 513 ListItemVisitor v(item, mStartDate );
529 inc->accept(v); 514 inc->accept(v);
530 item = sel.next(); 515 }
516 inc = delSel.next();
531 } 517 }
532 topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); 518 topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) );
533 qDebug("KO: Set alarm for %d items", count); 519 qDebug("KO: Set alarm for %d items", count);
534 calendar()->reInitAlarmSettings(); 520 calendar()->reInitAlarmSettings();
535 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 521 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
536} 522}
@@ -696,13 +682,25 @@ QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool
696 } 682 }
697 if (result == KMessageBox::Yes) 683 if (result == KMessageBox::Yes)
698 addSubTodos = true; 684 addSubTodos = true;
699 askSubTodos = false; 685 askSubTodos = false;
700 } 686 }
701 if ( addSubTodos ) { 687 if ( addSubTodos ) {
702 inc->addRelationsToList( &delSel ); 688 QPtrList<Incidence> tempSel ;
689 inc->addRelationsToList( &tempSel );
690 Incidence* tempinc = tempSel.first();
691 while ( tempinc ) {
692 if ( delSel.findRef( tempinc ) == -1 ) {
693 if ( tempinc->typeID() == todoID && onlyDueTodos ) {
694 if ( ((Todo*)tempinc)->hasDueDate() )
695 delSel.append( tempinc );
696 } else
697 delSel.append( tempinc );
698 }
699 tempinc = tempSel.next();
700 }
703 } 701 }
704 } 702 }
705 } 703 }
706 } 704 }
707 item = item->nextSibling(); 705 item = item->nextSibling();
708 } 706 }