File indexing completed on 2024-05-05 17:33:23
0001 /* 0002 * SPDX-FileCopyrightText: 2010 Jonathan Thomas <echidnaman@kubuntu.org> 0003 * SPDX-FileCopyrightText: 2012 Aleix Pol Gonzalez <aleixpol@blue-systems.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #pragma once 0009 0010 #include <QObject> 0011 0012 #include "Transaction.h" 0013 #include "discovercommon_export.h" 0014 0015 class AbstractResource; 0016 0017 class DISCOVERCOMMON_EXPORT TransactionListener : public QObject 0018 { 0019 Q_OBJECT 0020 Q_PROPERTY(AbstractResource *resource READ resource WRITE setResource NOTIFY resourceChanged) 0021 Q_PROPERTY(Transaction *transaction READ transaction WRITE setTransaction NOTIFY transactionChanged) 0022 Q_PROPERTY(bool isCancellable READ isCancellable NOTIFY cancellableChanged) 0023 Q_PROPERTY(bool isActive READ isActive NOTIFY isActiveChanged) 0024 Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged) 0025 Q_PROPERTY(int progress READ progress NOTIFY progressChanged) 0026 public: 0027 explicit TransactionListener(QObject *parent = nullptr); 0028 0029 AbstractResource *resource() const 0030 { 0031 return m_resource; 0032 } 0033 Transaction *transaction() const 0034 { 0035 return m_transaction; 0036 } 0037 bool isCancellable() const; 0038 bool isActive() const; 0039 QString statusText() const; 0040 int progress() const; 0041 0042 Q_SCRIPTABLE void cancel(); 0043 0044 void setResource(AbstractResource *resource); 0045 void setTransaction(Transaction *trans); 0046 0047 private: 0048 void setResourceInternal(AbstractResource *resource); 0049 0050 AbstractResource *m_resource = nullptr; 0051 Transaction *m_transaction = nullptr; 0052 0053 private Q_SLOTS: 0054 void transactionAdded(Transaction *trans); 0055 void transactionStatusChanged(Transaction::Status status); 0056 0057 Q_SIGNALS: 0058 void resourceChanged(); 0059 void cancellableChanged(); 0060 void isActiveChanged(); 0061 void statusTextChanged(); 0062 void cancelled(); 0063 void progressChanged(); 0064 void transactionChanged(Transaction *transaction); 0065 };