1*4882a593Smuzhiyun #include "imagewidget.h"
2*4882a593Smuzhiyun #include <QCoreApplication>
3*4882a593Smuzhiyun #include <QDir>
4*4882a593Smuzhiyun #include <QTimer>
5*4882a593Smuzhiyun #include <QPainter>
6*4882a593Smuzhiyun #include <QCoreApplication>
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun class ImageWidgetPrivate{
9*4882a593Smuzhiyun public:
10*4882a593Smuzhiyun int index=0;
11*4882a593Smuzhiyun QList<QString> images;
12*4882a593Smuzhiyun QTimer *timer;
13*4882a593Smuzhiyun bool pause =false;
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun void setImage();
16*4882a593Smuzhiyun };
17*4882a593Smuzhiyun
setImage()18*4882a593Smuzhiyun void ImageWidgetPrivate::setImage()
19*4882a593Smuzhiyun {
20*4882a593Smuzhiyun index++;
21*4882a593Smuzhiyun if(index >= images.size())
22*4882a593Smuzhiyun {
23*4882a593Smuzhiyun index=0;
24*4882a593Smuzhiyun }
25*4882a593Smuzhiyun }
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun
ImageWidget(QWidget * parent)28*4882a593Smuzhiyun ImageWidget::ImageWidget(QWidget *parent) : IWidget(parent),m_d(new ImageWidgetPrivate )
29*4882a593Smuzhiyun {
30*4882a593Smuzhiyun QString path = qApp->applicationDirPath()+"/image/";
31*4882a593Smuzhiyun QDir dir(path);
32*4882a593Smuzhiyun QFileInfoList infoList = dir.entryInfoList(QStringList()<<"*.png"<< "*.bmp"<< "*.jpg", QDir::Files);
33*4882a593Smuzhiyun foreach (QFileInfo info, infoList) {
34*4882a593Smuzhiyun m_d->images<< info.absoluteFilePath();
35*4882a593Smuzhiyun qDebug()<< info.absoluteFilePath();
36*4882a593Smuzhiyun }
37*4882a593Smuzhiyun m_d->timer = new QTimer(this);
38*4882a593Smuzhiyun connect(m_d->timer, &QTimer::timeout, [=](){
39*4882a593Smuzhiyun if(!m_d->pause)
40*4882a593Smuzhiyun m_d->setImage();
41*4882a593Smuzhiyun update();
42*4882a593Smuzhiyun });
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun if(m_d->images.size() > 0)
45*4882a593Smuzhiyun {
46*4882a593Smuzhiyun m_d->timer->start(1000);
47*4882a593Smuzhiyun }
48*4882a593Smuzhiyun }
49*4882a593Smuzhiyun
~ImageWidget()50*4882a593Smuzhiyun ImageWidget::~ImageWidget()
51*4882a593Smuzhiyun {
52*4882a593Smuzhiyun delete m_d;
53*4882a593Smuzhiyun }
54*4882a593Smuzhiyun
id()55*4882a593Smuzhiyun QString ImageWidget::id()
56*4882a593Smuzhiyun {
57*4882a593Smuzhiyun return "image";
58*4882a593Smuzhiyun }
59*4882a593Smuzhiyun
paintEvent(QPaintEvent * event)60*4882a593Smuzhiyun void ImageWidget::paintEvent(QPaintEvent *event)
61*4882a593Smuzhiyun {
62*4882a593Smuzhiyun QWidget::paintEvent(event);
63*4882a593Smuzhiyun if(m_d->images.size() > 0 )
64*4882a593Smuzhiyun {
65*4882a593Smuzhiyun QPainter painter(this);
66*4882a593Smuzhiyun QString fileName = m_d->images[m_d->index];
67*4882a593Smuzhiyun QPixmap pixmap(fileName);
68*4882a593Smuzhiyun pixmap =pixmap.scaled(this->width(), this->height(), Qt::KeepAspectRatio);
69*4882a593Smuzhiyun int x = (width()-pixmap.width())/2;
70*4882a593Smuzhiyun int y = (height()-pixmap.height())/2;
71*4882a593Smuzhiyun painter.drawPixmap(x, y , pixmap);
72*4882a593Smuzhiyun }
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun QWidget::paintEvent(event);
75*4882a593Smuzhiyun }
76*4882a593Smuzhiyun
mousePressEvent(QMouseEvent * event)77*4882a593Smuzhiyun void ImageWidget::mousePressEvent(QMouseEvent *event)
78*4882a593Smuzhiyun {
79*4882a593Smuzhiyun Q_UNUSED(event)
80*4882a593Smuzhiyun m_d->pause = !m_d->pause;
81*4882a593Smuzhiyun }
82*4882a593Smuzhiyun
mouseDoubleClickEvent(QMouseEvent * event)83*4882a593Smuzhiyun void ImageWidget::mouseDoubleClickEvent(QMouseEvent *event)
84*4882a593Smuzhiyun {
85*4882a593Smuzhiyun Q_UNUSED(event)
86*4882a593Smuzhiyun qApp->quit();
87*4882a593Smuzhiyun }
88*4882a593Smuzhiyun
showEvent(QShowEvent * event)89*4882a593Smuzhiyun void ImageWidget::showEvent(QShowEvent *event)
90*4882a593Smuzhiyun {
91*4882a593Smuzhiyun Q_UNUSED(event)
92*4882a593Smuzhiyun QMetaObject::invokeMethod(this->parent(), "setTitlebarVisible", Qt::QueuedConnection, Q_ARG(bool, false));
93*4882a593Smuzhiyun }
94*4882a593Smuzhiyun
hideEvent(QHideEvent * event)95*4882a593Smuzhiyun void ImageWidget::hideEvent(QHideEvent *event)
96*4882a593Smuzhiyun {
97*4882a593Smuzhiyun Q_UNUSED(event)
98*4882a593Smuzhiyun QMetaObject::invokeMethod(this->parent(), "setTitlebarVisible", Qt::QueuedConnection, Q_ARG(bool, true));
99*4882a593Smuzhiyun }
100