00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __LOCKENG_H__
00010 #define __LOCKENG_H__
00011
00012 #include <kgreeterplugin.h>
00013
00014 #include <kprocess.h>
00015 #include <kpixmap.h>
00016
00017 #include <tqwidget.h>
00018 #include <tqtimer.h>
00019 #include <tqvaluestack.h>
00020 #include <tqmessagebox.h>
00021 #include <tqpixmap.h>
00022
00023 #include <X11/Xlib.h>
00024
00025 class KLibrary;
00026 class KWinModule;
00027
00028 struct GreeterPluginHandle {
00029 KLibrary *library;
00030 kgreeterplugin_info *info;
00031 };
00032
00033 #define FIFO_DIR "/tmp/ksocket-global"
00034 #define FIFO_FILE "/tmp/ksocket-global/kdesktoplockcontrol"
00035 #define FIFO_FILE_OUT "/tmp/ksocket-global/kdesktoplockcontrol_out"
00036 #define PIPE_CHECK_INTERVAL 50
00037
00038
00039
00040
00041
00042
00043 class LockProcess
00044 : public QWidget
00045 {
00046 Q_OBJECT
00047 public:
00048 LockProcess(bool child_saver = false, bool useBlankOnly = false);
00049 ~LockProcess();
00050
00051 bool lock();
00052
00053 bool defaultSave();
00054
00055 bool dontLock();
00056
00057 void setChildren(TQValueList<int> children) { child_sockets = children; }
00058 void setParent(int fd) { mParent = fd; }
00059
00060 void msgBox( TQMessageBox::Icon type, const TQString &txt );
00061 int execDialog( TQDialog* dlg );
00062
00063 public slots:
00064 void quitSaver();
00065 void preparePopup();
00066 void cleanupPopup();
00067 void checkPipe();
00068 void desktopResized();
00069 void doDesktopResizeFinish();
00070 void doFunctionKeyBroadcast();
00071
00072 protected:
00073 virtual bool x11Event(XEvent *);
00074 virtual void timerEvent(TQTimerEvent *);
00075
00076 private slots:
00077 void hackExited(KProcess *);
00078 void signalPipeSignal();
00079 bool startLock();
00080 void suspend();
00081 void checkDPMSActive();
00082 void slotDeadTimePassed();
00083 void windowAdded( WId );
00084
00085 private:
00086 void configure();
00087 void readSaver();
00088 void createSaverWindow();
00089 void hideSaverWindow();
00090 void saveVRoot();
00091 void setVRoot(Window win, Window rw);
00092 void removeVRoot(Window win);
00093 bool grabKeyboard();
00094 bool grabMouse();
00095 bool grabInput();
00096 void ungrabInput();
00097 void cantLock(const TQString &reason);
00098 bool startSaver();
00099 void stopSaver();
00100 bool startHack();
00101 void stopHack();
00102 void setupSignals();
00103 void setupPipe();
00104 bool checkPass();
00105 void stayOnTop();
00106 void lockXF86();
00107 void unlockXF86();
00108 void showVkbd();
00109 void hideVkbd();
00110 bool forwardVkbdEvent( XEvent* event );
00111 void sendVkbdFocusInOut( WId window, Time t );
00112 void windowAdded( WId window, bool managed );
00113 void resume( bool force );
00114 static TQVariant getConf(void *ctx, const char *key, const TQVariant &dflt);
00115
00116 bool mLocked;
00117 int mLockGrace;
00118 int mPriority;
00119 bool mBusy;
00120 KProcess mHackProc;
00121 int mRootWidth;
00122 int mRootHeight;
00123 TQString mSaverExec;
00124 TQString mSaver;
00125 bool mOpenGLVisual;
00126 bool child_saver;
00127 TQValueList<int> child_sockets;
00128 int mParent;
00129 bool mUseBlankOnly;
00130 bool mSuspended;
00131 TQTimer mSuspendTimer;
00132 bool mVisibility;
00133 bool mDPMSDepend;
00134 TQTimer mCheckDPMS;
00135 TQValueStack< TQWidget* > mDialogs;
00136 bool mRestoreXF86Lock;
00137 bool mForbidden;
00138 TQStringList mPlugins, mPluginOptions;
00139 TQString mMethod;
00140 GreeterPluginHandle greetPlugin;
00141 TQPixmap mSavedScreen;
00142 int mAutoLogoutTimerId;
00143 int mAutoLogoutTimeout;
00144 bool mAutoLogout;
00145
00146 TQTimer *resizeTimer;
00147 unsigned int mkeyCode;
00148
00149 KProcess* mVkbdProcess;
00150 KWinModule* mKWinModule;
00151 struct VkbdWindow
00152 {
00153 WId id;
00154 QRect rect;
00155 };
00156 QValueList< VkbdWindow > mVkbdWindows;
00157 WId mVkbdLastEventWindow;
00158
00159 bool mPipeOpen;
00160 int mPipe_fd;
00161 bool mPipeOpen_out;
00162 int mPipe_fd_out;
00163
00164 bool mInfoMessageDisplayed;
00165 TQDialog *currentDialog;
00166 bool mDialogControlLock;
00167 bool mForceReject;
00168 };
00169
00170 #endif
00171