void AlarmDialog::load( const KCalCore::Alarm::Ptr &alarm ) { if ( !alarm ) { return; } setWindowTitle( i18n( "Edit existing reminder" ) ); // Offsets int offset; int beforeafterpos = 0; if ( alarm->hasEndOffset() ) { beforeafterpos = 2; offset = alarm->endOffset().asSeconds(); } else { // TODO: Also allow alarms at fixed times, not relative to start/end offset = alarm->startOffset().asSeconds(); } // Negative offset means before the start/end... if ( offset < 0 ) { offset = -offset; } else { ++beforeafterpos; } mUi->mBeforeAfter->setCurrentIndex( beforeafterpos ); offset = offset / 60; // make minutes int useoffset = offset; if ( offset % ( 24 * 60 ) == 0 && offset > 0 ) { // divides evenly into days? useoffset = offset / ( 24 * 60 ); mUi->mOffsetUnit->setCurrentIndex( 2 ); } else if ( offset % 60 == 0 && offset > 0 ) { // divides evenly into hours? useoffset = offset / 60; mUi->mOffsetUnit->setCurrentIndex( 1 ); } else { useoffset = offset; mUi->mOffsetUnit->setCurrentIndex( 0 ); } mUi->mAlarmOffset->setValue( useoffset ); // Repeating mUi->mRepeats->setChecked( alarm->repeatCount() > 0 ); if ( alarm->repeatCount() > 0 ) { mUi->mRepeatCount->setValue( alarm->repeatCount() ); mUi->mRepeatInterval->setValue( alarm->snoozeTime().asSeconds() / 60 ); // show as minutes } int id = 0; switch ( alarm->type() ) { case KCalCore::Alarm::Audio: mUi->mTypeCombo->setCurrentIndex( 1 ); mUi->mSoundFile->setUrl( alarm->audioFile() ); id = 1; break; case KCalCore::Alarm::Procedure: mUi->mTypeCombo->setCurrentIndex( 2 ); mUi->mApplication->setUrl( alarm->programFile() ); mUi->mAppArguments->setText( alarm->programArguments() ); id = 2; break; case KCalCore::Alarm::Email: { mUi->mTypeCombo->setCurrentIndex( 3 ); KCalCore::Person::List addresses = alarm->mailAddresses(); QStringList add; for ( KCalCore::Person::List::ConstIterator it = addresses.constBegin(); it != addresses.constEnd(); ++it ) { add << (*it)->fullName(); } mUi->mEmailAddress->setText( add.join( ", " ) ); mUi->mEmailText->setPlainText( alarm->mailText() ); id = 3; break; } case KCalCore::Alarm::Display: case KCalCore::Alarm::Invalid: default: mUi->mTypeCombo->setCurrentIndex( 0 ); mUi->mDisplayText->setPlainText( alarm->text() ); break; } mUi->mTypeStack->setCurrentIndex( id ); if ( alarm->audioFile().isEmpty() && IncidenceEditorNG::EditorConfig::instance()->defaultAudioFileReminders() ) { mUi->mSoundFile->setUrl( IncidenceEditorNG::EditorConfig::instance()->audioFilePath() ); } }