diff --git a/images/splash.png b/images/splash.png index 72952bb2dba42805edec69615ee8ec849503118e..4cfe6a704302eba060ab59c01b9226ed1383db3f 100644 Binary files a/images/splash.png and b/images/splash.png differ diff --git a/src/QGCCore.cc b/src/QGCCore.cc index fa047198e25de952bbcd2c62894900dcaa3712ad..552e2368a8e90699066ab28f2bf2f24d1dddefea 100644 --- a/src/QGCCore.cc +++ b/src/QGCCore.cc @@ -110,6 +110,7 @@ QGCCore::QGCCore(int &argc, char* argv[]) : QApplication(argc, argv) // Delete splash screen after mainWindow was displayed splashScreen->setAttribute(Qt::WA_DeleteOnClose); splashScreen->show(); + processEvents(); splashScreen->showMessage(tr("Loading application fonts"), Qt::AlignLeft | Qt::AlignBottom, QColor(62, 93, 141)); // Exit main application when last window is closed @@ -159,7 +160,7 @@ QGCCore::QGCCore(int &argc, char* argv[]) : QApplication(argc, argv) simulationLink->disconnect(); //mainWindow->addLink(simulationLink); - mainWindow = MainWindow::instance(); + mainWindow = MainWindow::instance(splashScreen); // Remove splash screen splashScreen->finish(mainWindow); diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index c2d7f2a49f507b042dd8b18a5a2c9a94061892c7..409f1613ec5da86a2b657bf6ae272fefb4854be6 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -34,6 +34,7 @@ This file is part of the QGROUNDCONTROL project #include #include #include +#include #include "QGC.h" #include "MAVLinkSimulationLink.h" @@ -62,12 +63,13 @@ This file is part of the QGROUNDCONTROL project #include "LogCompressor.h" -MainWindow* MainWindow::instance() +MainWindow* MainWindow::instance(QSplashScreen* screen) { static MainWindow* _instance = 0; if(_instance == 0) { _instance = new MainWindow(); + if (screen) connect(_instance, SIGNAL(initStatusChanged(QString)), screen, SLOT(showMessage(QString))); /* Set the application as parent to ensure that this object * will be destroyed when the main application exits */ @@ -94,6 +96,8 @@ MainWindow::MainWindow(QWidget *parent): centerStackActionGroup(this), lowPowerMode(false) { + hide(); + emit initStatusChanged("Loading UI Settings.."); loadSettings(); if (!settings.contains("CURRENT_VIEW")) { @@ -115,10 +119,14 @@ MainWindow::MainWindow(QWidget *parent): settings.sync(); + emit initStatusChanged("Loading Style."); loadStyle(currentStyle); + emit initStatusChanged("Setting up user interface."); + // Setup user interface ui.setupUi(this); + hide(); // Set dock options setDockOptions(AnimatedDocks | AllowTabbedDocks | AllowNestedDocks); @@ -143,13 +151,18 @@ MainWindow::MainWindow(QWidget *parent): toolBar->addPerspectiveChangeAction(ui.actionEngineersView); toolBar->addPerspectiveChangeAction(ui.actionPilotsView); + emit initStatusChanged("Building common widgets."); + buildCommonWidgets(); connectCommonWidgets(); + emit initStatusChanged("Building common actions."); + // Create actions connectCommonActions(); // Populate link menu + emit initStatusChanged("Populating link menu"); QList links = LinkManager::instance()->getLinks(); foreach(LinkInterface* link, links) { @@ -159,6 +172,7 @@ MainWindow::MainWindow(QWidget *parent): connect(LinkManager::instance(), SIGNAL(newLink(LinkInterface*)), this, SLOT(addLink(LinkInterface*))); // Connect user interface devices + emit initStatusChanged("Initializing joystick interface."); joystickWidget = 0; joystick = new JoystickInput(); @@ -178,9 +192,12 @@ MainWindow::MainWindow(QWidget *parent): // Initialize window state windowStateVal = windowState(); + emit initStatusChanged("Restoring last view state."); + // Restore the window setup loadViewState(); + emit initStatusChanged("Restoring last window size."); // Restore the window position and size if (settings.contains(getWindowGeometryKey())) { @@ -208,6 +225,8 @@ MainWindow::MainWindow(QWidget *parent): connect(&windowNameUpdateTimer, SIGNAL(timeout()), this, SLOT(configureWindowName())); windowNameUpdateTimer.start(15000); + emit initStatusChanged("Done."); + show(); } MainWindow::~MainWindow() diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h index f2226205c5545853ddfc233cee2cb8a33dd9780e..f401fb4195fe2d2f90e4b62310cf2d13cb2d33cc 100644 --- a/src/ui/MainWindow.h +++ b/src/ui/MainWindow.h @@ -80,6 +80,7 @@ This file is part of the QGROUNDCONTROL project #include "MAVLinkDecoder.h" class QGCMapTool; +class QSplashScreen; /** * @brief Main Application Window @@ -90,7 +91,7 @@ class MainWindow : public QMainWindow Q_OBJECT public: - static MainWindow* instance(); + static MainWindow* instance(QSplashScreen* screen = 0); ~MainWindow(); enum QGC_MAINWINDOW_STYLE { @@ -216,6 +217,9 @@ public slots: /** @brief Update the window name */ void configureWindowName(); +signals: + void initStatusChanged(const QString& message); + public: QGCMAVLinkLogPlayer* getLogPlayer() {