QtNovelUI/libSplitView/dockpanel.h

70 lines
2.1 KiB
C
Raw Normal View History

2023-08-26 12:40:57 +00:00
#ifndef BASEVIEW_H
#define BASEVIEW_H
2023-12-30 05:04:51 +00:00
#include "splitview_interface.h"
2023-08-26 12:40:57 +00:00
#include <QFrame>
#include <QIcon>
#include <QLabel>
#include <QString>
2023-12-30 05:04:51 +00:00
namespace base_view {
2024-01-24 04:58:19 +00:00
class DockPanel;
2023-08-26 12:40:57 +00:00
/**
* @brief
*/
2024-01-24 04:58:19 +00:00
class SPLITVIEW_EXPORT DragHeader : public QFrame {
2023-08-26 12:40:57 +00:00
public:
2024-01-24 04:58:19 +00:00
DragHeader(const QString &title, DockPanel *bind_core);
DragHeader(const QString &title, const QIcon &icon, DockPanel *bind_core);
2023-08-26 12:40:57 +00:00
private:
2024-01-24 04:58:19 +00:00
DockPanel *bind_core;
2023-08-26 12:40:57 +00:00
std::tuple<bool, QPointF> press_flag = std::make_tuple(false, QPointF());
// QWidget interface
protected:
virtual void mousePressEvent(QMouseEvent *event) override;
virtual void mouseReleaseEvent(QMouseEvent *event) override;
virtual void mouseMoveEvent(QMouseEvent *event) override;
};
/**
* @brief
*/
2024-01-24 04:58:19 +00:00
class SPLITVIEW_EXPORT DockPanel : public QWidget, public split_frame::ViewBase {
signals:
void close_request(QWidget*);
void adjust_request(QWidget*);
void retrieve_request(QWidget*);
2023-08-26 12:40:57 +00:00
public:
2024-01-24 04:58:19 +00:00
DockPanel(const QString &title, QWidget *present, bool custom_header = false);
2023-08-26 12:40:57 +00:00
2024-01-24 04:58:19 +00:00
void setModify(bool replace, bool close, bool retrieve);
2023-08-26 12:40:57 +00:00
2024-01-24 04:58:19 +00:00
private:
ViewRes *parent_res = nullptr;
bool m_replace = false, m_retrieve = false, m_close = false;
2023-08-26 12:40:57 +00:00
// ViewRes interface
public:
2023-12-30 05:04:51 +00:00
virtual split_frame::ResManager *splitManager() const override;
virtual split_frame::ViewRes *parentRes() const override;
2024-01-24 04:58:19 +00:00
virtual void setParentRes(ViewRes *inst) override;
2023-12-30 05:04:51 +00:00
virtual QWidget *widget() const override;
virtual bool canRetrieve() const override;
virtual bool canClose() const override;
virtual bool canReplace() const override;
2023-08-26 12:40:57 +00:00
2023-12-30 05:04:51 +00:00
// ViewBase interface
2023-08-26 12:40:57 +00:00
public:
2023-12-30 05:04:51 +00:00
virtual QIcon icon() const override;
virtual QString title() const override;
virtual QSizeF viewSize() const override;
virtual void resizeView(const QSizeF &outline) override;
2023-08-26 12:40:57 +00:00
};
} // namespace SplitFrame
#endif // BASEVIEW_H