Preferences: remember both the locale name and the user friendly text

Currently we are confused which it is we are looking at and so setting the
language is broken.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2016-09-20 12:35:49 -07:00
parent c809a8873c
commit a31dd6c1c0
3 changed files with 15 additions and 2 deletions

View file

@ -34,6 +34,7 @@ typedef struct {
typedef struct {
const char *language;
const char *lang_locale;
bool use_system_language;
} locale_prefs_t;

View file

@ -1636,8 +1636,8 @@ void UnitsSettings::setCoordinatesTraditional(bool value)
void UnitsSettings::setUnitSystem(const QString& value)
{
short int v = value == QStringLiteral("metric") ? METRIC
: value == QStringLiteral("imperial")? IMPERIAL
: PERSONALIZE;
: value == QStringLiteral("imperial")? IMPERIAL
: PERSONALIZE;
if (v == prefs.unit_system)
return;
@ -1910,6 +1910,17 @@ void LanguageSettingsObjectWrapper::setUseSystemLanguage(bool value)
emit useSystemLanguageChanged(value);
}
void LanguageSettingsObjectWrapper::setLangLocale(const QString &value)
{
if (value == prefs.locale.lang_locale)
return;
QSettings s;
s.beginGroup(group);
s.setValue("UiLangLocale", value);
prefs.locale.lang_locale = copy_string(qPrintable(value));
// no need to emit languageChanged since we already do this for setLanguage
}
void LanguageSettingsObjectWrapper::setLanguage(const QString& value)
{
if (value == prefs.locale.language)

View file

@ -603,6 +603,7 @@ public:
bool useSystemLanguage() const;
public slots:
void setLangLocale (const QString& value);
void setLanguage (const QString& value);
void setTimeFormat (const QString& value);
void setDateFormat (const QString& value);