#ifndef WAYLANDENTRIES_H #define WAYLANDENTRIES_H #include #include #include class QWaylandXdgSurface; class WaylandEntries : public QAbstractListModel { Q_OBJECT Q_PROPERTY(int nbApps READ nbApps NOTIFY nbAppsChanged) QList m_surfaces; QList m_surfaces_hidden; QList m_hidden; mutable QRecursiveMutex m_lock; public: explicit WaylandEntries(QObject *parent = nullptr); enum WaylandEntryRoles { SurfaceRole = Qt::UserRole + 1, TitleRole, PidRole, AppIdRole }; int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QHash roleNames() const override; static WaylandEntries* getInstance(); int nbApps() const; void setNbApps(int newNbApps); public slots: void addSurface(QObject *obj); void addHidePid(qint64 pid); void surfaceDestroyed(); void stop(int pid); QObject *getSurface(int pid); signals: void nbAppsChanged(); void topWindowRegistered(QObject *surface, QString appid); void topWindowDestroyed(QObject *surface, QString appid); }; #endif // WAYLANDENTRIES_H