File indexing completed on 2025-02-02 05:02:37

0001 /*
0002     SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef TRANSFERDELEGATECONTROLLER_H
0008 #define TRANSFERDELEGATECONTROLLER_H
0009 
0010 #include "transfer.h"
0011 
0012 #include <QObject>
0013 #include <QTimer>
0014 
0015 /** Transfer delegate logic. */
0016 class TransferDelegateController : public QObject
0017 {
0018     Q_OBJECT
0019     Q_PROPERTY(Transfer transfer READ transfer WRITE setTransfer NOTIFY transferChanged)
0020     Q_PROPERTY(bool isCurrent READ isCurrent NOTIFY updated)
0021     Q_PROPERTY(float progress READ progress NOTIFY updated)
0022 
0023 public:
0024     explicit TransferDelegateController(QObject *parent = nullptr);
0025     ~TransferDelegateController();
0026 
0027     Transfer transfer() const;
0028     void setTransfer(const Transfer &transfer);
0029 
0030     bool isCurrent() const;
0031     float progress() const;
0032 
0033 Q_SIGNALS:
0034     void transferChanged();
0035     void updated();
0036 
0037 private:
0038     void scheduleTimer();
0039 
0040     Transfer m_transfer;
0041     QTimer m_updateTrigger;
0042 };
0043 
0044 #endif // TRANSFERDELEGATECONTROLLER_H