Add an addressbook button to filter actions that take and address as argument.

svn path=/trunk/kdenetwork/kmail/; revision=99006
wilder-work
Marc Mutz 25 years ago
parent 5761bd0831
commit e98c7d72cc
  1. 54
      kmfilteraction.cpp
  2. 28
      kmfilteraction.h

@ -16,6 +16,7 @@
#include "kmsender.h"
#include "kmidentity.h"
#include "kfileio.h"
#include "kmaddrbookdlg.h" // for the button in KMFilterActionWithAddress
#include <kstddirs.h>
#include <kconfig.h>
@ -23,9 +24,11 @@
#include <kdebug.h>
#include <klocale.h>
#include <kprocess.h>
#include <kiconloader.h>
//#include <qhbox.h>
#include <qcombobox.h>
#include <qlineedit.h>
//#include <qlineedit.h>
#include <qvaluelist.h>
#include <qtl.h> // QT Template Library, needed for qHeapSort
@ -251,6 +254,41 @@ bool KMFilterActionWithFolder::folderRemoved( KMFolder* aFolder, KMFolder* aNewF
//
//=============================================================================
KMFilterActionWithAddressWidget::KMFilterActionWithAddressWidget( QWidget* parent, const char* name )
: QWidget( parent, name )
{
QHBoxLayout *hbl = new QHBoxLayout(this);
hbl->setSpacing(4);
mLineEdit = new QLineEdit(this);
hbl->addWidget( mLineEdit, 1 /*stretch*/ );
mBtn = new QPushButton( QString::null ,this );
mBtn->setPixmap( BarIcon( "contents", KIcon::SizeSmall ) );
mBtn->setFixedHeight( mLineEdit->sizeHint().height() );
hbl->addWidget( mBtn );
connect( mBtn, SIGNAL(clicked()),
this, SLOT(slotAddrBook()) );
}
void KMFilterActionWithAddressWidget::slotAddrBook()
{
KMAddrBookSelDlg dlg( kernel->addrBook() );
QString txt;
if ( dlg.exec() == QDialog::Rejected ) return;
txt = mLineEdit->text().stripWhiteSpace();
if ( !txt.isEmpty() ) {
if ( txt.right(1)[0] != ',' )
txt += ", ";
else
txt += ' ';
}
mLineEdit->setText( txt + dlg.address() );
}
KMFilterActionWithAddress::KMFilterActionWithAddress( const char* aName, const QString aLabel )
: KMFilterActionWithString( aName, aLabel )
{
@ -258,24 +296,24 @@ KMFilterActionWithAddress::KMFilterActionWithAddress( const char* aName, const Q
QWidget* KMFilterActionWithAddress::createParamWidget( QWidget* parent ) const
{
// later on this will be replaced with a line edit alongside an
// "..." button that calls the address book.
return KMFilterActionWithString::createParamWidget( parent );
KMFilterActionWithAddressWidget *w = new KMFilterActionWithAddressWidget(parent);
w->setText( mParameter );
return w;
}
void KMFilterActionWithAddress::applyParamWidgetValue( QWidget* paramWidget )
{
KMFilterActionWithString::applyParamWidgetValue( paramWidget );
mParameter = ((KMFilterActionWithAddressWidget*)paramWidget)->text();
}
void KMFilterActionWithAddress::setParamWidgetValue( QWidget* paramWidget ) const
{
KMFilterActionWithString::setParamWidgetValue( paramWidget );
((KMFilterActionWithAddressWidget*)paramWidget)->setText( mParameter );
}
void KMFilterActionWithAddress::clearParamWidget( QWidget* paramWidget ) const
{
KMFilterActionWithString::clearParamWidget( paramWidget );
((KMFilterActionWithAddressWidget*)paramWidget)->clear();
}
//=============================================================================
@ -796,3 +834,5 @@ void KMFilterActionDict::insert( KMFilterActionNewFunc aNewFunc )
delete action;
}
//------------------------------------------------
#include "kmfilteraction.moc"

@ -12,6 +12,8 @@
#include <qlist.h>
#include <qvaluelist.h>
#include <qguardedptr.h>
#include <qhbox.h>
#include <qlineedit.h>
class KMMessage;
class QWidget;
@ -512,5 +514,31 @@ private:
QList<KMFilterActionDesc> mList;
};
//=============================================================================
// The param widget for KMFilterActionWithAddress
//=============================================================================
class QPushButton;
class KMFilterActionWithAddressWidget : public QWidget
{
Q_OBJECT
public:
KMFilterActionWithAddressWidget( QWidget* parent=0, const char* name=0 );
public:
void clear() { mLineEdit->clear(); }
QString text() const { return mLineEdit->text(); }
void setText( const QString & aString ) { mLineEdit->setText( aString ); }
protected slots:
void slotAddrBook();
private:
QPushButton* mBtn;
QLineEdit* mLineEdit;
};
#endif /*kmfilteraction_h*/

Loading…
Cancel
Save