5 #if defined(HAVE_CONFIG_H)
23 #include <QApplication>
24 #include <QCloseEvent>
26 #include <QRadialGradient>
31 : QWidget(), curAlignment(0)
34 int paddingRight = 50;
36 int titleVersionVSpace = 17;
37 int titleCopyrightVSpace = 40;
39 float fontFactor = 1.0;
40 float devicePixelRatio = 1.0;
41 devicePixelRatio =
static_cast<QGuiApplication*
>(QCoreApplication::instance())->devicePixelRatio();
45 QString versionText = QString(
"Version %1").arg(QString::fromStdString(
FormatFullVersion()));
49 QString font = QApplication::font().toString();
52 QSize splashSize(480*devicePixelRatio,320*devicePixelRatio);
53 pixmap = QPixmap(splashSize);
56 pixmap.setDevicePixelRatio(devicePixelRatio);
58 QPainter pixPaint(&
pixmap);
59 pixPaint.setPen(QColor(100,100,100));
62 QRadialGradient gradient(QPoint(0,0), splashSize.width()/devicePixelRatio);
63 gradient.setColorAt(0, Qt::white);
64 gradient.setColorAt(1, QColor(247,247,247));
65 QRect rGradient(QPoint(0,0), splashSize);
66 pixPaint.fillRect(rGradient, gradient);
69 QRect rectIcon(QPoint(-150,-122), QSize(430,430));
71 const QSize requiredSize(1024,1024);
72 QPixmap icon(networkStyle->
getAppIcon().pixmap(requiredSize));
74 pixPaint.drawPixmap(rectIcon, icon);
77 pixPaint.setFont(QFont(font, 33*fontFactor));
78 QFontMetrics fm = pixPaint.fontMetrics();
80 if (titleTextWidth > 176) {
81 fontFactor = fontFactor * 176 / titleTextWidth;
84 pixPaint.setFont(QFont(font, 33*fontFactor));
85 fm = pixPaint.fontMetrics();
87 pixPaint.drawText(
pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop,titleText);
89 pixPaint.setFont(QFont(font, 15*fontFactor));
92 fm = pixPaint.fontMetrics();
94 if(versionTextWidth > titleTextWidth+paddingRight-10) {
95 pixPaint.setFont(QFont(font, 10*fontFactor));
96 titleVersionVSpace -= 5;
98 pixPaint.drawText(
pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight+2,paddingTop+titleVersionVSpace,versionText);
102 pixPaint.setFont(QFont(font, 10*fontFactor));
103 const int x =
pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight;
104 const int y = paddingTop+titleCopyrightVSpace;
105 QRect copyrightRect(x, y,
pixmap.width() - x - paddingRight,
pixmap.height() - y);
106 pixPaint.drawText(copyrightRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, copyrightText);
110 if(!titleAddText.isEmpty()) {
111 QFont boldFont = QFont(font, 10*fontFactor);
112 boldFont.setWeight(QFont::Bold);
113 pixPaint.setFont(boldFont);
114 fm = pixPaint.fontMetrics();
116 pixPaint.drawText(
pixmap.width()/devicePixelRatio-titleAddTextWidth-10,15,titleAddText);
122 setWindowTitle(titleText +
" " + titleAddText);
125 QRect r(QPoint(), QSize(
pixmap.size().width()/devicePixelRatio,
pixmap.size().height()/devicePixelRatio));
127 setFixedSize(r.size());
128 move(QGuiApplication::primaryScreen()->geometry().center() - r.center());
130 installEventFilter(
this);
155 if (ev->type() == QEvent::KeyPress) {
156 QKeyEvent *keyEvent =
static_cast<QKeyEvent *
>(ev);
157 if (keyEvent->key() == Qt::Key_Q) {
161 return QObject::eventFilter(obj, ev);
176 bool invoked = QMetaObject::invokeMethod(splash,
"showMessage",
177 Qt::QueuedConnection,
178 Q_ARG(QString, QString::fromStdString(message)),
179 Q_ARG(
int, Qt::AlignBottom|Qt::AlignHCenter),
180 Q_ARG(QColor, QColor(55,55,55)));
187 (resume_possible ?
_(
"(press q to shutdown and continue later)").translated
188 :
_(
"press q to shutdown").translated) +
232 QPainter painter(
this);
233 painter.drawPixmap(0, 0,
pixmap);
234 QRect r = rect().adjusted(5, 5, -5, -5);