From 0e68013bb3f71f44fff8b745ec9a07f0f134621f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 13 Mar 2020 02:41:42 +0100 Subject: [PATCH] [libcalamares] Start making InstanceDescription a stronger type - Replace a map-of-strings with a class type. - For now, doesn't compile. - Intention is to construct from a YAML / QVariant from the *instances* list in `settings.conf`. --- src/libcalamares/Settings.cpp | 20 +++++++------------- src/libcalamares/Settings.h | 17 +++++++++++------ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/libcalamares/Settings.cpp b/src/libcalamares/Settings.cpp index 48f8c606d..770df1438 100644 --- a/src/libcalamares/Settings.cpp +++ b/src/libcalamares/Settings.cpp @@ -71,6 +71,10 @@ requireBool( const YAML::Node& config, const char* key, bool d ) namespace Calamares { +InstanceDescription::InstanceDescription( const QVariantMap& m ) +{ +} + Settings* Settings::s_instance = nullptr; Settings* @@ -134,17 +138,7 @@ interpretInstances( const YAML::Node& node, Settings::InstanceDescriptionList& c { continue; } - QVariantMap instancesVListItemMap = instancesVListItem.toMap(); - Settings::InstanceDescription instanceMap; - for ( auto it = instancesVListItemMap.constBegin(); it != instancesVListItemMap.constEnd(); ++it ) - { - if ( it.value().type() != QVariant::String ) - { - continue; - } - instanceMap.insert( it.key(), it.value().toString() ); - } - customInstances.append( instanceMap ); + customInstances.append( InstanceDescription( instancesVListItem.toMap() ) ); } } } @@ -302,7 +296,7 @@ Settings::init( bool debugMode ) cWarning() << "Calamares::Settings already created"; return s_instance; } - + QStringList settingsFileCandidatesByPriority = settingsFileCandidates( debugMode ); QFileInfo settingsFile; @@ -340,7 +334,7 @@ Settings::init( bool debugMode ) cError() << "FATAL: no sequence set."; ::exit( EXIT_FAILURE ); } - + return settings; } diff --git a/src/libcalamares/Settings.h b/src/libcalamares/Settings.h index 26990f027..673d6fe73 100644 --- a/src/libcalamares/Settings.h +++ b/src/libcalamares/Settings.h @@ -32,6 +32,12 @@ namespace Calamares { +class DLLEXPORT InstanceDescription +{ +public: + InstanceDescription( const QVariantMap& ); +}; + class DLLEXPORT Settings : public QObject { Q_OBJECT @@ -42,10 +48,9 @@ public: static Settings* init( bool debugMode ); /// @brief Explicif filename, debug is always true (for testing) static Settings* init( const QString& filename ); - + QStringList modulesSearchPaths() const; - using InstanceDescription = QMap< QString, QString >; using InstanceDescriptionList = QList< InstanceDescription >; InstanceDescriptionList customModuleInstances() const; @@ -55,7 +60,7 @@ public: QString brandingComponentName() const; /** @brief Is this a debugging run? - * + * * Returns true if Calamares is in debug mode. In debug mode, * modules and settings are loaded from more locations, to help * development and debugging. @@ -63,7 +68,7 @@ public: bool debugMode() const { return m_debug; } /** @brief Distinguish "install" from "OEM" modes. - * + * * Returns true in "install" mode, which is where actions happen * in a chroot -- the target system, which exists separately from * the source system. In "OEM" mode, returns false and most actions @@ -72,13 +77,13 @@ public: bool doChroot() const { return m_doChroot; } /** @brief Global setting of prompt-before-install. - * + * * Returns true when the configuration is such that the user * should be prompted one-last-time before any action is taken * that really affects the machine. */ bool showPromptBeforeExecution() const { return m_promptInstall; } - + /** @brief Distinguish between "install" and "setup" modes. * * This influences user-visible strings, for instance using the