88 lines
2.1 KiB
C
88 lines
2.1 KiB
C
|
#ifndef MESSAGE_VIEW_H
|
||
|
#define MESSAGE_VIEW_H
|
||
|
|
||
|
#include "DocsManager.h"
|
||
|
#include <QHash>
|
||
|
#include <QStandardItemModel>
|
||
|
#include <QTableView>
|
||
|
#include <SplitWindow.h>
|
||
|
#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
|