• Skip to content
  • Skip to link menu
KDE 4.1 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( 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     //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( 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     //without host query doesn't make sense
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   // First delete all the child widgets.
00872   // FIXME: I hope it's correct
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   // Re-create child widgets according to the new flags
00883   d->initWidget();
00884 }
00885 
00886 #include "ldapconfigwidget.moc"

KLDAP Library

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

KDE-PIM Libraries

Skip menu "KDE-PIM Libraries"
  • akonadi
  • 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.4
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