aboutsummaryrefslogtreecommitdiff
path: root/src/qt/splashscreen.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-09-18 13:14:38 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2014-09-18 13:21:26 +0200
commita49f11d9edf2f7dbce154ca370494a8f86e013d0 (patch)
tree906f50b1935438b6d9c8bf5d51b61be8e3d4dc00 /src/qt/splashscreen.cpp
parent7fd881367544fcc9e70130bf448a181794da26ab (diff)
downloadbitcoin-a49f11d9edf2f7dbce154ca370494a8f86e013d0.tar.xz
qt: Change splash screen to normal window
Makes it possible to move, minimize, unminimize the window while Bitcoin Core is initializing.
Diffstat (limited to 'src/qt/splashscreen.cpp')
-rw-r--r--src/qt/splashscreen.cpp55
1 files changed, 42 insertions, 13 deletions
diff --git a/src/qt/splashscreen.cpp b/src/qt/splashscreen.cpp
index 5dd110b36a..b6443d47ff 100644
--- a/src/qt/splashscreen.cpp
+++ b/src/qt/splashscreen.cpp
@@ -15,11 +15,12 @@
#include <QApplication>
#include <QPainter>
+#include <QDesktopWidget>
-SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f, bool isTestNet) :
- QSplashScreen(pixmap, f)
+SplashScreen::SplashScreen(Qt::WindowFlags f, bool isTestNet) :
+ QWidget(0, f), curAlignment(0)
{
- setAutoFillBackground(true);
+ //setAutoFillBackground(true);
// set reference point, paddings
int paddingRight = 50;
@@ -38,15 +39,14 @@ SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f, bool isTest
QString font = "Arial";
// load the bitmap for writing some text over it
- QPixmap newPixmap;
if(isTestNet) {
- newPixmap = QPixmap(":/images/splash_testnet");
+ pixmap = QPixmap(":/images/splash_testnet");
}
else {
- newPixmap = QPixmap(":/images/splash");
+ pixmap = QPixmap(":/images/splash");
}
- QPainter pixPaint(&newPixmap);
+ QPainter pixPaint(&pixmap);
pixPaint.setPen(QColor(100,100,100));
// check font size and drawing with
@@ -61,7 +61,7 @@ SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f, bool isTest
pixPaint.setFont(QFont(font, 33*fontFactor));
fm = pixPaint.fontMetrics();
titleTextWidth = fm.width(titleText);
- pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight,paddingTop,titleText);
+ pixPaint.drawText(pixmap.width()-titleTextWidth-paddingRight,paddingTop,titleText);
pixPaint.setFont(QFont(font, 15*fontFactor));
@@ -72,11 +72,11 @@ SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f, bool isTest
pixPaint.setFont(QFont(font, 10*fontFactor));
titleVersionVSpace -= 5;
}
- pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight+2,paddingTop+titleVersionVSpace,versionText);
+ pixPaint.drawText(pixmap.width()-titleTextWidth-paddingRight+2,paddingTop+titleVersionVSpace,versionText);
// draw copyright stuff
pixPaint.setFont(QFont(font, 10*fontFactor));
- pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText);
+ pixPaint.drawText(pixmap.width()-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText);
// draw testnet string if testnet is on
if(isTestNet) {
@@ -85,12 +85,22 @@ SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f, bool isTest
pixPaint.setFont(boldFont);
fm = pixPaint.fontMetrics();
int testnetAddTextWidth = fm.width(testnetAddText);
- pixPaint.drawText(newPixmap.width()-testnetAddTextWidth-10,15,testnetAddText);
+ pixPaint.drawText(pixmap.width()-testnetAddTextWidth-10,15,testnetAddText);
}
pixPaint.end();
- this->setPixmap(newPixmap);
+ // Set window title
+ if(isTestNet)
+ setWindowTitle(titleText + " " + testnetAddText);
+ else
+ setWindowTitle(titleText);
+
+ // Resize window and move to center of desktop, disallow resizing
+ QRect r(QPoint(), pixmap.size());
+ resize(r.size());
+ setFixedSize(r.size());
+ move(QApplication::desktop()->screenGeometry().center() - r.center());
subscribeToCoreSignals();
}
@@ -102,7 +112,8 @@ SplashScreen::~SplashScreen()
void SplashScreen::slotFinish(QWidget *mainWin)
{
- finish(mainWin);
+ hide();
+ deleteLater();
}
static void InitMessage(SplashScreen *splash, const std::string &message)
@@ -146,3 +157,21 @@ void SplashScreen::unsubscribeFromCoreSignals()
pwalletMain->ShowProgress.disconnect(boost::bind(ShowProgress, this, _1, _2));
#endif
}
+
+void SplashScreen::showMessage(const QString &message, int alignment, const QColor &color)
+{
+ curMessage = message;
+ curAlignment = alignment;
+ curColor = color;
+ update();
+}
+
+void SplashScreen::paintEvent(QPaintEvent *event)
+{
+ QPainter painter(this);
+ painter.drawPixmap(0, 0, pixmap);
+ QRect r = rect().adjusted(5, 5, -5, -5);
+ painter.setPen(curColor);
+ painter.drawText(r, curAlignment, curMessage);
+}
+