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}