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