diff options
Diffstat (limited to 'kdm/kfrontend/kgverify.h')
-rw-r--r-- | kdm/kfrontend/kgverify.h | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/kdm/kfrontend/kgverify.h b/kdm/kfrontend/kgverify.h new file mode 100644 index 000000000..a0d285e3d --- /dev/null +++ b/kdm/kfrontend/kgverify.h @@ -0,0 +1,248 @@ +/* + +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 */ |