summaryrefslogtreecommitdiffstats
path: root/kdesktop/lock/lockprocess.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdesktop/lock/lockprocess.h')
-rw-r--r--kdesktop/lock/lockprocess.h256
1 files changed, 256 insertions, 0 deletions
diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h
new file mode 100644
index 000000000..85e9cdd31
--- /dev/null
+++ b/kdesktop/lock/lockprocess.h
@@ -0,0 +1,256 @@
+//===========================================================================
+//
+// This file is part of the KDE project
+//
+// Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+// Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
+// Copyright (c) 2010-2013 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+//
+
+#ifndef __LOCKENG_H__
+#define __LOCKENG_H__
+
+#include <kgreeterplugin.h>
+
+#include <kprocess.h>
+#include <kpixmap.h>
+#include <krootpixmap.h>
+
+#include <tqwidget.h>
+#include <tqtimer.h>
+#include <tqvaluestack.h>
+#include <tqmessagebox.h>
+#include <tqpixmap.h>
+#include <tqdatetime.h>
+#include <tqthread.h>
+
+#include <X11/Xlib.h>
+
+class KLibrary;
+class KWinModule;
+class KSMModalDialog;
+class LockProcess;
+
+struct GreeterPluginHandle {
+ KLibrary *library;
+ kgreeterplugin_info *info;
+};
+
+#define FIFO_DIR "/tmp/tdesocket-global"
+#define FIFO_FILE "/tmp/tdesocket-global/kdesktoplockcontrol-%d"
+#define FIFO_FILE_OUT "/tmp/tdesocket-global/kdesktoplockcontrol_out-%d"
+
+typedef TQValueList<Window> TQXLibWindowList;
+
+//===========================================================================
+//
+// Control pipe handler
+//
+class ControlPipeHandlerObject : public TQObject
+{
+ Q_OBJECT
+
+ public:
+ ControlPipeHandlerObject();
+ ~ControlPipeHandlerObject();
+
+ public slots:
+ void run();
+
+ signals:
+ void processCommand(TQString);
+
+ public:
+ LockProcess* mParent;
+};
+
+//===========================================================================
+//
+// Screen saver handling process. Handles screensaver window,
+// starting screensaver hacks, and password entry.
+//
+class LockProcess
+ : public TQWidget
+{
+ Q_OBJECT
+public:
+ LockProcess();
+ ~LockProcess();
+
+ void init(bool child_saver = false, bool useBlankOnly = false);
+
+ bool lock();
+
+ bool defaultSave();
+
+ bool dontLock();
+
+ bool runSecureDialog();
+
+ void setChildren(TQValueList<int> children) { child_sockets = children; }
+ void setParent(int fd) { mParent = fd; }
+
+ void msgBox( TQMessageBox::Icon type, const TQString &txt );
+ int execDialog( TQDialog* dlg );
+
+public slots:
+ void quitSaver();
+ void preparePopup();
+ void cleanupPopup();
+ void desktopResized();
+ void doDesktopResizeFinish();
+ void doFunctionKeyBroadcast();
+ void slotPaintBackground(const TQPixmap &pm);
+ void slotForcePaintBackground();
+
+protected:
+ virtual bool x11Event(XEvent *);
+ virtual void timerEvent(TQTimerEvent *);
+ virtual void resizeEvent(TQResizeEvent *);
+
+private slots:
+ void hackExited(TDEProcess *);
+ void signalPipeSignal();
+ bool startLock();
+ void suspend();
+ void checkDPMSActive();
+ void slotDeadTimePassed();
+ void windowAdded( WId );
+ void resumeUnforced();
+ void displayLockDialogIfNeeded();
+ void closeDialogAndStartHack();
+ bool closeCurrentWindow();
+ void repaintRootWindowIfNeeded();
+ void startSecureDialog();
+ void slotMouseActivity(XEvent *event);
+ void processInputPipeCommand(TQString command);
+
+private:
+ void configure();
+ void readSaver();
+ void createSaverWindow();
+ void hideSaverWindow();
+ void saveVRoot();
+ void setVRoot(Window win, Window rw);
+ void removeVRoot(Window win);
+ void setTransparentBackgroundARGB();
+ bool grabKeyboard();
+ bool grabMouse();
+ bool grabInput();
+ void ungrabInput();
+ void cantLock(const TQString &reason);
+ bool startSaver(bool notify_ready = false);
+ void stopSaver();
+ bool startHack();
+ void stopHack();
+ void setupSignals();
+ bool checkPass();
+ void stayOnTop();
+ void lockXF86();
+ void unlockXF86();
+ void showVkbd();
+ void hideVkbd();
+ void saverReady();
+ void saverReadyIfNeeded();
+ bool forwardVkbdEvent( XEvent* event );
+ void sendVkbdFocusInOut( WId window, Time t );
+ void windowAdded( WId window, bool managed );
+ void resume( bool force );
+ static TQVariant getConf(void *ctx, const char *key, const TQVariant &dflt);
+ void generateBackingImages();
+ void fullyOnline();
+
+ bool mLocked;
+ int mLockGrace;
+ int mPriority;
+ bool mBusy;
+ TDEProcess mHackProc;
+ int mRootWidth;
+ int mRootHeight;
+ TQString mSaverExec;
+ TQString mSaver;
+ bool mOpenGLVisual;
+ bool child_saver;
+ TQValueList<int> child_sockets;
+ int mParent;
+ bool mUseBlankOnly;
+ bool mShowLockDateTime;
+ bool mSuspended;
+ TQTimer mSuspendTimer;
+ bool mVisibility;
+ TQTimer mCheckDPMS;
+ TQValueStack< TQWidget* > mDialogs;
+ bool mRestoreXF86Lock;
+ bool mForbidden;
+ TQStringList mPlugins, mPluginOptions;
+ TQString mMethod;
+ GreeterPluginHandle greetPlugin;
+ TQPixmap mSavedScreen;
+ int mAutoLogoutTimerId;
+ int mAutoLogoutTimeout;
+ bool mAutoLogout;
+
+ TQTimer *resizeTimer;
+ unsigned int mkeyCode;
+
+ TQTimer *hackResumeTimer;
+
+ TDEProcess* mVkbdProcess;
+ KWinModule* mKWinModule;
+ struct VkbdWindow
+ {
+ WId id;
+ TQRect rect;
+ };
+ TQValueList< VkbdWindow > mVkbdWindows;
+ WId mVkbdLastEventWindow;
+
+ bool mPipeOpen;
+ int mPipe_fd;
+ bool mPipeOpen_out;
+ int mPipe_fd_out;
+
+ bool mInfoMessageDisplayed;
+ bool mDialogControlLock;
+ bool mForceReject;
+ TQDialog *currentDialog;
+
+ TQTimer* mEnsureScreenHiddenTimer;
+ TQTimer* mForceContinualLockDisplayTimer;
+ TQTimer* mEnsureVRootWindowSecurityTimer;
+ TQTimer* mHackDelayStartupTimer;
+
+ int mHackDelayStartupTimeout;
+ bool mHackStartupEnabled;
+ bool mOverrideHackStartupEnabled;
+ bool mResizingDesktopLock;
+ bool mFullyOnlineSent;
+
+ TQPixmap backingPixmap;
+ KRootPixmap *m_rootPixmap;
+ int mBackingStartupDelayTimer;
+ TQPixmap mArgbTransparentBackgroundPixmap;
+
+ KSMModalDialog* m_startupStatusDialog;
+
+ TQDateTime mlockDateTime;
+
+ bool m_mouseDown;
+ int m_mousePrevX;
+ int m_mousePrevY;
+ int m_dialogPrevX;
+ int m_dialogPrevY;
+
+ bool m_notifyReadyRequested;
+
+ TQWidget* m_maskWidget;
+ Window m_saverRootWindow;
+
+ ControlPipeHandlerObject* mControlPipeHandler;
+ TQEventLoopThread* mControlPipeHandlerThread;
+
+ friend class ControlPipeHandlerObject;
+};
+
+#endif
+