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.
224 lines
5.0 KiB
224 lines
5.0 KiB
/*
|
|
|
|
Greeter widget for tdm
|
|
|
|
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 KGREETER_H
|
|
#define KGREETER_H
|
|
|
|
#include <tqthread.h>
|
|
|
|
#include "kgverify.h"
|
|
#include "kgdialog.h"
|
|
|
|
class KdmClock;
|
|
class UserListView;
|
|
class KdmThemer;
|
|
class KdmItem;
|
|
|
|
class TDEListView;
|
|
class KSimpleConfig;
|
|
|
|
class TQLabel;
|
|
class TQPushButton;
|
|
class TQPopupMenu;
|
|
class TQListViewItem;
|
|
class KGreeter;
|
|
class SAKDlg;
|
|
|
|
class TDECryptographicCardDevice;
|
|
|
|
struct SessType {
|
|
TQString name, type;
|
|
bool hid;
|
|
int prio;
|
|
|
|
SessType() {}
|
|
SessType( const TQString &n, const TQString &t, bool h, int p ) :
|
|
name( n ), type( t ), hid( h ), prio( p ) {}
|
|
bool operator<( const SessType &st ) {
|
|
return hid != st.hid ? hid < st.hid :
|
|
prio != st.prio ? prio < st.prio :
|
|
name < st.name;
|
|
}
|
|
};
|
|
|
|
//===========================================================================
|
|
//
|
|
// TDM control pipe handler
|
|
//
|
|
class ControlPipeHandlerObject : public TQObject
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
ControlPipeHandlerObject();
|
|
~ControlPipeHandlerObject();
|
|
|
|
public slots:
|
|
void run();
|
|
|
|
signals:
|
|
void processCommand(TQString);
|
|
|
|
public:
|
|
KGreeter* mKGreeterParent;
|
|
SAKDlg* mSAKDlgParent;
|
|
TQString mPipeFilename;
|
|
int mPipe_fd;
|
|
};
|
|
|
|
//===========================================================================
|
|
//
|
|
// TDM greeter
|
|
//
|
|
class KGreeter : public KGDialog, public KGVerifyHandler {
|
|
TQ_OBJECT
|
|
typedef KGDialog inherited;
|
|
|
|
public:
|
|
KGreeter( bool themed = false );
|
|
~KGreeter();
|
|
|
|
public slots:
|
|
void accept();
|
|
void reject();
|
|
void done(int r);
|
|
void slotUserClicked( TQListViewItem * );
|
|
void slotSessionSelected( int );
|
|
void slotUserEntered();
|
|
void processInputPipeCommand(TQString command);
|
|
|
|
public:
|
|
TQString curUser, cardLoginUser, curWMSession, dName;
|
|
|
|
protected slots:
|
|
void cryptographicCardWatcherSetup();
|
|
|
|
protected:
|
|
void readFacesList();
|
|
void installUserList();
|
|
void insertUser( const TQImage &, const TQString &, struct passwd * );
|
|
void insertUsers( int limit = -1);
|
|
void putSession( const TQString &, const TQString &, bool, const char * );
|
|
void insertSessions();
|
|
virtual void pluginSetup();
|
|
void setPrevWM( int );
|
|
|
|
KSimpleConfig *stsFile;
|
|
UserListView *userView;
|
|
TQStringList *userList;
|
|
TQPopupMenu *sessMenu;
|
|
TQValueVector<SessType> sessionTypes;
|
|
TQStringList randomFaces;
|
|
TQMap<TQString, TQString> randomFacesMap;
|
|
int nNormals, nSpecials;
|
|
int curPrev, curSel;
|
|
bool prevValid;
|
|
bool needLoad;
|
|
bool themed;
|
|
bool showInfoMessages;
|
|
|
|
static int curPlugin;
|
|
static PluginList pluginList;
|
|
|
|
private slots:
|
|
void slotLoadPrevWM();
|
|
void cryptographicCardInserted(TDECryptographicCardDevice*);
|
|
void cryptographicCardRemoved(TDECryptographicCardDevice*);
|
|
|
|
private:
|
|
ControlPipeHandlerObject* mControlPipeHandler;
|
|
TQEventLoopThread* mControlPipeHandlerThread;
|
|
|
|
protected:
|
|
bool closingDown;
|
|
|
|
public: // from KGVerifyHandler
|
|
virtual void verifyPluginChanged( int id );
|
|
virtual void verifyClear();
|
|
virtual void verifyOk();
|
|
virtual void verifyFailed();
|
|
// virtual void verifyRetry();
|
|
virtual void verifySetUser( const TQString &user );
|
|
|
|
friend class ControlPipeHandlerObject;
|
|
};
|
|
|
|
class KStdGreeter : public KGreeter {
|
|
TQ_OBJECT
|
|
typedef KGreeter inherited;
|
|
|
|
public:
|
|
KStdGreeter();
|
|
|
|
protected:
|
|
virtual void pluginSetup();
|
|
|
|
private:
|
|
KdmClock *clock;
|
|
TQLabel *pixLabel;
|
|
TQPushButton *goButton;
|
|
TQPushButton *menuButton;
|
|
|
|
public: // from KGVerifyHandler
|
|
virtual void verifyFailed();
|
|
virtual void verifyRetry();
|
|
};
|
|
|
|
class KThemedGreeter : public KGreeter {
|
|
TQ_OBJECT
|
|
typedef KGreeter inherited;
|
|
|
|
public:
|
|
KThemedGreeter();
|
|
bool isOK() { return themer != 0; }
|
|
static TQString timedUser;
|
|
static int timedDelay;
|
|
|
|
public slots:
|
|
void slotThemeActivated( const TQString &id );
|
|
void slotSessMenu();
|
|
void slotActionMenu();
|
|
void slotAskAdminPassword();
|
|
|
|
protected:
|
|
virtual void updateStatus( bool fail, bool caps, int timedleft );
|
|
virtual void pluginSetup();
|
|
virtual void keyPressEvent( TQKeyEvent * );
|
|
virtual bool event( TQEvent *e );
|
|
|
|
private:
|
|
// KdmClock *clock;
|
|
KdmThemer *themer;
|
|
KdmItem *caps_warning, *xauth_warning, *pam_error, *timed_label,
|
|
*console_rect, *userlist_rect,
|
|
*session_button, *system_button, *admin_button;
|
|
|
|
public: // from KGVerifyHandler
|
|
virtual void verifyFailed();
|
|
virtual void verifyRetry();
|
|
};
|
|
|
|
#endif /* KGREETER_H */
|