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.
249 lines
6.3 KiB
249 lines
6.3 KiB
15 years ago
|
/*
|
||
|
|
||
|
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 */
|