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 };