You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/kabc/ldapconfigwidget.h

298 lines
9.1 KiB

/*
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