Pull request #21: windows fixes/cleanup by Matoking
[novacoin.git] / src / qt / bitcoin.cpp
index 7d5712f..daba512 100644 (file)
@@ -3,19 +3,23 @@
  */
 #include "bitcoingui.h"
 #include "clientmodel.h"
-#include "util.h"
+#include "walletmodel.h"
+#include "optionsmodel.h"
+
+#include "headers.h"
 #include "init.h"
-#include "main.h"
-#include "qtui.h"
 
 #include <QApplication>
 #include <QMessageBox>
 #include <QThread>
+#include <QTextCodec>
 #include <QLocale>
 #include <QTranslator>
+#include <QSplashScreen>
 
 // 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)
 {
@@ -88,6 +92,15 @@ void MainFrameRepaint()
 {
 }
 
+void InitMessage(const std::string &message)
+{
+    if(splashref)
+    {
+        splashref->showMessage(QString::fromStdString(message), Qt::AlignBottom|Qt::AlignHCenter, QColor(255,255,200));
+        QApplication::instance()->processEvents();
+    }
+}
+
 /*
    Translate string to current locale using Qt.
  */
@@ -98,6 +111,9 @@ std::string _(const char* psz)
 
 int main(int argc, char *argv[])
 {
+    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
+    QTextCodec::setCodecForCStrings(QTextCodec::codecForTr());
+
     Q_INIT_RESOURCE(bitcoin);
     QApplication app(argc, argv);
 
@@ -107,25 +123,39 @@ int main(int argc, char *argv[])
     translator.load("bitcoin_"+locale);
     app.installTranslator(&translator);
 
+    QSplashScreen splash(QPixmap(":/images/splash"), 0);
+    splash.show();
+    splash.setAutoFillBackground(true);
+    splashref = &splash;
+
+    app.processEvents();
+
     app.setQuitOnLastWindowClosed(false);
 
     try
     {
         if(AppInit2(argc, argv))
         {
-            BitcoinGUI window;
-            ClientModel model;
-            guiref = &window;
-            window.setModel(&model);
+            {
+                // 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);
 
-            window.show();
+                guiref = &window;
+                window.setClientModel(&clientModel);
+                window.setWalletModel(&walletModel);
 
-            int retval = app.exec();
+                window.show();
 
-            guiref = 0;
-            Shutdown(NULL);
+                app.exec();
 
-            return retval;
+                guiref = 0;
+            }
+            Shutdown(NULL);
         }
         else
         {
@@ -136,4 +166,5 @@ int main(int argc, char *argv[])
     } catch (...) {
         PrintException(NULL, "Runaway exception");
     }
+    return 0;
 }