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