summaryrefslogtreecommitdiffstats
path: root/kdesktop/lockeng.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdesktop/lockeng.h')
-rw-r--r--kdesktop/lockeng.h152
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 <mjones@kde.org>
+//
+
+#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
+