1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
/*
* SPDX-FileCopyrightText: 2012 Jonathan Thomas <echidnaman@kubuntu.org>
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#pragma once
#include <QAbstractListModel>
#include "Transaction.h"
#include "discovercommon_export.h"
class DISCOVERCOMMON_EXPORT TransactionModel : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(int progress READ progress NOTIFY progressChanged)
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
Q_PROPERTY(QString mainTransactionText READ mainTransactionText NOTIFY mainTransactionTextChanged)
public:
enum Roles {
TransactionRoleRole = Qt::UserRole,
TransactionStatusRole,
CancellableRole,
ProgressRole,
StatusTextRole,
ResourceRole,
TransactionRole,
};
explicit TransactionModel(QObject *parent = nullptr);
static TransactionModel *global();
// Reimplemented from QAbstractListModel
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
QHash<int, QByteArray> roleNames() const override;
Q_SCRIPTABLE Transaction *transactionFromResource(AbstractResource *resource) const;
QModelIndex indexOf(Transaction *transaction) const;
QModelIndex indexOf(AbstractResource *resource) const;
void addTransaction(Transaction *transaction);
void removeTransaction(Transaction *transaction);
bool contains(Transaction *transaction) const
{
return m_transactions.contains(transaction);
}
int progress() const;
QVector<Transaction *> transactions() const
{
return m_transactions;
}
QString mainTransactionText() const;
private:
QVector<Transaction *> m_transactions;
Q_SIGNALS:
void startingFirstTransaction();
void lastTransactionFinished();
void transactionAdded(Transaction *transaction);
void transactionRemoved(Transaction *transaction);
void countChanged();
void progressChanged();
void proceedRequest(Transaction *transaction, const QString &title, const QString &description);
void mainTransactionTextChanged();
private:
void transactionChanged(Transaction *transaction, int role);
};
|