diff options
Diffstat (limited to 'kdesktop/lockeng.h')
-rw-r--r-- | kdesktop/lockeng.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h new file mode 100644 index 000000000..0eb67f9d6 --- /dev/null +++ b/kdesktop/lockeng.h @@ -0,0 +1,113 @@ +//=========================================================================== +// +// This file is part of the KDE project +// +// Copyright (c) 1999 Martin R. Jones <[email protected]> +// + +#ifndef __LOCKENG_H__ +#define __LOCKENG_H__ + +#include <qwidget.h> +#include <kprocess.h> +#include <qvaluevector.h> +#include "KScreensaverIface.h" +#include "xautolock.h" +#include "xautolock_c.h" + +class DCOPClientTransaction; + +//=========================================================================== +/** + * Screen saver engine. Handles screensaver window, starting screensaver + * hacks, and password entry. + */ +class SaverEngine + : public QWidget, + virtual 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(); + +protected slots: + void idleTimeout(); + void lockProcessExited(); + +protected: + enum LockType { DontLock, DefaultLock, ForceLock }; + 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; + KProcess 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 + QValueVector< DCOPClientTransaction* > mLockTransactions; +}; + +#endif + |