Language option in settings dialog. Does nothing so far.
authorMax Lapan <max.lapan@gmail.com>
Wed, 17 Mar 2010 15:14:37 +0000 (18:14 +0300)
committerMax Lapan <max.lapan@gmail.com>
Wed, 17 Mar 2010 15:14:37 +0000 (18:14 +0300)
settings.cpp
settings.hpp
settingsDialog.cpp
settingsDialog.hpp

index fb95c54..e543217 100644 (file)
@@ -105,6 +105,12 @@ void Settings::makeDefault ()
     setCheck (C_UpdateWhenLocked, true);
 
     _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")));
 }
 
 
index cc896e6..cf8aeda 100644 (file)
@@ -4,6 +4,32 @@
 #include <QtCore>
 
 
+class Language
+{
+private:
+    QString _title;
+    QString _alias;
+
+public:
+    Language (const QString &alias, const QString &title)
+        : _title (title),
+          _alias (alias)
+    {};
+
+    QString title () const
+    { return _title; };
+
+    QString alias () const
+    { return _alias; };
+
+    bool operator== (const Language &lang) const
+    { return _title == lang._title && _alias == lang._alias; };
+
+    bool operator!= (const Language &lang) const
+    { return !(*this == lang); };
+};
+
+
 class Settings : public QObject
 {
     Q_OBJECT
@@ -24,6 +50,9 @@ private:
     QMap<check_t, bool> _checks;
     int _updateIntervalIndex;
 
+    QList<Language> _langs;
+    int _langIndex;
+
     void makeDefault ();
 
     void loadCities (QSettings *settings);
@@ -63,6 +92,16 @@ public:
 
     int updateInterval () const
     { return intervalIndex2Minutes (_updateIntervalIndex); };
+
+    // Language settings
+    const Language& language () const
+    { return _langs[_langIndex]; };
+
+    const QList<Language>& languages () const
+    { return _langs; };
+
+    void setLanguage (const Language &lang)
+    { _langIndex = _langs.indexOf (lang); };
 };
 
 
index f65fe36..ca73077 100644 (file)
@@ -29,11 +29,38 @@ SettingsDialog::SettingsDialog (Settings *settings)
     updateUpdateButtonValue ();
     layout->addWidget (_updateButton);
 
+    createLanguageButton (layout);
+
     connect (_displayButton, SIGNAL (clicked ()), SLOT (displayClicked ()));
     connect (_updateButton, SIGNAL (clicked ()), SLOT (updateClicked ()));
 }
 
 
+void SettingsDialog::createLanguageButton (QBoxLayout *layout)
+{
+    _languageButton = new QMaemo5ValueButton (tr ("Language"), this);
+    layout->addWidget (_languageButton);
+
+#ifdef Q_WS_MAEMO_5
+    QMaemo5ListPickSelector *selector = new QMaemo5ListPickSelector;
+    QStandardItemModel *model = new QStandardItemModel (0, 1);
+    QList<Language>::const_iterator it = _settings->languages ().begin ();
+
+    while (it != _settings->languages ().end ()) {
+        QStandardItem *item = new QStandardItem (it->title ());
+        item->setData (it->alias ());
+        model->appendRow (item);
+        it++;
+    }
+
+    selector->setModel (model);
+    selector->setCurrentIndex (_settings->languages ().indexOf (_settings->language ()));
+
+    _languageButton->setPickSelector (selector);
+#endif
+}
+
+
 void SettingsDialog::displayClicked ()
 {
     DisplaySettingsDialog dlg (_settings);
@@ -50,6 +77,21 @@ void SettingsDialog::updateClicked ()
 }
 
 
+void SettingsDialog::languageChanged (const QString&)
+{
+#ifdef Q_WS_MAEMO_5
+    QMaemo5ListPickSelector *model = static_cast<QMaemo5ListPickSelector*> (_languageButton->pickSelector ());
+
+    if (!model)
+        return;
+
+    const Language &lang = _settings->languages ()[model->currentIndex ()];
+    if (lang != _settings->language ())
+        _settings->setLanguage (lang);
+#endif
+}
+
+
 void SettingsDialog::updateDisplayButtonValue ()
 {
     QString val;
index 9d041ec..9b0f057 100644 (file)
@@ -19,15 +19,18 @@ class SettingsDialog : public QDialog
 private:
     QMaemo5ValueButton *_displayButton;
     QMaemo5ValueButton *_updateButton;
+    QMaemo5ValueButton *_languageButton;
 
     Settings *_settings;
 
     void updateDisplayButtonValue ();
     void updateUpdateButtonValue ();
+    void createLanguageButton (QBoxLayout *layout);
 
 protected slots:
     void displayClicked ();
     void updateClicked ();
+    void languageChanged (const QString&);
 
 public:
     SettingsDialog (Settings *settings);