Diffstat (limited to 'kabc/plugins/ldap/resourceldapconfig.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kabc/plugins/ldap/resourceldapconfig.cpp | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/kabc/plugins/ldap/resourceldapconfig.cpp b/kabc/plugins/ldap/resourceldapconfig.cpp new file mode 100644 index 0000000..2c0d030 --- a/dev/null +++ b/kabc/plugins/ldap/resourceldapconfig.cpp @@ -0,0 +1,254 @@ +/* + This file is part of libkabc. + Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +/* +Enhanced Version of the file for platform independent KDE tools. +Copyright (c) 2004 Ulf Schenk + +$Id$ +*/ + +#include <qcheckbox.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qpushbutton.h> +#include <qspinbox.h> +#include <qvbox.h> + +//US #include <kaccelmanager.h> +#include <kcombobox.h> +#include <kdebug.h> +#include <kdialogbase.h> +#include <klocale.h> +#include <klineedit.h> + +#include "resourceldap.h" + +#include "resourceldapconfig.h" + +using namespace KABC; + +ResourceLDAPConfig::ResourceLDAPConfig( QWidget* parent, const char* name ) + : KRES::ConfigWidget( parent, name ) +{ + QGridLayout *mainLayout = new QGridLayout( this, 8, 2, 0, + KDialog::spacingHint() ); + + QLabel *label = new QLabel( i18n( "User:" ), this ); + mUser = new KLineEdit( this ); + + mainLayout->addWidget( label, 0, 0 ); + mainLayout->addWidget( mUser, 0, 1 ); + + label = new QLabel( i18n( "Password:" ), this ); + mPassword = new KLineEdit( this ); + mPassword->setEchoMode( KLineEdit::Password ); + + mainLayout->addWidget( label, 1, 0 ); + mainLayout->addWidget( mPassword, 1, 1 ); + + label = new QLabel( i18n( "Host:" ), this ); + mHost = new KLineEdit( this ); + + mainLayout->addWidget( label, 2, 0 ); + mainLayout->addWidget( mHost, 2, 1 ); + + label = new QLabel( i18n( "Port:" ), this ); + QVBox *box = new QVBox( this ); + mPort = new QSpinBox( 0, 65535, 1, box ); + mPort->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) ); + mPort->setValue( 389 ); + new QWidget( box, "dummy" ); + + mainLayout->addWidget( label, 3, 0 ); + mainLayout->addWidget( box, 3, 1 ); + + label = new QLabel( i18n( "Dn:" ), this ); + mDn = new KLineEdit( this ); + + mainLayout->addWidget( label, 4, 0 ); + mainLayout->addWidget( mDn, 4, 1 ); + + label = new QLabel( i18n( "Filter:" ), this ); + mFilter = new KLineEdit( this ); + + mainLayout->addWidget( label, 5, 0 ); + mainLayout->addWidget( mFilter, 5, 1 ); + + mAnonymous = new QCheckBox( i18n( "Anonymous login" ), this ); + mainLayout->addMultiCellWidget( mAnonymous, 6, 6, 0, 1 ); + + mEditButton = new QPushButton( i18n( "Edit Attributes..." ), this ); + mainLayout->addMultiCellWidget( mEditButton, 7, 7, 0, 1 ); + + connect( mAnonymous, SIGNAL( toggled(bool) ), mUser, SLOT( setDisabled(bool) ) ); + connect( mAnonymous, SIGNAL( toggled(bool) ), mPassword, SLOT( setDisabled(bool) ) ); + connect( mEditButton, SIGNAL( clicked() ), SLOT( editAttributes() ) ); +} + +void ResourceLDAPConfig::loadSettings( KRES::Resource *res ) +{ +//US ResourceLDAP *resource = dynamic_cast<ResourceLDAP*>( res ); + ResourceLDAP *resource = (ResourceLDAP*)( res ); + + if ( !resource ) { + kdDebug(5700) << "ResourceLDAPConfig::loadSettings(): cast failed" << endl; + return; + } + + mUser->setText( resource->user() ); + mPassword->setText( resource->password() ); + mHost->setText( resource->host() ); + mPort->setValue( resource->port() ); + mDn->setText( resource->dn() ); + mFilter->setText( resource->filter() ); + mAnonymous->setChecked( resource->isAnonymous() ); + mAttributes = resource->attributes(); +} + +void ResourceLDAPConfig::saveSettings( KRES::Resource *res ) +{ +//US ResourceLDAP *resource = dynamic_cast<ResourceLDAP*>( res ); + ResourceLDAP *resource = (ResourceLDAP*)( res ); + + if ( !resource ) { + kdDebug(5700) << "ResourceLDAPConfig::saveSettings(): cast failed" << endl; + return; + } + + resource->setUser( mUser->text() ); + resource->setPassword( mPassword->text() ); + resource->setHost( mHost->text() ); + resource->setPort( mPort->value() ); + resource->setDn( mDn->text() ); + resource->setFilter( mFilter->text() ); + resource->setIsAnonymous( mAnonymous->isChecked() ); + resource->setAttributes( mAttributes ); +} + +void ResourceLDAPConfig::editAttributes() +{ + AttributesDialog dlg( mAttributes, this ); + if ( dlg.exec() ) + mAttributes = dlg.attributes(); +} + +AttributesDialog::AttributesDialog( const QMap<QString, QString> &attributes, + QWidget *parent, const char *name ) + : KDialogBase( Plain, i18n( "Attributes Configuration" ), Ok | Cancel, + Ok, parent, name, true, true ) +{ + mNameDict.setAutoDelete( true ); + mNameDict.insert( "commonName", new QString( i18n( "Common name" ) ) ); + mNameDict.insert( "formattedName", new QString( i18n( "Formatted name" ) ) ); + mNameDict.insert( "familyName", new QString( i18n( "Family name" ) ) ); + mNameDict.insert( "givenName", new QString( i18n( "Given name" ) ) ); + mNameDict.insert( "mail", new QString( i18n( "Email" ) ) ); + mNameDict.insert( "mailAlias", new QString( i18n( "Email alias" ) ) ); + mNameDict.insert( "phoneNumber", new QString( i18n( "Telephone number" ) ) ); + mNameDict.insert( "uid", new QString( i18n( "UID" ) ) ); + + // overwrite the default values here + QMap<QString, QString> kolabMap, netscapeMap, evolutionMap, outlookMap; + + // kolab + kolabMap.insert( "formattedName", "display-name" ); + kolabMap.insert( "mailAlias", "mailalias" ); + + // evolution + evolutionMap.insert( "formattedName", "fileAs" ); + + mMapList.append( attributes ); + mMapList.append( kolabMap ); + mMapList.append( netscapeMap ); + mMapList.append( evolutionMap ); + mMapList.append( outlookMap ); + + QFrame *page = plainPage(); + QGridLayout *layout = new QGridLayout( page, 2, attributes.count() + 1, + 0, spacingHint() ); + + QLabel *label = new QLabel( i18n( "Template:" ), page ); + layout->addWidget( label, 0, 0 ); + mMapCombo = new KComboBox( page ); + layout->addWidget( mMapCombo, 0, 1 ); + + mMapCombo->insertItem( i18n( "User Defined" ) ); + mMapCombo->insertItem( i18n( "Kolab" ) ); + mMapCombo->insertItem( i18n( "Netscape" ) ); + mMapCombo->insertItem( i18n( "Evolution" ) ); + mMapCombo->insertItem( i18n( "Outlook" ) ); + connect( mMapCombo, SIGNAL( activated( int ) ), SLOT( mapChanged( int ) ) ); + + QMap<QString, QString>::ConstIterator it; + int i; + for ( i = 1, it = attributes.begin(); it != attributes.end(); ++it, ++i ) { + label = new QLabel( *mNameDict[ it.key() ] + ":", page ); + KLineEdit *lineedit = new KLineEdit( page ); + mLineEditDict.insert( it.key(), lineedit ); + lineedit->setText( it.data() ); + label->setBuddy( lineedit ); + layout->addWidget( label, i, 0 ); + layout->addWidget( lineedit, i, 1 ); + } + +//US KAcceleratorManager::manage( this ); +} + +AttributesDialog::~AttributesDialog() +{ +} + +QMap<QString, QString> AttributesDialog::attributes() const +{ + QMap<QString, QString> map; + + QDictIterator<KLineEdit> it( mLineEditDict ); + for ( ; it.current(); ++it ) + map.insert( it.currentKey(), it.current()->text() ); + + return map; +} + +void AttributesDialog::mapChanged( int pos ) +{ + // default map + QMap<QString, QString> defaultMap; + defaultMap.insert( "commonName", "cn" ); + defaultMap.insert( "formattedName", "displayName" ); + defaultMap.insert( "familyName", "sn" ); + defaultMap.insert( "givenName", "givenName" ); + defaultMap.insert( "mail", "mail" ); + defaultMap.insert( "mailAlias", "" ); + defaultMap.insert( "phoneNumber", "telephoneNumber" ); + defaultMap.insert( "uid", "uid" ); + + // apply first the default and than the spezific changes + QMap<QString, QString>::Iterator it; + for ( it = defaultMap.begin(); it != defaultMap.end(); ++it ) + mLineEditDict[ it.key() ]->setText( it.data() ); + + for ( it = mMapList[ pos ].begin(); it != mMapList[ pos ].end(); ++it ) { + if ( !it.data().isEmpty() ) + mLineEditDict[ it.key() ]->setText( it.data() ); + } +} + +//US #include "resourceldapconfig.moc" |