//Copyright 2017 Ryan Wick
//This file is part of Grovolve.
//Grovolve is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//Grovolve is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//You should have received a copy of the GNU General Public License
//along with Grovolve. If not, see .
#include "infotextwidget.h"
#include
#include
#include
InfoTextWidget::InfoTextWidget(QWidget * parent) :
QWidget(parent)
{
setFixedSize(16, 16);
setMouseTracking(true);
}
InfoTextWidget::InfoTextWidget(QWidget * parent, QString infoText) :
QWidget(parent)
{
setFixedSize(16, 16);
setMouseTracking(true);
setInfoText(infoText);
}
void InfoTextWidget::setInfoText(QString infoText)
{
//Convert text to a rich text format, which will let QToolTip wrap the text.
m_infoText = "" + infoText + "";
}
void InfoTextWidget::paintEvent(QPaintEvent * /*event*/)
{
QPainter painter(this);
QPixmap infoIcon;
if (isEnabled())
infoIcon = QPixmap(":/icons/information-256.png");
else
infoIcon = QPixmap(":/icons/information-256-inactive.png");
//This scaling using the device pixel ratio was necessary to make the labels look right on a MacBook retina display.
double scaledWidth = width() * devicePixelRatio();
double scaledHeight = height() * devicePixelRatio();
double scaledSize = std::min(scaledWidth, scaledHeight);
QPixmap scaledInfoIcon = infoIcon.scaled(scaledSize, scaledSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
scaledInfoIcon.setDevicePixelRatio(devicePixelRatio());
double topLeftX = scaledWidth / 2.0 - scaledSize / 2.0;
double topLeftY = scaledHeight / 2.0 - scaledSize / 2.0;
painter.drawPixmap(topLeftX, topLeftY, scaledInfoIcon);
}
void InfoTextWidget::mousePressEvent(QMouseEvent * event)
{
QToolTip::showText(event->globalPos(), m_infoText);
}