SHOW:
|
|
- or go back to the newest paste.
1 | #include "TriforceWidget.hpp" | |
2 | #include <QPainter> | |
3 | #include <QMouseEvent> | |
4 | #include <QDebug> | |
5 | #include <QStatusBar> | |
6 | #include <QMainWindow> | |
7 | ||
8 | TriforceWidget::TriforceWidget(QWidget *parent) : | |
9 | QWidget(parent), | |
10 | m_bg(QImage(":/Triforce/Background")), | |
11 | m_piece(QImage(":/Triforce/Piece")), | |
12 | m_glow(QImage(":/Triforce/Glow")), | |
13 | m_courage(true), | |
14 | m_courageHovered(false), | |
15 | m_power(true), | |
16 | m_powerHovered(false), | |
17 | m_wisdom(true), | |
18 | m_wisdomHovered(false) | |
19 | { | |
20 | setMouseTracking(true); | |
21 | setBaseSize(m_bg.width(), m_bg.height()); | |
22 | setMinimumSize(m_bg.width(), m_bg.height()); | |
23 | setMaximumSize(m_bg.width(), m_bg.height()); | |
24 | } | |
25 | ||
26 | bool TriforceWidget::isCourageChecked() const | |
27 | { | |
28 | return m_courage; | |
29 | } | |
30 | ||
31 | bool TriforceWidget::isWisdomChecked() const | |
32 | { | |
33 | return m_wisdom; | |
34 | } | |
35 | ||
36 | bool TriforceWidget::isPowerChecked() const | |
37 | { | |
38 | return m_power; | |
39 | } | |
40 | ||
41 | void TriforceWidget::setCourageChecked(bool checked) | |
42 | { | |
43 | m_courage = checked; | |
44 | } | |
45 | ||
46 | void TriforceWidget::setWisdomChecked(bool checked) | |
47 | { | |
48 | m_wisdom = checked; | |
49 | } | |
50 | ||
51 | void TriforceWidget::setPowerChecked(bool checked) | |
52 | { | |
53 | m_power = checked; | |
54 | } | |
55 | ||
56 | void TriforceWidget::mousePressEvent(QMouseEvent* event) | |
57 | { | |
58 | if (event->button() == Qt::LeftButton) | |
59 | { | |
60 | if (m_courageHovered) | |
61 | { | |
62 | m_courage = !m_courage; | |
63 | emit courageClicked(m_courage); | |
64 | } | |
65 | else if (m_wisdomHovered) | |
66 | { | |
67 | m_wisdom = !m_wisdom; | |
68 | emit wisdomClicked(m_wisdom); | |
69 | } | |
70 | else if (m_powerHovered) | |
71 | { | |
72 | m_power = !m_power; | |
73 | emit powerClicked(m_power); | |
74 | } | |
75 | } | |
76 | } | |
77 | ||
78 | void TriforceWidget::mouseMoveEvent(QMouseEvent* event) | |
79 | { | |
80 | setStatusTip(tr("Triforce Pieces")); | |
81 | if ((event->pos().x() > (m_bg.width()/2) | |
82 | && event->pos().x() < (m_bg.width()/2 + m_piece.width())) | |
83 | && (event->pos().y() > (m_bg.height()/2) | |
84 | && event->pos().y() < (m_bg.height()/2 + m_piece.height() - 4))) | |
85 | { | |
86 | setToolTip(tr("Triforce of Courage")); | |
87 | - | update(); |
87 | + | //update(); |
88 | m_courageHovered = true; | |
89 | } | |
90 | else | |
91 | { | |
92 | m_courageHovered = false; | |
93 | } | |
94 | if ((event->pos().x() > (m_bg.width()/2 - m_piece.width()) | |
95 | && event->pos().x() < (m_bg.width()/2)) | |
96 | && (event->pos().y() > (m_bg.height()/2) | |
97 | && event->pos().y() < (m_bg.height()/2 + m_piece.height() - 4))) | |
98 | { | |
99 | setToolTip(tr("Triforce of Wisdom")); | |
100 | - | update(); |
100 | + | //update(); |
101 | m_wisdomHovered = true; | |
102 | } | |
103 | else | |
104 | { | |
105 | m_wisdomHovered = false; | |
106 | } | |
107 | ||
108 | if ((event->pos().x() > (m_bg.width()/2 - m_piece.width()/2) | |
109 | && event->pos().x() < (m_bg.width()/2 + m_piece.width()/2)) | |
110 | && (event->pos().y() > (m_piece.height()/2 + 4) | |
111 | && event->pos().y() < ((m_piece.height()/2 + 4) + (m_piece.height() - 8)))) | |
112 | { | |
113 | setToolTip(tr("Triforce of Power")); | |
114 | - | update(); |
114 | + | //update(); |
115 | m_powerHovered = true; | |
116 | } | |
117 | else | |
118 | { | |
119 | m_powerHovered = false; | |
120 | } | |
121 | } | |
122 | ||
123 | void TriforceWidget::paintEvent(QPaintEvent* event) | |
124 | { | |
125 | Q_UNUSED(event); | |
126 | QPainter painter(this); | |
127 | ||
128 | // Draw the background first | |
129 | painter.drawImage(0, 0, m_bg); | |
130 | ||
131 | // Courage goes on the lower left | |
132 | if (m_courage) | |
133 | painter.drawImage(m_bg.width()/2 - 2, m_bg.height()/2 - 4, m_piece); | |
134 | if (m_courageHovered) | |
135 | painter.drawImage(m_bg.width()/2 - 2, m_bg.height()/2 - 4, m_glow); | |
136 | - | painter.drawImage(m_bg.width()/2 - 2, m_bg.height()/2 - 4, m_glow); |
136 | + | |
137 | // wisdom goes on the lower right | |
138 | if (m_wisdom) | |
139 | painter.drawImage(m_piece.width()/2, m_bg.height()/2 - 4, m_piece); | |
140 | if (m_wisdomHovered) | |
141 | painter.drawImage(m_piece.width()/2, m_bg.height()/2 - 4, m_glow); | |
142 | ||
143 | - | if (m_wisdomHovered) |
143 | + | |
144 | - | painter.drawImage(m_piece.width()/2, m_bg.height()/2 - 4, m_glow); |
144 | + | |
145 | painter.drawImage((m_bg.width() / 2) - (m_piece.width()/2), m_piece.height()/2 + 4, m_piece); | |
146 | if (m_powerHovered) | |
147 | painter.drawImage((m_bg.width() / 2) - (m_piece.width()/2), m_piece.height()/2 + 4, m_glow); | |
148 | ||
149 | this->update(); | |
150 | - | if (m_powerHovered) |
150 | + |