You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.2 KiB
78 lines
2.2 KiB
/* |
|
identitycombo.cpp |
|
|
|
KMail, the KDE mail client. |
|
Copyright (c) 2002 the KMail authors. |
|
See file AUTHORS for details |
|
|
|
This program is free software; you can redistribute it and/or |
|
modify it under the terms of the GNU General Public License, |
|
version 2.0, as published by the Free Software Foundation. |
|
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US |
|
*/ |
|
|
|
#include "identitycombo.h" |
|
|
|
#include "kmidentity.h" |
|
#include "identitymanager.h" |
|
#include "kmkernel.h" |
|
|
|
#include <klocale.h> |
|
|
|
#include <qstringlist.h> |
|
#include <qstring.h> |
|
|
|
#include "assert.h" |
|
|
|
IdentityCombo::IdentityCombo( QWidget * parent, const char * name ) |
|
: QComboBox( false, parent, name ) |
|
{ |
|
reloadCombo(); |
|
connect( this, SIGNAL(activated(int)), SLOT(slotEmitChanged(int)) ); |
|
connect( kernel->identityManager(), SIGNAL(changed()), |
|
SLOT(slotIdentityManagerChanged()) ); |
|
} |
|
|
|
QString IdentityCombo::currentIdentity() const { |
|
return kernel->identityManager()->identities()[ currentItem() ]; |
|
} |
|
|
|
void IdentityCombo::setCurrentIdentity( const KMIdentity & identity ) { |
|
setCurrentIdentity( identity.identityName() ); |
|
} |
|
|
|
void IdentityCombo::setCurrentIdentity( const QString & name ) { |
|
int idx = kernel->identityManager()->identities().findIndex( name ); |
|
if ( idx < 0 ) return; |
|
setCurrentItem( idx ); |
|
slotEmitChanged( idx ); |
|
} |
|
|
|
void IdentityCombo::reloadCombo() { |
|
QStringList identities = kernel->identityManager()->identities(); |
|
assert( !identities.isEmpty() ); |
|
// the IM should prevent this from happening: |
|
identities.first() = i18n("%1 (Default)").arg( identities.first() ); |
|
int idx = identities.findIndex( currentText() ); |
|
clear(); |
|
insertStringList( identities ); |
|
setCurrentItem( idx >= 0 ? idx : 0 ); |
|
} |
|
|
|
|
|
void IdentityCombo::slotIdentityManagerChanged() { |
|
QString oldIdentity = currentText(); |
|
blockSignals( true ); |
|
reloadCombo(); |
|
blockSignals( false ); |
|
if ( currentText() != oldIdentity ) |
|
slotEmitChanged( currentItem() ); |
|
} |
|
|
|
void IdentityCombo::slotEmitChanged( int idx ) { |
|
emit identityChanged( kernel->identityManager()->identities()[idx] ); |
|
} |
|
|
|
#include "identitycombo.moc"
|
|
|