QtNovelUI/WordsIDE/message_view.h

88 lines
2.1 KiB
C
Raw Normal View History

2024-02-14 05:27:15 +00:00
#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