-rw-r--r-- | korganizer/kolistview.cpp | 102 |
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 @@ -470,65 +470,51 @@ void KOListView::setAlarm() { KOAlarmPrefs kap( this); if ( !kap.exec() ) return; - QPtrList<KOListViewItem> sel ; - QListViewItem *qitem = mListView->firstChild (); - while ( qitem ) { - if ( qitem->isSelected() ) { - Incidence* inc = ((KOListViewItem *) qitem)->data(); - if ( inc->typeID() != journalID ) { - if ( inc->typeID() == todoID ) { - if ( ((Todo*)inc)->hasDueDate() ) - sel.append(((KOListViewItem *)qitem)); - } else - sel.append(((KOListViewItem *)qitem)); - } - } - qitem = qitem->nextSibling(); - } + QPtrList<Incidence> delSel = getSelectedIncidences( true, true, false, true ); // no journals, only due todos + Incidence* inc = delSel.first(); int count = 0; - KOListViewItem * item, *temp; - item = sel.first(); - Incidence* inc; - while ( item ) { - inc = item->data(); - ++count; - if (kap.mAlarmButton->isChecked()) { - if (inc->alarms().count() == 0) - inc->newAlarm(); - QPtrList<Alarm> alarms = inc->alarms(); - Alarm *alarm; - for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { - alarm->setEnabled(true); - int j = kap.mAlarmTimeEdit->value()* -60; - if (kap.mAlarmIncrCombo->currentItem() == 1) - j = j * 60; - else if (kap.mAlarmIncrCombo->currentItem() == 2) - j = j * (60 * 24); - alarm->setStartOffset( j ); - - if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { - alarm->setProcedureAlarm(kap.mAlarmProgram); - } - else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) - alarm->setAudioAlarm(kap.mAlarmSound); - else - alarm->setType(Alarm::Invalid); - //alarm->setAudioAlarm("default"); - // TODO: Deal with multiple alarms - break; // For now, stop after the first alarm + while ( inc ) { + ++count; + if (kap.mAlarmButton->isChecked()) { + if (inc->alarms().count() == 0) + inc->newAlarm(); + QPtrList<Alarm> alarms = inc->alarms(); + Alarm *alarm; + for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { + alarm->setEnabled(true); + int j = kap.mAlarmTimeEdit->value()* -60; + if (kap.mAlarmIncrCombo->currentItem() == 1) + j = j * 60; + else if (kap.mAlarmIncrCombo->currentItem() == 2) + j = j * (60 * 24); + alarm->setStartOffset( j ); + + if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { + alarm->setProcedureAlarm(kap.mAlarmProgram); } - } else { - Alarm* alarm = inc->alarms().first(); - if ( alarm ) { - alarm->setEnabled(false); + else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) + alarm->setAudioAlarm(kap.mAlarmSound); + else alarm->setType(Alarm::Invalid); - } + //alarm->setAudioAlarm("default"); + // TODO: Deal with multiple alarms + break; // For now, stop after the first alarm } + } else { + Alarm* alarm = inc->alarms().first(); + if ( alarm ) { + alarm->setEnabled(false); + alarm->setType(Alarm::Invalid); + } + } + KOListViewItem* item = getItemForEvent(inc); + if (item) { ListItemVisitor v(item, mStartDate ); inc->accept(v); - item = sel.next(); + } + inc = delSel.next(); } topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); qDebug("KO: Set alarm for %d items", count); calendar()->reInitAlarmSettings(); @@ -698,9 +684,21 @@ QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool addSubTodos = true; askSubTodos = false; } if ( addSubTodos ) { - inc->addRelationsToList( &delSel ); + QPtrList<Incidence> tempSel ; + inc->addRelationsToList( &tempSel ); + Incidence* tempinc = tempSel.first(); + while ( tempinc ) { + if ( delSel.findRef( tempinc ) == -1 ) { + if ( tempinc->typeID() == todoID && onlyDueTodos ) { + if ( ((Todo*)tempinc)->hasDueDate() ) + delSel.append( tempinc ); + } else + delSel.append( tempinc ); + } + tempinc = tempSel.next(); + } } } } } |