all repos — mgba @ 422e2e2f62fb536ab8c9a2155999287cef5454ea

mGBA Game Boy Advance Emulator

src/platform/qt/SavestateButton.cpp (view raw)

 1#include "SavestateButton.h"
 2
 3#include <QApplication>
 4#include <QPainter>
 5
 6using namespace QGBA;
 7
 8SavestateButton::SavestateButton(QWidget* parent)
 9	: QAbstractButton(parent)
10{
11	// Nothing to do
12}
13
14void SavestateButton::paintEvent(QPaintEvent*) {
15	QPainter painter(this);
16	QRect frame(0, 0, width(), height());
17	QRect full(1, 1, width() - 2, height() - 2);
18	QPalette palette = QApplication::palette(this);
19	painter.setPen(Qt::black);
20	QLinearGradient grad(0, 0, 0, 1);
21	grad.setCoordinateMode(QGradient::ObjectBoundingMode);
22	QColor shadow = palette.color(QPalette::Shadow);
23	QColor dark = palette.color(QPalette::Dark);
24	shadow.setAlpha(128);
25	dark.setAlpha(128);
26	grad.setColorAt(0, shadow);
27	grad.setColorAt(1, dark);
28	painter.setBrush(grad);
29	painter.drawRect(frame);
30	painter.setPen(Qt::NoPen);
31	if (!icon().isNull()) {
32		painter.drawPixmap(full, icon().pixmap(full.size()));
33	}
34	if (hasFocus()) {
35		QColor highlight = palette.color(QPalette::Highlight);
36		highlight.setAlpha(128);
37		painter.fillRect(full, highlight);
38	}
39	painter.setPen(QPen(palette.text(), 0));
40	painter.drawText(full, Qt::AlignCenter, text());
41}