Load modules asynchronously on startup.

This commit is contained in:
Teo Mrnjavac 2014-06-24 16:26:48 +02:00
parent 041db41b35
commit 869483055c
2 changed files with 42 additions and 25 deletions

View File

@ -20,6 +20,7 @@
#include "CalamaresWindow.h" #include "CalamaresWindow.h"
#include "CalamaresVersion.h" #include "CalamaresVersion.h"
#include "ModuleLoader.h"
#include "Settings.h" #include "Settings.h"
#include "utils/CalamaresUtils.h" #include "utils/CalamaresUtils.h"
#include "utils/Logger.h" #include "utils/Logger.h"
@ -55,11 +56,6 @@ CalamaresApplication::init()
setWindowIcon( QIcon( "from branding" ) ); setWindowIcon( QIcon( "from branding" ) );
initPlugins(); initPlugins();
initJobQueue();
m_mainwindow = new CalamaresWindow();
m_mainwindow->show();
} }
@ -85,6 +81,20 @@ CalamaresApplication::instance()
} }
void
CalamaresApplication::setDebug( bool enabled )
{
m_debugMode = enabled;
}
bool
CalamaresApplication::isDebug()
{
return m_debugMode;
}
void void
CalamaresApplication::initSettings() CalamaresApplication::initSettings()
{ {
@ -102,7 +112,21 @@ CalamaresApplication::initBranding()
void void
CalamaresApplication::initPlugins() CalamaresApplication::initPlugins()
{ {
m_moduleLoader = new Calamares::ModuleLoader(
Calamares::Settings::instance()->modulesSearchPaths(), this );
connect( m_moduleLoader, &Calamares::ModuleLoader::done,
this, &CalamaresApplication::onPluginsReady );
m_moduleLoader->start();
}
void
CalamaresApplication::onPluginsReady()
{
initJobQueue();
m_mainwindow = new CalamaresWindow();
m_mainwindow->show();
} }
@ -111,19 +135,3 @@ CalamaresApplication::initJobQueue()
{ {
} }
void
CalamaresApplication::setDebug( bool enabled )
{
m_debugMode = enabled;
}
bool
CalamaresApplication::isDebug()
{
return m_debugMode;
}

View File

@ -25,6 +25,11 @@
class CalamaresWindow; class CalamaresWindow;
namespace Calamares
{
class ModuleLoader;
}
class CalamaresApplication : public QApplication class CalamaresApplication : public QApplication
{ {
Q_OBJECT Q_OBJECT
@ -35,16 +40,20 @@ public:
void init(); void init();
static CalamaresApplication* instance(); static CalamaresApplication* instance();
void setDebug( bool enabled );
bool isDebug();
private slots:
void onPluginsReady();
private:
void initSettings(); void initSettings();
void initBranding(); void initBranding();
void initPlugins(); void initPlugins();
void initJobQueue(); void initJobQueue();
void setDebug( bool enabled );
bool isDebug();
private:
CalamaresWindow* m_mainwindow; CalamaresWindow* m_mainwindow;
Calamares::ModuleLoader* m_moduleLoader;
bool m_debugMode; bool m_debugMode;
//QPointer< Calamares::JobQueue > m_jobQueue; //QPointer< Calamares::JobQueue > m_jobQueue;