summaryrefslogtreecommitdiffstats
path: root/kscreensaver/kdesavers/slideshow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kscreensaver/kdesavers/slideshow.cpp')
-rw-r--r--kscreensaver/kdesavers/slideshow.cpp1022
1 files changed, 0 insertions, 1022 deletions
diff --git a/kscreensaver/kdesavers/slideshow.cpp b/kscreensaver/kdesavers/slideshow.cpp
deleted file mode 100644
index a3179b5f..00000000
--- a/kscreensaver/kdesavers/slideshow.cpp
+++ /dev/null
@@ -1,1022 +0,0 @@
-/* Slide Show Screen Saver
- * (C) 1999 Stefan Taferner <taferner@kde.org>
- * (C) 2001 Martin R. Jones <mjones@kde.org>
- * (C) 2003 Chris Howells <howells@kde.org>
- * (C) 2003 Sven Leiber <s.leiber@web.de>
- *
- * This code is under GPL
- *
- * 2001/03/04 Converted to libkscreensaver by Martin R. Jones.
- */
-
-
-#include <tqdir.h>
-#include <tqcolor.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqfile.h>
-#include <tqpaintdevicemetrics.h>
-#include <tqcheckbox.h>
-#include <tqcombobox.h>
-#include <tqspinbox.h>
-#include <tqframe.h>
-#include <tqdesktopwidget.h>
-
-#include <kconfig.h>
-#include <kglobal.h>
-#include <kapplication.h>
-#include <klocale.h>
-#include <kmessagebox.h>
-#include <kimageio.h>
-#include <kfiledialog.h>
-#include <kstandarddirs.h>
-#include <kurlrequester.h>
-#include <kaboutdata.h>
-#include <kaboutapplication.h>
-#include <kdebug.h>
-
-#include <stdlib.h>
-#include <assert.h>
-#include <math.h>
-#include <time.h>
-
-#include "slideshow.h"
-#include "slideshow.moc"
-#include "slideshowcfg.h"
-
-
-#define SLIDESHOW_VERSION "2.3.0"
-static const char version[] = SLIDESHOW_VERSION;
-static const char description[] = I18N_NOOP("KSlideshow");
-
-
-// libkscreensaver interface
-extern "C"
-{
- KDE_EXPORT const char *kss_applicationName = "kslideshow.kss";
- KDE_EXPORT const char *kss_description = I18N_NOOP( "KSlideshow" );
- KDE_EXPORT const char *kss_version = SLIDESHOW_VERSION;
-
- KDE_EXPORT KScreenSaver *kss_create( WId id )
- {
- return new kSlideShowSaver( id );
- }
-
- KDE_EXPORT TQDialog *kss_setup()
- {
- return new kSlideShowSetup();
- }
-}
-
-
-//=============================================================================
-// Class kSlideShowSaver
-//=============================================================================
-kSlideShowSaver::kSlideShowSaver( WId id ): KScreenSaver(id)
-{
- KImageIO::registerFormats();
-
- blank();
-
- mEffect = NULL;
- mNumEffects = 0;
- mIntArray = NULL;
- registerEffects();
-
- readConfig();
- initNextScreen();
-
- mFileIdx = 0;
- mColorContext = TQColor::enterAllocContext();
-
- mEffectRunning = false;
-
- mTimer.start(10, true);
- connect(&mTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotTimeout()));
-
- TQDesktopWidget *d = TQApplication::desktop();
- if( geometry() == d->geometry() && d->numScreens() > 1)
- {
- for(int i = 0; i < d->numScreens(); ++i)
- {
- TQRect s = d->screenGeometry(i);
- mGeoList.append(new mScreenGeo(s.width(), s.height(), s.topLeft().x(), s.topLeft().y()));
- }
- }
- else
- {
- mGeoList.append(new mScreenGeo(width(), height(), 0, 0 ));
- }
- createNextScreen();
-}
-
-
-//----------------------------------------------------------------------------
-kSlideShowSaver::~kSlideShowSaver()
-{
- delete [] mIntArray;
- delete [] mEffectList;
-
- mTimer.stop();
- if (mPainter.isActive()) mPainter.end();
- TQColor::leaveAllocContext();
- TQColor::destroyAllocContext(mColorContext);
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSaver::initNextScreen()
-{
- TQPaintDeviceMetrics metric(this);
- int w, h;
-
- w = width();
- h = height();
- mNextScreen = TQPixmap(w, h, metric.depth());
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSaver::readConfig()
-{
- TDEConfig *config = TDEGlobal::config();
- config->setGroup("Settings");
- mShowRandom = config->readBoolEntry("ShowRandom", true);
- mZoomImages = config->readBoolEntry("ZoomImages", false);
- mPrintName = config->readBoolEntry("PrintName", true);
- mDirectory = config->readPathEntry("Directory", TDEGlobal::dirs()->findDirs("wallpaper", "").last());
- mDelay = config->readNumEntry("Delay", 10) * 1000;
- mSubdirectory = config->readBoolEntry("SubDirectory", false);
- mRandomPosition = config->readBoolEntry("RandomPosition", false);
-
- loadDirectory();
-}
-
-
-//----------------------------------------------------------------------------
-void kSlideShowSaver::registerEffects()
-{
- int i = 0;
-
- mEffectList = new EffectMethod[64];
- mEffectList[i++] = &kSlideShowSaver::effectChessboard;
- mEffectList[i++] = &kSlideShowSaver::effectMultiCircleOut;
- mEffectList[i++] = &kSlideShowSaver::effectSpiralIn;
- mEffectList[i++] = &kSlideShowSaver::effectSweep;
- mEffectList[i++] = &kSlideShowSaver::effectMeltdown;
- mEffectList[i++] = &kSlideShowSaver::effectCircleOut;
- mEffectList[i++] = &kSlideShowSaver::effectBlobs;
- mEffectList[i++] = &kSlideShowSaver::effectHorizLines;
- mEffectList[i++] = &kSlideShowSaver::effectVertLines;
- mEffectList[i++] = &kSlideShowSaver::effectRandom;
- mEffectList[i++] = &kSlideShowSaver::effectGrowing;
- mEffectList[i++] = &kSlideShowSaver::effectIncomingEdges;
-
- mNumEffects = i;
- // mNumEffects = 1; //...for testing
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectMultiCircleOut(bool aInit)
-{
- int x, y, i;
- double alpha;
- static TQPointArray pa(4);
-
- if (aInit)
- {
- startPainter();
- mw = width();
- mh = height();
- mx = mw;
- my = mh>>1;
- pa.setPoint(0, mw>>1, mh>>1);
- pa.setPoint(3, mw>>1, mh>>1);
- mfy = sqrt((double)mw*mw + mh*mh) / 2;
- mi = TDEApplication::random()%15 + 2;
- mfd = M_PI*2/mi;
- mAlpha = mfd;
- mwait = 10 * mi;
- mfx = M_PI/32; // divisor must be powers of 8
- }
-
- if (mAlpha < 0)
- {
- mPainter.end();
- showNextScreen();
- return -1;
- }
-
- for (alpha=mAlpha, i=mi; i>=0; i--, alpha+=mfd)
- {
- x = (mw>>1) + (int)(mfy * cos(-alpha));
- y = (mh>>1) + (int)(mfy * sin(-alpha));
-
- mx = (mw>>1) + (int)(mfy * cos(-alpha + mfx));
- my = (mh>>1) + (int)(mfy * sin(-alpha + mfx));
-
- pa.setPoint(1, x, y);
- pa.setPoint(2, mx, my);
-
- mPainter.drawPolygon(pa);
- }
- mAlpha -= mfx;
-
- return mwait;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectSpiralIn(bool aInit)
-{
- if (aInit)
- {
- startPainter();
- mw = width();
- mh = height();
- mix = mw / 8;
- miy = mh / 8;
- mx0 = 0;
- mx1 = mw - mix;
- my0 = miy;
- my1 = mh - miy;
- mdx = mix;
- mdy = 0;
- mi = 0;
- mj = 16 * 16;
- mx = 0;
- my = 0;
- }
-
- if (mi==0 && mx0>=mx1)
- {
- mPainter.end();
- showNextScreen();
- return -1;
- }
-
- if (mi==0 && mx>=mx1) // switch to: down on right side
- {
- mi = 1;
- mdx = 0;
- mdy = miy;
- mx1 -= mix;
- }
- else if (mi==1 && my>=my1) // switch to: right to left on bottom side
- {
- mi = 2;
- mdx = -mix;
- mdy = 0;
- my1 -= miy;
- }
- else if (mi==2 && mx<=mx0) // switch to: up on left side
- {
- mi = 3;
- mdx = 0;
- mdy = -miy;
- mx0 += mix;
- }
- else if (mi==3 && my<=my0) // switch to: left to right on top side
- {
- mi = 0;
- mdx = mix;
- mdy = 0;
- my0 += miy;
- }
-
- bitBlt(TQT_TQPAINTDEVICE(this), mx, my, TQT_TQPAINTDEVICE(&mNextScreen), mx, my, mix, miy, CopyROP, true);
-
- mx += mdx;
- my += mdy;
- mj--;
-
- return 8;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectMeltdown(bool aInit)
-{
- int i, x, y;
- bool done;
-
- if (aInit)
- {
- delete [] mIntArray;
- mw = width();
- mh = height();
- mdx = 4;
- mdy = 16;
- mix = mw / mdx;
- mIntArray = new int[mix];
- for (i=mix-1; i>=0; i--)
- mIntArray[i] = 0;
- }
-
- done = true;
- for (i=0,x=0; i<mix; i++,x+=mdx)
- {
- y = mIntArray[i];
- if (y >= mh) continue;
- done = false;
- if ((TDEApplication::random()&15) < 6) continue;
- bitBlt(TQT_TQPAINTDEVICE(this), x, y+mdy, TQT_TQPAINTDEVICE(this), x, y, mdx, mh-y-mdy, CopyROP, true);
- bitBlt(TQT_TQPAINTDEVICE(this), x, y, TQT_TQPAINTDEVICE(&mNextScreen), x, y, mdx, mdy, CopyROP, true);
- mIntArray[i] += mdy;
- }
-
- if (done)
- {
- delete [] mIntArray;
- mIntArray = NULL;
- return -1;
- }
-
- return 15;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectCircleOut(bool aInit)
-{
- int x, y;
- static TQPointArray pa(4);
-
- if (aInit)
- {
- startPainter();
- mw = width();
- mh = height();
- mx = mw;
- my = mh>>1;
- mAlpha = 2*M_PI;
- pa.setPoint(0, mw>>1, mh>>1);
- pa.setPoint(3, mw>>1, mh>>1);
- mfx = M_PI/16; // divisor must be powers of 8
- mfy = sqrt((double)mw*mw + mh*mh) / 2;
- }
-
- if (mAlpha < 0)
- {
- mPainter.end();
- showNextScreen();
- return -1;
- }
-
- x = mx;
- y = my;
- mx = (mw>>1) + (int)(mfy * cos(mAlpha));
- my = (mh>>1) + (int)(mfy * sin(mAlpha));
- mAlpha -= mfx;
-
- pa.setPoint(1, x, y);
- pa.setPoint(2, mx, my);
-
- mPainter.drawPolygon(pa);
-
- return 20;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectSweep(bool aInit)
-{
- int w, h, x, y, i;
-
- if (aInit)
- {
- // subtype: 0=sweep right to left, 1=sweep left to right
- // 2=sweep bottom to top, 3=sweep top to bottom
- mSubType = TDEApplication::random() % 4;
- mw = width();
- mh = height();
- mdx = (mSubType==1 ? 16 : -16);
- mdy = (mSubType==3 ? 16 : -16);
- mx = (mSubType==1 ? 0 : mw);
- my = (mSubType==3 ? 0 : mh);
- }
-
- if (mSubType==0 || mSubType==1)
- {
- // horizontal sweep
- if ((mSubType==0 && mx < -64) ||
- (mSubType==1 && mx > mw+64))
- {
- return -1;
- }
- for (w=2,i=4,x=mx; i>0; i--, w<<=1, x-=mdx)
- {
- bitBlt(TQT_TQPAINTDEVICE(this), x, 0, TQT_TQPAINTDEVICE(&mNextScreen), x, 0, w, mh, CopyROP, true);
- }
- mx += mdx;
- }
- else
- {
- // vertical sweep
- if ((mSubType==2 && my < -64) ||
- (mSubType==3 && my > mh+64))
- {
- return -1;
- }
- for (h=2,i=4,y=my; i>0; i--, h<<=1, y-=mdy)
- {
- bitBlt(TQT_TQPAINTDEVICE(this), 0, y, TQT_TQPAINTDEVICE(&mNextScreen), 0, y, mw, h, CopyROP, true);
- }
- my += mdy;
- }
-
- return 20;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectBlobs(bool aInit)
-{
- int r;
-
- if (aInit)
- {
- startPainter();
- mAlpha = M_PI * 2;
- mw = width();
- mh = height();
- mi = 150;
- }
-
- if (mi <= 0)
- {
- mPainter.end();
- showNextScreen();
- return -1;
- }
-
- mx = TDEApplication::random() % mw;
- my = TDEApplication::random() % mh;
- r = (TDEApplication::random() % 200) + 50;
-
- mPainter.drawEllipse(mx-r, my-r, r, r);
- mi--;
-
- return 10;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectRandom(bool /*aInit*/)
-{
- int x, y, i, w, h, fact, sz;
-
- fact = (TDEApplication::random() % 3) + 1;
-
- w = width() >> fact;
- h = height() >> fact;
- sz = 1 << fact;
-
- for (i = (w*h)<<1; i > 0; i--)
- {
- x = (TDEApplication::random() % w) << fact;
- y = (TDEApplication::random() % h) << fact;
- bitBlt(TQT_TQPAINTDEVICE(this), x, y, TQT_TQPAINTDEVICE(&mNextScreen), x, y, sz, sz, CopyROP, true);
- }
- showNextScreen();
-
- return -1;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectGrowing(bool aInit)
-{
- if (aInit)
- {
- mw = width();
- mh = height();
- mx = mw >> 1;
- my = mh >> 1;
- mi = 0;
- mfx = mx / 100.0;
- mfy = my / 100.0;
- }
-
- mx = (mw>>1) - (int)(mi * mfx);
- my = (mh>>1) - (int)(mi * mfy);
- mi++;
-
- if (mx<0 || my<0)
- {
- showNextScreen();
- return -1;
- }
-
- bitBlt(TQT_TQPAINTDEVICE(this), mx, my, TQT_TQPAINTDEVICE(&mNextScreen), mx, my,
- mw - (mx<<1), mh - (my<<1), CopyROP, true);
-
- return 20;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectChessboard(bool aInit)
-{
- int y;
-
- if (aInit)
- {
- mw = width();
- mh = height();
- mdx = 8; // width of one tile
- mdy = 8; // height of one tile
- mj = (mw+mdx-1)/mdx; // number of tiles
- mx = mj*mdx; // shrinking x-offset from screen border
- mix = 0; // growing x-offset from screen border
- miy = 0; // 0 or mdy for growing tiling effect
- my = mj&1 ? 0 : mdy; // 0 or mdy for shrinking tiling effect
- mwait = 800 / mj; // timeout between effects
- }
-
- if (mix >= mw)
- {
- showNextScreen();
- return -1;
- }
-
- mix += mdx;
- mx -= mdx;
- miy = miy ? 0 : mdy;
- my = my ? 0 : mdy;
-
- for (y=0; y<mw; y+=(mdy<<1))
- {
- bitBlt(TQT_TQPAINTDEVICE(this), mix, y+miy, TQT_TQPAINTDEVICE(&mNextScreen), mix, y+miy,
- mdx, mdy, CopyROP, true);
- bitBlt(TQT_TQPAINTDEVICE(this), mx, y+my, TQT_TQPAINTDEVICE(&mNextScreen), mx, y+my,
- mdx, mdy, CopyROP, true);
- }
-
- return mwait;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectIncomingEdges(bool aInit)
-{
- int x1, y1;
-
- if (aInit)
- {
- mw = width();
- mh = height();
- mix = mw >> 1;
- miy = mh >> 1;
- mfx = mix / 100.0;
- mfy = miy / 100.0;
- mi = 0;
- mSubType = TDEApplication::random() & 1;
- }
-
- mx = (int)(mfx * mi);
- my = (int)(mfy * mi);
-
- if (mx>mix || my>miy)
- {
- showNextScreen();
- return -1;
- }
-
- x1 = mw - mx;
- y1 = mh - my;
- mi++;
-
- if (mSubType)
- {
- // moving image edges
- bitBlt(TQT_TQPAINTDEVICE(this), 0, 0, TQT_TQPAINTDEVICE(&mNextScreen), mix-mx, miy-my, mx, my, CopyROP, true);
- bitBlt(TQT_TQPAINTDEVICE(this), x1, 0, TQT_TQPAINTDEVICE(&mNextScreen), mix, miy-my, mx, my, CopyROP, true);
- bitBlt(TQT_TQPAINTDEVICE(this), 0, y1, TQT_TQPAINTDEVICE(&mNextScreen), mix-mx, miy, mx, my, CopyROP, true);
- bitBlt(TQT_TQPAINTDEVICE(this), x1, y1, TQT_TQPAINTDEVICE(&mNextScreen), mix, miy, mx, my, CopyROP, true);
- }
- else
- {
- // fixed image edges
- bitBlt(TQT_TQPAINTDEVICE(this), 0, 0, TQT_TQPAINTDEVICE(&mNextScreen), 0, 0, mx, my, CopyROP, true);
- bitBlt(TQT_TQPAINTDEVICE(this), x1, 0, TQT_TQPAINTDEVICE(&mNextScreen), x1, 0, mx, my, CopyROP, true);
- bitBlt(TQT_TQPAINTDEVICE(this), 0, y1, TQT_TQPAINTDEVICE(&mNextScreen), 0, y1, mx, my, CopyROP, true);
- bitBlt(TQT_TQPAINTDEVICE(this), x1, y1, TQT_TQPAINTDEVICE(&mNextScreen), x1, y1, mx, my, CopyROP, true);
- }
- return 20;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectHorizLines(bool aInit)
-{
- static int iyPos[] = { 0, 4, 2, 6, 1, 5, 3, 7, -1 };
- int y;
-
- if (aInit)
- {
- mw = width();
- mh = height();
- mi = 0;
- }
-
- if (iyPos[mi] < 0) return -1;
-
- for (y=iyPos[mi]; y<mh; y+=8)
- {
- bitBlt(TQT_TQPAINTDEVICE(this), 0, y, TQT_TQPAINTDEVICE(&mNextScreen), 0, y, mw, 1, CopyROP, true);
- }
-
- mi++;
- if (iyPos[mi] >= 0) return 160;
- return -1;
-}
-
-
-//----------------------------------------------------------------------------
-int kSlideShowSaver::effectVertLines(bool aInit)
-{
- static int ixPos[] = { 0, 4, 2, 6, 1, 5, 3, 7, -1 };
- int x;
-
- if (aInit)
- {
- mw = width();
- mh = height();
- mi = 0;
- }
-
- if (ixPos[mi] < 0) return -1;
-
- for (x=ixPos[mi]; x<mw; x+=8)
- {
- bitBlt(TQT_TQPAINTDEVICE(this), x, 0, TQT_TQPAINTDEVICE(&mNextScreen), x, 0, 1, mh, CopyROP, true);
- }
-
- mi++;
- if (ixPos[mi] >= 0) return 160;
- return -1;
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSaver::startPainter(TQt::PenStyle aPen)
-{
- TQBrush brush;
- brush.setPixmap(mNextScreen);
- if (mPainter.isActive()) mPainter.end();
- mPainter.begin(this);
- mPainter.setBrush(brush);
- mPainter.setPen(aPen);
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSaver::restart()
-{
- mEffectRunning = false;
- mEffect = NULL;
- blank();
- slotTimeout();
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSaver::slotTimeout()
-{
- int tmout = -1;
- int i;
-
- if (mEffectRunning)
- {
- tmout = (this->*mEffect)(false);
- }
- else
- {
- loadNextImage();
- createNextScreen();
-
- if (mNumEffects > 1) i = TDEApplication::random() % mNumEffects;
- else i = 0;
-
- mEffect = mEffectList[i];
- mEffectRunning = true;
- tmout = (this->*mEffect)(true);
- }
- if (tmout <= 0)
- {
- tmout = mDelay;
- mEffectRunning = false;
- }
- mTimer.start(tmout, true);
-}
-
-
-//----------------------------------------------------------------------------
-void kSlideShowSaver::showNextScreen()
-{
- bitBlt(TQT_TQPAINTDEVICE(this), 0, 0, TQT_TQPAINTDEVICE(&mNextScreen), 0, 0,
- mNextScreen.width(), mNextScreen.height(), CopyROP, true);
-}
-
-
-//----------------------------------------------------------------------------
-void kSlideShowSaver::createNextScreen()
-{
- TQPainter p;
- int ww, wh, iw, ih, x, y;
- double fx, fy;
-
- if (mNextScreen.size() != size())
- mNextScreen.resize(size());
-
- mNextScreen.fill(black);
-
- p.begin(&mNextScreen);
-
- mScreenGeo *geoptr = 0;
- for(geoptr = mGeoList.first(); geoptr; geoptr = mGeoList.next())
- {
- loadNextImage();
-
- iw = mImage.width();
- ih = mImage.height();
- ww = geoptr->mW;
- wh = geoptr->mH;
-
- if (mFileList.isEmpty())
- {
- p.setPen(TQColor("white"));
- p.drawText(20 + (TDEApplication::random() % (ww>>1)), 20 + (TDEApplication::random() % (wh>>1)),
- i18n("No images found"));
- }
- else
- {
- if (mZoomImages)
- {
- fx = (double)ww / iw;
- fy = (double)wh / ih;
- if (fx > fy) fx = fy;
- if (fx > 2) fx = 2;
- iw = (int)(iw * fx);
- ih = (int)(ih * fx);
- TQImage scaledImg = mImage.smoothScale(iw, ih);
-
- x = ((ww - iw) >> 1) + geoptr->mXorg;
- y = ((wh - ih) >> 1) + geoptr->mYorg;
-
- p.drawImage(x, y, scaledImg);
- }
- else
- {
- if(iw >= ww || ih >= wh)
- {
- fx = (double)ww / iw;
- fy = (double)wh / ih;
- if (fx > fy) fx = fy;
- if (fx > 2) fx = 2;
- iw = (int)(iw * fx);
- ih = (int)(ih * fx);
- TQImage scaledImg = mImage.smoothScale(iw, ih);
-
- x = ((ww - iw) >> 1) + geoptr->mXorg;
- y = ((wh - ih) >> 1) + geoptr->mYorg;
-
- p.drawImage(x, y, scaledImg);
- }
- else
- {
- if(mRandomPosition)
- {
- x = (TDEApplication::random() % (ww - iw)) + geoptr->mXorg;
- y = (TDEApplication::random() % (wh - ih)) + geoptr->mYorg;
- }
- else
- {
- x = ((ww - iw) >> 1) + geoptr->mXorg;
- y = ((wh - ih) >> 1) + geoptr->mYorg;
- }
-
- // bitBlt(TQT_TQPAINTDEVICE(&mNextScreen), x, y, TQT_TQPAINTDEVICE(&mImage), 0, 0, iw, ih, CopyROP, false);
- p.drawImage(x, y, mImage);
- }
- }
-
- if (mPrintName)
- {
- p.setPen(TQColor("black"));
- for (x=9; x<=11; x++)
- for (y=21; y>=19; y--)
- p.drawText(x + geoptr->mXorg, wh-y+geoptr->mYorg, mImageName);
- p.setPen(TQColor("white"));
- p.drawText(10 + geoptr->mXorg, wh-20 + geoptr->mYorg, mImageName);
- }
- }
- }
- p.end();
-}
-
-
-//----------------------------------------------------------------------------
-void kSlideShowSaver::loadNextImage()
-{
- TQString fname;
- int num;
-
- num = mFileList.count();
- if (num <= 0) //no files in the directory
- {
- return;
- }
-
- if (mShowRandom)
- {
- mFileIdx = TDEApplication::random() % num;
- fname = mFileList[mFileIdx];
- mFileList.remove(fname);
- if (num == 1) //we're about to run out of images
- {
- mFileList = mRandomList;
- }
- }
- else
- {
- if (mFileIdx >= num) mFileIdx = 0;
- fname = mFileList[mFileIdx];
- }
-
- if (!mImage.load(fname))
- {
- kdDebug() << "Failed to load image " << fname << endl;
- mFileList.remove(fname);
- mRandomList.remove(fname);
- if (!mFileList.isEmpty())
- loadNextImage();
- return;
- }
- mFileIdx++;
-
- int i, j;
- i = fname.findRev('.');
- if (i < 0) i = 32767;
- j = fname.findRev('/') + 1;
- if (j < 0) j = 0;
- mImageName = fname.mid(j, i-j);
-}
-
-
-//----------------------------------------------------------------------------
-void kSlideShowSaver::loadDirectory()
-{
- mFileIdx = 0;
- mFileList.clear();
- traverseDirectory(mDirectory);
- mRandomList = mFileList;
-}
-
-void kSlideShowSaver::traverseDirectory(const TQString &dirName)
-{
- TQDir dir(dirName);
- if (!dir.exists())
- {
- return ;
- }
- dir.setFilter(TQDir::Dirs | TQDir::Files);
-
- const TQFileInfoList *fileinfolist = dir.entryInfoList();
- TQFileInfoListIterator it(*fileinfolist);
- TQFileInfo *fi;
- while ((fi = it.current()))
- {
- if (fi->fileName() == "." || fi->fileName() == "..")
- {
- ++it;
- continue;
- }
- if (fi->isDir() && fi->isReadable() && mSubdirectory)
- {
- traverseDirectory(fi->filePath());
- }
- else
- {
- if (!fi->isDir())
- {
- mFileList.append(fi->filePath());
- }
- }
- ++it;
- }
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSaver::blank()
-{
- erase();
-}
-
-
-//=============================================================================
-// Class kSlideShowSetup
-//=============================================================================
-kSlideShowSetup::kSlideShowSetup(TQWidget *aParent, const char *aName)
- : KDialogBase(aParent, aName, true, i18n( "Setup Slide Show Screen Saver" ),
- Ok|Cancel|Help, Ok, true )
-{
- setButtonText( Help, i18n( "A&bout" ) );
-
- TQWidget *main = makeMainWidget();
- TQVBoxLayout *top = new TQVBoxLayout( main, 0, spacingHint() );
-
- cfg = new SlideShowCfg( main, "SlideShowCfg" );
- top->addWidget( cfg );
- top->addStretch();
-
- cfg->mPreview->setFixedSize(220, 170);
- cfg->mPreview->setBackgroundColor(black);
- cfg->mPreview->show(); // otherwise saver does not get correct size
- mSaver = new kSlideShowSaver(cfg->mPreview->winId());
-
- cfg->mDirChooser->setMode(KFile::Directory | KFile::ExistingOnly);
- connect(cfg->mDirChooser, TQT_SIGNAL(returnPressed(const TQString &)),
- TQT_SLOT(slotDirSelected(const TQString &)));
- connect(cfg->mDirChooser, TQT_SIGNAL(urlSelected(const TQString &)),
- TQT_SLOT(slotDirSelected(const TQString &)));
-
- readSettings();
-}
-
-kSlideShowSetup::~kSlideShowSetup()
-{
- delete mSaver;
-}
-
-//-----------------------------------------------------------------------------
-void kSlideShowSetup::readSettings()
-{
- TDEConfig *config = TDEGlobal::config();
-
- config->setGroup("Settings");
- cfg->mCbxRandom->setChecked(config->readBoolEntry("ShowRandom", true));
- cfg->mCbxZoom->setChecked(config->readBoolEntry("ZoomImages", false));
- cfg->mCbxShowName->setChecked(config->readBoolEntry("PrintName", true));
- cfg->mDelay->setValue(config->readNumEntry("Delay", 20));
- cfg->mDirChooser->setURL(config->readPathEntry("Directory"));
- cfg->mCbxSubdirectory->setChecked(config->readBoolEntry("SubDirectory", false));
- cfg->mCbxRandomPosition->setChecked(config->readBoolEntry("RandomPosition", false));
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSetup::writeSettings()
-{
- TDEConfig *config = TDEGlobal::config();
-
- config->setGroup("Settings");
- config->writeEntry("ShowRandom", cfg->mCbxRandom->isChecked());
- config->writeEntry("ZoomImages", cfg->mCbxZoom->isChecked());
- config->writeEntry("PrintName", cfg->mCbxShowName->isChecked());
- config->writeEntry("Delay", cfg->mDelay->value());
- config->writePathEntry("Directory", cfg->mDirChooser->url());
- config->writeEntry("SubDirectory", cfg->mCbxSubdirectory->isChecked());
- config->writeEntry("RandomPosition", cfg->mCbxRandomPosition->isChecked());
-
- config->sync();
-
- if (mSaver)
- {
- mSaver->readConfig();
- mSaver->restart();
- }
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSetup::slotDirSelected(const TQString &)
-{
- writeSettings();
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSetup::slotOk()
-{
- writeSettings();
- accept();
-}
-
-
-//-----------------------------------------------------------------------------
-void kSlideShowSetup::slotHelp()
-{
- TDEAboutData aboutData( "kslideshow.kss", I18N_NOOP("SlideShow"),
- version, description, TDEAboutData::License_GPL,
- "(c) 1999-2003, The KDE Team" );
- aboutData.addAuthor("Stefan Taferner", 0, "taferner@kde.org");
- aboutData.addAuthor("Chris Howells", 0, "howells@kde.org");
- aboutData.addAuthor("Sven Leiber", 0, "s.leiber@web.de");
-
- KAboutApplication mAbout(&aboutData, this, 0);
- mAbout.exec();
-}