diff --git a/src/libcalamaresui/modulesystem/Module.cpp b/src/libcalamaresui/modulesystem/Module.cpp index 4bc759cb1..7608bd3ec 100644 --- a/src/libcalamaresui/modulesystem/Module.cpp +++ b/src/libcalamaresui/modulesystem/Module.cpp @@ -58,8 +58,7 @@ Module::~Module() {} void Module::initFrom( const QVariantMap& moduleDescriptor, const QString& id ) { - m_name = moduleDescriptor.value( "name" ).toString(); - m_instanceId = id; + m_key = ModuleSystem::InstanceKey( moduleDescriptor.value( "name" ).toString(), id ); if ( moduleDescriptor.contains( EMERGENCY ) ) { m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool(); @@ -148,6 +147,12 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor, } m->initFrom( moduleDescriptor, instanceId ); + if ( !m->m_key.isValid() ) + { + cError() << "Module" << instanceId << "invalid ID"; + return nullptr; + } + m->initFrom( moduleDescriptor ); try { @@ -205,7 +210,7 @@ moduleConfigurationCandidates( bool assumeBuildDir, const QString& moduleName, c void Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Exception { QStringList configCandidates - = moduleConfigurationCandidates( Settings::instance()->debugMode(), m_name, configFileName ); + = moduleConfigurationCandidates( Settings::instance()->debugMode(), name(), configFileName ); for ( const QString& path : configCandidates ) { QFile configFile( path ); @@ -234,28 +239,7 @@ void Module::loadConfigurationFile( const QString& configFileName ) //throws YA return; } } - cDebug() << "No config file for" << m_name << "found anywhere at" << Logger::DebugList( configCandidates ); -} - - -QString -Module::name() const -{ - return m_name; -} - - -QString -Module::instanceId() const -{ - return m_instanceId; -} - - -QString -Module::instanceKey() const -{ - return QString( "%1@%2" ).arg( m_name ).arg( m_instanceId ); + cDebug() << "No config file for" << name() << "found anywhere at" << Logger::DebugList( configCandidates ); } diff --git a/src/libcalamaresui/modulesystem/Module.h b/src/libcalamaresui/modulesystem/Module.h index 03eb09cb0..d96ac152d 100644 --- a/src/libcalamaresui/modulesystem/Module.h +++ b/src/libcalamaresui/modulesystem/Module.h @@ -24,6 +24,8 @@ #include "Requirement.h" #include "UiDllMacro.h" +#include "modulesystem/InstanceKey.h" + #include #include @@ -83,13 +85,13 @@ public: * @brief name returns the name of this module. * @return a string with this module's name. */ - virtual QString name() const final; + QString name() const { return m_key.module(); } /** * @brief instanceId returns the instance id of this module. * @return a string with this module's instance id. */ - virtual QString instanceId() const final; + QString instanceId() const { return m_key.id(); } /** * @brief instanceKey returns the instance key of this module. @@ -98,7 +100,7 @@ public: * For instance, "partition\@partition" (default configuration) or * "locale\@someconfig" (custom configuration) */ - virtual QString instanceKey() const final; + QString instanceKey() const { return m_key.toString(); } /** * @brief location returns the full path of this module's directory. @@ -188,9 +190,8 @@ protected: private: void loadConfigurationFile( const QString& configFileName ); //throws YAML::Exception - QString m_name; QString m_directory; - QString m_instanceId; + ModuleSystem::InstanceKey m_key; }; } // namespace Calamares