blob: 0eb67f9d60bf1a5efe54fc8e229223f9d5db81e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
//===========================================================================
//
// This file is part of the KDE project
//
// Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
//
#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
|