• Skip to content
  • Skip to link menu
KDE 4.3 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   if ( mPort ) {
00498     mPort->setValue( 389 );
00499   }
00500 }
00501 
00502 void LdapConfigWidget::Private::setLDAPSPort()
00503 {
00504   if ( mPort ) {
00505     mPort->setValue( 636 );
00506   }
00507 }
00508 
00509 LdapConfigWidget::LdapConfigWidget( QWidget *parent, Qt::WFlags fl )
00510   : QWidget( parent, fl ), d( new Private( this ) )
00511 {
00512 }
00513 
00514 LdapConfigWidget::LdapConfigWidget( LdapConfigWidget::WinFlags flags,
00515                                     QWidget *parent, Qt::WFlags fl )
00516   : QWidget( parent, fl ), d( new Private( this ) )
00517 {
00518   d->mFeatures = flags;
00519 
00520   d->initWidget();
00521 }
00522 
00523 LdapConfigWidget::~LdapConfigWidget()
00524 {
00525   delete d;
00526 }
00527 
00528 LdapUrl LdapConfigWidget::url() const
00529 {
00530   return server().url();
00531 }
00532 
00533 void LdapConfigWidget::setUrl( const LdapUrl &url )
00534 {
00535   LdapServer _server;
00536   _server.setUrl( url );
00537   setServer( _server );
00538 }
00539 
00540 LdapServer LdapConfigWidget::server() const
00541 {
00542   LdapServer _server;
00543   if ( d->mSecSSL && d->mSecSSL->isChecked() ) {
00544     _server.setSecurity( LdapServer::SSL );
00545   } else if ( d->mSecTLS && d->mSecTLS->isChecked() ) {
00546     _server.setSecurity( LdapServer::TLS );
00547   } else {
00548     _server.setSecurity( LdapServer::None );
00549   }
00550 
00551   if ( d->mUser ) {
00552     _server.setUser( d->mUser->text() );
00553   }
00554   if ( d->mBindDn ) {
00555     _server.setBindDn( d->mBindDn->text() );
00556   }
00557   if ( d->mPassword ) {
00558     _server.setPassword( d->mPassword->text() );
00559   }
00560   if ( d->mRealm ) {
00561     _server.setRealm( d->mRealm->text() );
00562   }
00563   if ( d->mHost ) {
00564     _server.setHost( d->mHost->text() );
00565   }
00566   if ( d->mPort ) {
00567     _server.setPort( d->mPort->value() );
00568   }
00569   if ( d->mDn ) {
00570     _server.setBaseDn( LdapDN( d->mDn->text() ) );
00571   }
00572   if ( d->mFilter ) {
00573     _server.setFilter( d->mFilter->text() );
00574   }
00575   if ( d->mVersion ) {
00576     _server.setVersion( d->mVersion->value() );
00577   }
00578   if ( d->mSizeLimit && d->mSizeLimit->value() != 0 ) {
00579     _server.setSizeLimit( d->mSizeLimit->value() );
00580   }
00581   if ( d->mTimeLimit && d->mTimeLimit->value() != 0 ) {
00582     _server.setTimeLimit( d->mTimeLimit->value() );
00583   }
00584   if ( d->mPageSize && d->mPageSize->value() != 0 ) {
00585     _server.setPageSize( d->mPageSize->value() );
00586   }
00587   if ( d->mAnonymous && d->mAnonymous->isChecked() ) {
00588     _server.setAuth( LdapServer::Anonymous );
00589   } else if ( d->mSimple && d->mSimple->isChecked() ) {
00590     _server.setAuth( LdapServer::Simple );
00591   } else if ( d->mSASL && d->mSASL->isChecked() ) {
00592     _server.setAuth( LdapServer::SASL );
00593     _server.setMech( d->mMech->currentText() );
00594   }
00595   return _server;
00596 }
00597 
00598 void LdapConfigWidget::setServer( const LdapServer &server )
00599 {
00600   switch ( server.security() ) {
00601   case LdapServer::SSL:
00602     if ( d->mSecSSL ) {
00603       d->mSecSSL->setChecked( true );
00604     }
00605   case LdapServer::TLS:
00606     if ( d->mSecTLS ) {
00607       d->mSecTLS->setChecked( true );
00608     }
00609   case LdapServer::None:
00610     if ( d->mSecNo ) {
00611       d->mSecNo->setChecked( true );
00612     }
00613   }
00614 
00615   switch ( server.auth() ) {
00616   case LdapServer::Anonymous:
00617     if ( d->mAnonymous ) {
00618       d->mAnonymous->setChecked( true );
00619     }
00620   case LdapServer::Simple:
00621     if ( d->mSimple ) {
00622       d->mSimple->setChecked( true );
00623     }
00624   case LdapServer::SASL:
00625     if ( d->mSASL ) {
00626       d->mSASL->setChecked( true );
00627     }
00628   }
00629 
00630   setUser( server.user() );
00631   setBindDn( server.bindDn() );
00632   setPassword( server.password() );
00633   setRealm( server.realm() );
00634   setHost( server.host() );
00635   setPort( server.port() );
00636   setFilter( server.filter() );
00637   setDn( server.baseDn() );
00638   setVersion( server.version() );
00639   setSizeLimit( server.sizeLimit() );
00640   setTimeLimit( server.timeLimit() );
00641   setPageSize( server.pageSize() );
00642   setMech( server.mech() );
00643 }
00644 
00645 void LdapConfigWidget::setUser( const QString &user )
00646 {
00647   if ( d->mUser ) {
00648     d->mUser->setText( user );
00649   }
00650 }
00651 
00652 QString LdapConfigWidget::user() const
00653 {
00654   return d->mUser ? d->mUser->text() : QString();
00655 }
00656 
00657 void LdapConfigWidget::setPassword( const QString &password )
00658 {
00659   if ( d->mPassword ) {
00660     d->mPassword->setText( password );
00661   }
00662 }
00663 
00664 QString LdapConfigWidget::password() const
00665 {
00666   return d->mPassword ? d->mPassword->text() : QString();
00667 }
00668 
00669 void LdapConfigWidget::setBindDn( const QString &binddn )
00670 {
00671   if ( d->mBindDn ) {
00672     d->mBindDn->setText( binddn );
00673   }
00674 }
00675 
00676 QString LdapConfigWidget::bindDn() const
00677 {
00678   return d->mBindDn ? d->mBindDn->text() : QString();
00679 }
00680 
00681 void LdapConfigWidget::setRealm( const QString &realm )
00682 {
00683   if ( d->mRealm ) {
00684     d->mRealm->setText( realm );
00685   }
00686 }
00687 
00688 QString LdapConfigWidget::realm() const
00689 {
00690   return d->mRealm ? d->mRealm->text() : QString();
00691 }
00692 
00693 void LdapConfigWidget::setHost( const QString &host )
00694 {
00695   if ( d->mHost ) {
00696     d->mHost->setText( host );
00697   }
00698 }
00699 
00700 QString LdapConfigWidget::host() const
00701 {
00702   return d->mHost ? d->mHost->text() : QString();
00703 }
00704 
00705 void LdapConfigWidget::setPort( int port )
00706 {
00707   if ( d->mPort ) {
00708     d->mPort->setValue( port );
00709   }
00710 }
00711 
00712 int LdapConfigWidget::port() const
00713 {
00714   return d->mPort ? d->mPort->value() : 389;
00715 }
00716 
00717 void LdapConfigWidget::setVersion( int version )
00718 {
00719   if ( d->mVersion ) {
00720     d->mVersion->setValue( version );
00721   }
00722 }
00723 
00724 int LdapConfigWidget::version() const
00725 {
00726   return d->mVersion ? d->mVersion->value() : 3;
00727 }
00728 
00729 void LdapConfigWidget::setDn( const LdapDN &dn )
00730 {
00731   if ( d->mDn ) {
00732     d->mDn->setText( dn.toString() );
00733   }
00734 }
00735 
00736 LdapDN LdapConfigWidget::dn() const
00737 {
00738   return d->mDn ? LdapDN( d->mDn->text() ) : LdapDN();
00739 }
00740 
00741 void LdapConfigWidget::setFilter( const QString &filter )
00742 {
00743   if ( d->mFilter ) {
00744     d->mFilter->setText( filter );
00745   }
00746 }
00747 
00748 QString LdapConfigWidget::filter() const
00749 {
00750   return d->mFilter ? d->mFilter->text() : QString();
00751 }
00752 
00753 void LdapConfigWidget::setMech( const QString &mech )
00754 {
00755   if ( d->mMech == 0 ) {
00756     return;
00757   }
00758   if ( !mech.isEmpty() ) {
00759     int i = 0;
00760     while ( i < d->mMech->count() ) {
00761       if ( d->mMech->itemText( i ) == mech ) {
00762         break;
00763       }
00764       i++;
00765     }
00766     if ( i == d->mMech->count() ) {
00767       d->mMech->addItem( mech );
00768     }
00769     d->mMech->setCurrentIndex( i );
00770   }
00771 }
00772 
00773 QString LdapConfigWidget::mech() const
00774 {
00775   return d->mMech ? d->mMech->currentText() : QString();
00776 }
00777 
00778 void LdapConfigWidget::setSecurity( Security security )
00779 {
00780   switch ( security ) {
00781   case None:
00782     d->mSecNo->setChecked( true );
00783     break;
00784   case SSL:
00785     d->mSecSSL->setChecked( true );
00786     break;
00787   case TLS:
00788     d->mSecTLS->setChecked( true );
00789     break;
00790   }
00791 }
00792 
00793 LdapConfigWidget::Security LdapConfigWidget::security() const
00794 {
00795   if ( d->mSecTLS->isChecked() ) {
00796     return TLS;
00797   }
00798   if ( d->mSecSSL->isChecked() ) {
00799     return SSL;
00800   }
00801   return None;
00802 }
00803 
00804 void LdapConfigWidget::setAuth( Auth auth )
00805 {
00806   switch ( auth ) {
00807   case Anonymous:
00808     d->mAnonymous->setChecked( true );
00809     break;
00810   case Simple:
00811     d->mSimple->setChecked( true );
00812     break;
00813   case SASL:
00814     d->mSASL->setChecked( true );
00815     break;
00816   }
00817 }
00818 
00819 LdapConfigWidget::Auth LdapConfigWidget::auth() const
00820 {
00821   if ( d->mSimple->isChecked() ) {
00822     return Simple;
00823   }
00824   if ( d->mSASL->isChecked() ) {
00825     return SASL;
00826   }
00827   return Anonymous;
00828 }
00829 
00830 void LdapConfigWidget::setSizeLimit( int sizelimit )
00831 {
00832   if ( d->mSizeLimit ) {
00833     d->mSizeLimit->setValue( sizelimit );
00834   }
00835 }
00836 
00837 int LdapConfigWidget::sizeLimit() const
00838 {
00839   return d->mSizeLimit ? d->mSizeLimit->value() : 0;
00840 }
00841 
00842 void LdapConfigWidget::setTimeLimit( int timelimit )
00843 {
00844   if ( d->mTimeLimit ) {
00845     d->mTimeLimit->setValue( timelimit );
00846   }
00847 }
00848 
00849 int LdapConfigWidget::timeLimit() const
00850 {
00851   return d->mTimeLimit ? d->mTimeLimit->value() : 0;
00852 }
00853 
00854 void LdapConfigWidget::setPageSize( int pagesize )
00855 {
00856   if ( d->mPageSize ) {
00857     d->mPageSize->setValue( pagesize );
00858   }
00859 }
00860 
00861 int LdapConfigWidget::pageSize() const
00862 {
00863   return d->mPageSize ? d->mPageSize->value() : 0;
00864 }
00865 
00866 LdapConfigWidget::WinFlags LdapConfigWidget::features() const
00867 {
00868   return d->mFeatures;
00869 }
00870 
00871 void LdapConfigWidget::setFeatures( LdapConfigWidget::WinFlags features )
00872 {
00873   d->mFeatures = features;
00874 
00875   // First delete all the child widgets.
00876   // FIXME: I hope it's correct
00877   QList<QObject*> ch = children();
00878 
00879   for ( int i = 0; i < ch.count(); ++i ) {
00880     QWidget *widget = dynamic_cast<QWidget*>( ch[ i ] );
00881     if ( widget && widget->parent() == this ) {
00882       delete ( widget );
00883     }
00884   }
00885 
00886   // Re-create child widgets according to the new flags
00887   d->initWidget();
00888 }
00889 
00890 #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
  • kabc
  • kblog
  • kcal
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  • kldap
  • kmime
  • kpimidentities
  • kpimtextedit
  •   richtextbuilders
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
Generated for KDE-PIM Libraries by doxygen 1.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