add splash screen
authorWladimir J. van der Laan <laanwj@gmail.com>
Tue, 2 Aug 2011 19:48:59 +0000 (21:48 +0200)
committerWladimir J. van der Laan <laanwj@gmail.com>
Tue, 2 Aug 2011 19:48:59 +0000 (21:48 +0200)
src/init.cpp
src/qt/bitcoin.cpp
src/qt/bitcoin.qrc
src/qt/res/images/splash2.jpg [new file with mode: 0644]
src/qtui.h

index fcb0c83..c328ca3 100644 (file)
@@ -370,18 +370,21 @@ bool AppInit2(int argc, char* argv[])
     strErrors = "";
     int64 nStart;
 
+    InitMessage("Loading addresses...");
     printf("Loading addresses...\n");
     nStart = GetTimeMillis();
     if (!LoadAddresses())
         strErrors += _("Error loading addr.dat      \n");
     printf(" addresses   %15"PRI64d"ms\n", GetTimeMillis() - nStart);
 
+    InitMessage("Loading block index...");
     printf("Loading block index...\n");
     nStart = GetTimeMillis();
     if (!LoadBlockIndex())
         strErrors += _("Error loading blkindex.dat      \n");
     printf(" block index %15"PRI64d"ms\n", GetTimeMillis() - nStart);
 
+    InitMessage("Loading wallet...");
     printf("Loading wallet...\n");
     nStart = GetTimeMillis();
     bool fFirstRun;
@@ -412,12 +415,14 @@ bool AppInit2(int argc, char* argv[])
     }
     if (pindexBest != pindexRescan)
     {
+        InitMessage("Rescanning...");
         printf("Rescanning last %i blocks (from block %i)...\n", pindexBest->nHeight - pindexRescan->nHeight, pindexRescan->nHeight);
         nStart = GetTimeMillis();
         pwalletMain->ScanForWalletTransactions(pindexRescan, true);
         printf(" rescan      %15"PRI64d"ms\n", GetTimeMillis() - nStart);
     }
 
+    InitMessage("Done loading");
     printf("Done loading\n");
 
         //// debug print
index bc652d3..749afb4 100644 (file)
 #include <QThread>
 #include <QLocale>
 #include <QTranslator>
+#include <QSplashScreen>
+#include <QDebug>
 
 // Need a global reference for the notifications to find the GUI
 BitcoinGUI *guiref;
+QSplashScreen *splashref;
 
 int MyMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y)
 {
@@ -90,6 +93,15 @@ void MainFrameRepaint()
 {
 }
 
+void InitMessage(const std::string &message)
+{
+    if(splashref)
+    {
+        splashref->showMessage(QString::fromStdString(message), Qt::AlignBottom, QColor(255,255,255));
+        QApplication::instance()->processEvents();
+    }
+}
+
 /*
    Translate string to current locale using Qt.
  */
@@ -109,6 +121,13 @@ int main(int argc, char *argv[])
     translator.load("bitcoin_"+locale);
     app.installTranslator(&translator);
 
+    QSplashScreen splash(QPixmap(":/images/splash"), Qt::WindowStaysOnTopHint);
+    splash.show();
+    splash.setAutoFillBackground(true);
+    splashref = &splash;
+
+    app.processEvents();
+
     app.setQuitOnLastWindowClosed(false);
 
     try
@@ -119,6 +138,7 @@ int main(int argc, char *argv[])
                 // Put this in a block, so that BitcoinGUI is cleaned up properly before
                 // calling shutdown.
                 BitcoinGUI window;
+                splash.finish(&window);
                 OptionsModel optionsModel(pwalletMain);
                 ClientModel clientModel(&optionsModel);
                 WalletModel walletModel(pwalletMain, &optionsModel);
index 8d4bab5..e565361 100644 (file)
@@ -37,6 +37,7 @@
     </qresource>
     <qresource prefix="/images">
         <file alias="about">res/images/about.png</file>
+        <file alias="splash">res/images/splash2.jpg</file>
     </qresource>
     <qresource prefix="/movies">
         <file alias="update_spinner">res/movies/update_spinner.mng</file>
diff --git a/src/qt/res/images/splash2.jpg b/src/qt/res/images/splash2.jpg
new file mode 100644 (file)
index 0000000..3846e6f
Binary files /dev/null and b/src/qt/res/images/splash2.jpg differ
index a3b9eb0..17fc44e 100644 (file)
@@ -43,6 +43,7 @@ extern bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption,
 extern void CalledSetStatusBar(const std::string& strText, int nField);
 extern void UIThreadCall(boost::function0<void> fn);
 extern void MainFrameRepaint();
+extern void InitMessage(const std::string &message);
 extern std::string _(const char* psz);
 
 #endif