Warning, file /plasma/discover/libdiscover/ApplicationAddonsModel.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  *   SPDX-FileCopyrightText: 2012 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
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 "Transaction/AddonList.h"
0010 #include <QAbstractListModel>
0011 #include <resources/PackageState.h>
0012 
0013 #include "discovercommon_export.h"
0014 
0015 class Transaction;
0016 class AbstractResource;
0017 
0018 class DISCOVERCOMMON_EXPORT ApplicationAddonsModel : public QAbstractListModel
0019 {
0020     Q_OBJECT
0021     Q_PROPERTY(AbstractResource *application READ application WRITE setApplication NOTIFY applicationChanged)
0022     Q_PROPERTY(bool hasChanges READ hasChanges NOTIFY stateChanged)
0023     Q_PROPERTY(bool isEmpty READ isEmpty NOTIFY applicationChanged)
0024 public:
0025     enum Roles {
0026         PackageNameRole = Qt::UserRole,
0027     };
0028 
0029     explicit ApplicationAddonsModel(QObject *parent = nullptr);
0030 
0031     AbstractResource *application() const;
0032     void setApplication(AbstractResource *app);
0033     bool hasChanges() const;
0034 
0035     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0036     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0037     QHash<int, QByteArray> roleNames() const override;
0038     bool isEmpty() const;
0039 
0040 public Q_SLOTS:
0041     void discardChanges();
0042     void applyChanges();
0043     void changeState(const QString &packageName, bool installed);
0044 
0045 Q_SIGNALS:
0046     void stateChanged();
0047     void applicationChanged();
0048 
0049 private:
0050     void transactionOver(Transaction *t);
0051     void resetState();
0052 
0053     AbstractResource *m_app;
0054     QList<PackageState> m_initial;
0055     AddonList m_state;
0056 };