• Skip to content
  • Skip to link menu
KDE 4.0 API Reference
  • KDE API Reference
  • KDE-PIM Libraries
  • Sitemap
  • Contact Us
 

KLDAP Library

ldapconfigwidget.cpp

00001 /*
00002   This file is part of libkldap.
00003   Copyright (c) 2004-2006 Szombathelyi György <gyurco@freemail.hu>
00004 
00005   This library is free software; you can redistribute it and/or
00006   modify it under the terms of the GNU Library General Public
00007   License as published by the Free Software Foundation; either
00008   version 2 of the License, or (at your option) any later version.
00009 
00010   This library is distributed in the hope that it will be useful,
00011   but WITHOUT ANY WARRANTY; without even the implied warranty of
00012   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013   Library General Public License for more details.
00014 
00015   You should have received a copy of the GNU Library General Public License
00016   along with this library; see the file COPYING.LIB.  If not, write to
00017   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018   Boston, MA 02110-1301, USA.
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     //without host query doesn't make sense
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     //without host query doesn't make sense
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   // First delete all the child widgets.
00869   // FIXME: I hope it's correct
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   // Re-create child widgets according to the new flags
00880   d->initWidget();
00881 }
00882 
00883 #include "ldapconfigwidget.moc"

KLDAP Library

Skip menu "KLDAP Library"
  • Main Page
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

KDE-PIM Libraries

Skip menu "KDE-PIM Libraries"
  • kabc
  • kblog
  • kcal
  • kimap
  • kioslave
  •   imap4
  •   mbox
  • kldap
  • kmime
  • kpimidentities
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Generated for KDE-PIM Libraries by doxygen 1.5.5
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal