You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
2.9 KiB
138 lines
2.9 KiB
//===========================================================================
|
|
//
|
|
// 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"
|
|
|
|
class DCOPClientTransaction;
|
|
|
|
//===========================================================================
|
|
/**
|
|
* 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();
|
|
|
|
protected slots:
|
|
void idleTimeout();
|
|
void lockProcessExited();
|
|
void lockProcessWaiting();
|
|
|
|
private slots:
|
|
void handleSecureDialog();
|
|
void slotSAKProcessExited();
|
|
|
|
/**
|
|
* Enable wallpaper exports
|
|
*/
|
|
void enableExports();
|
|
void recoverFromHackingAttempt();
|
|
|
|
private:
|
|
bool restartDesktopLockProcess();
|
|
|
|
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;
|
|
};
|
|
|
|
#endif
|
|
|