kde-playground/kdepimlibs/kldap/ldapconfigwidget.h
2015-04-14 21:49:29 +00:00

291 lines
8.9 KiB
C++

/*
This file is part of libkldap.
Copyright (c) 2004-2006 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 KLDAP_LDAPCONFIGWIDGET_H
#define KLDAP_LDAPCONFIGWIDGET_H
#include <QtCore/QString>
#include <QWidget>
#include "ldapdn.h"
#include "kldap_export.h"
#include "ldapobject.h"
#include "ldapserver.h"
#include "ldapurl.h"
namespace KLDAP {
class LdapSearch;
/**
@brief 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 KLDAP_EXPORT LdapConfigWidget : public QWidget
{
Q_OBJECT
Q_FLAGS( WinFlags )
Q_ENUMS( Security )
Q_ENUMS( Auth )
Q_PROPERTY( WinFlags features READ features WRITE setFeatures )
Q_PROPERTY( QString user READ user WRITE setUser )
Q_PROPERTY( QString bindDn READ bindDn WRITE setBindDn )
Q_PROPERTY( QString realm READ realm WRITE setRealm )
Q_PROPERTY( QString password READ password WRITE setPassword )
Q_PROPERTY( QString host READ host WRITE setHost )
Q_PROPERTY( int port READ port WRITE setPort )
Q_PROPERTY( int version READ version WRITE setVersion )
Q_PROPERTY( LdapDN dn READ dn WRITE setDn )
Q_PROPERTY( QString filter READ filter WRITE setFilter )
Q_PROPERTY( QString mech READ mech WRITE setMech )
Q_PROPERTY( Security security READ security WRITE setSecurity )
Q_PROPERTY( Auth auth READ auth WRITE setAuth )
Q_PROPERTY( int sizeLimit READ sizeLimit WRITE setSizeLimit )
Q_PROPERTY( int timeLimit READ timeLimit WRITE setTimeLimit )
Q_PROPERTY( int pageSize READ pageSize WRITE setPageSize )
public:
enum WinFlag {
W_USER = 0x1,
W_BINDDN = 0x2,
W_REALM = 0x4,
W_PASS = 0x8,
W_HOST = 0x10,
W_PORT = 0x20,
W_VER = 0x40,
W_DN = 0x80,
W_FILTER = 0x100,
W_SECBOX = 0x200,
W_AUTHBOX = 0x400,
W_TIMELIMIT = 0x800,
W_SIZELIMIT = 0x1000,
W_PAGESIZE = 0x2000,
W_ALL = 0x2fff
};
typedef enum {
None, SSL, TLS
} Security;
typedef enum {
Anonymous, Simple, SASL
} Auth;
Q_DECLARE_FLAGS( WinFlags, WinFlag )
/** Constructs an empty configuration widget.
* You need to call setFlags() after this.
* @param parent the QWidget parent
* @param fl the window flags to set
*/
explicit LdapConfigWidget( QWidget *parent = 0, Qt::WindowFlags fl = 0 );
/** Constructs a configuration widget */
explicit LdapConfigWidget( WinFlags flags, QWidget *parent = 0,
Qt::WindowFlags fl = 0 );
/** Destructs a configuration widget */
virtual ~LdapConfigWidget();
/** Sets the user name. Kconfig widget name: kcfg_ldapuser
* @param user the user name to set
*/
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
* @param password the password to set
*/
void setPassword( const QString &password );
/** Gets the password. Kconfig widget name: kcfg_ldappassword */
QString password() const;
/**
* Sets the bind dn.
* Kconfig widget name: kcfg_ldapbinddn
* @param binddn the LDAP Bind DN to set
*/
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
* @param realm the SASL realm to set
*/
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
* @param host the LDAP host to set
*/
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
* @param port the LDAP port to set
*/
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
* @param version the LDAP protocol version to set
*/
void setVersion( int version );
/** Gets the LDAP protocol version. Kconfig widget name: kcfg_ldapver */
int version() const;
/** Sets the LDAP Base DN. Kconfig widget name: kcfg_ldapdn
* @param dn the LDAP Base DN to set
*/
void setDn( const LdapDN &dn );
/** Gets the LDAP Base DN. Kconfig widget name: kcfg_ldapdn */
LdapDN dn() const;
/** Sets the LDAP Filter. Kconfig widget name: kcfg_ldapfilter
* @param filter the LDAP Filter to set
*/
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
* @param mech the SASL Mechanism to set
*/
void setMech( const QString &mech );
/** Gets the SASL Mechanism. Kconfig widget name: kcfg_ldapsaslmech */
QString mech() const;
/**
* Sets the security type (None, SSL, TLS).
* Kconfig widget names: kcfg_ldapnosec, kcfg_ldaptls, kcfg_ldapssl
* @param security the security type to set
*/
void setSecurity( Security security );
/**
* Returns the security type.
* Kconfig widget names: kcfg_ldapnosec, kcfg_ldaptls, kcfg_ldapssl
* @param security the security type to set
*/
Security security() const;
/**
* Sets the authentication type (Anonymous, Simple, SASL).
* Kconfig widget names: kcfg_ldapanon, kcfg_ldapsimple, kcfg_ldapsasl
* @param auth the authentication type to set
*/
void setAuth( Auth auth );
/**
* Returns the authentication type.
* Kconfig widget names: kcfg_ldapanon, kcfg_ldapsimple, kcfg_ldapsasl
* @param auth the authentication type to set
*/
Auth auth() const;
/**
* Sets the size limit.
* KConfig widget name: kcfg_ldapsizelimit
* @param sizelimit the size limit to set
*/
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
* @param timelimit the time limit to set
*/
void setTimeLimit( int timelimit );
/**
* Returns the time limit.
* KConfig widget name: kcfg_ldaptimelimit
*/
int timeLimit() const;
/**
* Sets the page size.
* KConfig widget name: kcfg_ldappagesize
* @param pagesize the page size to set
*/
void setPageSize( int pagesize );
/**
* Returns the page size.
* KConfig widget name: kcfg_ldappagesize
*/
int pageSize() const;
WinFlags features() const;
void setFeatures( WinFlags features );
/**
* Returns a LDAP Url constructed from the settings given.
* Extensions are filled for use in the LDAP ioslave
*/
LdapUrl url() const;
/**
* Set up the widget via an LDAP Url.
* @param url the LDAP Url to set
*/
void setUrl( const LdapUrl &url );
/**
* Returns an LdapServer object constructed from the settings given.
*/
LdapServer server() const;
/**
* Set up the widget via an LdapServer object.
* @param server the LdapServer object to set
*/
void setServer( const LdapServer &server );
Q_SIGNALS:
/**
* @since 4.13
*/
void hostNameChanged(const QString &);
private:
class Private;
Private *const d;
Q_PRIVATE_SLOT( d, void setLDAPPort() )
Q_PRIVATE_SLOT( d, void setLDAPSPort() )
Q_PRIVATE_SLOT( d, void setAnonymous( bool ) )
Q_PRIVATE_SLOT( d, void setSimple( bool ) )
Q_PRIVATE_SLOT( d, void setSASL( bool ) )
Q_PRIVATE_SLOT( d, void queryDNClicked() )
Q_PRIVATE_SLOT( d, void queryMechClicked() )
Q_PRIVATE_SLOT( d, void loadData( KLDAP::LdapSearch*, const KLDAP::LdapObject& ) )
Q_PRIVATE_SLOT( d, void loadResult( KLDAP::LdapSearch* ) )
};
Q_DECLARE_OPERATORS_FOR_FLAGS( LdapConfigWidget::WinFlags )
}
#endif