/
partselectionform.cpp
executable file
·114 lines (100 loc) · 2.6 KB
/
partselectionform.cpp
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
#include "partselectionform.h"
#include <QApplication>
#include <QKeyEvent>
#include <QCloseEvent>
PartSelectionForm::PartSelectionForm(QPushButton *triggerButton, QWidget *parent) :
QWidget(parent),
kanjiDBSet(false),
triggerButtonRef(triggerButton),
clickingOnMe(false)
{
setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
setMouseTracking(true);
font.setPointSize(12);
strokeFont.setPointSize(9);
strokeFont.setBold(true);
strokeBackground.setRgb(180, 180, 180);
strokePalette = QApplication::palette();
strokePalette.setCurrentColorGroup(QPalette::Active);
strokePalette.setColor(QPalette::Window, strokeBackground);
}
PartSelectionForm::~PartSelectionForm()
{
foreach(QWidget *stone, strokeStones.values())
delete stone;
strokeStones.clear();
}
void PartSelectionForm::keyPressEvent(QKeyEvent *e)
{
if(e->key() == Qt::Key_Escape && isVisible())
hide();
else
QWidget::keyPressEvent(e);
}
void PartSelectionForm::closeEvent(QCloseEvent *e)
{
e->ignore();
}
void PartSelectionForm::moveEvent()
{
putInPlace();
}
void PartSelectionForm::moveEvent(QMoveEvent *)
{
putInPlace();
}
void PartSelectionForm::showEvent(QShowEvent *)
{
emit shown(true);
putInPlace();
}
void PartSelectionForm::hideEvent(QHideEvent *)
{
emit shown(false);
clearSelection();
}
void PartSelectionForm::putInPlace()
{
QPoint p = triggerButtonRef->mapToGlobal(QPoint(0, triggerButtonRef->height()));
setGeometry(p.x(), p.y(), width(), height());
}
QPushButton *PartSelectionForm::getButtonRef()
{
return triggerButtonRef;
}
void PartSelectionForm::mouseMoveEvent(QMouseEvent *ev)
{
if(clickingOnMe)
{
resize(width() + ev->pos().x() - lastPoint.x(), height() + ev->y() - lastPoint.y());
lastPoint = ev->pos();
} else
if(bottomRightCorner().contains(ev->pos()))
setCursor(Qt::SizeFDiagCursor);
else
setCursor(Qt::ArrowCursor);
}
void PartSelectionForm::mousePressEvent(QMouseEvent *ev)
{
if(bottomRightCorner().contains(ev->pos()))
{
grabMouse();
clickingOnMe = true;
lastPoint = ev->pos();
ev->accept();
} else
{
releaseMouse();
clickingOnMe = false;
}
}
void PartSelectionForm::mouseReleaseEvent(QMouseEvent *ev)
{
if(clickingOnMe)
ev->accept();
clickingOnMe = false;
}
QRect PartSelectionForm::bottomRightCorner()
{
return QRect(QPoint(width()-8, height()-8), QSize(8 ,8));
}