/*! * \brief Model implementation for the chat. * * \copyright Copyright (c) 2015-2018 Governikus GmbH & Co. KG, Germany */ #pragma once #include #include #include #include #include #include "context/AuthContext.h" namespace governikus { struct cvcertificate_st; class ChatModel : public QAbstractListModel { Q_OBJECT Q_PROPERTY(QSortFilterProxyModel * optional READ getFilterOptionalModel CONSTANT) Q_PROPERTY(QSortFilterProxyModel * required READ getFilterRequiredModel CONSTANT) QSharedPointer mAuthContext; QList mAllRights; QSet mOptionalRights, mSelectedRights; QSortFilterProxyModel mFilterOptionalModel; QSortFilterProxyModel mFilterRequiredModel; enum ChatRoles { NAME_ROLE = Qt::UserRole + 1, OPTIONAL_ROLE, SELECTED_ROLE }; private: void initFilterModel(QSortFilterProxyModel& pModel, const QString& pFilter); void setOrderedAllRights(const QSet& pAllRights); private Q_SLOTS: void onAuthenticationDataChanged(); public: ChatModel(QObject* pParent = nullptr); void resetContext(const QSharedPointer& pContext = QSharedPointer()); int rowCount(const QModelIndex& = QModelIndex()) const override; QVariant data(const QModelIndex& pIndex, int pRole = Qt::DisplayRole) const override; bool setData(const QModelIndex& pIndex, const QVariant& pValue, int pRole) override; QHash roleNames() const override; Q_INVOKABLE void transferAccessRights(); Q_INVOKABLE QSortFilterProxyModel* getFilterOptionalModel(); Q_INVOKABLE QSortFilterProxyModel* getFilterRequiredModel(); }; } /* namespace governikus */