• Skip to content
  • Skip to link menu
KDE 4.8 API Reference
  • KDE API Reference
  • KDE-PIM Libraries
  • KDE Home
  • 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     }
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     //without host query doesn't make sense
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     //without host query doesn't make sense
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*,KLDAP::LdapObject)),
00351            mParent, SLOT(loadData(KLDAP::LdapSearch*,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   LdapAttrMap::ConstIterator end( object.attributes().constEnd() );
00404   for ( LdapAttrMap::ConstIterator it = object.attributes().constBegin();
00405         it != end; ++it ) {
00406     LdapAttrValue::ConstIterator end2( (*it).constEnd() );
00407     for ( LdapAttrValue::ConstIterator it2 = (*it).constBegin();
00408           it2 != end2; ++it2 ) {
00409       mQResult.push_back( QString::fromUtf8( *it2 ) );
00410     }
00411   }
00412 }
00413 
00414 void LdapConfigWidget::Private::loadResult( LdapSearch *search )
00415 {
00416   Q_UNUSED( search );
00417   mCancelled = false;
00418   mProg->close();
00419 }
00420 
00421 void LdapConfigWidget::Private::setAnonymous( bool on )
00422 {
00423   if ( !on ) {
00424     return;
00425   }
00426   if ( mUser ) {
00427     mUser->setEnabled( false );
00428   }
00429   if ( mPassword ) {
00430     mPassword->setEnabled( false );
00431   }
00432   if ( mBindDn ) {
00433     mBindDn->setEnabled( false );
00434   }
00435   if ( mRealm ) {
00436     mRealm->setEnabled( false );
00437   }
00438   if ( mMech ) {
00439     mMech->setEnabled( false );
00440   }
00441   if ( mQueryMech ) {
00442     mQueryMech->setEnabled( false );
00443   }
00444 }
00445 
00446 void LdapConfigWidget::Private::setSimple( bool on )
00447 {
00448   if ( !on ) {
00449     return;
00450   }
00451   if ( mUser ) {
00452     mUser->setEnabled( false );
00453   }
00454   if ( mPassword ) {
00455     mPassword->setEnabled( true );
00456   }
00457   if ( mBindDn ) {
00458     mBindDn->setEnabled( true );
00459   }
00460   if ( mRealm ) {
00461     mRealm->setEnabled( false );
00462   }
00463   if ( mMech ) {
00464     mMech->setEnabled( false );
00465   }
00466   if ( mQueryMech ) {
00467     mQueryMech->setEnabled( false );
00468   }
00469 }
00470 
00471 void LdapConfigWidget::Private::setSASL( bool on )
00472 {
00473   if ( !on ) {
00474     return;
00475   }
00476   if ( mUser ) {
00477     mUser->setEnabled( true );
00478   }
00479   if ( mPassword ) {
00480     mPassword->setEnabled( true );
00481   }
00482   if ( mBindDn ) {
00483     mBindDn->setEnabled( true );
00484   }
00485   if ( mRealm ) {
00486     mRealm->setEnabled( true );
00487   }
00488   if ( mMech ) {
00489     mMech->setEnabled( true );
00490   }
00491   if ( mQueryMech ) {
00492     mQueryMech->setEnabled( true );
00493   }
00494 }
00495 
00496 void LdapConfigWidget::Private::setLDAPPort()
00497 {
00498   if ( mPort ) {
00499     mPort->setValue( 389 );
00500   }
00501 }
00502 
00503 void LdapConfigWidget::Private::setLDAPSPort()
00504 {
00505   if ( mPort ) {
00506     mPort->setValue( 636 );
00507   }
00508 }
00509 
00510 LdapConfigWidget::LdapConfigWidget( QWidget *parent, Qt::WFlags fl )
00511   : QWidget( parent, fl ), d( new Private( this ) )
00512 {
00513 }
00514 
00515 LdapConfigWidget::LdapConfigWidget( LdapConfigWidget::WinFlags flags,
00516                                     QWidget *parent, Qt::WFlags fl )
00517   : QWidget( parent, fl ), d( new Private( this ) )
00518 {
00519   d->mFeatures = flags;
00520 
00521   d->initWidget();
00522 }
00523 
00524 LdapConfigWidget::~LdapConfigWidget()
00525 {
00526   delete d;
00527 }
00528 
00529 LdapUrl LdapConfigWidget::url() const
00530 {
00531   return server().url();
00532 }
00533 
00534 void LdapConfigWidget::setUrl( const LdapUrl &url )
00535 {
00536   LdapServer _server;
00537   _server.setUrl( url );
00538   setServer( _server );
00539 }
00540 
00541 LdapServer LdapConfigWidget::server() const
00542 {
00543   LdapServer _server;
00544   if ( d->mSecSSL && d->mSecSSL->isChecked() ) {
00545     _server.setSecurity( LdapServer::SSL );
00546   } else if ( d->mSecTLS && d->mSecTLS->isChecked() ) {
00547     _server.setSecurity( LdapServer::TLS );
00548   } else {
00549     _server.setSecurity( LdapServer::None );
00550   }
00551 
00552   if ( d->mUser ) {
00553     _server.setUser( d->mUser->text() );
00554   }
00555   if ( d->mBindDn ) {
00556     _server.setBindDn( d->mBindDn->text() );
00557   }
00558   if ( d->mPassword ) {
00559     _server.setPassword( d->mPassword->text() );
00560   }
00561   if ( d->mRealm ) {
00562     _server.setRealm( d->mRealm->text() );
00563   }
00564   if ( d->mHost ) {
00565     _server.setHost( d->mHost->text() );
00566   }
00567   if ( d->mPort ) {
00568     _server.setPort( d->mPort->value() );
00569   }
00570   if ( d->mDn ) {
00571     _server.setBaseDn( LdapDN( d->mDn->text() ) );
00572   }
00573   if ( d->mFilter ) {
00574     _server.setFilter( d->mFilter->text() );
00575   }
00576   if ( d->mVersion ) {
00577     _server.setVersion( d->mVersion->value() );
00578   }
00579   if ( d->mSizeLimit && d->mSizeLimit->value() != 0 ) {
00580     _server.setSizeLimit( d->mSizeLimit->value() );
00581   }
00582   if ( d->mTimeLimit && d->mTimeLimit->value() != 0 ) {
00583     _server.setTimeLimit( d->mTimeLimit->value() );
00584   }
00585   if ( d->mPageSize && d->mPageSize->value() != 0 ) {
00586     _server.setPageSize( d->mPageSize->value() );
00587   }
00588   if ( d->mAnonymous && d->mAnonymous->isChecked() ) {
00589     _server.setAuth( LdapServer::Anonymous );
00590   } else if ( d->mSimple && d->mSimple->isChecked() ) {
00591     _server.setAuth( LdapServer::Simple );
00592   } else if ( d->mSASL && d->mSASL->isChecked() ) {
00593     _server.setAuth( LdapServer::SASL );
00594     _server.setMech( d->mMech->currentText() );
00595   }
00596   return _server;
00597 }
00598 
00599 void LdapConfigWidget::setServer( const LdapServer &server )
00600 {
00601   switch ( server.security() ) {
00602   case LdapServer::SSL:
00603     if ( d->mSecSSL ) {
00604       d->mSecSSL->setChecked( true );
00605     }
00606   case LdapServer::TLS:
00607     if ( d->mSecTLS ) {
00608       d->mSecTLS->setChecked( true );
00609     }
00610   case LdapServer::None:
00611     if ( d->mSecNo ) {
00612       d->mSecNo->setChecked( true );
00613     }
00614   }
00615 
00616   switch ( server.auth() ) {
00617   case LdapServer::Anonymous:
00618     if ( d->mAnonymous ) {
00619       d->mAnonymous->setChecked( true );
00620     }
00621   case LdapServer::Simple:
00622     if ( d->mSimple ) {
00623       d->mSimple->setChecked( true );
00624     }
00625   case LdapServer::SASL:
00626     if ( d->mSASL ) {
00627       d->mSASL->setChecked( true );
00628     }
00629   }
00630 
00631   setUser( server.user() );
00632   setBindDn( server.bindDn() );
00633   setPassword( server.password() );
00634   setRealm( server.realm() );
00635   setHost( server.host() );
00636   setPort( server.port() );
00637   setFilter( server.filter() );
00638   setDn( server.baseDn() );
00639   setVersion( server.version() );
00640   setSizeLimit( server.sizeLimit() );
00641   setTimeLimit( server.timeLimit() );
00642   setPageSize( server.pageSize() );
00643   setMech( server.mech() );
00644 }
00645 
00646 void LdapConfigWidget::setUser( const QString &user )
00647 {
00648   if ( d->mUser ) {
00649     d->mUser->setText( user );
00650   }
00651 }
00652 
00653 QString LdapConfigWidget::user() const
00654 {
00655   return d->mUser ? d->mUser->text() : QString();
00656 }
00657 
00658 void LdapConfigWidget::setPassword( const QString &password )
00659 {
00660   if ( d->mPassword ) {
00661     d->mPassword->setText( password );
00662   }
00663 }
00664 
00665 QString LdapConfigWidget::password() const
00666 {
00667   return d->mPassword ? d->mPassword->text() : QString();
00668 }
00669 
00670 void LdapConfigWidget::setBindDn( const QString &binddn )
00671 {
00672   if ( d->mBindDn ) {
00673     d->mBindDn->setText( binddn );
00674   }
00675 }
00676 
00677 QString LdapConfigWidget::bindDn() const
00678 {
00679   return d->mBindDn ? d->mBindDn->text() : QString();
00680 }
00681 
00682 void LdapConfigWidget::setRealm( const QString &realm )
00683 {
00684   if ( d->mRealm ) {
00685     d->mRealm->setText( realm );
00686   }
00687 }
00688 
00689 QString LdapConfigWidget::realm() const
00690 {
00691   return d->mRealm ? d->mRealm->text() : QString();
00692 }
00693 
00694 void LdapConfigWidget::setHost( const QString &host )
00695 {
00696   if ( d->mHost ) {
00697     d->mHost->setText( host );
00698   }
00699 }
00700 
00701 QString LdapConfigWidget::host() const
00702 {
00703   return d->mHost ? d->mHost->text() : QString();
00704 }
00705 
00706 void LdapConfigWidget::setPort( int port )
00707 {
00708   if ( d->mPort ) {
00709     d->mPort->setValue( port );
00710   }
00711 }
00712 
00713 int LdapConfigWidget::port() const
00714 {
00715   return d->mPort ? d->mPort->value() : 389;
00716 }
00717 
00718 void LdapConfigWidget::setVersion( int version )
00719 {
00720   if ( d->mVersion ) {
00721     d->mVersion->setValue( version );
00722   }
00723 }
00724 
00725 int LdapConfigWidget::version() const
00726 {
00727   return d->mVersion ? d->mVersion->value() : 3;
00728 }
00729 
00730 void LdapConfigWidget::setDn( const LdapDN &dn )
00731 {
00732   if ( d->mDn ) {
00733     d->mDn->setText( dn.toString() );
00734   }
00735 }
00736 
00737 LdapDN LdapConfigWidget::dn() const
00738 {
00739   return d->mDn ? LdapDN( d->mDn->text() ) : LdapDN();
00740 }
00741 
00742 void LdapConfigWidget::setFilter( const QString &filter )
00743 {
00744   if ( d->mFilter ) {
00745     d->mFilter->setText( filter );
00746   }
00747 }
00748 
00749 QString LdapConfigWidget::filter() const
00750 {
00751   return d->mFilter ? d->mFilter->text() : QString();
00752 }
00753 
00754 void LdapConfigWidget::setMech( const QString &mech )
00755 {
00756   if ( d->mMech == 0 ) {
00757     return;
00758   }
00759   if ( !mech.isEmpty() ) {
00760     int i = 0;
00761     while ( i < d->mMech->count() ) {
00762       if ( d->mMech->itemText( i ) == mech ) {
00763         break;
00764       }
00765       i++;
00766     }
00767     if ( i == d->mMech->count() ) {
00768       d->mMech->addItem( mech );
00769     }
00770     d->mMech->setCurrentIndex( i );
00771   }
00772 }
00773 
00774 QString LdapConfigWidget::mech() const
00775 {
00776   return d->mMech ? d->mMech->currentText() : QString();
00777 }
00778 
00779 void LdapConfigWidget::setSecurity( Security security )
00780 {
00781   switch ( security ) {
00782   case None:
00783     d->mSecNo->setChecked( true );
00784     break;
00785   case SSL:
00786     d->mSecSSL->setChecked( true );
00787     break;
00788   case TLS:
00789     d->mSecTLS->setChecked( true );
00790     break;
00791   }
00792 }
00793 
00794 LdapConfigWidget::Security LdapConfigWidget::security() const
00795 {
00796   if ( d->mSecTLS->isChecked() ) {
00797     return TLS;
00798   }
00799   if ( d->mSecSSL->isChecked() ) {
00800     return SSL;
00801   }
00802   return None;
00803 }
00804 
00805 void LdapConfigWidget::setAuth( Auth auth )
00806 {
00807   switch ( auth ) {
00808   case Anonymous:
00809     d->mAnonymous->setChecked( true );
00810     break;
00811   case Simple:
00812     d->mSimple->setChecked( true );
00813     break;
00814   case SASL:
00815     d->mSASL->setChecked( true );
00816     break;
00817   }
00818 }
00819 
00820 LdapConfigWidget::Auth LdapConfigWidget::auth() const
00821 {
00822   if ( d->mSimple->isChecked() ) {
00823     return Simple;
00824   }
00825   if ( d->mSASL->isChecked() ) {
00826     return SASL;
00827   }
00828   return Anonymous;
00829 }
00830 
00831 void LdapConfigWidget::setSizeLimit( int sizelimit )
00832 {
00833   if ( d->mSizeLimit ) {
00834     d->mSizeLimit->setValue( sizelimit );
00835   }
00836 }
00837 
00838 int LdapConfigWidget::sizeLimit() const
00839 {
00840   return d->mSizeLimit ? d->mSizeLimit->value() : 0;
00841 }
00842 
00843 void LdapConfigWidget::setTimeLimit( int timelimit )
00844 {
00845   if ( d->mTimeLimit ) {
00846     d->mTimeLimit->setValue( timelimit );
00847   }
00848 }
00849 
00850 int LdapConfigWidget::timeLimit() const
00851 {
00852   return d->mTimeLimit ? d->mTimeLimit->value() : 0;
00853 }
00854 
00855 void LdapConfigWidget::setPageSize( int pagesize )
00856 {
00857   if ( d->mPageSize ) {
00858     d->mPageSize->setValue( pagesize );
00859   }
00860 }
00861 
00862 int LdapConfigWidget::pageSize() const
00863 {
00864   return d->mPageSize ? d->mPageSize->value() : 0;
00865 }
00866 
00867 LdapConfigWidget::WinFlags LdapConfigWidget::features() const
00868 {
00869   return d->mFeatures;
00870 }
00871 
00872 void LdapConfigWidget::setFeatures( LdapConfigWidget::WinFlags features )
00873 {
00874   d->mFeatures = features;
00875 
00876   // First delete all the child widgets.
00877   // FIXME: I hope it's correct
00878   QList<QObject*> ch = children();
00879   const int numberOfChild( ch.count() );
00880   for ( int i = 0; i < numberOfChild; ++i ) {
00881     QWidget *widget = dynamic_cast<QWidget*>( ch[ i ] );
00882     if ( widget && widget->parent() == this ) {
00883       delete ( widget );
00884     }
00885   }
00886 
00887   // Re-create child widgets according to the new flags
00888   d->initWidget();
00889 }
00890 
00891 #include "ldapconfigwidget.moc"

KLDAP Library

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

KDE-PIM Libraries

Skip menu "KDE-PIM Libraries"
  • akonadi
  •   contact
  •   kmime
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  •   richtextbuilders
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Generated for KDE-PIM Libraries by doxygen 1.7.6.1
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