File indexing completed on 2024-04-28 03:59:12

0001 /*
0002     SPDX-FileCopyrightText: 2009 Sebastian Trueg <trueg@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #include "kpixmapsequencewidget.h"
0008 #include "kpixmapsequence.h"
0009 #include "kpixmapsequenceoverlaypainter.h"
0010 
0011 class KPixmapSequenceWidgetPrivate
0012 {
0013 public:
0014     KPixmapSequenceOverlayPainter *m_painter = nullptr;
0015 };
0016 
0017 KPixmapSequenceWidget::KPixmapSequenceWidget(QWidget *parent)
0018     : QWidget(parent)
0019     , d(new KPixmapSequenceWidgetPrivate)
0020 {
0021     d->m_painter = new KPixmapSequenceOverlayPainter(this);
0022     d->m_painter->setWidget(this);
0023 }
0024 
0025 KPixmapSequenceWidget::KPixmapSequenceWidget(const KPixmapSequence &seq, QWidget *parent)
0026     : QWidget(parent)
0027     , d(new KPixmapSequenceWidgetPrivate)
0028 {
0029     d->m_painter = new KPixmapSequenceOverlayPainter(seq);
0030     d->m_painter->setWidget(this);
0031     if (seq.isValid()) {
0032         d->m_painter->start();
0033     }
0034 }
0035 
0036 KPixmapSequenceWidget::~KPixmapSequenceWidget()
0037 {
0038     delete d->m_painter;
0039 }
0040 
0041 KPixmapSequence KPixmapSequenceWidget::sequence() const
0042 {
0043     return d->m_painter->sequence();
0044 }
0045 
0046 int KPixmapSequenceWidget::interval() const
0047 {
0048     return d->m_painter->interval();
0049 }
0050 
0051 QSize KPixmapSequenceWidget::sizeHint() const
0052 {
0053     if (d->m_painter->sequence().isValid()) {
0054         return d->m_painter->sequence().frameSize();
0055     } else {
0056         return QWidget::sizeHint();
0057     }
0058 }
0059 
0060 void KPixmapSequenceWidget::setSequence(const KPixmapSequence &seq)
0061 {
0062     d->m_painter->setSequence(seq);
0063     if (seq.isValid()) {
0064         setFixedSize(seq.frameSize());
0065         d->m_painter->start();
0066     } else {
0067         d->m_painter->stop();
0068     }
0069 }
0070 
0071 void KPixmapSequenceWidget::setInterval(int msecs)
0072 {
0073     d->m_painter->setInterval(msecs);
0074 }
0075 
0076 #include "moc_kpixmapsequencewidget.cpp"