#include "slideshow.h"
#include <QDir>
#include <QPainter>
#include <QPixmap>
#include <QImage>
#include <QTimerEvent>
#include <QPaintEvent>
#include <QImageReader>
#include <QSettings>
SlideShow::SlideShow(QWidget *parent) : QWidget(parent)
{
resize(parent->size());
timerId = 0;
}
SlideShow::~SlideShow()
{
}
void SlideShow::showEvent(QShowEvent *se)
{
index = 0;
if (timerId)
killTimer(timerId);
QSettings settings("dpf.ini", QSettings::IniFormat);
timerId = startTimer(settings.value("SlideShowSpeed", 2000).toInt());
}
void SlideShow::hideEvent(QHideEvent *he)
{
if (timerId)
killTimer(timerId);
timerId = 0;
}
void SlideShow::timerEvent(QTimerEvent *te)
{
index++;
repaint();
}
void SlideShow::keyPressEvent(QKeyEvent *ke)
{
setStage(-2);
}
void SlideShow::paintEvent(QPaintEvent *pe)
{
QDir dir("photos/Internal");
if ( dir.count() < 2 ) { // Return, empty directory
setStage(-1);
}
int firstIndex = index;
bool found = false;
while (!found) {
if (index >= (int)dir.count())
index = 0;
QString filename = "photos/Internal/" + dir.entryList()[index];
if (QFile::exists(filename)) {
QImageReader iio(filename);
QSize size = iio.size();
size.scale(QSize(800,480), Qt::KeepAspectRatio);
iio.setScaledSize(size);
iio.setQuality(0);
QImage img = iio.read();
if (!img.isNull()) {
QPixmap pix = pix.fromImage(img);
QPainter p(this);
p.setPen(Qt::NoPen);
p.setBrush(Qt::black);
p.drawRect(0,0,800,480);
p.drawPixmap((800 - size.width()) / 2,
(480 - size.height()) / 2, pix.scaled(size));
return;
}
}
index++;
if (index == firstIndex) /* went through directory and no images */
return;
}
}