00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifdef HAVE_CONFIG_H
00034 #include <config.h>
00035 #endif
00036
00037 #include "vacationdialog.h"
00038
00039 #include <kmime_header_parsing.h>
00040 using KMime::Types::AddrSpecList;
00041 using KMime::Types::AddressList;
00042 using KMime::Types::MailboxList;
00043 using KMime::HeaderParsing::parseAddressList;
00044
00045 #include <knuminput.h>
00046 #include <klocale.h>
00047 #include <kdebug.h>
00048 #include <kwin.h>
00049 #include <kapplication.h>
00050
00051 #include <qlayout.h>
00052 #include <qlabel.h>
00053 #include <qcheckbox.h>
00054 #include <qlineedit.h>
00055 #include <qtextedit.h>
00056 #include <qvalidator.h>
00057
00058 namespace KMail {
00059
00060 VacationDialog::VacationDialog( const QString & caption, QWidget * parent,
00061 const char * name, bool modal )
00062 : KDialogBase( Plain, caption, Ok|Cancel|Default, Ok, parent, name, modal )
00063 {
00064 KWin::setIcons( winId(), kapp->icon(), kapp->miniIcon() );
00065
00066 static const int rows = 7;
00067 int row = -1;
00068
00069 QGridLayout * glay = new QGridLayout( plainPage(), rows, 2, 0, spacingHint() );
00070 glay->setColStretch( 1, 1 );
00071
00072
00073 ++row;
00074 glay->addMultiCellWidget( new QLabel( i18n("Configure vacation "
00075 "notifications to be sent:"),
00076 plainPage() ), row, row, 0, 1 );
00077
00078
00079 ++row;
00080 mActiveCheck = new QCheckBox( i18n("&Activate vacation notifications"), plainPage() );
00081 glay->addMultiCellWidget( mActiveCheck, row, row, 0, 1 );
00082
00083
00084 ++row;
00085 glay->setRowStretch( row, 1 );
00086 mTextEdit = new QTextEdit( plainPage(), "mTextEdit" );
00087 mTextEdit->setTextFormat( QTextEdit::PlainText );
00088 glay->addMultiCellWidget( mTextEdit, row, row, 0, 1 );
00089
00090
00091 ++row;
00092 mIntervalSpin = new KIntSpinBox( 1, 356, 1, 7, 10, plainPage(), "mIntervalSpin" );
00093 mIntervalSpin->setSuffix( i18n(" days") );
00094 glay->addWidget( new QLabel( mIntervalSpin, i18n("&Resend notification only after:"), plainPage() ), row, 0 );
00095 glay->addWidget( mIntervalSpin, row, 1 );
00096
00097
00098 ++row;
00099 mMailAliasesEdit = new QLineEdit( plainPage(), "mMailAliasesEdit" );
00100 glay->addWidget( new QLabel( mMailAliasesEdit, i18n("&Send responses for these addresses:"), plainPage() ), row, 0 );
00101 glay->addWidget( mMailAliasesEdit, row, 1 );
00102
00103
00104 ++row;
00105 mSpamCheck = new QCheckBox( i18n("Do not send vacation replies to spam messages"), plainPage(), "mSpamCheck" );
00106 mSpamCheck->setChecked( true );
00107 glay->addMultiCellWidget( mSpamCheck, row, row, 0, 1 );
00108
00109
00110 ++row;
00111 mDomainCheck = new QCheckBox( i18n("Only react to mail coming from domain"), plainPage(), "mDomainCheck" );
00112 mDomainCheck->setChecked( false );
00113 mDomainEdit = new QLineEdit( plainPage(), "mDomainEdit" );
00114 mDomainEdit->setEnabled( false );
00115 mDomainEdit->setValidator( new QRegExpValidator( QRegExp( "[a-zA-Z0-9+-]+(?:\\.[a-zA-Z0-9+-]+)*" ), mDomainEdit ) );
00116 glay->addWidget( mDomainCheck, row, 0 );
00117 glay->addWidget( mDomainEdit, row, 1 );
00118 connect( mDomainCheck, SIGNAL(toggled(bool)),
00119 mDomainEdit, SLOT(setEnabled(bool)) );
00120
00121 Q_ASSERT( row == rows - 1 );
00122 }
00123
00124 VacationDialog::~VacationDialog() {
00125 kdDebug(5006) << "~VacationDialog()" << endl;
00126 }
00127
00128 bool VacationDialog::activateVacation() const {
00129 return mActiveCheck->isChecked();
00130 }
00131
00132 void VacationDialog::setActivateVacation( bool activate ) {
00133 mActiveCheck->setChecked( activate );
00134 }
00135
00136 QString VacationDialog::messageText() const {
00137 return mTextEdit->text().stripWhiteSpace();
00138 }
00139
00140 void VacationDialog::setMessageText( const QString & text ) {
00141 mTextEdit->setText( text );
00142 }
00143
00144 int VacationDialog::notificationInterval() const {
00145 return mIntervalSpin->value();
00146 }
00147
00148 void VacationDialog::setNotificationInterval( int days ) {
00149 mIntervalSpin->setValue( days );
00150 }
00151
00152 AddrSpecList VacationDialog::mailAliases() const {
00153 QCString text = mMailAliasesEdit->text().latin1();
00154 AddressList al;
00155 const char * s = text.begin();
00156 parseAddressList( s, text.end(), al );
00157
00158 AddrSpecList asl;
00159 for ( AddressList::const_iterator it = al.begin() ; it != al.end() ; ++it ) {
00160 const MailboxList & mbl = (*it).mailboxList;
00161 for ( MailboxList::const_iterator jt = mbl.begin() ; jt != mbl.end() ; ++jt )
00162 asl.push_back( (*jt).addrSpec );
00163 }
00164 return asl;
00165 }
00166
00167 void VacationDialog::setMailAliases( const AddrSpecList & aliases ) {
00168 QStringList sl;
00169 for ( AddrSpecList::const_iterator it = aliases.begin() ; it != aliases.end() ; ++it )
00170 sl.push_back( (*it).asString() );
00171 mMailAliasesEdit->setText( sl.join(", ") );
00172 }
00173
00174 void VacationDialog::setMailAliases( const QString & aliases ) {
00175 mMailAliasesEdit->setText( aliases );
00176 }
00177
00178 QString VacationDialog::domainName() const {
00179 return mDomainCheck->isChecked() ? mDomainEdit->text() : QString::null ;
00180 }
00181
00182 void VacationDialog::setDomainName( const QString & domain ) {
00183 mDomainEdit->setText( domain );
00184 if ( !domain.isEmpty() )
00185 mDomainCheck->setChecked( true );
00186 }
00187
00188 bool VacationDialog::sendForSpam() const {
00189 return !mSpamCheck->isChecked();
00190 }
00191
00192 void VacationDialog::setSendForSpam( bool enable ) {
00193 mSpamCheck->setChecked( !enable );
00194 }
00195
00196
00197
00198 void KMail::VacationDialog::enableDomainAndSendForSpam( bool enable ) {
00199 mDomainCheck->setEnabled( enable );
00200 mDomainEdit->setEnabled( enable );
00201 mSpamCheck->setEnabled( enable );
00202 }
00203
00204 }
00205
00206 #include "vacationdialog.moc"