Settings update: Fix missing groups and Language initialization

There's one function named uiLanguage() that should return
the current uiLanguage() that subsurface is running, but
it actually sets a whole lot of preferences, I think
that the general idea of that function is okay, but it seems
broken for me.

still, I used it to load the correct language from the preferences
since it's what this function is currently doing right now.

Also, a lot of missing groups where added.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2016-08-27 22:13:33 -03:00 committed by Dirk Hohndel
parent 270864d073
commit 0a6f6b4382
3 changed files with 21 additions and 4 deletions

View file

@ -481,6 +481,9 @@ extern "C" const char *subsurface_user_agent()
return strdup(qPrintable(uA));
}
/* TOOD: Move this to SettingsObjectWrapper, and also fix this complexity.
* gezus.
*/
QString uiLanguage(QLocale *callerLoc)
{
QString shortDateFormat;
@ -489,6 +492,7 @@ QString uiLanguage(QLocale *callerLoc)
QSettings s;
QVariant v;
s.beginGroup("Language");
GET_BOOL("UseSystemLanguage", locale.use_system_language);
if (!s.value("UseSystemLanguage", true).toBool()) {
loc = QLocale(s.value("UiLanguage", QLocale().uiLanguages().first()).toString());

View file

@ -1618,6 +1618,7 @@ void UnitsSettings::setCoordinatesTraditional(bool value)
if (value == prefs.coordinates_traditional)
return;
QSettings s;
s.beginGroup(group);
s.setValue("coordinates", value);
prefs.coordinates_traditional = value;
emit coordinatesTraditionalChanged(value);
@ -1633,6 +1634,7 @@ void UnitsSettings::setUnitSystem(const QString& value)
return;
QSettings s;
s.setValue("unit_system", value);
if (value == QStringLiteral("metric")) {
@ -1893,6 +1895,7 @@ void LanguageSettingsObjectWrapper::setUseSystemLanguage(bool value)
if (value == prefs.locale.use_system_language)
return;
QSettings s;
s.beginGroup(group);
s.setValue("UseSystemLanguage", value);
prefs.locale.use_system_language = copy_string(qPrintable(value));
emit useSystemLanguageChanged(value);
@ -1903,6 +1906,7 @@ void LanguageSettingsObjectWrapper::setLanguage(const QString& value)
if (value == prefs.locale.language)
return;
QSettings s;
s.beginGroup(group);
s.setValue("UiLanguage", value);
prefs.locale.language = copy_string(qPrintable(value));
emit languageChanged(value);
@ -1913,6 +1917,7 @@ void LanguageSettingsObjectWrapper::setTimeFormat(const QString& value)
if (value == prefs.time_format)
return;
QSettings s;
s.beginGroup(group);
s.setValue("time_format", value);
prefs.time_format = copy_string(qPrintable(value));;
emit timeFormatChanged(value);
@ -1924,6 +1929,7 @@ void LanguageSettingsObjectWrapper::setDateFormat(const QString& value)
return;
QSettings s;
s.beginGroup(group);
s.setValue("date_format", value);
prefs.date_format = copy_string(qPrintable(value));;
emit dateFormatChanged(value);
@ -1935,6 +1941,7 @@ void LanguageSettingsObjectWrapper::setDateFormatShort(const QString& value)
return;
QSettings s;
s.beginGroup(group);
s.setValue("date_format_short", value);
prefs.date_format_short = copy_string(qPrintable(value));;
emit dateFormatShortChanged(value);
@ -1945,6 +1952,7 @@ void LanguageSettingsObjectWrapper::setTimeFormatOverride(bool value)
if (value == prefs.time_format_override)
return;
QSettings s;
s.beginGroup(group);
s.setValue("time_format_override", value);
prefs.time_format_override = value;
emit timeFormatOverrideChanged(value);
@ -1956,6 +1964,7 @@ void LanguageSettingsObjectWrapper::setDateFormatOverride(bool value)
return;
QSettings s;
s.beginGroup(group);
s.setValue("date_format_override", value);
prefs.date_format_override = value;
emit dateFormatOverrideChanged(value);
@ -1979,6 +1988,7 @@ void AnimationsSettingsObjectWrapper::setAnimationSpeed(int value)
return;
QSettings s;
s.beginGroup(group);
s.setValue("animation_speed", value);
prefs.animation_speed = value;
emit animationSpeedChanged(value);
@ -2005,6 +2015,7 @@ void LocationServiceSettingsObjectWrapper::setDistanceThreshold(int value)
if (value == prefs.distance_threshold)
return;
QSettings s;
s.beginGroup(group);
s.setValue("distance_threshold", value);
prefs.distance_threshold = value;
emit distanceThresholdChanged(value);
@ -2016,9 +2027,10 @@ void LocationServiceSettingsObjectWrapper::setTimeThreshold(int value)
return;
QSettings s;
s.beginGroup(group);
s.setValue("time_threshold", value);
prefs.time_threshold = value;
emit timeThresholdChanged( value);
emit timeThresholdChanged(value);
}
SettingsObjectWrapper::SettingsObjectWrapper(QObject* parent):

View file

@ -42,18 +42,19 @@ void PreferencesLanguage::refreshSettings()
ui->languageDropdown->setCurrentIndex(languages.first().row());
}
#include <QDebug>
void PreferencesLanguage::syncSettings()
{
auto lang = SettingsObjectWrapper::instance()->language_settings;
bool useSystemLang = prefs.locale.use_system_language;
QString currentText = ui->languageDropdown->currentText();
QAbstractItemModel *m = ui->languageDropdown->model();
QString currentText = m->data(m->index(ui->languageDropdown->currentIndex(),0), Qt::UserRole).toString();
if (useSystemLang != ui->languageSystemDefault->isChecked() ||
(!useSystemLang && currentText != prefs.locale.language)) {
QMessageBox::warning(this, tr("Restart required"),
tr("To correctly load a new language you must restart Subsurface."));
}
auto lang = SettingsObjectWrapper::instance()->language_settings;
lang->setLanguage(currentText);
lang->setUseSystemLanguage(ui->languageSystemDefault->isChecked());
lang->setTimeFormatOverride(!ui->timeFormatSystemDefault->isChecked());