diff --git a/src/models/actionsmodel.cpp b/src/models/actionsmodel.cpp index 6fb1d0982..ee4d5a8dc 100644 --- a/src/models/actionsmodel.cpp +++ b/src/models/actionsmodel.cpp @@ -5,7 +5,6 @@ #include "controller.h" #include "neochatroom.h" -#include "neochatuser.h" #include "roommanager.h" #include #include diff --git a/src/models/actionsmodel.h b/src/models/actionsmodel.h index bb7e4c8eb..a8c79bcd5 100644 --- a/src/models/actionsmodel.h +++ b/src/models/actionsmodel.h @@ -9,20 +9,42 @@ class NeoChatRoom; +/** + * @class ActionsModel + * + * This class defines a model for chat actions. + * + * @note A chat action is a message starting with /, resulting in something other + * than a normal message being sent (e.g. /me, /join). + */ class ActionsModel : public QAbstractListModel { public: + /** + * @brief Definition of an action. + */ struct Action { - // The prefix, without '/' and space after the word - QString prefix; + QString prefix; /**< The prefix, without '/' and space after the word. */ + /** + * @brief The function to execute when the action is triggered. + */ std::function handle; - // If this is true, this action transforms a message to a different message and it will be sent. - // If this is false, this message does some action on the client and should not be sent as a message. + /** + * @brief Whether the action is a message type action. + * + * If this is true, a message action will be sent. If this is false, this + * message does some action on the client and should not be sent as a message. + */ bool messageAction; - // If this action changes the message type, this is the new message type. Otherwise it's nullopt + /** + * @brief The new message type of a message being sent. + * + * For a non-message action or a message action that outputs the same type + * as its input, it's nullopt. + */ std::optional messageType = std::nullopt; - KLazyLocalizedString parameters; - KLazyLocalizedString description; + KLazyLocalizedString parameters; /**< The input parameters expected by the action. */ + KLazyLocalizedString description; /**< The description of the action. */ }; static ActionsModel &instance() { @@ -30,18 +52,41 @@ public: return _instance; } + /** + * @brief Defines the model roles. + */ enum Roles { - Prefix = Qt::DisplayRole, - Description, - CompletionType, - Parameters, + Prefix = Qt::DisplayRole, /**< The prefix, without '/' and space after the word. */ + Description, /**< The description of the action. */ + CompletionType, /**< The completion type (always "action" for this model). */ + Parameters, /**< The input parameters expected by the action. */ }; Q_ENUM(Roles); - int rowCount(const QModelIndex &parent = QModelIndex()) const override; + /** + * @brief Get the given role value at the given index. + * + * @sa QAbstractItemModel::data + */ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + + /** + * @brief Number of rows in the model. + * + * @sa QAbstractItemModel::rowCount + */ + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + + /** + * @brief Returns a mapping from Role enum values to role names. + * + * @sa EventRoles, QAbstractItemModel::roleNames() + */ QHash roleNames() const override; + /** + * @brief Return a vector with all supported actions. + */ QVector &allActions() const; private: