forked from MadFishTheOne/qtpanel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
panelwindow.h
138 lines (105 loc) · 2.11 KB
/
panelwindow.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#ifndef PANELWINDOW_H
#define PANELWINDOW_H
#include <QtCore/QVector>
#if QT_VERSION >= 0x050000
#include <QWidget>
#include <QGraphicsItem>
#else
#include <QtGui/QWidget>
#include <QtGui/QGraphicsItem>
#endif
class QFont;
class QGraphicsScene;
class QGraphicsView;
class Applet;
class PanelWindow;
class PanelWindowGraphicsItem: public QGraphicsItem
{
public:
PanelWindowGraphicsItem(PanelWindow* panelWindow);
~PanelWindowGraphicsItem();
QRectF boundingRect() const;
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget);
protected:
void mousePressEvent(QGraphicsSceneMouseEvent* event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent* event);
private:
PanelWindow* m_panelWindow;
};
class PanelWindow: public QWidget
{
Q_OBJECT
public:
PanelWindow();
~PanelWindow();
enum Anchor
{
Min,
Center,
Max,
};
enum Orientation
{
Horizontal,
Vertical,
};
enum LayoutPolicy
{
Normal,
AutoSize,
FillSpace,
};
bool init();
bool dockMode() const
{
return m_dockMode;
}
void setDockMode(bool dockMode);
int screen() const
{
return m_screen;
}
void setScreen(int screen);
Anchor horizontalAnchor() const
{
return m_horizontalAnchor;
}
void setHorizontalAnchor(Anchor horizontalAnchor);
Anchor verticalAnchor() const
{
return m_verticalAnchor;
}
void setVerticalAnchor(Anchor verticalAnchor);
Orientation orientation() const
{
return m_orientation;
}
void setOrientation(Orientation orientation);
LayoutPolicy layoutPolicy() const
{
return m_layoutPolicy;
}
void setLayoutPolicy(LayoutPolicy layoutPolicy);
void updatePosition();
const QFont& font() const;
int textBaseLine();
PanelWindowGraphicsItem* panelItem()
{
return m_panelItem;
}
void resizeEvent(QResizeEvent* event);
void updateLayout();
void showPanelContextMenu(const QPoint& point);
private:
bool m_dockMode;
int m_screen;
Anchor m_horizontalAnchor;
Anchor m_verticalAnchor;
Orientation m_orientation;
LayoutPolicy m_layoutPolicy;
QGraphicsScene* m_scene;
QGraphicsView* m_view;
PanelWindowGraphicsItem* m_panelItem;
QVector<Applet*> m_applets;
};
#endif