diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index e235ff8f5..689d61a77 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -95,7 +95,7 @@ signals: void modulesFailed( QStringList ); /// .. or not // Below, see RequirementsChecker documentation void requirementsComplete( bool ); - void requirementsResult( RequirementsList& ); + void requirementsResult( RequirementsList ); void requirementsProgress( const QString& ); private slots: diff --git a/src/libcalamaresui/modulesystem/Requirement.h b/src/libcalamaresui/modulesystem/Requirement.h index 5688d4e14..bf2157f69 100644 --- a/src/libcalamaresui/modulesystem/Requirement.h +++ b/src/libcalamaresui/modulesystem/Requirement.h @@ -19,6 +19,7 @@ #define CALAMARES_REQUIREMENT_H #include +#include #include #include @@ -57,4 +58,7 @@ struct RequirementEntry using RequirementsList = QList< RequirementEntry >; } // namespace Calamares + +Q_DECLARE_METATYPE(Calamares::RequirementEntry) + #endif diff --git a/src/libcalamaresui/modulesystem/RequirementsChecker.cpp b/src/libcalamaresui/modulesystem/RequirementsChecker.cpp index 74f07e142..17bb9771c 100644 --- a/src/libcalamaresui/modulesystem/RequirementsChecker.cpp +++ b/src/libcalamaresui/modulesystem/RequirementsChecker.cpp @@ -34,7 +34,26 @@ namespace Calamares { -void +static void +registerMetatypes() +{ + static bool done = false; + + if ( !done ) + { + qRegisterMetaType< RequirementEntry >( "RequirementEntry" ); + // It's sensitive to the names of types in parameters; in particular + // althrough QList is the same as RequirementsList, + // because we *name* the type as RequirementsList in the parameters, + // we need to register that (as well). Here, be safe and register + // both names. + qRegisterMetaType< QList< RequirementEntry > >( "QList" ); + qRegisterMetaType< RequirementsList >( "RequirementsList" ); + done = true; + } +} + +static void check( Module * const &m, RequirementsChecker *c ) { RequirementsList l = m->checkRequirements(); @@ -49,6 +68,8 @@ RequirementsChecker::RequirementsChecker( QVector< Module* > modules, QObject* p { m_watchers.reserve( m_modules.count() ); m_collectedRequirements.reserve( m_modules.count() ); + + registerMetatypes(); } RequirementsChecker::~RequirementsChecker() diff --git a/src/libcalamaresui/modulesystem/RequirementsChecker.h b/src/libcalamaresui/modulesystem/RequirementsChecker.h index a3f0b9c3e..ce2ccce7b 100644 --- a/src/libcalamaresui/modulesystem/RequirementsChecker.h +++ b/src/libcalamaresui/modulesystem/RequirementsChecker.h @@ -53,7 +53,7 @@ signals: /// @brief Human-readable progress message void requirementsProgress( const QString& ); /// @brief Requirements from a single module - void requirementsResult( RequirementsList& ); + void requirementsResult( RequirementsList ); /** @brief When all requirements are collected * * The argument indicates if all mandatory requirements are satisfied.