00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "ldapconfigwidget.h"
00022 #include "ldapsearch.h"
00023
00024 #include <kacceleratormanager.h>
00025 #include <kprogressdialog.h>
00026 #include <kcombobox.h>
00027 #include <kdebug.h>
00028 #include <klocale.h>
00029 #include <klineedit.h>
00030 #include <kmessagebox.h>
00031
00032 #include <QtCore/QObject>
00033 #include <QtGui/QCheckBox>
00034 #include <QtGui/QGroupBox>
00035 #include <QtGui/QLabel>
00036 #include <QtGui/QLayout>
00037 #include <QtGui/QPushButton>
00038 #include <QtGui/QRadioButton>
00039 #include <QtGui/QSpinBox>
00040
00041 using namespace KLDAP;
00042
00043 class LdapConfigWidget::Private
00044 {
00045 public:
00046 Private( LdapConfigWidget *parent )
00047 : mParent( parent ), mFeatures( W_ALL ), mProg( 0 )
00048 {
00049 mainLayout = new QGridLayout( mParent );
00050 mainLayout->setMargin( 0 );
00051 mainLayout->setSpacing( KDialog::spacingHint() );
00052 }
00053
00054 void setLDAPPort();
00055 void setLDAPSPort();
00056 void setAnonymous( bool on );
00057 void setSimple( bool on );
00058 void setSASL( bool on );
00059 void queryDNClicked();
00060 void queryMechClicked();
00061 void loadData( LdapSearch *search, const LdapObject &object );
00062 void loadResult( LdapSearch *search );
00063 void sendQuery();
00064 void initWidget();
00065
00066 LdapConfigWidget *mParent;
00067 WinFlags mFeatures;
00068 QStringList mQResult;
00069 QString mAttr;
00070
00071 KLineEdit *mUser;
00072 KLineEdit *mPassword;
00073 KLineEdit *mHost;
00074 QSpinBox *mPort, *mVersion, *mSizeLimit, *mTimeLimit, *mPageSize;
00075 KLineEdit *mDn, *mBindDn, *mRealm;
00076 KLineEdit *mFilter;
00077 QRadioButton *mAnonymous,*mSimple,*mSASL;
00078 QCheckBox *mSubTree;
00079 QPushButton *mEditButton;
00080 QPushButton *mQueryMech;
00081 QRadioButton *mSecNo,*mSecTLS,*mSecSSL;
00082 KComboBox *mMech;
00083
00084 bool mCancelled;
00085 KProgressDialog *mProg;
00086
00087 QGridLayout *mainLayout;
00088 };
00089
00090 void LdapConfigWidget::Private::initWidget()
00091 {
00092 QLabel *label;
00093
00094 mUser = mPassword = mHost = mDn = mBindDn = mRealm = mFilter = 0;
00095 mPort = mVersion = mTimeLimit = mSizeLimit = 0;
00096 mAnonymous = mSimple = mSASL = mSecNo = mSecTLS = mSecSSL = 0;
00097 mEditButton = mQueryMech = 0;
00098 mPageSize = 0;
00099 mMech = 0;
00100 int row = 0;
00101 int col;
00102
00103 if ( mFeatures & W_USER ) {
00104 label = new QLabel( i18n( "User:" ), mParent );
00105 mUser = new KLineEdit( mParent );
00106 mUser->setObjectName( "kcfg_ldapuser" );
00107
00108 mainLayout->addWidget( label, row, 0 );
00109 mainLayout->addWidget( mUser, row, 1, 1, 3 );
00110 row++;
00111 }
00112
00113 if ( mFeatures & W_BINDDN ) {
00114 label = new QLabel( i18n( "Bind DN:" ), mParent );
00115 mBindDn = new KLineEdit( mParent );
00116 mBindDn->setObjectName( "kcfg_ldapbinddn" );
00117
00118 mainLayout->addWidget( label, row, 0 );
00119 mainLayout->addWidget( mBindDn, row, 1, 1, 3 );
00120 row++;
00121 }
00122
00123 if ( mFeatures & W_REALM ) {
00124 label = new QLabel( i18n( "Realm:" ), mParent );
00125 mRealm = new KLineEdit( mParent );
00126 mRealm->setObjectName( "kcfg_ldaprealm" );
00127
00128 mainLayout->addWidget( label, row, 0 );
00129 mainLayout->addWidget( mRealm, row, 1, 1, 3 );
00130 row++;
00131 }
00132
00133 if ( mFeatures & W_PASS ) {
00134 label = new QLabel( i18n( "Password:" ), mParent );
00135 mPassword = new KLineEdit( mParent );
00136 mPassword->setObjectName( "kcfg_ldappassword" );
00137 mPassword->setEchoMode( KLineEdit::Password );
00138
00139 mainLayout->addWidget( label, row, 0 );
00140 mainLayout->addWidget( mPassword, row, 1, 1, 3 );
00141 row++;
00142 }
00143
00144 if ( mFeatures & W_HOST ) {
00145 label = new QLabel( i18n( "Host:" ), mParent );
00146 mHost = new KLineEdit( mParent );
00147 mHost->setObjectName( "kcfg_ldaphost" );
00148
00149 mainLayout->addWidget( label, row, 0 );
00150 mainLayout->addWidget( mHost, row, 1, 1, 3 );
00151 row++;
00152 }
00153
00154 col = 0;
00155 if ( mFeatures & W_PORT ) {
00156 label = new QLabel( i18n( "Port:" ), mParent );
00157 mPort = new QSpinBox( mParent );
00158 mPort->setRange( 0, 65535 );
00159 mPort->setObjectName( "kcfg_ldapport" );
00160 mPort->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) );
00161 mPort->setValue( 389 );
00162
00163 mainLayout->addWidget( label, row, col );
00164 mainLayout->addWidget( mPort, row, col+1 );
00165 col += 2;
00166 }
00167
00168 if ( mFeatures & W_VER ) {
00169 label = new QLabel( i18n( "LDAP version:" ), mParent );
00170 mVersion = new QSpinBox( mParent );
00171 mVersion->setRange( 2, 3 );
00172 mVersion->setObjectName( "kcfg_ldapver" );
00173 mVersion->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) );
00174 mVersion->setValue( 3 );
00175 mainLayout->addWidget( label, row, col );
00176 mainLayout->addWidget( mVersion, row, col+1 );
00177 }
00178 if ( mFeatures & ( W_PORT | W_VER ) ) {
00179 row++;
00180 }
00181
00182 col = 0;
00183 if ( mFeatures & W_SIZELIMIT ) {
00184 label = new QLabel( i18n( "Size limit:" ), mParent );
00185 mSizeLimit = new QSpinBox( mParent );
00186 mSizeLimit->setRange( 0, 9999999 );
00187 mSizeLimit->setObjectName( "kcfg_ldapsizelimit" );
00188 mSizeLimit->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) );
00189 mSizeLimit->setValue( 0 );
00190 mSizeLimit->setSpecialValueText( i18nc( "default ldap size limit", "Default" ) );
00191 mainLayout->addWidget( label, row, col );
00192 mainLayout->addWidget( mSizeLimit, row, col+1 );
00193 col += 2;
00194 }
00195
00196 if ( mFeatures & W_TIMELIMIT ) {
00197 label = new QLabel( i18n( "Time limit:" ), mParent );
00198 mTimeLimit = new QSpinBox( mParent );
00199 mTimeLimit->setRange( 0, 9999999 );
00200 mTimeLimit->setObjectName( "kcfg_ldaptimelimit" );
00201 mTimeLimit->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) );
00202 mTimeLimit->setValue( 0 );
00203 mTimeLimit->setSuffix( i18n( " sec" ) );
00204 mTimeLimit->setSpecialValueText( i18nc( "default ldap time limit", "Default" ) );
00205 mainLayout->addWidget( label, row, col );
00206 mainLayout->addWidget( mTimeLimit, row, col+1 );
00207 }
00208 if ( mFeatures & ( W_SIZELIMIT | W_TIMELIMIT ) ) {
00209 row++;
00210 }
00211
00212 if ( mFeatures & W_PAGESIZE ) {
00213 label = new QLabel( i18n( "Page size:" ), mParent );
00214 mPageSize = new QSpinBox( mParent );
00215 mPageSize->setRange( 0, 9999999 );
00216 mPageSize->setObjectName( "kcfg_ldappagesize" );
00217 mPageSize->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) );
00218 mPageSize->setValue( 0 );
00219 mPageSize->setSpecialValueText( i18n( "No paging" ) );
00220 mainLayout->addWidget( label, row, 0 );
00221 mainLayout->addWidget( mPageSize, row++, 1 );
00222 }
00223
00224 if ( mFeatures & W_DN ) {
00225 label = new QLabel( i18nc( "Distinguished Name", "DN:" ), mParent );
00226 mDn = new KLineEdit( mParent );
00227 mDn->setObjectName( "kcfg_ldapdn" );
00228
00229 mainLayout->addWidget( label, row, 0 );
00230 mainLayout->addWidget( mDn, row, 1, 1, 1 );
00231
00232 if ( mHost ) {
00233 QPushButton *dnquery = new QPushButton( i18n( "Query Server" ), mParent );
00234 connect( dnquery, SIGNAL( clicked() ), mParent, SLOT( queryDNClicked() ) );
00235 mainLayout->addWidget( dnquery, row, 2, 1, 1 );
00236 }
00237 row++;
00238 }
00239
00240 if ( mFeatures & W_FILTER ) {
00241 label = new QLabel( i18n( "Filter:" ), mParent );
00242 mFilter = new KLineEdit( mParent );
00243 mFilter->setObjectName( "kcfg_ldapfilter" );
00244
00245 mainLayout->addWidget( label, row, 0 );
00246 mainLayout->addWidget( mFilter, row, 1, 1, 3 );
00247 row++;
00248 }
00249
00250 if ( mFeatures & W_SECBOX ) {
00251 QGroupBox *btgroup = new QGroupBox( i18n( "Security" ), mParent );
00252 QHBoxLayout *hbox = new QHBoxLayout;
00253 btgroup->setLayout( hbox );
00254 mSecNo = new QRadioButton( i18nc( "@option:radio set no security", "No" ), btgroup );
00255 mSecNo->setObjectName( "kcfg_ldapnosec" );
00256 hbox->addWidget( mSecNo );
00257 mSecTLS = new QRadioButton( i18nc( "@option:radio use TLS security", "TLS" ), btgroup );
00258 mSecTLS->setObjectName( "kcfg_ldaptls" );
00259 hbox->addWidget( mSecTLS );
00260 mSecSSL = new QRadioButton( i18nc( "@option:radio use SSL security", "SSL" ), btgroup );
00261 mSecSSL->setObjectName( "kcfg_ldapssl" );
00262 hbox->addWidget( mSecSSL );
00263 mainLayout->addWidget( btgroup, row, 0, 1, 4 );
00264
00265 connect( mSecNo, SIGNAL( clicked() ), mParent, SLOT( setLDAPPort() ) );
00266 connect( mSecTLS, SIGNAL( clicked() ), mParent, SLOT( setLDAPPort() ) );
00267 connect( mSecSSL, SIGNAL( clicked() ), mParent, SLOT( setLDAPSPort( ) ) );
00268
00269 mSecNo->setChecked( true );
00270 row++;
00271 }
00272
00273 if ( mFeatures & W_AUTHBOX ) {
00274
00275 QGroupBox *authbox =
00276 new QGroupBox( i18n( "Authentication" ), mParent );
00277 QVBoxLayout *vbox = new QVBoxLayout;
00278 authbox->setLayout( vbox );
00279 QHBoxLayout *hbox = new QHBoxLayout;
00280 vbox->addLayout( hbox );
00281
00282 mAnonymous =
00283 new QRadioButton( i18nc( "@option:radio anonymous authentication", "Anonymous" ), authbox );
00284 mAnonymous->setObjectName( "kcfg_ldapanon" );
00285 hbox->addWidget( mAnonymous );
00286 mSimple =
00287 new QRadioButton( i18nc( "@option:radio simple authentication", "Simple" ), authbox );
00288 mSimple->setObjectName( "kcfg_ldapsimple" );
00289 hbox->addWidget( mSimple );
00290 mSASL =
00291 new QRadioButton( i18nc( "@option:radio SASL authentication", "SASL" ), authbox );
00292 mSASL->setObjectName( "kcfg_ldapsasl" );
00293 hbox->addWidget( mSASL );
00294
00295 hbox = new QHBoxLayout;
00296 vbox->addLayout( hbox );
00297 label = new QLabel( i18n( "SASL mechanism:" ), authbox );
00298 hbox->addWidget( label );
00299 mMech = new KComboBox( false, authbox );
00300 mMech->setObjectName( "kcfg_ldapsaslmech" );
00301 mMech->setEditable( true );
00302 mMech->addItem( "DIGEST-MD5" );
00303 mMech->addItem( "GSSAPI" );
00304 mMech->addItem( "PLAIN" );
00305 hbox->addWidget( mMech );
00306
00307
00308 if ( mHost ) {
00309 mQueryMech = new QPushButton( i18n( "Query Server" ), authbox );
00310 hbox->addWidget( mQueryMech );
00311 connect( mQueryMech, SIGNAL( clicked() ), mParent, SLOT( queryMechClicked() ) );
00312 }
00313
00314 mainLayout->addWidget( authbox, row, 0, 2, 4 );
00315
00316 connect( mAnonymous, SIGNAL( toggled( bool ) ), mParent, SLOT( setAnonymous( bool ) ) );
00317 connect( mSimple, SIGNAL( toggled( bool ) ), mParent, SLOT( setSimple( bool ) ) );
00318 connect( mSASL, SIGNAL( toggled( bool ) ), mParent, SLOT( setSASL( bool ) ) );
00319
00320 mAnonymous->setChecked( true );
00321 }
00322 }
00323
00324 void LdapConfigWidget::Private::sendQuery()
00325 {
00326 LdapUrl _url;
00327
00328 mQResult.clear();
00329 mCancelled = true;
00330
00331 _url.setProtocol( ( mSecSSL && mSecSSL->isChecked() ) ? "ldaps" : "ldap" );
00332 if ( mHost ) {
00333 _url.setHost( mHost->text() );
00334 }
00335 if ( mPort ) {
00336 _url.setPort( mPort->value() );
00337 }
00338 _url.setDn( LdapDN( "" ) );
00339 _url.setAttributes( QStringList( mAttr ) );
00340 _url.setScope( LdapUrl::Base );
00341 if ( mVersion ) {
00342 _url.setExtension( "x-ver", QString::number( mVersion->value() ) );
00343 }
00344 if ( mSecTLS && mSecTLS->isChecked() ) {
00345 _url.setExtension( "x-tls", "" );
00346 }
00347
00348 kDebug() << "sendQuery url:" << _url.prettyUrl();
00349
00350 LdapSearch search;
00351 connect( &search, SIGNAL( data( KLDAP::LdapSearch*, const KLDAP::LdapObject& ) ),
00352 mParent, SLOT( loadData( KLDAP::LdapSearch*, const KLDAP::LdapObject& ) ) );
00353 connect( &search, SIGNAL( result( KLDAP::LdapSearch* ) ),
00354 mParent, SLOT( loadResult( KLDAP::LdapSearch* ) ) );
00355
00356 if ( !search.search( _url ) ) {
00357 KMessageBox::error( mParent, search.errorString() );
00358 return;
00359 }
00360
00361 if ( mProg == 0 ) {
00362 mProg = new KProgressDialog( mParent );
00363 mProg->setWindowTitle( i18n( "LDAP Query" ) );
00364 mProg->setModal( true );
00365 }
00366 mProg->setLabelText( _url.prettyUrl() );
00367 mProg->progressBar()->setRange( 0, 1 );
00368 mProg->progressBar()->setValue( 0 );
00369 mProg->exec();
00370 if ( mCancelled ) {
00371 kDebug() << "query canceled!";
00372 search.abandon();
00373 } else {
00374 if ( search.error() ) {
00375 KMessageBox::error( mParent, search.errorString() );
00376 }
00377 }
00378 }
00379
00380 void LdapConfigWidget::Private::queryMechClicked()
00381 {
00382 mAttr = "supportedsaslmechanisms";
00383 sendQuery();
00384 if ( !mQResult.isEmpty() ) {
00385 mQResult.sort();
00386 mMech->clear();
00387 mMech->addItems( mQResult );
00388 }
00389 }
00390
00391 void LdapConfigWidget::Private::queryDNClicked()
00392 {
00393 mAttr = "namingcontexts";
00394 sendQuery();
00395 if ( !mQResult.isEmpty() ) {
00396 mDn->setText( mQResult.first() );
00397 }
00398 }
00399
00400 void LdapConfigWidget::Private::loadData( LdapSearch *, const LdapObject &object )
00401 {
00402 kDebug() << "object:" << object.toString();
00403 mProg->progressBar()->setValue( mProg->progressBar()->value() + 1 );
00404 for ( LdapAttrMap::ConstIterator it = object.attributes().constBegin();
00405 it != object.attributes().constEnd(); ++it ) {
00406 for ( LdapAttrValue::ConstIterator it2 = (*it).constBegin();
00407 it2 != (*it).constEnd(); ++it2 ) {
00408 mQResult.push_back( QString::fromUtf8( *it2 ) );
00409 }
00410 }
00411 }
00412
00413 void LdapConfigWidget::Private::loadResult( LdapSearch *search )
00414 {
00415 Q_UNUSED( search );
00416 mCancelled = false;
00417 mProg->close();
00418 }
00419
00420 void LdapConfigWidget::Private::setAnonymous( bool on )
00421 {
00422 if ( !on ) {
00423 return;
00424 }
00425 if ( mUser ) {
00426 mUser->setEnabled( false );
00427 }
00428 if ( mPassword ) {
00429 mPassword->setEnabled( false );
00430 }
00431 if ( mBindDn ) {
00432 mBindDn->setEnabled( false );
00433 }
00434 if ( mRealm ) {
00435 mRealm->setEnabled( false );
00436 }
00437 if ( mMech ) {
00438 mMech->setEnabled( false );
00439 }
00440 if ( mQueryMech ) {
00441 mQueryMech->setEnabled( false );
00442 }
00443 }
00444
00445 void LdapConfigWidget::Private::setSimple( bool on )
00446 {
00447 if ( !on ) {
00448 return;
00449 }
00450 if ( mUser ) {
00451 mUser->setEnabled( false );
00452 }
00453 if ( mPassword ) {
00454 mPassword->setEnabled( true );
00455 }
00456 if ( mBindDn ) {
00457 mBindDn->setEnabled( true );
00458 }
00459 if ( mRealm ) {
00460 mRealm->setEnabled( false );
00461 }
00462 if ( mMech ) {
00463 mMech->setEnabled( false );
00464 }
00465 if ( mQueryMech ) {
00466 mQueryMech->setEnabled( false );
00467 }
00468 }
00469
00470 void LdapConfigWidget::Private::setSASL( bool on )
00471 {
00472 if ( !on ) {
00473 return;
00474 }
00475 if ( mUser ) {
00476 mUser->setEnabled( true );
00477 }
00478 if ( mPassword ) {
00479 mPassword->setEnabled( true );
00480 }
00481 if ( mBindDn ) {
00482 mBindDn->setEnabled( true );
00483 }
00484 if ( mRealm ) {
00485 mRealm->setEnabled( true );
00486 }
00487 if ( mMech ) {
00488 mMech->setEnabled( true );
00489 }
00490 if ( mQueryMech ) {
00491 mQueryMech->setEnabled( true );
00492 }
00493 }
00494
00495 void LdapConfigWidget::Private::setLDAPPort()
00496 {
00497 mPort->setValue( 389 );
00498 }
00499
00500 void LdapConfigWidget::Private::setLDAPSPort()
00501 {
00502 mPort->setValue( 636 );
00503 }
00504
00505 LdapConfigWidget::LdapConfigWidget( QWidget *parent, Qt::WFlags fl )
00506 : QWidget( parent, fl ), d( new Private( this ) )
00507 {
00508 }
00509
00510 LdapConfigWidget::LdapConfigWidget( LdapConfigWidget::WinFlags flags,
00511 QWidget *parent, Qt::WFlags fl )
00512 : QWidget( parent, fl ), d( new Private( this ) )
00513 {
00514 d->mFeatures = flags;
00515
00516 d->initWidget();
00517 }
00518
00519 LdapConfigWidget::~LdapConfigWidget()
00520 {
00521 delete d;
00522 }
00523
00524 LdapUrl LdapConfigWidget::url() const
00525 {
00526 return server().url();
00527 }
00528
00529 void LdapConfigWidget::setUrl( const LdapUrl &url )
00530 {
00531 LdapServer _server;
00532 _server.setUrl( url );
00533 setServer( _server );
00534 }
00535
00536 LdapServer LdapConfigWidget::server() const
00537 {
00538 LdapServer _server;
00539 if ( d->mSecSSL && d->mSecSSL->isChecked() ) {
00540 _server.setSecurity( LdapServer::SSL );
00541 } else if ( d->mSecTLS && d->mSecTLS->isChecked() ) {
00542 _server.setSecurity( LdapServer::TLS );
00543 } else {
00544 _server.setSecurity( LdapServer::None );
00545 }
00546
00547 if ( d->mUser ) {
00548 _server.setUser( d->mUser->text() );
00549 }
00550 if ( d->mBindDn ) {
00551 _server.setBindDn( d->mBindDn->text() );
00552 }
00553 if ( d->mPassword ) {
00554 _server.setPassword( d->mPassword->text() );
00555 }
00556 if ( d->mRealm ) {
00557 _server.setRealm( d->mRealm->text() );
00558 }
00559 if ( d->mHost ) {
00560 _server.setHost( d->mHost->text() );
00561 }
00562 if ( d->mPort ) {
00563 _server.setPort( d->mPort->value() );
00564 }
00565 if ( d->mDn ) {
00566 _server.setBaseDn( LdapDN( d->mDn->text() ) );
00567 }
00568 if ( d->mFilter ) {
00569 _server.setFilter( d->mFilter->text() );
00570 }
00571 if ( d->mVersion ) {
00572 _server.setVersion( d->mVersion->value() );
00573 }
00574 if ( d->mSizeLimit && d->mSizeLimit->value() != 0 ) {
00575 _server.setSizeLimit( d->mSizeLimit->value() );
00576 }
00577 if ( d->mTimeLimit && d->mTimeLimit->value() != 0 ) {
00578 _server.setTimeLimit( d->mTimeLimit->value() );
00579 }
00580 if ( d->mPageSize && d->mPageSize->value() != 0 ) {
00581 _server.setPageSize( d->mPageSize->value() );
00582 }
00583 if ( d->mAnonymous && d->mAnonymous->isChecked() ) {
00584 _server.setAuth( LdapServer::Anonymous );
00585 } else if ( d->mSimple && d->mSimple->isChecked() ) {
00586 _server.setAuth( LdapServer::Simple );
00587 } else if ( d->mSASL && d->mSASL->isChecked() ) {
00588 _server.setAuth( LdapServer::SASL );
00589 _server.setMech( d->mMech->currentText() );
00590 }
00591 return _server;
00592 }
00593
00594 void LdapConfigWidget::setServer( const LdapServer &server )
00595 {
00596 switch ( server.security() ) {
00597 case LdapServer::SSL:
00598 if ( d->mSecSSL ) {
00599 d->mSecSSL->setChecked( true );
00600 }
00601 case LdapServer::TLS:
00602 if ( d->mSecTLS ) {
00603 d->mSecTLS->setChecked( true );
00604 }
00605 case LdapServer::None:
00606 if ( d->mSecNo ) {
00607 d->mSecNo->setChecked( true );
00608 }
00609 }
00610
00611 switch ( server.auth() ) {
00612 case LdapServer::Anonymous:
00613 if ( d->mAnonymous ) {
00614 d->mAnonymous->setChecked( true );
00615 }
00616 case LdapServer::Simple:
00617 if ( d->mSimple ) {
00618 d->mSimple->setChecked( true );
00619 }
00620 case LdapServer::SASL:
00621 if ( d->mSASL ) {
00622 d->mSASL->setChecked( true );
00623 }
00624 }
00625
00626 setUser( server.user() );
00627 setBindDn( server.bindDn() );
00628 setPassword( server.password() );
00629 setRealm( server.realm() );
00630 setHost( server.host() );
00631 setPort( server.port() );
00632 setFilter( server.filter() );
00633 setDn( server.baseDn() );
00634 setVersion( server.version() );
00635 setSizeLimit( server.sizeLimit() );
00636 setTimeLimit( server.timeLimit() );
00637 setPageSize( server.pageSize() );
00638 setMech( server.mech() );
00639 }
00640
00641 void LdapConfigWidget::setUser( const QString &user )
00642 {
00643 if ( d->mUser ) {
00644 d->mUser->setText( user );
00645 }
00646 }
00647
00648 QString LdapConfigWidget::user() const
00649 {
00650 return d->mUser ? d->mUser->text() : QString();
00651 }
00652
00653 void LdapConfigWidget::setPassword( const QString &password )
00654 {
00655 if ( d->mPassword ) {
00656 d->mPassword->setText( password );
00657 }
00658 }
00659
00660 QString LdapConfigWidget::password() const
00661 {
00662 return d->mPassword ? d->mPassword->text() : QString();
00663 }
00664
00665 void LdapConfigWidget::setBindDn( const QString &binddn )
00666 {
00667 if ( d->mBindDn ) {
00668 d->mBindDn->setText( binddn );
00669 }
00670 }
00671
00672 QString LdapConfigWidget::bindDn() const
00673 {
00674 return d->mBindDn ? d->mBindDn->text() : QString();
00675 }
00676
00677 void LdapConfigWidget::setRealm( const QString &realm )
00678 {
00679 if ( d->mRealm ) {
00680 d->mRealm->setText( realm );
00681 }
00682 }
00683
00684 QString LdapConfigWidget::realm() const
00685 {
00686 return d->mRealm ? d->mRealm->text() : QString();
00687 }
00688
00689 void LdapConfigWidget::setHost( const QString &host )
00690 {
00691 if ( d->mHost ) {
00692 d->mHost->setText( host );
00693 }
00694 }
00695
00696 QString LdapConfigWidget::host() const
00697 {
00698 return d->mHost ? d->mHost->text() : QString();
00699 }
00700
00701 void LdapConfigWidget::setPort( int port )
00702 {
00703 if ( d->mPort ) {
00704 d->mPort->setValue( port );
00705 }
00706 }
00707
00708 int LdapConfigWidget::port() const
00709 {
00710 return d->mPort ? d->mPort->value() : 389;
00711 }
00712
00713 void LdapConfigWidget::setVersion( int version )
00714 {
00715 if ( d->mVersion ) {
00716 d->mVersion->setValue( version );
00717 }
00718 }
00719
00720 int LdapConfigWidget::version() const
00721 {
00722 return d->mVersion ? d->mVersion->value() : 3;
00723 }
00724
00725 void LdapConfigWidget::setDn( const LdapDN &dn )
00726 {
00727 if ( d->mDn ) {
00728 d->mDn->setText( dn.toString() );
00729 }
00730 }
00731
00732 LdapDN LdapConfigWidget::dn() const
00733 {
00734 return d->mDn ? LdapDN( d->mDn->text() ) : LdapDN();
00735 }
00736
00737 void LdapConfigWidget::setFilter( const QString &filter )
00738 {
00739 if ( d->mFilter ) {
00740 d->mFilter->setText( filter );
00741 }
00742 }
00743
00744 QString LdapConfigWidget::filter() const
00745 {
00746 return d->mFilter ? d->mFilter->text() : QString();
00747 }
00748
00749 void LdapConfigWidget::setMech( const QString &mech )
00750 {
00751 if ( d->mMech == 0 ) {
00752 return;
00753 }
00754 if ( !mech.isEmpty() ) {
00755 int i = 0;
00756 while ( i < d->mMech->count() ) {
00757 if ( d->mMech->itemText( i ) == mech ) {
00758 break;
00759 }
00760 i++;
00761 }
00762 if ( i == d->mMech->count() ) {
00763 d->mMech->addItem( mech );
00764 }
00765 d->mMech->setCurrentIndex( i );
00766 }
00767 }
00768
00769 QString LdapConfigWidget::mech() const
00770 {
00771 return d->mMech ? d->mMech->currentText() : QString();
00772 }
00773
00774 void LdapConfigWidget::setSecurity( Security security )
00775 {
00776 switch ( security ) {
00777 case None:
00778 d->mSecNo->setChecked( true );
00779 break;
00780 case SSL:
00781 d->mSecSSL->setChecked( true );
00782 break;
00783 case TLS:
00784 d->mSecTLS->setChecked( true );
00785 break;
00786 }
00787 }
00788
00789 LdapConfigWidget::Security LdapConfigWidget::security() const
00790 {
00791 if ( d->mSecTLS->isChecked() ) {
00792 return TLS;
00793 }
00794 if ( d->mSecSSL->isChecked() ) {
00795 return SSL;
00796 }
00797 return None;
00798 }
00799
00800 void LdapConfigWidget::setAuth( Auth auth )
00801 {
00802 switch ( auth ) {
00803 case Anonymous:
00804 d->mAnonymous->setChecked( true );
00805 break;
00806 case Simple:
00807 d->mSimple->setChecked( true );
00808 break;
00809 case SASL:
00810 d->mSASL->setChecked( true );
00811 break;
00812 }
00813 }
00814
00815 LdapConfigWidget::Auth LdapConfigWidget::auth() const
00816 {
00817 if ( d->mSimple->isChecked() ) {
00818 return Simple;
00819 }
00820 if ( d->mSASL->isChecked() ) {
00821 return SASL;
00822 }
00823 return Anonymous;
00824 }
00825
00826 void LdapConfigWidget::setSizeLimit( int sizelimit )
00827 {
00828 if ( d->mSizeLimit ) {
00829 d->mSizeLimit->setValue( sizelimit );
00830 }
00831 }
00832
00833 int LdapConfigWidget::sizeLimit() const
00834 {
00835 return d->mSizeLimit ? d->mSizeLimit->value() : 0;
00836 }
00837
00838 void LdapConfigWidget::setTimeLimit( int timelimit )
00839 {
00840 if ( d->mTimeLimit ) {
00841 d->mTimeLimit->setValue( timelimit );
00842 }
00843 }
00844
00845 int LdapConfigWidget::timeLimit() const
00846 {
00847 return d->mTimeLimit ? d->mTimeLimit->value() : 0;
00848 }
00849
00850 void LdapConfigWidget::setPageSize( int pagesize )
00851 {
00852 if ( d->mPageSize ) {
00853 d->mPageSize->setValue( pagesize );
00854 }
00855 }
00856
00857 int LdapConfigWidget::pageSize() const
00858 {
00859 return d->mPageSize ? d->mPageSize->value() : 0;
00860 }
00861
00862 LdapConfigWidget::WinFlags LdapConfigWidget::features() const
00863 {
00864 return d->mFeatures;
00865 }
00866
00867 void LdapConfigWidget::setFeatures( LdapConfigWidget::WinFlags features )
00868 {
00869 d->mFeatures = features;
00870
00871
00872
00873 QList<QObject*> ch = children();
00874
00875 for ( int i = 0; i < ch.count(); ++i ) {
00876 QWidget *widget = dynamic_cast<QWidget*>( ch[ i ] );
00877 if ( widget && widget->parent() == this ) {
00878 delete ( widget );
00879 }
00880 }
00881
00882
00883 d->initWidget();
00884 }
00885
00886 #include "ldapconfigwidget.moc"