QtNovelUI/libSplitView/splitwindow.h

63 lines
2.0 KiB
C++

#ifndef SPLITWINDOW_H
#define SPLITWINDOW_H
#include "splitview_interface.h"
#include "acceptpanel.h"
#include <QMainWindow>
#include <QWidget>
#include <libConfig.h>
namespace split_window {
/**
* @brief 窗口即视图资源管理器
*/
class SPLITVIEW_EXPORT SplitWindow : public QMainWindow, public split_frame::ResManager {
typedef float pos;
typedef float width;
private:
QList<split_frame::FreedomViewsListener*> listener_list;
QHash<qulonglong, split_frame::ViewBase*> views_store;
split_frame::ViewRes *view_root;
accept_panel::AcceptPanel *const accept_port;
split_frame::ViewBase *adjust_target = nullptr;
void present_remove(split_frame::ViewRes *inst);
public:
SplitWindow(QWidget *parent = nullptr);
virtual ~SplitWindow();
//======================================================
/**
* @brief 临时展示
* @param t
* @param target
*/
void tempShow(split_frame::DockType t, split_frame::ViewBase *target);
void setRoot(split_frame::ViewRes *inst);
bool eventFilter(QObject *sender, QEvent *ev) override;
// ResManager interface
public:
virtual void addListener(split_frame::FreedomViewsListener *lsn) override;
virtual void removeListener(split_frame::FreedomViewsListener *lsn) override;
virtual void appendPresentView(split_frame::ViewBase *inst) override;
virtual void removePresentView(split_frame::ViewBase *inst) override;
virtual void doRetrieve(split_frame::ViewBase *inst) override;
virtual void doClose(split_frame::ViewBase *inst) override;
virtual void siblingAttach(split_frame::ViewBase *view, split_frame::ViewRes *pos, split_frame::SplitType ori) override;
virtual split_frame::ViewBase *adjustView() const override;
virtual void setAdjustView(split_frame::ViewBase *target) override;
};
} // namespace split_panel
#endif // SPLITWINDOW_H