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.
tdebase/kdesktop/bgmanager.h

149 lines
3.6 KiB

/*
*
* 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__
#define __BGMANAGER_H__
#include <tqstring.h>
#include <tqptrvector.h>
#include <tqdatetime.h>
#include <KBackgroundIface.h>
#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300
#define COMPOSITE
#endif
class TDEConfig;
class TQTimer;
class TQPixmap;
class TDEPopupMenu;
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 TQObject,
public KBackgroundIface
{
Q_OBJECT
public:
KBackgroundManager(TQWidget *desktop, KWinModule* twinModule);
~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, TQString wallpaper, int mode);
void setWallpaper(TQString wallpaper, int mode);
void setWallpaper(TQString wallpaper);
void changeWallpaper();
TQString currentWallpaper(int desk);
void setColor(const TQColor & c, bool isColorA = true);
void setBackgroundEnabled(const bool enable);
TQStringList wallpaperList(int desk);
TQStringList wallpaperFiles(int desk);
signals:
void initDone();
private slots:
void slotTimeout();
void slotImageDone(int desk);
void slotChangeDesktop(int);
void slotChangeViewport(int, const TQPoint&);
void slotChangeNumberOfDesktops(int);
void repaintBackground();
void desktopResized();
void clearRoot();
void saveImages();
void slotCrossFadeTimeout();
void slotCmBackgroundChanged(bool);
private:
void applyCommon(bool common);
void applyExport(bool _export);
void applyCache(bool limit, int size);
int realDesktop();
int effectiveDesktop();
int validateDesk(int desk);
int m_numberOfViewports;
void renderBackground(int desk);
void exportBackground(int pixmap, int desk);
int pixmapSize(TQPixmap *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;
TDEConfig *m_pConfig;
TQWidget *m_pDesktop;
TQTimer *m_pTimer;
KPixmap *m_tPixmap;
TQPtrVector<KVirtualBGRenderer> m_Renderer;
TQPtrVector<KBackgroundCacheEntry> m_Cache;
KWinModule *m_pKwinmodule;
KPixmapServer *m_pPixmapServer;
unsigned long m_xrootpmap;
/*CrossFade vars*/
TQTimer * m_crossTimer;
double mAlpha;
TQPixmap mNextScreen;
TQPixmap * mOldScreen;
int fadeDesk;
TQTime mBenchmark;
bool crossInit;
bool resizingDesktop; // is True if desktop is resizing
};
#endif // __BGMANAGER_H__