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 | + |