Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "TriforceWidget.hpp"
- #include <QPainter>
- #include <QMouseEvent>
- #include <QDebug>
- #include <QStatusBar>
- #include <QMainWindow>
- TriforceWidget::TriforceWidget(QWidget *parent) :
- QWidget(parent),
- m_bg(QImage(":/Triforce/Background")),
- m_piece(QImage(":/Triforce/Piece")),
- m_glow(QImage(":/Triforce/Glow")),
- m_courage(true),
- m_courageHovered(false),
- m_power(true),
- m_powerHovered(false),
- m_wisdom(true),
- m_wisdomHovered(false)
- {
- setMouseTracking(true);
- setBaseSize(m_bg.width(), m_bg.height());
- setMinimumSize(m_bg.width(), m_bg.height());
- setMaximumSize(m_bg.width(), m_bg.height());
- }
- bool TriforceWidget::isCourageChecked() const
- {
- return m_courage;
- }
- bool TriforceWidget::isWisdomChecked() const
- {
- return m_wisdom;
- }
- bool TriforceWidget::isPowerChecked() const
- {
- return m_power;
- }
- void TriforceWidget::setCourageChecked(bool checked)
- {
- m_courage = checked;
- }
- void TriforceWidget::setWisdomChecked(bool checked)
- {
- m_wisdom = checked;
- }
- void TriforceWidget::setPowerChecked(bool checked)
- {
- m_power = checked;
- }
- void TriforceWidget::mousePressEvent(QMouseEvent* event)
- {
- if (event->button() == Qt::LeftButton)
- {
- if (m_courageHovered)
- {
- m_courage = !m_courage;
- emit courageClicked(m_courage);
- }
- else if (m_wisdomHovered)
- {
- m_wisdom = !m_wisdom;
- emit wisdomClicked(m_wisdom);
- }
- else if (m_powerHovered)
- {
- m_power = !m_power;
- emit powerClicked(m_power);
- }
- }
- }
- void TriforceWidget::mouseMoveEvent(QMouseEvent* event)
- {
- setStatusTip(tr("Triforce Pieces"));
- if ((event->pos().x() > (m_bg.width()/2)
- && event->pos().x() < (m_bg.width()/2 + m_piece.width()))
- && (event->pos().y() > (m_bg.height()/2)
- && event->pos().y() < (m_bg.height()/2 + m_piece.height() - 4)))
- {
- setToolTip(tr("Triforce of Courage"));
- //update();
- m_courageHovered = true;
- }
- else
- {
- m_courageHovered = false;
- }
- if ((event->pos().x() > (m_bg.width()/2 - m_piece.width())
- && event->pos().x() < (m_bg.width()/2))
- && (event->pos().y() > (m_bg.height()/2)
- && event->pos().y() < (m_bg.height()/2 + m_piece.height() - 4)))
- {
- setToolTip(tr("Triforce of Wisdom"));
- //update();
- m_wisdomHovered = true;
- }
- else
- {
- m_wisdomHovered = false;
- }
- if ((event->pos().x() > (m_bg.width()/2 - m_piece.width()/2)
- && event->pos().x() < (m_bg.width()/2 + m_piece.width()/2))
- && (event->pos().y() > (m_piece.height()/2 + 4)
- && event->pos().y() < ((m_piece.height()/2 + 4) + (m_piece.height() - 8))))
- {
- setToolTip(tr("Triforce of Power"));
- //update();
- m_powerHovered = true;
- }
- else
- {
- m_powerHovered = false;
- }
- }
- void TriforceWidget::paintEvent(QPaintEvent* event)
- {
- Q_UNUSED(event);
- QPainter painter(this);
- // Draw the background first
- painter.drawImage(0, 0, m_bg);
- // Courage goes on the lower left
- if (m_courage)
- painter.drawImage(m_bg.width()/2 - 2, m_bg.height()/2 - 4, m_piece);
- if (m_courageHovered)
- painter.drawImage(m_bg.width()/2 - 2, m_bg.height()/2 - 4, m_glow);
- // wisdom goes on the lower right
- if (m_wisdom)
- painter.drawImage(m_piece.width()/2, m_bg.height()/2 - 4, m_piece);
- if (m_wisdomHovered)
- painter.drawImage(m_piece.width()/2, m_bg.height()/2 - 4, m_glow);
- // power goes at the top
- if (m_power)
- painter.drawImage((m_bg.width() / 2) - (m_piece.width()/2), m_piece.height()/2 + 4, m_piece);
- if (m_powerHovered)
- painter.drawImage((m_bg.width() / 2) - (m_piece.width()/2), m_piece.height()/2 + 4, m_glow);
- this->update();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement