File indexing completed on 2024-05-05 17:33:23
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Jonathan Thomas <echidnaman@kubuntu.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <QAbstractListModel> 0010 0011 #include "Transaction.h" 0012 0013 #include "discovercommon_export.h" 0014 0015 class DISCOVERCOMMON_EXPORT TransactionModel : public QAbstractListModel 0016 { 0017 Q_OBJECT 0018 Q_PROPERTY(int progress READ progress NOTIFY progressChanged) 0019 Q_PROPERTY(int count READ rowCount NOTIFY countChanged) 0020 Q_PROPERTY(QString mainTransactionText READ mainTransactionText NOTIFY mainTransactionTextChanged) 0021 public: 0022 enum Roles { 0023 TransactionRoleRole = Qt::UserRole, 0024 TransactionStatusRole, 0025 CancellableRole, 0026 ProgressRole, 0027 StatusTextRole, 0028 ResourceRole, 0029 TransactionRole, 0030 }; 0031 0032 explicit TransactionModel(QObject *parent = nullptr); 0033 static TransactionModel *global(); 0034 0035 // Reimplemented from QAbstractListModel 0036 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0037 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0038 QHash<int, QByteArray> roleNames() const override; 0039 0040 Q_SCRIPTABLE Transaction *transactionFromResource(AbstractResource *resource) const; 0041 QModelIndex indexOf(Transaction *trans) const; 0042 QModelIndex indexOf(AbstractResource *res) const; 0043 0044 void addTransaction(Transaction *trans); 0045 void removeTransaction(Transaction *trans); 0046 0047 bool contains(Transaction *transaction) const 0048 { 0049 return m_transactions.contains(transaction); 0050 } 0051 int progress() const; 0052 QVector<Transaction *> transactions() const 0053 { 0054 return m_transactions; 0055 } 0056 0057 QString mainTransactionText() const; 0058 0059 private: 0060 QVector<Transaction *> m_transactions; 0061 0062 Q_SIGNALS: 0063 void startingFirstTransaction(); 0064 void lastTransactionFinished(); 0065 void transactionAdded(Transaction *trans); 0066 void transactionRemoved(Transaction *trans); 0067 void countChanged(); 0068 void progressChanged(); 0069 void proceedRequest(Transaction *transaction, const QString &title, const QString &description); 0070 void mainTransactionTextChanged(); 0071 0072 private Q_SLOTS: 0073 void transactionChanged(int role); 0074 };