File indexing completed on 2024-05-05 17:33:22
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Aleix Pol Gonzalez <aleixpol@blue-systems.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "AbstractResourcesBackend.h" 0010 #include "discovercommon_export.h" 0011 #include <QDateTime> 0012 #include <QSet> 0013 #include <QTimer> 0014 #include <resources/AbstractBackendUpdater.h> 0015 0016 class AbstractResourcesBackend; 0017 0018 class DISCOVERCOMMON_EXPORT StandardBackendUpdater : public AbstractBackendUpdater 0019 { 0020 Q_OBJECT 0021 Q_PROPERTY(int updatesCount READ updatesCount NOTIFY updatesCountChanged) 0022 public: 0023 explicit StandardBackendUpdater(AbstractResourcesBackend *parent = nullptr); 0024 0025 bool hasUpdates() const override; 0026 qreal progress() const override; 0027 void start() override; 0028 0029 QList<AbstractResource *> toUpdate() const override; 0030 void addResources(const QList<AbstractResource *> &apps) override; 0031 void removeResources(const QList<AbstractResource *> &apps) override; 0032 void prepare() override; 0033 QDateTime lastUpdate() const override; 0034 bool isCancelable() const override; 0035 bool isProgressing() const override; 0036 bool isMarked(AbstractResource *res) const override; 0037 double updateSize() const override; 0038 void setProgress(qreal p); 0039 int updatesCount() const; 0040 void cancel() override; 0041 quint64 downloadSpeed() const override; 0042 0043 Q_SIGNALS: 0044 void cancelTransaction(); 0045 void updatesCountChanged(int updatesCount); 0046 0047 public Q_SLOTS: 0048 void transactionRemoved(Transaction *t); 0049 void cleanup(); 0050 0051 private: 0052 void resourcesChanged(AbstractResource *res, const QVector<QByteArray> &props); 0053 void refreshUpdateable(); 0054 void transactionAdded(Transaction *newTransaction); 0055 void transactionProgressChanged(); 0056 void refreshProgress(); 0057 QVector<Transaction *> transactions() const; 0058 0059 QSet<AbstractResource *> m_toUpgrade; 0060 QSet<AbstractResource *> m_upgradeable; 0061 AbstractResourcesBackend *const m_backend; 0062 QSet<AbstractResource *> m_pendingResources; 0063 bool m_settingUp; 0064 qreal m_progress; 0065 QDateTime m_lastUpdate; 0066 QTimer m_timer; 0067 bool m_canCancel = false; 0068 bool m_anyTransactionFailed = false; 0069 };