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( i18n("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( i18n("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( i18n( "No" ), btgroup);
00255 mSecNo->setObjectName( "kcfg_ldapnosec" );
00256 hbox->addWidget( mSecNo );
00257 mSecTLS = new QRadioButton( i18n( "TLS" ), btgroup);
00258 mSecTLS->setObjectName( "kcfg_ldaptls" );
00259 hbox->addWidget( mSecTLS );
00260 mSecSSL = new QRadioButton( i18n( "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 = new QRadioButton( i18n( "Anonymous" ), authbox);
00283 mAnonymous->setObjectName("kcfg_ldapanon" );
00284 hbox->addWidget( mAnonymous );
00285 mSimple = new QRadioButton( i18n( "Simple" ), authbox);
00286 mSimple->setObjectName( "kcfg_ldapsimple" );
00287 hbox->addWidget( mSimple );
00288 mSASL = new QRadioButton( i18n( "SASL" ), authbox);
00289 mSASL->setObjectName("kcfg_ldapsasl" );
00290 hbox->addWidget( mSASL );
00291
00292 hbox = new QHBoxLayout;
00293 vbox->addLayout( hbox );
00294 label = new QLabel( i18n( "SASL mechanism:" ), authbox );
00295 hbox->addWidget( label );
00296 mMech = new KComboBox( false, authbox );
00297 mMech->setObjectName( "kcfg_ldapsaslmech" );
00298 mMech->setEditable( true );
00299 mMech->addItem( "DIGEST-MD5" );
00300 mMech->addItem( "GSSAPI" );
00301 mMech->addItem( "PLAIN" );
00302 hbox->addWidget( mMech );
00303
00304
00305 if ( mHost ) {
00306 mQueryMech = new QPushButton( i18n( "Query Server" ), authbox );
00307 hbox->addWidget( mQueryMech );
00308 connect( mQueryMech, SIGNAL( clicked() ), mParent, SLOT( queryMechClicked() ) );
00309 }
00310
00311 mainLayout->addWidget( authbox, row, 0, 2, 4 );
00312
00313 connect( mAnonymous, SIGNAL( toggled( bool ) ), mParent, SLOT( setAnonymous( bool ) ) );
00314 connect( mSimple, SIGNAL( toggled( bool ) ), mParent, SLOT( setSimple( bool ) ) );
00315 connect( mSASL, SIGNAL( toggled( bool ) ), mParent, SLOT( setSASL( bool ) ) );
00316
00317 mAnonymous->setChecked( true );
00318 }
00319 }
00320
00321 void LdapConfigWidget::Private::sendQuery()
00322 {
00323 LdapUrl _url;
00324
00325 mQResult.clear();
00326 mCancelled = true;
00327
00328 _url.setProtocol( ( mSecSSL && mSecSSL->isChecked() ) ? "ldaps" : "ldap" );
00329 if ( mHost ) {
00330 _url.setHost( mHost->text() );
00331 }
00332 if ( mPort ) {
00333 _url.setPort( mPort->value() );
00334 }
00335 _url.setDn( LdapDN( "" ) );
00336 _url.setAttributes( QStringList( mAttr ) );
00337 _url.setScope( LdapUrl::Base );
00338 if ( mVersion ) {
00339 _url.setExtension( "x-ver", QString::number( mVersion->value() ) );
00340 }
00341 if ( mSecTLS && mSecTLS->isChecked() ) {
00342 _url.setExtension( "x-tls", "" );
00343 }
00344
00345 kDebug(5322) << "sendQuery url:" << _url.prettyUrl();
00346
00347 LdapSearch search;
00348 connect( &search, SIGNAL( data( KLDAP::LdapSearch*, const KLDAP::LdapObject& ) ),
00349 mParent, SLOT( loadData( KLDAP::LdapSearch*, const KLDAP::LdapObject& ) ) );
00350 connect( &search, SIGNAL( result( KLDAP::LdapSearch* ) ),
00351 mParent, SLOT( loadResult( KLDAP::LdapSearch* ) ) );
00352
00353 if ( !search.search( _url ) ) {
00354 KMessageBox::error( mParent, search.errorString() );
00355 return;
00356 }
00357
00358 if ( mProg == 0 ) {
00359 mProg = new KProgressDialog( mParent );
00360 mProg->setWindowTitle( i18n("LDAP Query") );
00361 mProg->setModal( true );
00362 }
00363 mProg->setLabelText( _url.prettyUrl() );
00364 mProg->progressBar()->setRange( 0, 1 );
00365 mProg->progressBar()->setValue( 0 );
00366 mProg->exec();
00367 if ( mCancelled ) {
00368 kDebug(5322) << "query canceled!";
00369 search.abandon();
00370 } else {
00371 if ( search.error() ) {
00372 KMessageBox::error( mParent, search.errorString() );
00373 }
00374 }
00375 }
00376
00377 void LdapConfigWidget::Private::queryMechClicked()
00378 {
00379 mAttr = "supportedsaslmechanisms";
00380 sendQuery();
00381 if ( !mQResult.isEmpty() ) {
00382 mQResult.sort();
00383 mMech->clear();
00384 mMech->addItems( mQResult );
00385 }
00386 }
00387
00388 void LdapConfigWidget::Private::queryDNClicked()
00389 {
00390 mAttr = "namingcontexts";
00391 sendQuery();
00392 if ( !mQResult.isEmpty() ) {
00393 mDn->setText( mQResult.first() );
00394 }
00395 }
00396
00397 void LdapConfigWidget::Private::loadData( LdapSearch*, const LdapObject &object )
00398 {
00399 kDebug(5322) << "loadData() object:" << object.toString();
00400 mProg->progressBar()->setValue( mProg->progressBar()->value() + 1 );
00401 for ( LdapAttrMap::ConstIterator it = object.attributes().constBegin();
00402 it != object.attributes().constEnd(); ++it ) {
00403 for ( LdapAttrValue::ConstIterator it2 = (*it).constBegin();
00404 it2 != (*it).constEnd(); ++it2 ) {
00405 mQResult.push_back( QString::fromUtf8( *it2 ) );
00406 }
00407 }
00408 }
00409
00410 void LdapConfigWidget::Private::loadResult( LdapSearch *search )
00411 {
00412 Q_UNUSED( search );
00413 mCancelled = false;
00414 mProg->close();
00415 }
00416
00417 void LdapConfigWidget::Private::setAnonymous( bool on )
00418 {
00419 if ( !on ) {
00420 return;
00421 }
00422 if ( mUser ) {
00423 mUser->setEnabled( false );
00424 }
00425 if ( mPassword ) {
00426 mPassword->setEnabled( false );
00427 }
00428 if ( mBindDn ) {
00429 mBindDn->setEnabled( false );
00430 }
00431 if ( mRealm ) {
00432 mRealm->setEnabled( false );
00433 }
00434 if ( mMech ) {
00435 mMech->setEnabled( false );
00436 }
00437 if ( mQueryMech ) {
00438 mQueryMech->setEnabled( false );
00439 }
00440 }
00441
00442 void LdapConfigWidget::Private::setSimple( bool on )
00443 {
00444 if ( !on ) {
00445 return;
00446 }
00447 if ( mUser ) {
00448 mUser->setEnabled( false );
00449 }
00450 if ( mPassword ) {
00451 mPassword->setEnabled( true );
00452 }
00453 if ( mBindDn ) {
00454 mBindDn->setEnabled( true );
00455 }
00456 if ( mRealm ) {
00457 mRealm->setEnabled( false );
00458 }
00459 if ( mMech ) {
00460 mMech->setEnabled( false );
00461 }
00462 if ( mQueryMech ) {
00463 mQueryMech->setEnabled( false );
00464 }
00465 }
00466
00467 void LdapConfigWidget::Private::setSASL( bool on )
00468 {
00469 if ( !on ) {
00470 return;
00471 }
00472 if ( mUser ) {
00473 mUser->setEnabled( true );
00474 }
00475 if ( mPassword ) {
00476 mPassword->setEnabled( true );
00477 }
00478 if ( mBindDn ) {
00479 mBindDn->setEnabled( true );
00480 }
00481 if ( mRealm ) {
00482 mRealm->setEnabled( true );
00483 }
00484 if ( mMech ) {
00485 mMech->setEnabled( true );
00486 }
00487 if ( mQueryMech ) {
00488 mQueryMech->setEnabled( true );
00489 }
00490 }
00491
00492 void LdapConfigWidget::Private::setLDAPPort()
00493 {
00494 mPort->setValue( 389 );
00495 }
00496
00497 void LdapConfigWidget::Private::setLDAPSPort()
00498 {
00499 mPort->setValue( 636 );
00500 }
00501
00502 LdapConfigWidget::LdapConfigWidget( QWidget *parent, Qt::WFlags fl )
00503 : QWidget( parent, fl ), d( new Private( this ) )
00504 {
00505 }
00506
00507 LdapConfigWidget::LdapConfigWidget( LdapConfigWidget::WinFlags flags,
00508 QWidget *parent, Qt::WFlags fl )
00509 : QWidget( parent, fl ), d( new Private( this ) )
00510 {
00511 d->mFeatures = flags;
00512
00513 d->initWidget();
00514 }
00515
00516 LdapConfigWidget::~LdapConfigWidget()
00517 {
00518 delete d;
00519 }
00520
00521 LdapUrl LdapConfigWidget::url() const
00522 {
00523 return server().url();
00524 }
00525
00526 void LdapConfigWidget::setUrl( const LdapUrl &url )
00527 {
00528 LdapServer _server;
00529 _server.setUrl( url );
00530 setServer( _server );
00531 }
00532
00533 LdapServer LdapConfigWidget::server() const
00534 {
00535 LdapServer _server;
00536 if ( d->mSecSSL && d->mSecSSL->isChecked() ) {
00537 _server.setSecurity( LdapServer::SSL );
00538 } else if ( d->mSecTLS && d->mSecTLS->isChecked() ) {
00539 _server.setSecurity( LdapServer::TLS );
00540 } else {
00541 _server.setSecurity( LdapServer::None );
00542 }
00543
00544 if ( d->mUser ) {
00545 _server.setUser( d->mUser->text() );
00546 }
00547 if ( d->mBindDn ) {
00548 _server.setBindDn( d->mBindDn->text() );
00549 }
00550 if ( d->mPassword ) {
00551 _server.setPassword( d->mPassword->text() );
00552 }
00553 if ( d->mRealm ) {
00554 _server.setRealm( d->mRealm->text() );
00555 }
00556 if ( d->mHost ) {
00557 _server.setHost( d->mHost->text() );
00558 }
00559 if ( d->mPort ) {
00560 _server.setPort( d->mPort->value() );
00561 }
00562 if ( d->mDn ) {
00563 _server.setBaseDn( LdapDN( d->mDn->text() ) );
00564 }
00565 if ( d->mFilter ) {
00566 _server.setFilter( d->mFilter->text() );
00567 }
00568 if ( d->mVersion ) {
00569 _server.setVersion( d->mVersion->value() );
00570 }
00571 if ( d->mSizeLimit && d->mSizeLimit->value() != 0 ) {
00572 _server.setSizeLimit( d->mSizeLimit->value() );
00573 }
00574 if ( d->mTimeLimit && d->mTimeLimit->value() != 0 ) {
00575 _server.setTimeLimit( d->mTimeLimit->value() );
00576 }
00577 if ( d->mPageSize && d->mPageSize->value() != 0 ) {
00578 _server.setPageSize( d->mPageSize->value() );
00579 }
00580 if ( d->mAnonymous && d->mAnonymous->isChecked() ) {
00581 _server.setAuth( LdapServer::Anonymous );
00582 } else if ( d->mSimple && d->mSimple->isChecked() ) {
00583 _server.setAuth( LdapServer::Simple );
00584 } else if ( d->mSASL && d->mSASL->isChecked() ) {
00585 _server.setAuth( LdapServer::SASL );
00586 _server.setMech( d->mMech->currentText() );
00587 }
00588 return _server;
00589 }
00590
00591 void LdapConfigWidget::setServer( const LdapServer &server )
00592 {
00593 switch ( server.security() ) {
00594 case LdapServer::SSL:
00595 if ( d->mSecSSL ) {
00596 d->mSecSSL->setChecked( true );
00597 }
00598 case LdapServer::TLS:
00599 if ( d->mSecTLS ) {
00600 d->mSecTLS->setChecked( true );
00601 }
00602 case LdapServer::None:
00603 if ( d->mSecNo ) {
00604 d->mSecNo->setChecked( true );
00605 }
00606 }
00607
00608 switch ( server.auth() ) {
00609 case LdapServer::Anonymous:
00610 if ( d->mAnonymous ) {
00611 d->mAnonymous->setChecked( true );
00612 }
00613 case LdapServer::Simple:
00614 if ( d->mSimple ) {
00615 d->mSimple->setChecked( true );
00616 }
00617 case LdapServer::SASL:
00618 if ( d->mSASL ) {
00619 d->mSASL->setChecked( true );
00620 }
00621 }
00622
00623 setUser( server.user() );
00624 setBindDn( server.bindDn() );
00625 setPassword( server.password() );
00626 setRealm( server.realm() );
00627 setHost( server.host() );
00628 setPort( server.port() );
00629 setFilter( server.filter() );
00630 setDn( server.baseDn() );
00631 setVersion( server.version() );
00632 setSizeLimit( server.sizeLimit() );
00633 setTimeLimit( server.timeLimit() );
00634 setPageSize( server.pageSize() );
00635 setMech( server.mech() );
00636 }
00637
00638 void LdapConfigWidget::setUser( const QString &user )
00639 {
00640 if ( d->mUser ) {
00641 d->mUser->setText( user );
00642 }
00643 }
00644
00645 QString LdapConfigWidget::user() const
00646 {
00647 return d->mUser ? d->mUser->text() : QString();
00648 }
00649
00650 void LdapConfigWidget::setPassword( const QString &password )
00651 {
00652 if ( d->mPassword ) {
00653 d->mPassword->setText( password );
00654 }
00655 }
00656
00657 QString LdapConfigWidget::password() const
00658 {
00659 return d->mPassword ? d->mPassword->text() : QString();
00660 }
00661
00662 void LdapConfigWidget::setBindDn( const QString &binddn )
00663 {
00664 if ( d->mBindDn ) {
00665 d->mBindDn->setText( binddn );
00666 }
00667 }
00668
00669 QString LdapConfigWidget::bindDn() const
00670 {
00671 return d->mBindDn ? d->mBindDn->text() : QString();
00672 }
00673
00674 void LdapConfigWidget::setRealm( const QString &realm )
00675 {
00676 if ( d->mRealm ) {
00677 d->mRealm->setText( realm );
00678 }
00679 }
00680
00681 QString LdapConfigWidget::realm() const
00682 {
00683 return d->mRealm ? d->mRealm->text() : QString();
00684 }
00685
00686 void LdapConfigWidget::setHost( const QString &host )
00687 {
00688 if ( d->mHost ) {
00689 d->mHost->setText( host );
00690 }
00691 }
00692
00693 QString LdapConfigWidget::host() const
00694 {
00695 return d->mHost ? d->mHost->text() : QString();
00696 }
00697
00698 void LdapConfigWidget::setPort( int port )
00699 {
00700 if ( d->mPort ) {
00701 d->mPort->setValue( port );
00702 }
00703 }
00704
00705 int LdapConfigWidget::port() const
00706 {
00707 return d->mPort ? d->mPort->value() : 389;
00708 }
00709
00710 void LdapConfigWidget::setVersion( int version )
00711 {
00712 if ( d->mVersion ) {
00713 d->mVersion->setValue( version );
00714 }
00715 }
00716
00717 int LdapConfigWidget::version() const
00718 {
00719 return d->mVersion ? d->mVersion->value() : 3;
00720 }
00721
00722 void LdapConfigWidget::setDn( const LdapDN &dn )
00723 {
00724 if ( d->mDn ) {
00725 d->mDn->setText( dn.toString() );
00726 }
00727 }
00728
00729 LdapDN LdapConfigWidget::dn() const
00730 {
00731 return d->mDn ? LdapDN( d->mDn->text() ) : LdapDN();
00732 }
00733
00734 void LdapConfigWidget::setFilter( const QString &filter )
00735 {
00736 if ( d->mFilter ) {
00737 d->mFilter->setText( filter );
00738 }
00739 }
00740
00741 QString LdapConfigWidget::filter() const
00742 {
00743 return d->mFilter ? d->mFilter->text() : QString();
00744 }
00745
00746 void LdapConfigWidget::setMech( const QString &mech )
00747 {
00748 if ( d->mMech == 0 ) {
00749 return;
00750 }
00751 if ( !mech.isEmpty() ) {
00752 int i = 0;
00753 while ( i < d->mMech->count() ) {
00754 if ( d->mMech->itemText( i ) == mech ) {
00755 break;
00756 }
00757 i++;
00758 }
00759 if ( i == d->mMech->count() ) {
00760 d->mMech->addItem( mech );
00761 }
00762 d->mMech->setCurrentIndex( i );
00763 }
00764 }
00765
00766 QString LdapConfigWidget::mech() const
00767 {
00768 return d->mMech ? d->mMech->currentText() : QString();
00769 }
00770
00771 void LdapConfigWidget::setSecurity( Security security )
00772 {
00773 switch ( security ) {
00774 case None:
00775 d->mSecNo->setChecked( true );
00776 break;
00777 case SSL:
00778 d->mSecSSL->setChecked( true );
00779 break;
00780 case TLS:
00781 d->mSecTLS->setChecked( true );
00782 break;
00783 }
00784 }
00785
00786 LdapConfigWidget::Security LdapConfigWidget::security() const
00787 {
00788 if ( d->mSecTLS->isChecked() ) {
00789 return TLS;
00790 }
00791 if ( d->mSecSSL->isChecked() ) {
00792 return SSL;
00793 }
00794 return None;
00795 }
00796
00797 void LdapConfigWidget::setAuth( Auth auth )
00798 {
00799 switch ( auth ) {
00800 case Anonymous:
00801 d->mAnonymous->setChecked( true );
00802 break;
00803 case Simple:
00804 d->mSimple->setChecked( true );
00805 break;
00806 case SASL:
00807 d->mSASL->setChecked( true );
00808 break;
00809 }
00810 }
00811
00812 LdapConfigWidget::Auth LdapConfigWidget::auth() const
00813 {
00814 if ( d->mSimple->isChecked() ) {
00815 return Simple;
00816 }
00817 if ( d->mSASL->isChecked() ) {
00818 return SASL;
00819 }
00820 return Anonymous;
00821 }
00822
00823 void LdapConfigWidget::setSizeLimit( int sizelimit )
00824 {
00825 if ( d->mSizeLimit ) {
00826 d->mSizeLimit->setValue( sizelimit );
00827 }
00828 }
00829
00830 int LdapConfigWidget::sizeLimit() const
00831 {
00832 return d->mSizeLimit ? d->mSizeLimit->value() : 0;
00833 }
00834
00835 void LdapConfigWidget::setTimeLimit( int timelimit )
00836 {
00837 if ( d->mTimeLimit ) {
00838 d->mTimeLimit->setValue( timelimit );
00839 }
00840 }
00841
00842 int LdapConfigWidget::timeLimit() const
00843 {
00844 return d->mTimeLimit ? d->mTimeLimit->value() : 0;
00845 }
00846
00847 void LdapConfigWidget::setPageSize( int pagesize )
00848 {
00849 if ( d->mPageSize ) {
00850 d->mPageSize->setValue( pagesize );
00851 }
00852 }
00853
00854 int LdapConfigWidget::pageSize() const
00855 {
00856 return d->mPageSize ? d->mPageSize->value() : 0;
00857 }
00858
00859 LdapConfigWidget::WinFlags LdapConfigWidget::features() const
00860 {
00861 return d->mFeatures;
00862 }
00863
00864 void LdapConfigWidget::setFeatures( LdapConfigWidget::WinFlags features )
00865 {
00866 d->mFeatures = features;
00867
00868
00869
00870 QList<QObject*> ch = children();
00871
00872 for ( int i = 0; i < ch.count(); ++i ) {
00873 QWidget *widget = dynamic_cast<QWidget*>( ch[ i ] );
00874 if ( widget && widget->parent() == this ) {
00875 delete ( widget );
00876 }
00877 }
00878
00879
00880 d->initWidget();
00881 }
00882
00883 #include "ldapconfigwidget.moc"