summaryrefslogtreecommitdiffstats
path: root/kabc/ldapconfigwidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'kabc/ldapconfigwidget.h')
-rw-r--r--kabc/ldapconfigwidget.h297
1 files changed, 297 insertions, 0 deletions
diff --git a/kabc/ldapconfigwidget.h b/kabc/ldapconfigwidget.h
new file mode 100644
index 000000000..e48b10e53
--- /dev/null
+++ b/kabc/ldapconfigwidget.h
@@ -0,0 +1,297 @@
+/*
+ This file is part of libkabc.
+ Copyright (c) 2004 Szombathelyi György <gyurco@freemail.hu>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef LDAPCONFIGWIDGET_H
+#define LDAPCONFIGWIDGET_H
+
+#include <qwidget.h>
+#include <qmap.h>
+#include <qstring.h>
+
+#include <kabc/ldapurl.h>
+#include <kabc/ldif.h>
+#include <kio/job.h>
+
+class QGridLayout;
+class QSpinBox;
+class QPushButton;
+class QCheckBox;
+class QRadioButton;
+class KComboBox;
+class KLineEdit;
+class KProgressDialog;
+
+namespace KABC {
+
+ /**
+ @short LDAP Configuration widget
+
+ This class can be used to query the user for LDAP connection parameters.
+ It's KConfigXT compatible, using widget names starting with kcfg_
+ */
+
+ class KABC_EXPORT LdapConfigWidget : public QWidget
+ {
+ Q_OBJECT
+ Q_PROPERTY( LCW_Flags flags READ flags WRITE setFlags )
+ Q_PROPERTY( QString user READ user WRITE setUser )
+ Q_PROPERTY( QString password READ password WRITE setPassword )
+ Q_PROPERTY( QString bindDN READ bindDN WRITE setBindDN )
+ Q_PROPERTY( QString realm READ realm WRITE setRealm )
+ Q_PROPERTY( QString host READ host WRITE setHost )
+ Q_PROPERTY( int port READ port WRITE setPort )
+ Q_PROPERTY( int ver READ ver WRITE setVer )
+ Q_PROPERTY( QString dn READ dn WRITE setDn )
+ Q_PROPERTY( QString filter READ filter WRITE setFilter )
+ Q_PROPERTY( QString mech READ mech WRITE setMech )
+ Q_PROPERTY( bool secNO READ isSecNO WRITE setSecNO )
+ Q_PROPERTY( bool secSSL READ isSecSSL WRITE setSecSSL )
+ Q_PROPERTY( bool secTLS READ isSecSSL WRITE setSecTLS )
+ Q_PROPERTY( bool authAnon READ isAuthAnon WRITE setAuthAnon )
+ Q_PROPERTY( bool authSimple READ isAuthSimple WRITE setAuthSimple )
+ Q_PROPERTY( bool authSASL READ isAuthSASL WRITE setAuthSASL )
+ Q_PROPERTY( int sizeLimit READ sizeLimit WRITE setSizeLimit )
+ Q_PROPERTY( int timeLimit READ timeLimit WRITE setTimeLimit )
+ Q_SETS ( LCW_Flags )
+
+ public:
+
+ enum LCW_Flags {
+ W_USER = 0x1,
+ W_PASS = 0x2,
+ W_BINDDN = 0x4,
+ W_REALM = 0x8,
+ W_HOST = 0x10,
+ W_PORT = 0x20,
+ W_VER = 0x40,
+ W_DN = 0x80,
+ W_FILTER = 0x100,
+ W_SECBOX = 0x400,
+ W_AUTHBOX = 0x800,
+ W_TIMELIMIT = 0x1000,
+ W_SIZELIMIT = 0x2000,
+ W_ALL = 0xFFFFFFF
+ };
+
+ /** Constructs an empty configuration widget.
+ * You need to call setFlags() after this.
+ */
+ LdapConfigWidget( QWidget* parent = 0,
+ const char* name = 0, WFlags fl = 0 );
+ /** Constructs a configuration widget */
+ LdapConfigWidget( int flags, QWidget* parent = 0,
+ const char* name = 0, WFlags fl = 0 );
+ /** Destructs a configuration widget */
+ virtual ~LdapConfigWidget();
+
+ /** Sets the user name. Kconfig widget name: kcfg_ldapuser */
+ void setUser( const QString &user );
+ /** Gets the user name. Kconfig widget name: kcfg_ldapuser */
+ QString user() const;
+
+ /** Sets the password. Kconfig widget name: kcfg_ldappassword */
+ void setPassword( const QString &password );
+ /** Gets the password. Kconfig widget name: kcfg_ldappassword */
+ QString password() const;
+
+ /**
+ * Sets the bind dn. Useful for SASL proxy auth.
+ * Kconfig widget name: kcfg_ldapbinddn
+ */
+ void setBindDN( const QString &binddn );
+ /** Gets the bind dn. Kconfig widget name: kcfg_ldapbinddn*/
+ QString bindDN() const;
+
+ /** Sets the SASL realm. Kconfig widget name: kcfg_ldaprealm */
+ void setRealm( const QString &realm );
+ /** Gets the SASL realm. Kconfig widget name: kcfg_ldaprealm */
+ QString realm() const;
+
+ /** Sets the host name. Kconfig widget name: kcfg_ldaphost */
+ void setHost( const QString &host );
+ /** Gets the host name. Kconfig widget name: kcfg_ldaphost */
+ QString host() const;
+
+ /** Sets the LDAP port. Kconfig widget name: kcfg_ldapport */
+ void setPort( int port );
+ /** Gets the LDAP port. Kconfig widget name: kcfg_ldapport */
+ int port() const;
+
+ /** Sets the LDAP protocol version. Kconfig widget name: kcfg_ldapver */
+ void setVer( int ver );
+ /** Gets the LDAP protocol version. Kconfig widget name: kcfg_ldapver */
+ int ver() const;
+
+ /** Sets the LDAP Base DN. Kconfig widget name: kcfg_ldapdn */
+ void setDn( const QString &dn );
+ /** Gets the LDAP Base DN. Kconfig widget name: kcfg_ldapdn */
+ QString dn() const;
+
+ /** Sets the LDAP Filter. Kconfig widget name: kcfg_ldapfilter */
+ void setFilter( const QString &filter );
+ /** Gets the LDAP Filter. Kconfig widget name: kcfg_ldapfilter */
+ QString filter() const;
+
+ /** Sets the SASL Mechanism. Kconfig widget name: kcfg_ldapsaslmech */
+ void setMech( const QString &mech );
+ /** Gets the SASL Mechanism. Kconfig widget name: kcfg_ldapsaslmech */
+ QString mech() const;
+
+ /**
+ * Sets the configuration to no transport security.
+ * Kconfig widget name: kcfg_ldapnosec
+ */
+ void setSecNO( bool b = true );
+ /**
+ * Returns true if no transport security selected.
+ * Kconfig widget name: kcfg_ldapnosec
+ */
+ bool isSecNO() const;
+
+ /**
+ * Sets the configuration to TLS.
+ * Kconfig widget name: kcfg_ldaptls
+ */
+ void setSecTLS( bool b = true );
+ /**
+ * Returns true if TLS selected.
+ * Kconfig widget name: kcfg_ldaptls
+ */
+ bool isSecTLS() const;
+
+ /**
+ * Sets the configuration to SSL.
+ * Kconfig widget name: kcfg_ldapssl
+ */
+ void setSecSSL( bool b = true );
+ /**
+ * Returns true if SSL selected.
+ * Kconfig widget name: kcfg_ldapssl
+ */
+ bool isSecSSL() const;
+
+ /**
+ * Sets the authentication to anonymous.
+ * Kconfig widget name: kcfg_ldapanon
+ */
+ void setAuthAnon( bool b = true );
+ /**
+ * Returns true if Anonymous authentication selected.
+ * Kconfig widget name: kcfg_ldapanon
+ */
+ bool isAuthAnon() const;
+
+ /**
+ * Sets the authentication to simple.
+ * Kconfig widget name: kcfg_ldapsimple
+ */
+ void setAuthSimple( bool b = true );
+ /**
+ * Returns true if Simple authentication selected.
+ * Kconfig widget name: kcfg_ldapsimple
+ */
+ bool isAuthSimple() const;
+
+ /**
+ * Sets the authentication to SASL.
+ * Kconfig widget name: kcfg_ldapsasl
+ */
+ void setAuthSASL( bool b = true );
+ /**
+ * Returns true if SASL authentication selected.
+ * Kconfig widget name: kcfg_ldapsasl
+ */
+ bool isAuthSASL() const;
+
+ /**
+ * Sets the size limit.
+ * KConfig widget name: kcfg_ldapsizelimit
+ */
+ void setSizeLimit( int sizelimit );
+ /**
+ * Returns the size limit.
+ * KConfig widget name: kcfg_ldapsizelimit
+ */
+ int sizeLimit() const;
+
+ /**
+ * Sets the time limit.
+ * KConfig widget name: kcfg_ldaptimelimit
+ */
+ void setTimeLimit( int timelimit );
+ /**
+ * Returns the time limit.
+ * KConfig widget name: kcfg_ldaptimelimit
+ */
+ int timeLimit() const;
+
+ int flags() const;
+ void setFlags( int flags );
+
+ /**
+ * Returns a LDAP Url constructed from the settings given.
+ * Extensions are filled for use in the LDAP ioslave
+ */
+ KABC::LDAPUrl url() const;
+
+ private slots:
+ void setLDAPPort();
+ void setLDAPSPort();
+ void setAnonymous( int state );
+ void setSimple( int state );
+ void setSASL( int state );
+ void mQueryDNClicked();
+ void mQueryMechClicked();
+ void loadData( KIO::Job*, const QByteArray& );
+ void loadResult( KIO::Job* );
+ private:
+
+ int mFlags;
+ LDIF mLdif;
+ QStringList mQResult;
+ QString mAttr;
+
+ KLineEdit *mUser;
+ KLineEdit *mPassword;
+ KLineEdit *mHost;
+ QSpinBox *mPort, *mVer, *mSizeLimit, *mTimeLimit;
+ KLineEdit *mDn, *mBindDN, *mRealm;
+ KLineEdit *mFilter;
+ QRadioButton *mAnonymous,*mSimple,*mSASL;
+ QCheckBox *mSubTree;
+ QPushButton *mEditButton;
+ QPushButton *mQueryMech;
+ QRadioButton *mSecNO,*mSecTLS,*mSecSSL;
+ KComboBox *mMech;
+
+ QString mErrorMsg;
+ bool mCancelled;
+ KProgressDialog *mProg;
+
+ QGridLayout *mainLayout;
+ class LDAPConfigWidgetPrivate;
+ LDAPConfigWidgetPrivate *d;
+
+ void sendQuery();
+ void initWidget();
+ };
+}
+
+#endif