void AlarmDialog::save( const KCalCore::Alarm::Ptr &alarm ) const { // Offsets int offset = mUi->mAlarmOffset->value() * 60; // minutes int offsetunit = mUi->mOffsetUnit->currentIndex(); if ( offsetunit >= 1 ) { offset *= 60; // hours } if ( offsetunit >= 2 ) { offset *= 24; // days } if ( offsetunit >= 3 ) { offset *= 7; // weeks } const int beforeafterpos = mUi->mBeforeAfter->currentIndex(); if ( beforeafterpos % 2 == 0 ) { // before -> negative offset = -offset; } // Note: if this triggers, fix the logic at the place causing it. It really makes // no sense to have both disabled. Q_ASSERT( mAllowBeginReminders || mAllowEndReminders ); // TODO: Add possibility to specify a given time for the reminder if ( mAllowBeginReminders && beforeafterpos == 0 ) { // before start alarm->setStartOffset( KCalCore::Duration( offset ) ); } else if ( mAllowBeginReminders && beforeafterpos == 1 ) { // after start alarm->setStartOffset( KCalCore::Duration( offset ) ); } // We assume that if mAllowBeginReminders is not set, that mAllowBeginReminders // is set. if ( !mAllowBeginReminders && beforeafterpos == 0 ) { // before end alarm->setStartOffset( KCalCore::Duration( offset ) ); } else if ( !mAllowBeginReminders && beforeafterpos == 1 ) { // after end alarm->setStartOffset( KCalCore::Duration( offset ) ); } else if ( beforeafterpos == 2 ) { // before end alarm->setStartOffset( KCalCore::Duration( offset ) ); } else if ( beforeafterpos == 3 ) { // after end alarm->setStartOffset( KCalCore::Duration( offset ) ); } if ( beforeafterpos / 2 == 0 ) { // start offset alarm->setStartOffset( KCalCore::Duration( offset ) ); } else { alarm->setEndOffset( KCalCore::Duration( offset ) ); } // Repeating if ( mUi->mRepeats->isChecked() ) { alarm->setRepeatCount( mUi->mRepeatCount->value() ); alarm->setSnoozeTime( mUi->mRepeatInterval->value() * 60 ); // convert back to seconds } else { alarm->setRepeatCount( 0 ); } if ( mUi->mTypeCombo->currentIndex() == 1 ) { // Audio alarm->setAudioAlarm( mUi->mSoundFile->url().toLocalFile() ); } else if ( mUi->mTypeCombo->currentIndex() == 2 ) { // Application / script alarm->setProcedureAlarm( mUi->mApplication->url().toLocalFile(), mUi->mAppArguments->text() ); } else if ( mUi->mTypeCombo->currentIndex() == 3 ) { // Email QStringList addresses = KPIMUtils::splitAddressList( mUi->mEmailAddress->text() ); KCalCore::Person::List add; for ( QStringList::Iterator it = addresses.begin(); it != addresses.end(); ++it ) { add << KCalCore::Person::fromFullName( *it ); } // TODO: Add a subject line and possibilities for attachments alarm->setEmailAlarm( QString(), mUi->mEmailText->toPlainText(), add ); } else { // Display alarm->setDisplayAlarm( mUi->mDisplayText->toPlainText() ); } }