File indexing completed on 2024-05-12 17:08:48
0001 /* 0002 SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <kde@broulik.de> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QAbstractItemModel> 0010 #include <QObject> 0011 #include <QPointer> 0012 0013 class JobAggregator : public QObject 0014 { 0015 Q_OBJECT 0016 0017 Q_PROPERTY(QAbstractItemModel *sourceModel READ sourceModel WRITE setSourceModel NOTIFY sourceModelChanged) 0018 0019 Q_PROPERTY(int count READ count NOTIFY countChanged) 0020 0021 Q_PROPERTY(QString summary READ summary NOTIFY summaryChanged) 0022 Q_PROPERTY(int percentage READ percentage NOTIFY percentageChanged) 0023 0024 public: 0025 explicit JobAggregator(QObject *parent = nullptr); 0026 ~JobAggregator() override; 0027 0028 QAbstractItemModel *sourceModel() const; 0029 void setSourceModel(QAbstractItemModel *sourceModel); 0030 Q_SIGNAL void sourceModelChanged(); 0031 0032 int count() const; 0033 Q_SIGNAL void countChanged(); 0034 0035 QString summary() const; 0036 Q_SIGNAL void summaryChanged(); 0037 0038 int percentage() const; 0039 Q_SIGNAL void percentageChanged(); 0040 0041 private: 0042 void update(); 0043 0044 QPointer<QAbstractItemModel> m_model; 0045 0046 int m_count = 0; 0047 QString m_summary; 0048 int m_percentage = 0; 0049 };