[locale] Set *locale* GS key when needed

The code path for setting the locale / language automatically
emits currentLanguageStatusChanged(), but the code that updates
GS connects to currentLanguageCodeChaged(). This was altered in
the 3.2.28 release cycle. Since then, automcatic locale selection
wasn't setting *locale* in GS, so that a click-through kind of
locale selection would not set it; then the packages module
has no *locale* setting for localization packages.

The combination of status and code signals (machine- and human-
readable) is ok. Introduce a setter to the language that does
the necessary signalling, so that setting the language automatically
also DTRT.

FIXES #1671
This commit is contained in:
Adriaan de Groot 2021-04-12 17:21:33 +02:00
parent a6406ac41b
commit ea61ac4386
2 changed files with 15 additions and 5 deletions

View File

@ -259,8 +259,7 @@ Config::setCurrentLocation( const CalamaresUtils::Locale::TimeZoneData* location
auto newLocale = automaticLocaleConfiguration(); auto newLocale = automaticLocaleConfiguration();
if ( !m_selectedLocaleConfiguration.explicit_lang ) if ( !m_selectedLocaleConfiguration.explicit_lang )
{ {
m_selectedLocaleConfiguration.setLanguage( newLocale.language() ); setLanguage( newLocale.language() );
emit currentLanguageStatusChanged( currentLanguageStatus() );
} }
if ( !m_selectedLocaleConfiguration.explicit_lc ) if ( !m_selectedLocaleConfiguration.explicit_lc )
{ {
@ -302,11 +301,20 @@ Config::localeConfiguration() const
void void
Config::setLanguageExplicitly( const QString& language ) Config::setLanguageExplicitly( const QString& language )
{ {
m_selectedLocaleConfiguration.setLanguage( language );
m_selectedLocaleConfiguration.explicit_lang = true; m_selectedLocaleConfiguration.explicit_lang = true;
setLanguage( language );
}
emit currentLanguageStatusChanged( currentLanguageStatus() ); void
emit currentLanguageCodeChanged( currentLanguageCode() ); Config::setLanguage( const QString& language )
{
if ( language != m_selectedLocaleConfiguration.language() )
{
m_selectedLocaleConfiguration.setLanguage( language );
emit currentLanguageStatusChanged( currentLanguageStatus() );
emit currentLanguageCodeChanged( currentLanguageCode() );
}
} }
void void

View File

@ -95,6 +95,8 @@ private:
} }
public Q_SLOTS: public Q_SLOTS:
/// Set the language, but do not mark it as user-choice
void setLanguage( const QString& language );
/// Set a language by user-choice, overriding future location changes /// Set a language by user-choice, overriding future location changes
void setLanguageExplicitly( const QString& language ); void setLanguageExplicitly( const QString& language );
/// Set LC (formats) by user-choice, overriding future location changes /// Set LC (formats) by user-choice, overriding future location changes