/** * @RDE_HEADER@ * NotificationManagement - NomNotification Overview Dialog Model * * Created by Mike Lennart Wille, ESZS, 2026-06-17 */ #pragma once #include #include #include #include #include #include #include #include namespace NotificationManagement { class NotificationManagementDialogModel final : public LtsWidgets::LtsAbstractTableModel { Q_OBJECT public: enum Columns { Id, Title, Timestamp, ProcessedBy, ProcessTime, Priority, Sender, // Address isRead, // myRecipients Content, }; explicit NotificationManagementDialogModel(QObject *parent); bool initModel(const LtsSession::LtsSessionDataDds *session); protected: int getId(const NotificationManagement::NomNotification &data) const override final; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override final; bool isFiltered(const NotificationManagement::NomNotification &data, DataModification modType) const override; int isDeleted(const NotificationManagement::NomNotification &data) const override; QString getNameByAddressId(int addressId, const std::vector &recipients) const; private: int m_exerciseId; int m_workstationId; int m_operatorId; std::shared_ptr m_dtc; std::shared_ptr m_ftc; std::shared_ptr m_dtcOpm; std::shared_ptr m_dtcAsm; LOGGER_T m_logger; friend class NotificationDialogProxyModel; }; class NotificationDialogProxyModel final : public LtsWidgets::LtsColumnFilterProxyModel { Q_OBJECT public: using LtsWidgets::LtsColumnFilterProxyModel::LtsColumnFilterProxyModel; void setSourceModel(QAbstractItemModel *sourceModel) override; protected: bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override; private: NotificationManagementDialogModel *m_sourceModel = nullptr; }; } // namespace NotificationManagement