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