Libksieve

sievetreewidgetitem.cpp
1/*
2 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-only
5*/
6
7#include "sievetreewidgetitem.h"
8
9#include <KIconLoader>
10#include <KPixmapSequenceLoader>
11
12#include <QTimer>
13
14using namespace KSieveUi;
15SieveTreeWidgetProgress::SieveTreeWidgetProgress(SieveTreeWidgetItem *item, QObject *parent)
16 : QObject(parent)
17 , mItem(item)
18{
19 KIconLoader loader;
20 mProgressPix = KPixmapSequenceLoader::load(QStringLiteral("process-working"), KIconLoader::SizeSmallMedium);
21 mProgressTimer = new QTimer(this);
22 connect(mProgressTimer, &QTimer::timeout, this, &SieveTreeWidgetProgress::slotTimerDone);
23}
24
25SieveTreeWidgetProgress::~SieveTreeWidgetProgress() = default;
26
27void SieveTreeWidgetProgress::slotTimerDone()
28{
29 mItem->setProgressAnimation(mProgressPix.frameAt(mProgressCount));
30 ++mProgressCount;
31 if (mProgressCount == 8) {
32 mProgressCount = 0;
33 }
34
35 mProgressTimer->start(300);
36}
37
38void SieveTreeWidgetProgress::startAnimation()
39{
40 mProgressCount = 0;
41 mProgressTimer->start(300);
42}
43
44void SieveTreeWidgetProgress::stopAnimation()
45{
46 if (mProgressTimer->isActive()) {
47 mProgressTimer->stop();
48 }
49 mItem->setDefaultIcon();
50}
51
52class KSieveUi::SieveTreeWidgetItemPrivate
53{
54public:
55 SieveTreeWidgetItemPrivate() = default;
56
57 ~SieveTreeWidgetItemPrivate()
58 {
59 delete mProgress;
60 }
61
62 SieveTreeWidgetProgress *mProgress = nullptr;
63};
64
65SieveTreeWidgetItem::SieveTreeWidgetItem(QTreeWidget *treeWidget, QTreeWidgetItem *item)
66 : QTreeWidgetItem(treeWidget, item)
67 , d(new KSieveUi::SieveTreeWidgetItemPrivate)
68{
69 d->mProgress = new SieveTreeWidgetProgress(this);
70}
71
72SieveTreeWidgetItem::~SieveTreeWidgetItem() = default;
73
74void SieveTreeWidgetItem::startAnimation()
75{
76 d->mProgress->startAnimation();
77}
78
79void SieveTreeWidgetItem::stopAnimation()
80{
81 d->mProgress->stopAnimation();
82}
83
84void SieveTreeWidgetItem::setProgressAnimation(const QPixmap &pix)
85{
86 setIcon(0, QIcon(pix));
87}
88
89void SieveTreeWidgetItem::setDefaultIcon()
90{
91 setIcon(0, QIcon::fromTheme(QStringLiteral("network-server")));
92}
93
94#include "moc_sievetreewidgetitem.cpp"
QPixmap frameAt(int index) const
The SieveTreeWidgetItem class.
QIcon fromTheme(const QString &name)
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
bool isActive() const const
void start()
void stop()
void timeout()
void setIcon(int column, const QIcon &icon)
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:17:19 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.