aboutsummaryrefslogtreecommitdiff
path: root/src/qt/splashscreen.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-01-08 08:59:24 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2014-01-11 10:20:28 +0100
commit35ecf854c084c248ad640c6af030a9d1ed726c47 (patch)
tree06dc516ca6c4e60bc841cfe49cfda089ef1fc005 /src/qt/splashscreen.cpp
parent55fe4de96056cf7b6bdf708a2912927dc9857207 (diff)
qt: Remove global references in bitcoin.cpp
Remove the need for global references `guiref` and `splashref` by making the BitcoinGUI and SplashScreen classes register for the UI interface signals themselves.
Diffstat (limited to 'src/qt/splashscreen.cpp')
-rw-r--r--src/qt/splashscreen.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/qt/splashscreen.cpp b/src/qt/splashscreen.cpp
index 0e998c6d7e..8b16496c18 100644
--- a/src/qt/splashscreen.cpp
+++ b/src/qt/splashscreen.cpp
@@ -6,6 +6,7 @@
#include "clientversion.h"
#include "util.h"
+#include "ui_interface.h"
#include <QApplication>
#include <QPainter>
@@ -85,4 +86,37 @@ SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f, bool isTest
pixPaint.end();
this->setPixmap(newPixmap);
+
+ subscribeToCoreSignals();
+}
+
+SplashScreen::~SplashScreen()
+{
+ unsubscribeFromCoreSignals();
+}
+
+void SplashScreen::slotFinish(QWidget *mainWin)
+{
+ finish(mainWin);
+}
+
+static void InitMessage(SplashScreen *splash, const std::string &message)
+{
+ QMetaObject::invokeMethod(splash, "showMessage",
+ Qt::QueuedConnection,
+ Q_ARG(QString, QString::fromStdString(message)),
+ Q_ARG(int, Qt::AlignBottom|Qt::AlignHCenter),
+ Q_ARG(QColor, QColor(55,55,55)));
+}
+
+void SplashScreen::subscribeToCoreSignals()
+{
+ // Connect signals to client
+ uiInterface.InitMessage.connect(boost::bind(InitMessage, this, _1));
+}
+
+void SplashScreen::unsubscribeFromCoreSignals()
+{
+ // Disconnect signals from client
+ uiInterface.InitMessage.disconnect(boost::bind(InitMessage, this, _1));
}