diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index e6ad7f621..66753cc95 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -95,6 +95,36 @@ const QStringList Branding::s_uploadServerStrings = // clang-format on // *INDENT-ON* +/** @brief Check that all the entries in the @p style map make sense + * + * This will catch typo's in key names. + */ +static bool +validateStyleEntries( const QMap< QString, QString >& style ) +{ + using SE = Branding::StyleEntry; + + Logger::Once o; + bool valid = true; + + const auto meta = QMetaEnum::fromType< SE >(); + QSet< QString > validNames; + for ( SE i : { SE::SidebarBackground, SE::SidebarBackgroundCurrent, SE::SidebarText, SE::SidebarTextCurrent } ) + { + validNames.insert( meta.valueToKey( i ) ); + } + + for ( const auto& k : style.keys() ) + { + if ( !validNames.contains( k ) ) + { + cWarning() << o << "Unknown branding *style* entry" << k; + valid = false; + } + } + + return valid; +} const NamedEnumTable< Branding::WindowDimensionUnit >& Branding::WindowDimension::suffixes() @@ -289,6 +319,7 @@ Branding::Branding( const QString& brandingFilePath, QObject* parent ) { cDebug() << "Loaded branding component" << m_componentName; } + validateStyleEntries( m_style ); } @@ -310,8 +341,8 @@ Branding::string( Branding::StringEntry stringEntry ) const QString Branding::styleString( Branding::StyleEntry styleEntry ) const { - const auto meta = QMetaEnum::fromType(); - return meta.valueToKey(styleEntry); + const auto meta = QMetaEnum::fromType< Branding::StyleEntry >(); + return m_style.value( meta.valueToKey( styleEntry ) ); }