xref: /OK3568_Linux_fs/app/forlinx/flapp/src/plugins/imagebrower/imagewidget.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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