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.
tdebase/kdm/kfrontend/kgverify.h

249 lines
6.3 KiB

/*
Shell for kdm conversation plugins
Copyright (C) 1997, 1998 Steffen Hansen <hansen@kde.org>
Copyright (C) 2000-2004 Oswald Buddenhagen <ossi@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef KGVERIFY_H
#define KGVERIFY_H
#include "kgreeterplugin.h"
#include "kfdialog.h"
#include <qlayout.h>
#include <qtimer.h>
#include <qvaluevector.h>
#include <sys/time.h>
#include <time.h>
// helper class, nuke when qt supports suspend()/resume()
class QXTimer : public QObject {
Q_OBJECT
typedef QObject inherited;
public:
QXTimer();
void start( int msec );
void stop();
void suspend();
void resume();
signals:
void timeout();
private slots:
void slotTimeout();
private:
QTimer timer;
struct timeval stv;
long left;
};
class KGVerifyHandler {
public:
virtual void verifyPluginChanged( int id ) = 0;
virtual void verifyClear();
virtual void verifyOk() = 0;
virtual void verifyFailed() = 0;
virtual void verifyRetry() = 0;
virtual void verifySetUser( const QString &user ) = 0;
virtual void updateStatus( bool fail, bool caps, int left ); // for themed only
};
class QWidget;
class QLabel;
class QPopupMenu;
class QTimer;
class KPushButton;
class KLibrary;
struct GreeterPluginHandle {
KLibrary *library;
kgreeterplugin_info *info;
};
typedef QValueVector<int> PluginList;
class KGVerify : public QObject, public KGreeterPluginHandler {
Q_OBJECT
typedef QObject inherited;
public:
KGVerify( KGVerifyHandler *handler, KdmThemer *themer,
QWidget *parent, QWidget *predecessor,
const QString &fixedEntity, const PluginList &pluginList,
KGreeterPlugin::Function func, KGreeterPlugin::Context ctx );
virtual ~KGVerify();
QPopupMenu *getPlugMenu();
void loadUsers( const QStringList &users );
void presetEntity( const QString &entity, int field );
QString getEntity() const;
void setUser( const QString &user );
/* virtual */ void selectPlugin( int id );
bool entitiesLocal() const;
bool entitiesFielded() const;
bool entityPresettable() const;
bool isClassic() const;
QString pluginName() const;
void setEnabled( bool on );
void abort();
void suspend();
void resume();
void accept();
void reject();
int coreLock;
static bool handleFailVerify( QWidget *parent );
static PluginList init( const QStringList &plugins );
static void done();
public slots:
void start();
protected:
bool eventFilter( QObject *, QEvent * );
void MsgBox( QMessageBox::Icon typ, const QString &msg );
void setTimer();
void updateLockStatus();
virtual void updateStatus() = 0;
void handleVerify();
QXTimer timer;
QString fixedEntity, presEnt, curUser;
PluginList pluginList;
KGVerifyHandler *handler;
KdmThemer *themer;
QWidget *parent, *predecessor;
KGreeterPlugin *greet;
QPopupMenu *plugMenu;
int curPlugin, presFld, timedLeft, deadTicks;
QCString pName;
KGreeterPlugin::Function func;
KGreeterPlugin::Context ctx;
bool capsLocked;
bool enabled, running, suspended, failed, delayed, cont;
bool authTok, isClear, timeable;
static void VMsgBox( QWidget *parent, const QString &user, QMessageBox::Icon type, const QString &mesg );
static void VErrBox( QWidget *parent, const QString &user, const char *msg );
static void VInfoBox( QWidget *parent, const QString &user, const char *msg );
static QValueVector<GreeterPluginHandle> greetPlugins;
private:
bool applyPreset();
void performAutoLogin();
bool scheduleAutoLogin( bool initial );
void doReject( bool initial );
private slots:
//virtual void slotPluginSelected( int id ) = 0;
void slotTimeout();
void slotActivity();
public: // from KGreetPluginHandler
virtual void gplugReturnText( const char *text, int tag );
virtual void gplugReturnBinary( const char *data );
virtual void gplugSetUser( const QString &user );
virtual void gplugStart();
virtual void gplugActivity();
virtual void gplugMsgBox( QMessageBox::Icon type, const QString &text );
static QVariant getConf( void *ctx, const char *key, const QVariant &dflt );
};
class KGStdVerify : public KGVerify {
Q_OBJECT
typedef KGVerify inherited;
public:
KGStdVerify( KGVerifyHandler *handler, QWidget *parent,
QWidget *predecessor, const QString &fixedEntity,
const PluginList &pluginList,
KGreeterPlugin::Function func, KGreeterPlugin::Context ctx );
virtual ~KGStdVerify();
QLayout *getLayout() const { return grid; }
void selectPlugin( int id );
protected:
void updateStatus();
private:
QGridLayout *grid;
QLabel *failedLabel;
int failedLabelState;
private slots:
void slotPluginSelected( int id );
};
class KGThemedVerify : public KGVerify {
Q_OBJECT
typedef KGVerify inherited;
public:
KGThemedVerify( KGVerifyHandler *handler, KdmThemer *themer,
QWidget *parent, QWidget *predecessor,
const QString &fixedEntity,
const PluginList &pluginList,
KGreeterPlugin::Function func,
KGreeterPlugin::Context ctx );
virtual ~KGThemedVerify();
void selectPlugin( int id );
protected:
void updateStatus();
private slots:
void slotPluginSelected( int id );
};
class KGChTok : public FDialog, public KGVerifyHandler {
Q_OBJECT
typedef FDialog inherited;
public:
KGChTok( QWidget *parent, const QString &user,
const PluginList &pluginList, int curPlugin,
KGreeterPlugin::Function func, KGreeterPlugin::Context ctx );
~KGChTok();
public slots:
void accept();
private:
KPushButton *okButton, *cancelButton;
KGStdVerify *verify;
public: // from KGVerifyHandler
virtual void verifyPluginChanged( int id );
virtual void verifyOk();
virtual void verifyFailed();
virtual void verifyRetry();
virtual void verifySetUser( const QString &user );
};
#endif /* KGVERIFY_H */