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
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/* vi: ts=8 sts=4 sw=4
*
* This file is part of the KDE project, module kdesktop.
* Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org>
*
* You can Freely distribute this program under the GNU General Public
* License. See the file "COPYING" for the exact licensing terms.
*/
#ifndef __BGManager_h_Included__
#define __BGManager_h_Included__
#include <qstring.h>
#include <qptrvector.h>
#include <KBackgroundIface.h>
class KConfig;
class QTimer;
class QPixmap;
class KPopupMenu;
class KWinModule;
class KPixmap;
class KVirtualBGRenderer;
class KPixmapServer;
/**
* Internal struct for KBackgroundManager.
*/
struct KBackgroundCacheEntry
{
int hash;
int atime;
int exp_from;
KPixmap *pixmap;
};
/**
* Background manager for KDE. This class is to be used in kdesktop. Usage is
* very simple: instantiate this class once and the desktop background will
* be painted automatically from now on.
*
* The background manager also has a DCOP interface to remotely control its
* operation. See KBackgroundIface.h for details.
*/
class KBackgroundManager
: public QObject,
virtual public KBackgroundIface
{
Q_OBJECT
public:
KBackgroundManager(QWidget *desktop, KWinModule* kwinModule);
~KBackgroundManager();
void configure();
void setCommon(int);
bool isCommon() { return m_bCommon; };
void setExport(int);
bool isExport() { return m_bExport; };
void setCache(int, int);
void setWallpaper(int desk, QString wallpaper, int mode);
void setWallpaper(QString wallpaper, int mode);
void setWallpaper(QString wallpaper);
void changeWallpaper();
QString currentWallpaper(int desk);
void setColor(const QColor & c, bool isColorA = true);
void setBackgroundEnabled(const bool enable);
QStringList wallpaperList(int desk);
QStringList wallpaperFiles(int desk);
signals:
void initDone();
private slots:
void slotTimeout();
void slotImageDone(int desk);
void slotChangeDesktop(int);
void slotChangeNumberOfDesktops(int);
void repaintBackground();
void desktopResized();
void clearRoot();
void saveImages();
private:
void applyCommon(bool common);
void applyExport(bool _export);
void applyCache(bool limit, int size);
int realDesktop();
int effectiveDesktop();
int validateDesk(int desk);
void renderBackground(int desk);
void exportBackground(int pixmap, int desk);
int pixmapSize(QPixmap *pm);
int cacheSize();
void removeCache(int desk);
bool freeCache(int size);
void addCache(KPixmap *pm, int hash, int desk);
void setPixmap(KPixmap *pm, int hash, int desk);
bool m_bExport, m_bCommon;
bool m_bLimitCache, m_bInit;
bool m_bBgInitDone;
bool m_bEnabled;
int m_CacheLimit;
int m_Serial, m_Hash, m_Current;
KConfig *m_pConfig;
QWidget *m_pDesktop;
QTimer *m_pTimer;
QPtrVector<KVirtualBGRenderer> m_Renderer;
QPtrVector<KBackgroundCacheEntry> m_Cache;
KWinModule *m_pKwinmodule;
KPixmapServer *m_pPixmapServer;
unsigned long m_xrootpmap;
};
#endif // __BGManager_h_Included__
|