diff --git a/src/models/collapsestateproxymodel.h b/src/models/collapsestateproxymodel.h index 35447c80b..3b868bcd9 100644 --- a/src/models/collapsestateproxymodel.h +++ b/src/models/collapsestateproxymodel.h @@ -6,26 +6,58 @@ #include "messageeventmodel.h" #include +/** + * @class CollapseStateProxyModel + * + * This model aggregates multiple sequential state events into a single entry. + * + * Events are only aggregated if they happened on the same day. + * + * @sa MessageEventModel + */ class CollapseStateProxyModel : public QSortFilterProxyModel { Q_OBJECT public: + /** + * @brief Defines the model roles. + */ enum Roles { - AggregateDisplayRole = MessageEventModel::LastRole + 1, - StateEventsRole, - AuthorListRole, + AggregateDisplayRole = MessageEventModel::LastRole + 1, /**< Single line aggregation of all the state events. */ + StateEventsRole, /**< List of state events in the aggregated state. */ + AuthorListRole, /**< List of unique authors of the aggregated state event. */ }; + + /** + * @brief Whether a row should be shown out or not. + * + * @sa QSortFilterProxyModel::filterAcceptsRow + */ [[nodiscard]] bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; - [[nodiscard]] QHash roleNames() const override; + + /** + * @brief Get the given role value at the given index. + * + * @sa QSortFilterProxyModel::data + */ [[nodiscard]] QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const override; /** - * @brief QString aggregating the text of consecutive state events starting at row. + * @brief Returns a mapping from Role enum values to role names. + * + * @sa Roles, QAbstractProxyModel::roleNames() + */ + [[nodiscard]] QHash roleNames() const override; + +private: + /** + * @brief Aggregation of the text of consecutive state events starting at row. * * If state events happen on different days they will be split into two aggregate * events. */ [[nodiscard]] QString aggregateEventToString(int row) const; + /** * @brief Return a list of consecutive state events starting at row. * @@ -33,6 +65,7 @@ public: * events. */ [[nodiscard]] QVariantList stateEventsList(int row) const; + /** * @brief List of unique authors for the aggregate state events starting at row. */