diff options
Diffstat (limited to 'kdesktop/lockeng.h')
-rw-r--r-- | kdesktop/lockeng.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h new file mode 100644 index 000000000..70bde3281 --- /dev/null +++ b/kdesktop/lockeng.h @@ -0,0 +1,152 @@ +//=========================================================================== +// +// This file is part of the KDE project +// +// Copyright (c) 1999 Martin R. Jones <[email protected]> +// + +#ifndef __LOCKENG_H__ +#define __LOCKENG_H__ + +#include <tqwidget.h> +#include <kprocess.h> +#include <tqvaluevector.h> +#include "KScreensaverIface.h" +#include "xautolock.h" +#include "xautolock_c.h" + +#include <tqdbusconnection.h> + +class DCOPClientTransaction; +class TQT_DBusMessage; +class TQT_DBusProxy; + +//=========================================================================== +/** + * Screen saver engine. Handles screensaver window, starting screensaver + * hacks, and password entry. + */ +class SaverEngine + : public TQWidget, + public KScreensaverIface +{ + Q_OBJECT +public: + SaverEngine(); + ~SaverEngine(); + + /** + * Lock the screen + */ + virtual void lock(); + + /** + * Save the screen + */ + virtual void save(); + + /** + * Quit the screensaver if running + */ + virtual void quit(); + + /** + * return true if the screensaver is enabled + */ + virtual bool isEnabled(); + + /** + * enable/disable the screensaver + */ + virtual bool enable( bool e ); + + /** + * return true if the screen is currently blanked + */ + virtual bool isBlanked(); + + /** + * Read and apply configuration. + */ + virtual void configure(); + + /** + * Enable or disable "blank only" mode. This is useful for + * laptops where one might not want a cpu thirsty screensaver + * draining the battery. + */ + virtual void setBlankOnly( bool blankOnly ); + + /** + * Called by kdesktop_lock when locking is in effect. + */ + virtual void saverLockReady(); + +public slots: + void slotLockProcessWaiting(); + void slotLockProcessFullyActivated(); + void slotLockProcessReady(); + void handleDBusSignal(const TQT_DBusMessage&); + +protected slots: + void idleTimeout(); + void lockProcessExited(); + void lockProcessWaiting(); + +private slots: + void handleSecureDialog(); + void slotSAKProcessExited(); + + /** + * Enable wallpaper exports + */ + void enableExports(); + void recoverFromHackingAttempt(); + + bool dBusReconnect(); + +private: + bool restartDesktopLockProcess(); + void dBusClose(); + bool dBusConnect(); + void onDBusServiceRegistered(const TQString&); + void onDBusServiceUnregistered(const TQString&); + +protected: + enum LockType { DontLock, DefaultLock, ForceLock, SecureDialog }; + bool startLockProcess( LockType lock_type ); + void stopLockProcess(); + bool handleKeyPress(XKeyEvent *xke); + void processLockTransactions(); + xautolock_corner_t applyManualSettings(int); + +protected: + enum State { Waiting, Preparing, Saving }; + bool mEnabled; + + State mState; + XAutoLock *mXAutoLock; + TDEProcess mLockProcess; + int mTimeout; + + // the original X screensaver parameters + int mXTimeout; + int mXInterval; + int mXBlanking; + int mXExposures; + + bool mBlankOnly; // only use the blanker, not the defined saver + TQValueVector< DCOPClientTransaction* > mLockTransactions; + +private: + TDEProcess* mSAKProcess; + bool mTerminationRequested; + bool mSaverProcessReady; + TQT_DBusConnection dBusConn; + TQT_DBusProxy* dBusLocal; + TQT_DBusProxy* dBusWatch; + TQT_DBusProxy* systemdSession; +}; + +#endif + |