Language settings continued.
authorMax Lapan <max.lapan@gmail.com>
Wed, 17 Mar 2010 16:06:59 +0000 (19:06 +0300)
committerMax Lapan <max.lapan@gmail.com>
Wed, 17 Mar 2010 16:06:59 +0000 (19:06 +0300)
settings.cpp
settings.hpp
settingsDialog.cpp

index 021ea4f..995aa05 100644 (file)
@@ -37,9 +37,7 @@ void Settings::load ()
 
     _updateIntervalIndex = minutes2IntervalIndex (settings.value ("updateInterval", intervalIndex2Minutes (_updateIntervalIndex)).toInt ());
 
-    _langIndex = settings.value ("langIndex", _langIndex).toInt ();
-    if (_langIndex < 0 || _langIndex >= _langs.count ())
-        _langIndex = 0;
+    setLanguageIndex (settings.value ("langIndex", _langIndex).toInt ());
 }
 
 
@@ -83,10 +81,10 @@ void Settings::makeDefault ()
     _updateIntervalIndex = 3;
 
     // languages
-    _langIndex = 0;
     _langs.append (Language (QString (""),   tr ("System")));
     _langs.append (Language (QString ("en"), tr ("English")));
     _langs.append (Language (QString ("ru"), tr ("Russian")));
+    setLanguageIndex (0);
 }
 
 
@@ -135,3 +133,12 @@ int Settings::minutes2IntervalIndex (int minutes) const
             return 0;
     }
 }
+
+
+void Settings::setLanguageIndex (int index)
+{
+    if (index < 0 || index >= _langs.count ())
+        _langIndex = 0;
+    else
+        _langIndex = index;
+}
index 19b00f4..9634964 100644 (file)
@@ -98,8 +98,7 @@ public:
     const QList<Language>& languages () const
     { return _langs; };
 
-    void setLanguage (const Language &lang)
-    { _langIndex = _langs.indexOf (lang); };
+    void setLanguageIndex (int index);
 };
 
 
index ca73077..6a9293b 100644 (file)
@@ -57,6 +57,8 @@ void SettingsDialog::createLanguageButton (QBoxLayout *layout)
     selector->setCurrentIndex (_settings->languages ().indexOf (_settings->language ()));
 
     _languageButton->setPickSelector (selector);
+
+    connect (selector, SIGNAL (selected (const QString&)), SLOT (languageChanged (const QString&)));
 #endif
 }
 
@@ -85,9 +87,8 @@ void SettingsDialog::languageChanged (const QString&)
     if (!model)
         return;
 
-    const Language &lang = _settings->languages ()[model->currentIndex ()];
-    if (lang != _settings->language ())
-        _settings->setLanguage (lang);
+    _settings->setLanguageIndex (model->currentIndex ());
+    _settings->save ();
 #endif
 }