2016-12-29 17:31:07 +01:00
|
|
|
#ifndef NOTEBOOKPAGE_H
|
|
|
|
#define NOTEBOOKPAGE_H
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
#include "QDragEnterEvent"
|
2017-01-01 02:30:42 +01:00
|
|
|
#include "QHBoxLayout"
|
2017-01-11 18:52:09 +01:00
|
|
|
#include "QRect"
|
2017-01-01 02:30:42 +01:00
|
|
|
#include "QVBoxLayout"
|
2017-01-11 18:52:09 +01:00
|
|
|
#include "QVector"
|
|
|
|
#include "QWidget"
|
2017-01-01 02:30:42 +01:00
|
|
|
#include "chatwidget.h"
|
2017-01-11 18:52:09 +01:00
|
|
|
#include "notebookpage.h"
|
2017-01-01 02:30:42 +01:00
|
|
|
#include "notebookpagedroppreview.h"
|
2017-01-11 18:52:09 +01:00
|
|
|
#include "notebooktab.h"
|
2016-12-30 12:20:26 +01:00
|
|
|
|
2016-12-29 17:31:07 +01:00
|
|
|
class NotebookPage : public QWidget
|
|
|
|
{
|
2017-01-11 18:52:09 +01:00
|
|
|
Q_OBJECT
|
2016-12-29 17:31:07 +01:00
|
|
|
|
|
|
|
public:
|
2017-01-01 02:30:42 +01:00
|
|
|
NotebookPage(QWidget *parent, NotebookTab *tab);
|
2017-01-11 18:52:09 +01:00
|
|
|
NotebookTab *tab;
|
2017-01-01 02:30:42 +01:00
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
std::pair<int, int> removeFromLayout(ChatWidget *widget);
|
|
|
|
void addToLayout(ChatWidget *widget, std::pair<int, int> position);
|
2017-01-01 02:30:42 +01:00
|
|
|
|
2017-01-16 03:15:07 +01:00
|
|
|
const std::vector<ChatWidget *> &
|
|
|
|
chatWidgets() const
|
|
|
|
{
|
|
|
|
return m_chatWidgets;
|
|
|
|
}
|
|
|
|
|
2017-01-01 02:30:42 +01:00
|
|
|
static bool isDraggingSplit;
|
2017-01-11 18:52:09 +01:00
|
|
|
static ChatWidget *draggingSplit;
|
2017-01-01 02:30:42 +01:00
|
|
|
static std::pair<int, int> dropPosition;
|
2016-12-30 18:00:25 +01:00
|
|
|
|
|
|
|
protected:
|
|
|
|
void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE;
|
2017-01-01 02:30:42 +01:00
|
|
|
|
2017-01-01 13:07:36 +01:00
|
|
|
void enterEvent(QEvent *);
|
|
|
|
void leaveEvent(QEvent *);
|
|
|
|
void mouseReleaseEvent(QMouseEvent *event);
|
|
|
|
|
2017-01-01 02:30:42 +01:00
|
|
|
void dragEnterEvent(QDragEnterEvent *event) Q_DECL_OVERRIDE;
|
|
|
|
void dragMoveEvent(QDragMoveEvent *event) Q_DECL_OVERRIDE;
|
|
|
|
void dragLeaveEvent(QDragLeaveEvent *event) Q_DECL_OVERRIDE;
|
|
|
|
void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE;
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
struct DropRegion {
|
2017-01-01 02:30:42 +01:00
|
|
|
QRect rect;
|
|
|
|
std::pair<int, int> position;
|
|
|
|
|
|
|
|
DropRegion(QRect rect, std::pair<int, int> position)
|
|
|
|
{
|
|
|
|
this->rect = rect;
|
|
|
|
this->position = position;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2017-01-16 03:15:07 +01:00
|
|
|
QVBoxLayout m_parentbox;
|
|
|
|
QHBoxLayout m_hbox;
|
|
|
|
|
|
|
|
std::vector<ChatWidget *> m_chatWidgets;
|
|
|
|
std::vector<DropRegion> m_dropRegions;
|
2017-01-01 02:30:42 +01:00
|
|
|
|
2017-01-16 03:15:07 +01:00
|
|
|
NotebookPageDropPreview m_preview;
|
2017-01-01 02:30:42 +01:00
|
|
|
|
|
|
|
private:
|
|
|
|
void setPreviewRect(QPoint mousePos);
|
2016-12-29 17:31:07 +01:00
|
|
|
};
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
#endif // NOTEBOOKPAGE_H
|