View difference between Paste ID: kQb4nFs7 and 1erYjC9E
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+