libkdepim Library API Documentation

ldapclient.h

00001 /* kldapclient.h - LDAP access 00002 * Copyright (C) 2002 Klarälvdalens Datakonsult AB 00003 * 00004 * Author: Steffen Hansen <hansen@kde.org> 00005 * 00006 * This file is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU General Public License as published by 00008 * the Free Software Foundation; either version 2 of the License, or 00009 * (at your option) any later version. 00010 * 00011 * This file is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software 00018 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 00019 */ 00020 00021 00022 #ifndef KPIM_LDAPCLIENT_H 00023 #define KPIM_LDAPCLIENT_H 00024 00025 00026 #include <qobject.h> 00027 #include <qstring.h> 00028 #include <qcstring.h> 00029 #include <qstringlist.h> 00030 #include <qmemarray.h> 00031 #include <qguardedptr.h> 00032 #include <qtimer.h> 00033 00034 #include <kio/job.h> 00035 00036 namespace KPIM { 00037 00038 class LdapClient; 00039 typedef QValueList<QByteArray> LdapAttrValue; 00040 typedef QMap<QString,LdapAttrValue > LdapAttrMap; 00041 00049 class LdapObject 00050 { 00051 public: 00052 LdapObject() 00053 : dn( QString::null ), client( 0 ) {} 00054 explicit LdapObject( const QString& _dn, LdapClient* _cl ) : dn( _dn ), client( _cl ) {} 00055 LdapObject( const LdapObject& that ) { assign( that ); } 00056 00057 LdapObject& operator=( const LdapObject& that ) 00058 { 00059 assign( that ); 00060 return *this; 00061 } 00062 00063 QString toString() const; 00064 00065 void clear(); 00066 00067 QString dn; 00068 QString objectClass; 00069 LdapAttrMap attrs; 00070 LdapClient* client; 00071 00072 protected: 00073 void assign( const LdapObject& that ); 00074 00075 private: 00076 //class LdapObjectPrivate* d; 00077 }; 00078 00086 class LdapClient : public QObject 00087 { 00088 Q_OBJECT 00089 00090 public: 00091 LdapClient( int clientNumber, QObject* parent = 0, const char* name = 0 ); 00092 virtual ~LdapClient(); 00093 00095 bool isActive() const { return mActive; } 00096 00097 int clientNumber() const; 00098 int completionWeight() const; 00099 void setCompletionWeight( int ); 00100 00101 QString host() const { return mHost; } 00102 QString port() const { return mPort; } 00103 QString base() const { return mBase; } 00104 QString bindDN() const; 00105 QString pwdBindDN() const; 00110 QStringList attrs() const { return mAttrs; } 00111 00112 signals: 00114 void done(); 00115 00117 void error( const QString& ); 00118 00122 void result( const KPIM::LdapObject& ); 00123 00124 public slots: // why are those slots? 00128 void setHost( const QString& host ); 00129 00134 void setPort( const QString& port ); 00135 00139 void setBase( const QString& base ); 00140 00144 void setBindDN( const QString& bindDN ); 00145 00149 void setPwdBindDN( const QString& pwdBindDN ); 00150 00155 void setAttrs( const QStringList& attrs ); 00156 00157 void setScope( const QString scope ) { mScope = scope; } 00158 00162 void startQuery( const QString& filter ); 00163 00167 void cancelQuery(); 00168 00169 protected slots: 00170 void slotData( KIO::Job*, const QByteArray &data ); 00171 void slotInfoMessage( KIO::Job*, const QString &info ); 00172 void slotDone(); 00173 00174 protected: 00175 void startParseLDIF(); 00176 void parseLDIF( const QByteArray& data ); 00177 void endParseLDIF(); 00178 void finishCurrentObject(); 00179 00180 QString mHost; 00181 QString mPort; 00182 QString mBase; 00183 QString mScope; 00184 QStringList mAttrs; 00185 00186 QGuardedPtr<KIO::SimpleJob> mJob; 00187 bool mActive; 00188 bool mReportObjectClass; 00189 00190 LdapObject mCurrentObject; 00191 QCString mBuf; 00192 QCString mLastAttrName; 00193 QCString mLastAttrValue; 00194 bool mIsBase64; 00195 00196 private: 00197 class LdapClientPrivate; 00198 LdapClientPrivate* d; 00199 }; 00200 00204 struct LdapResult { 00205 QString name; 00206 QStringList email; 00207 int clientNumber; 00208 int completionWeight; 00209 }; 00210 typedef QValueList<LdapResult> LdapResultList; 00211 00212 00220 class LdapSearch : public QObject 00221 { 00222 Q_OBJECT 00223 00224 public: 00225 LdapSearch(); 00226 00227 void startSearch( const QString& txt ); 00228 void cancelSearch(); 00229 bool isAvailable() const; 00230 00231 QValueList< LdapClient* > clients() const { return mClients; } 00232 00233 signals: 00236 void searchData( const QStringList& ); 00239 void searchData( const KPIM::LdapResultList& ); 00240 void searchDone(); 00241 00242 private slots: 00243 void slotLDAPResult( const KPIM::LdapObject& ); 00244 void slotLDAPError( const QString& ); 00245 void slotLDAPDone(); 00246 void slotDataTimer(); 00247 void slotFileChanged( const QString& ); 00248 00249 private: 00250 void readConfig(); 00251 void finish(); 00252 void makeSearchData( QStringList& ret, LdapResultList& resList ); 00253 QValueList< LdapClient* > mClients; 00254 QString mSearchText; 00255 QTimer mDataTimer; 00256 int mActiveClients; 00257 bool mNoLDAPLookup; 00258 QValueList< LdapObject > mResults; 00259 QString mConfigFile; 00260 00261 private: 00262 class LdapSearchPrivate* d; 00263 }; 00264 00265 } 00266 #endif // KPIM_LDAPCLIENT_H
KDE Logo
This file is part of the documentation for libkdepim Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Oct 21 19:46:29 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003