QtUI code cleanup / comment improvements
[novacoin.git] / src / qt / bitcoin.cpp
index 917355e..cdd69e3 100644 (file)
@@ -3,17 +3,23 @@
  */
 #include "bitcoingui.h"
 #include "clientmodel.h"
-#include "util.h"
+#include "walletmodel.h"
+#include "optionsmodel.h"
+#include "qtwin.h"
+
+#include "headers.h"
 #include "init.h"
-#include "main.h"
-#include "externui.h"
 
 #include <QApplication>
 #include <QMessageBox>
 #include <QThread>
+#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)
 {
@@ -86,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,25 +113,64 @@ int main(int argc, char *argv[])
 {
     Q_INIT_RESOURCE(bitcoin);
     QApplication app(argc, argv);
+
+    // Load language file for system locale
+    QString locale = QLocale::system().name();
+    QTranslator translator;
+    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
     {
         if(AppInit2(argc, argv))
         {
-            BitcoinGUI window;
-            ClientModel model;
-            guiref = &window;
-            window.setModel(&model);
-
-            window.show();
-
-            int retval = app.exec();
-
-            guiref = 0;
+            {
+                // 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);
+
+                guiref = &window;
+                window.setClientModel(&clientModel);
+                window.setWalletModel(&walletModel);
+
+                if (QtWin::isCompositionEnabled())
+                {
+#ifdef Q_WS_WIN32
+                    // Windows-specific customization
+                    window.setAttribute(Qt::WA_TranslucentBackground);
+                    window.setAttribute(Qt::WA_NoSystemBackground, false);
+                    QPalette pal = window.palette();
+                    QColor bg = pal.window().color();
+                    bg.setAlpha(0);
+                    pal.setColor(QPalette::Window, bg);
+                    window.setPalette(pal);
+                    window.ensurePolished();
+                    window.setAttribute(Qt::WA_StyledBackground, false);
+#endif
+                    QtWin::extendFrameIntoClientArea(&window);
+                    window.setContentsMargins(0, 0, 0, 0);
+                }
+
+                window.show();
+
+                app.exec();
+
+                guiref = 0;
+            }
             Shutdown(NULL);
-
-            return retval;
         }
         else
         {
@@ -127,4 +181,5 @@ int main(int argc, char *argv[])
     } catch (...) {
         PrintException(NULL, "Runaway exception");
     }
+    return 0;
 }