summaryrefslogtreecommitdiffstats
path: root/kscreensaver/krootbacking/krootbacking.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kscreensaver/krootbacking/krootbacking.cpp')
-rw-r--r--kscreensaver/krootbacking/krootbacking.cpp262
1 files changed, 0 insertions, 262 deletions
diff --git a/kscreensaver/krootbacking/krootbacking.cpp b/kscreensaver/krootbacking/krootbacking.cpp
deleted file mode 100644
index 4a4d5543..00000000
--- a/kscreensaver/krootbacking/krootbacking.cpp
+++ /dev/null
@@ -1,262 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2011 by Timothy Pearson <kb9vqf@pearsoncomputing.net> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#include <tqwidget.h>
-#include <tqtimer.h>
-#include <tqrect.h>
-#include <tqimage.h>
-
-#include <kapplication.h>
-#include <kimageeffect.h>
-#include <kpixmapio.h>
-#include <kwinmodule.h>
-#include <kwin.h>
-#include <kdebug.h>
-#include <netwm.h>
-#include <dcopclient.h>
-#include <dcopref.h>
-
-#include <ksharedpixmap.h>
-#include <kstandarddirs.h>
-#include <krootbacking.h>
-
-static TQString wallpaperForDesktop(int desktop)
-{
- return DCOPRef("kdesktop", "KBackgroundIface").call("currentWallpaper", desktop);
-}
-
-class KRootBackingData
-{
-public:
- TQWidget *toplevel;
-#ifdef Q_WS_X11
- KWinModule *kwin;
-#endif
-};
-
-
-KRootBacking::KRootBacking()
- : TQObject(KApplication::desktop(), "KRootBacking" ), m_Desk(0), m_timeout(0)
-{
- init();
-}
-
-void KRootBacking::init()
-{
- d = new KRootBackingData;
- m_Fade = 0;
- m_pPixmap = new KSharedPixmap; //ordinary KPixmap on win32
- m_pTimer = new TQTimer( this );
- m_bInit = false;
- m_bActive = false;
-
- connect(kapp, TQT_SIGNAL(backgroundChanged(int)), TQT_SLOT(slotBackgroundChanged(int)));
- connect(m_pTimer, TQT_SIGNAL(timeout()), TQT_SLOT(tqrepaint()));
-#ifdef Q_WS_X11
- connect(m_pPixmap, TQT_SIGNAL(done(bool)), TQT_SLOT(slotDone(bool)));
-
- d->kwin = new KWinModule( this );
-#endif
-
- m_bInit = true;
-}
-
-KRootBacking::~KRootBacking()
-{
- delete m_pPixmap;
- delete d;
-}
-
-
-int KRootBacking::currentDesktop() const
-{
-#ifdef Q_WS_X11
- NETRootInfo rinfo( qt_xdisplay(), NET::CurrentDesktop );
- rinfo.activate();
- return rinfo.currentDesktop();
-#endif
-}
-
-
-void KRootBacking::start()
-{
- if (m_bActive)
- return;
-
- m_bActive = true;
- if ( !isAvailable() )
- {
- // We should get a KIPC message when the shared pixmap is available...
- enableExports();
- if (m_timeout < 50) {
- TQTimer::singleShot( 100, this, SLOT(show()) ); // ...but it doesn't always work!
- m_timeout++;
- return;
- }
- }
- if (m_bInit) {
- tqrepaint(true);
- }
-}
-
-
-void KRootBacking::stop()
-{
- m_bActive = false;
- m_pTimer->stop();
-}
-
-
-void KRootBacking::setFadeEffect(double fade, const TQColor &color)
-{
- if (fade < 0)
- m_Fade = 0;
- else if (fade > 1)
- m_Fade = 1;
- else
- m_Fade = fade;
- m_FadeColor = color;
-
- if ( m_bActive && m_bInit ) tqrepaint(true);
-}
-
-void KRootBacking::tqrepaint()
-{
- tqrepaint(false);
-}
-
-
-void KRootBacking::tqrepaint(bool force)
-{
- TQWidget* desktopWidget = KApplication::desktop();
- TQPoint p1 = desktopWidget->mapToGlobal(desktopWidget->rect().topLeft());
- TQPoint p2 = desktopWidget->mapToGlobal(desktopWidget->rect().bottomRight());
- if (!force && (m_Rect == TQRect(p1, p2)))
- return;
-
- m_Rect = TQRect(p1, p2);
-#ifdef Q_WS_X11
- m_Desk = currentDesktop();
-
- // KSharedPixmap will correctly generate a tile for us.
- m_pPixmap->loadFromShared(pixmapName(m_Desk), m_Rect);
-#else
- m_Desk = currentDesktop();
- // !x11 note: tile is not generated!
- // TODO: pixmapName() is a nonsense now!
- m_pPixmap->load( pixmapName(m_Desk) );
- if (!m_pPixmap->isNull()) {
- m_pPixmap->resize( m_Rect.size() );
- slotDone(true);
- }
-#endif
-}
-
-bool KRootBacking::isAvailable() const
-{
-// #ifdef Q_WS_X11
-// return m_pPixmap->isAvailable(pixmapName(m_Desk));
-// #else
- return m_pPixmap->isNull();
-// #endif
-}
-
-TQString KRootBacking::pixmapName(int desk) {
- TQString pattern = TQString("DESKTOP%1");
-#ifdef Q_WS_X11
- int screen_number = DefaultScreen(qt_xdisplay());
- if (screen_number) {
- pattern = TQString("SCREEN%1-DESKTOP").arg(screen_number) + "%1";
- }
-#endif
- return pattern.arg( desk );
-}
-
-
-void KRootBacking::enableExports()
-{
-#ifdef Q_WS_X11
- kdDebug(270) << k_lineinfo << "activating background exports.\n";
- DCOPClient *client = kapp->dcopClient();
- if (!client->isAttached())
- client->attach();
- TQByteArray data;
- TQDataStream args( data, IO_WriteOnly );
- args << 1;
-
- TQCString appname( "kdesktop" );
- int screen_number = DefaultScreen(qt_xdisplay());
- if ( screen_number )
- appname.sprintf("kdesktop-screen-%d", screen_number );
-
- client->send( appname, "KBackgroundIface", "setExport(int)", data );
-#endif
-}
-
-
-void KRootBacking::slotDone(bool success)
-{
- if (!success)
- {
- kdWarning(270) << k_lineinfo << "loading of desktop background failed.\n";
- if (m_timeout < 50) {
- TQTimer::singleShot( 100, this, SLOT(show()) );
- m_timeout++;
- return;
- }
- }
-
- // We need to test active as the pixmap might become available
- // after the widget has been destroyed.
- if ( m_bActive )
- updateBackground( m_pPixmap );
-}
-
-void KRootBacking::updateBackground( KSharedPixmap *spm )
-{
- TQPixmap pm = *spm;
-
- if (m_Fade > 1e-6)
- {
- KPixmapIO io;
- TQImage img = io.convertToImage(pm);
- img = KImageEffect::fade(img, m_Fade, m_FadeColor);
- pm = io.convertToPixmap(img);
- }
-
- TQString filename = getenv("USER");
- filename.prepend("/tmp/kde-");
- filename.append("/krootbacking.png");
- pm.save(filename, "PNG");
- printf("%s\n\r", filename.ascii()); fflush(stdout);
- exit(0);
-}
-
-
-void KRootBacking::slotBackgroundChanged(int desk)
-{
- if (!m_bInit || !m_bActive)
- return;
-
- if (desk == m_Desk)
- tqrepaint(true);
-}
-
-// #include "krootpixmap.moc"
-