diff options
Diffstat (limited to 'kmail/redirectdialog.cpp')
-rw-r--r-- | kmail/redirectdialog.cpp | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/kmail/redirectdialog.cpp b/kmail/redirectdialog.cpp new file mode 100644 index 000000000..b81a04827 --- /dev/null +++ b/kmail/redirectdialog.cpp @@ -0,0 +1,140 @@ +/* + This file is part of KMail. + Copyright (c) 2003 Andreas Gungl <a.gungl@gmx.de> + + KMail is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + KMail is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*/ + +#include "redirectdialog.h" + +#include "kmkernel.h" +#include "kmlineeditspell.h" + +#include <libemailfunctions/email.h> +#include <addressesdialog.h> +using KPIM::AddressesDialog; +#include "recentaddresses.h" +using KRecentAddress::RecentAddresses; + +#include <kiconloader.h> +#include <klocale.h> +#include <kmessagebox.h> + +#include <qvbox.h> +#include <qhbox.h> +#include <qtooltip.h> +#include <qwhatsthis.h> +#include <qlabel.h> +#include <qpushbutton.h> +#include <qstringlist.h> + +using namespace KMail; + +RedirectDialog::RedirectDialog( QWidget *parent, const char *name, + bool modal, bool immediate ) + : KDialogBase( parent, name, modal, i18n( "Redirect Message" ), + User1|User2|Cancel, ( immediate ? User1 : User2 ), false ) +{ + QVBox *vbox = makeVBoxMainWidget(); + mLabelTo = new QLabel( i18n( "Select the recipient &addresses " + "to redirect to:" ), vbox ); + + QHBox *hbox = new QHBox( vbox ); + hbox->setSpacing(4); + mEditTo = new KMLineEdit( true, hbox, "toLine" ); + mEditTo->setMinimumWidth( 300 ); + + mBtnTo = new QPushButton( QString::null, hbox, "toBtn" ); + mBtnTo->setPixmap( BarIcon( "contents", KIcon::SizeSmall ) ); + mBtnTo->setMinimumSize( mBtnTo->sizeHint() * 1.2 ); + QToolTip::add( mBtnTo, i18n("Use the Address-Selection Dialog") ); + QWhatsThis::add( mBtnTo, i18n("This button opens a separate dialog " + "where you can select recipients out " + "of all available addresses." ) ); + + connect( mBtnTo, SIGNAL(clicked()), SLOT(slotAddrBook()) ); + + mLabelTo->setBuddy( mBtnTo ); + mEditTo->setFocus(); + + setButtonGuiItem( User1, KGuiItem( i18n("&Send Now"), "mail_send" ) ); + setButtonGuiItem( User2, KGuiItem( i18n("Send &Later"), "queue" ) ); +} + + +//----------------------------------------------------------------------------- +void RedirectDialog::slotUser1() +{ + mImmediate = true; + accept(); +} + +//----------------------------------------------------------------------------- +void RedirectDialog::slotUser2() +{ + mImmediate = false; + accept(); +} + +//----------------------------------------------------------------------------- +void RedirectDialog::accept() +{ + mResentTo = mEditTo->text(); + if ( mResentTo.isEmpty() ) { + KMessageBox::sorry( this, + i18n("You cannot redirect the message without an address."), + i18n("Empty Redirection Address") ); + } + else done( Ok ); +} + + +//----------------------------------------------------------------------------- +void RedirectDialog::slotAddrBook() +{ + AddressesDialog dlg( this ); + + mResentTo = mEditTo->text(); + if ( !mResentTo.isEmpty() ) { + QStringList lst = KPIM::splitEmailAddrList( mResentTo ); + dlg.setSelectedTo( lst ); + } + + dlg.setRecentAddresses( + RecentAddresses::self( KMKernel::config() )->kabcAddresses() ); + + // Make it impossible to specify Cc or Bcc addresses as we support + // only the Redirect-To header! + dlg.setShowCC( false ); + dlg.setShowBCC( false ); + + if (dlg.exec()==QDialog::Rejected) return; + + mEditTo->setText( dlg.to().join(", ") ); + mEditTo->setEdited( true ); +} + + +#include "redirectdialog.moc" |