#ifndef SPLITWINDOW_H #define SPLITWINDOW_H #include "splitview_interface.h" #include "acceptpanel.h" #include #include #include namespace split_window { /** * @brief 窗口即视图资源管理器 */ class SPLITVIEW_EXPORT SplitWindow : public QMainWindow, public split_frame::ResManager { typedef float pos; typedef float width; private: QList listener_list; QHash 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