diff --git a/src/app/Application.cpp b/src/app/Application.cpp index 4f94370fa6..18efc81950 100644 --- a/src/app/Application.cpp +++ b/src/app/Application.cpp @@ -426,26 +426,48 @@ void Application::init() { m_view->sizeChanged(m_view->size()); m_view->ready(); + + auto sqa = safe_cast(m_app); + connect(sqa, &SafeQApplication::fileOpened, this, [&](const QString& file) { + auto& ctx = m_presenter->applicationContext(); + m_presenter->documentManager().loadFile(ctx, file); + }); } - QTimer::singleShot(10, [&] { initDocuments(); }); + QTimer::singleShot(10, [&] { + initDocuments(); + +#if defined(QT_FEATURE_thread) +#if QT_FEATURE_thread == 1 + QThreadPool::globalInstance()->setMaxThreadCount(2); +#endif +#endif + + auto& ctx = m_presenter->applicationContext(); + // The plug-ins have the ability to override the boot process. + for(auto plug : ctx.guiApplicationPlugins()) + { + plug->afterStartup(); + } + }); } void Application::initDocuments() { auto& ctx = m_presenter->applicationContext(); - if(!appSettings.loadList.empty()) + // The plug-ins have the ability to override the boot process. + for(auto plug : ctx.guiApplicationPlugins()) { - for(const auto& doc : appSettings.loadList) - m_presenter->documentManager().loadFile(ctx, doc); + if(plug->handleLoading()) + { + return; + } } - if(appSettings.gui) + if(!appSettings.loadList.empty()) { - auto sqa = safe_cast(m_app); - connect(sqa, &SafeQApplication::fileOpened, this, [&](const QString& file) { - m_presenter->documentManager().loadFile(ctx, file); - }); + for(const auto& doc : appSettings.loadList) + m_presenter->documentManager().loadFile(ctx, doc); } // Try to reload if there was a crash @@ -479,21 +501,6 @@ void Application::initDocuments() #if !defined(SCORE_SPLASH_SCREEN) openNewDocument(); #endif - -#if defined(QT_FEATURE_thread) -#if QT_FEATURE_thread == 1 - QThreadPool::globalInstance()->setMaxThreadCount(2); -#endif -#endif - - // The plug-ins have the ability to override the boot process. - for(auto plug : ctx.guiApplicationPlugins()) - { - if(plug->handleStartup()) - { - return; - } - } } void Application::openNewDocument() diff --git a/src/lib/score/plugins/application/GUIApplicationPlugin.cpp b/src/lib/score/plugins/application/GUIApplicationPlugin.cpp index e6bb5784ff..967313dfd4 100644 --- a/src/lib/score/plugins/application/GUIApplicationPlugin.cpp +++ b/src/lib/score/plugins/application/GUIApplicationPlugin.cpp @@ -46,11 +46,13 @@ Document* GUIApplicationPlugin::currentDocument() const return context.documents.currentDocument(); } -bool GUIApplicationPlugin::handleStartup() +bool GUIApplicationPlugin::handleLoading() { return false; } +void GUIApplicationPlugin::afterStartup() { } + void GUIApplicationPlugin::prepareNewDocument() { } void GUIApplicationPlugin::on_documentChanged( diff --git a/src/lib/score/plugins/application/GUIApplicationPlugin.hpp b/src/lib/score/plugins/application/GUIApplicationPlugin.hpp index cdd1499697..941eaab3e1 100644 --- a/src/lib/score/plugins/application/GUIApplicationPlugin.hpp +++ b/src/lib/score/plugins/application/GUIApplicationPlugin.hpp @@ -123,10 +123,16 @@ class SCORE_LIB_BASE_EXPORT GUIApplicationPlugin Document* currentDocument() const; /** - * @brief handleStartup + * @brief afterStartup * Returns true if the start-up was handled by this plug-in. */ - virtual bool handleStartup(); + virtual bool handleLoading(); + + /** + * @brief afterStartup + * Called after all the documents have been created / loaded + */ + virtual void afterStartup(); /** * @brief on_initDocument diff --git a/src/plugins/score-plugin-engine/Engine/ApplicationPlugin.cpp b/src/plugins/score-plugin-engine/Engine/ApplicationPlugin.cpp index 94c43c0fd5..9f57c3867d 100644 --- a/src/plugins/score-plugin-engine/Engine/ApplicationPlugin.cpp +++ b/src/plugins/score-plugin-engine/Engine/ApplicationPlugin.cpp @@ -55,7 +55,7 @@ ApplicationPlugin::~ApplicationPlugin() // aboutToClose. } -bool ApplicationPlugin::handleStartup() +void ApplicationPlugin::afterStartup() { if(!context.documents.documents().empty()) { @@ -65,11 +65,8 @@ bool ApplicationPlugin::handleStartup() QTimer::singleShot( (1 + context.applicationSettings.waitAfterLoad) * 1000, &m_execution, [this] { m_execution.request_play_local(true); }); - return true; } } - - return false; } void ApplicationPlugin::initialize() diff --git a/src/plugins/score-plugin-engine/Engine/ApplicationPlugin.hpp b/src/plugins/score-plugin-engine/Engine/ApplicationPlugin.hpp index 3a5071ee5d..8e2292b1e5 100644 --- a/src/plugins/score-plugin-engine/Engine/ApplicationPlugin.hpp +++ b/src/plugins/score-plugin-engine/Engine/ApplicationPlugin.hpp @@ -50,7 +50,7 @@ class SCORE_PLUGIN_ENGINE_EXPORT ApplicationPlugin final void initialize() override; - bool handleStartup() override; + void afterStartup() override; score::GUIElements makeGUIElements() override; void prepareNewDocument() override; diff --git a/src/plugins/score-plugin-js/JS/ApplicationPlugin.cpp b/src/plugins/score-plugin-js/JS/ApplicationPlugin.cpp index b355b1c332..3b6d870fdf 100644 --- a/src/plugins/score-plugin-js/JS/ApplicationPlugin.cpp +++ b/src/plugins/score-plugin-js/JS/ApplicationPlugin.cpp @@ -22,7 +22,7 @@ ApplicationPlugin::ApplicationPlugin(const score::GUIApplicationContext& ctx) ApplicationPlugin::~ApplicationPlugin() { } -bool ApplicationPlugin::handleStartup() +void ApplicationPlugin::afterStartup() { #if __has_include() if(QFileInfo f{context.applicationSettings.ui}; f.isFile()) @@ -38,7 +38,7 @@ bool ApplicationPlugin::handleStartup() m_window->setHeight(480); item->setParentItem(m_window->contentItem()); m_window->show(); - return true; + return; } } else @@ -49,6 +49,5 @@ bool ApplicationPlugin::handleStartup() delete m_comp; } #endif - return false; } } diff --git a/src/plugins/score-plugin-js/JS/ApplicationPlugin.hpp b/src/plugins/score-plugin-js/JS/ApplicationPlugin.hpp index 83fd536699..f8afa4b1c0 100644 --- a/src/plugins/score-plugin-js/JS/ApplicationPlugin.hpp +++ b/src/plugins/score-plugin-js/JS/ApplicationPlugin.hpp @@ -19,7 +19,7 @@ class ApplicationPlugin final explicit ApplicationPlugin(const score::GUIApplicationContext& ctx); ~ApplicationPlugin() override; - bool handleStartup() override; + void afterStartup() override; QQmlEngine m_engine; QQmlComponent* m_comp{};