summaryrefslogtreecommitdiffabout
Side-by-side diff
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
@@ -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();
+ }
}
}
}
}