From: Max Lapan Date: Wed, 17 Mar 2010 15:14:37 +0000 (+0300) Subject: Language option in settings dialog. Does nothing so far. X-Git-Tag: v0.1~14 X-Git-Url: http://vcs.maemo.org/git/?p=yandex-traffic;a=commitdiff_plain;h=b912fa839650df8361e0e488abbaff194db1267d Language option in settings dialog. Does nothing so far. --- diff --git a/settings.cpp b/settings.cpp index fb95c54..e543217 100644 --- a/settings.cpp +++ b/settings.cpp @@ -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"))); } diff --git a/settings.hpp b/settings.hpp index cc896e6..cf8aeda 100644 --- a/settings.hpp +++ b/settings.hpp @@ -4,6 +4,32 @@ #include +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 _checks; int _updateIntervalIndex; + QList _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& languages () const + { return _langs; }; + + void setLanguage (const Language &lang) + { _langIndex = _langs.indexOf (lang); }; }; diff --git a/settingsDialog.cpp b/settingsDialog.cpp index f65fe36..ca73077 100644 --- a/settingsDialog.cpp +++ b/settingsDialog.cpp @@ -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::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 (_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; diff --git a/settingsDialog.hpp b/settingsDialog.hpp index 9d041ec..9b0f057 100644 --- a/settingsDialog.hpp +++ b/settingsDialog.hpp @@ -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);