00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __BGManager_h_Included__
00011 #define __BGManager_h_Included__
00012
00013 #include <tqstring.h>
00014 #include <tqptrvector.h>
00015
00016 #include <KBackgroundIface.h>
00017
00018 #if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
00019 #define COMPOSITE
00020 #endif
00021
00022 class KConfig;
00023 class TQTimer;
00024 class TQPixmap;
00025 class KPopupMenu;
00026 class KWinModule;
00027 class KPixmap;
00028 class KVirtualBGRenderer;
00029 class KPixmapServer;
00030
00034 struct KBackgroundCacheEntry
00035 {
00036 int hash;
00037 int atime;
00038 int exp_from;
00039 KPixmap *pixmap;
00040 };
00041
00042
00052 class KBackgroundManager
00053 : public TQObject,
00054 virtual public KBackgroundIface
00055 {
00056 Q_OBJECT
00057
00058 public:
00059 KBackgroundManager(TQWidget *desktop, KWinModule* kwinModule);
00060 ~KBackgroundManager();
00061
00062 void configure();
00063 void setCommon(int);
00064 bool isCommon() { return m_bCommon; };
00065 void setExport(int);
00066 bool isExport() { return m_bExport; };
00067 void setCache(int, int);
00068 void setWallpaper(int desk, TQString wallpaper, int mode);
00069 void setWallpaper(TQString wallpaper, int mode);
00070 void setWallpaper(TQString wallpaper);
00071 void changeWallpaper();
00072 TQString currentWallpaper(int desk);
00073 void setColor(const TQColor & c, bool isColorA = true);
00074 void setBackgroundEnabled(const bool enable);
00075 TQStringList wallpaperList(int desk);
00076 TQStringList wallpaperFiles(int desk);
00077
00078 signals:
00079 void initDone();
00080
00081 private slots:
00082 void slotTimeout();
00083 void slotImageDone(int desk);
00084 void slotChangeDesktop(int);
00085 void slotChangeViewport(int, const TQPoint&);
00086 void slotChangeNumberOfDesktops(int);
00087 void repaintBackground();
00088 void desktopResized();
00089 void clearRoot();
00090 void saveImages();
00091
00092 #ifdef COMPOSITE
00093 void slotCmBackgroundChanged(bool);
00094 #endif
00095
00096 private:
00097 void applyCommon(bool common);
00098 void applyExport(bool _export);
00099 void applyCache(bool limit, int size);
00100
00101 int realDesktop();
00102 int effectiveDesktop();
00103 int validateDesk(int desk);
00104 int m_numberOfViewports;
00105
00106 void renderBackground(int desk);
00107 void exportBackground(int pixmap, int desk);
00108 int pixmapSize(TQPixmap *pm);
00109 int cacheSize();
00110 void removeCache(int desk);
00111 bool freeCache(int size);
00112 void addCache(KPixmap *pm, int hash, int desk);
00113 void setPixmap(KPixmap *pm, int hash, int desk);
00114
00115 bool m_bExport, m_bCommon;
00116 bool m_bLimitCache, m_bInit;
00117 bool m_bBgInitDone;
00118 bool m_bEnabled;
00119
00120 int m_CacheLimit;
00121 int m_Serial, m_Hash, m_Current;
00122
00123 KConfig *m_pConfig;
00124 TQWidget *m_pDesktop;
00125 TQTimer *m_pTimer;
00126
00127 #ifdef COMPOSITE
00128 KPixmap *m_tPixmap;
00129 #endif
00130
00131 TQPtrVector<KVirtualBGRenderer> m_Renderer;
00132 TQPtrVector<KBackgroundCacheEntry> m_Cache;
00133
00134 KWinModule *m_pKwinmodule;
00135 KPixmapServer *m_pPixmapServer;
00136
00137 unsigned long m_xrootpmap;
00138 };
00139
00140 #endif // __BGManager_h_Included__