#ifndef MESSAGE_VIEW_H #define MESSAGE_VIEW_H #include "DocsManager.h" #include #include #include #include #include "xapp.h" namespace Components { enum class ExtendType{ FEATURE_PRESENT, VIEW_CONTAINTER }; /** * @brief 拓展视图 */ class ExtendView { public: virtual ~ExtendView() = default; /** * @brief 创建新实例 * @param parent 父实例 * @param core 核心数据模型 * @return */ virtual ExtendView* newInst(QWidget *parent, XApp *core) = 0; /** * @brief 获取指定视图的绑定菜单 * @return */ virtual QMenu* bindMenu() const = 0; /** * @brief 视图类型名称 * @return */ virtual QString typeName() const = 0; /** * @brief 视图类型 * @return */ virtual ExtendType type() const = 0; /** * @brief 视图呈现组件 * @return */ virtual QWidget* presentWidget() const = 0; /** * @brief 保存操作 */ virtual void saveProcess() = 0; /** * @brief 关闭操作 */ virtual void closeProcess() = 0; }; /** * @brief 消息视图 */ class MessageView : public QTableView, public ExtendView { public: MessageView(); MessageView(QWidget*parent = nullptr, XApp *core = nullptr); virtual ~MessageView() = default; // ExtendView interface public: virtual ExtendView *newInst(QWidget *parent, XApp *core) override; virtual QMenu *bindMenu() const override; virtual QString typeName() const override; virtual ExtendType type() const override; virtual QWidget* presentWidget() const override; virtual void saveProcess() override; virtual void closeProcess() override; private: QMenu *const menu; }; } // namespace Components #endif // MESSAGE_VIEW_H