X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=settings.cpp;h=4a7cac3de00ce5261598f8543bf33e46254e2286;hb=HEAD;hp=53966fcda90cfc2ae1c45a286d9c866f85460ecd;hpb=ee20d04441ff051d7357a1eb5fa7d17f99471afc;p=yandex-traffic diff --git a/settings.cpp b/settings.cpp index 53966fc..4a7cac3 100644 --- a/settings.cpp +++ b/settings.cpp @@ -1,8 +1,34 @@ #include #include +#include "globals.hpp" + + +// -------------------------------------------------- +// Language +// -------------------------------------------------- +QString Language::title () const +{ + return Settings::tr (_title.toUtf8 ()); +} + + +// -------------------------------------------------- +// Settings +// -------------------------------------------------- +static Settings* _settings; + + +Settings* Settings::instance () +{ + if (!_settings) + _settings = new Settings; + return _settings; +} + Settings::Settings () + : _ts (NULL) { load (); } @@ -24,14 +50,9 @@ void Settings::load () _checks[C_UpdateOnGSM] = settings.value ("checks/updateOnGSM", _checks[C_UpdateOnGSM]).toBool (); _checks[C_UpdateWhenLocked] = settings.value ("checks/updateWhenLocked", _checks[C_UpdateWhenLocked]).toBool (); - // Do we really need to cache cities? - // loadCities (&settings); - _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 ()); } @@ -52,47 +73,10 @@ void Settings::save () settings.setValue ("updateInterval", intervalIndex2Minutes (_updateIntervalIndex)); settings.setValue ("langIndex", _langIndex); - -// saveCities (&settings); -} - - -void Settings::loadCities (QSettings *settings) -{ - QMap v; - QMap::const_iterator it; - - v = settings->value ("cities", v).toMap (); - - if (v.size () == 0) - return; - - it = v.begin (); - _cities.clear (); - - while (it != v.end ()) { - _cities[it.key ()] = it.value ().toString (); - it++; - } -} - - -void Settings::saveCities (QSettings *settings) -{ - QMap v; - QMap::const_iterator it; - - it = _cities.begin (); - - while (it != _cities.end ()) { - v[it.key ()] = it.value (); - it++; - } - - settings->setValue ("cities", v); } +// This routine called before any translations loaded, so strings must be translated explicitly. void Settings::makeDefault () { _regionID = "1"; // Default city @@ -113,10 +97,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); } @@ -125,11 +109,13 @@ QStringList Settings::updateIntervals () const QStringList res; res.append (tr ("Never")); - res.append (tr ("1 min")); - res.append (tr ("2 min")); - res.append (tr ("5 min")); - res.append (tr ("15 min")); - res.append (tr ("30 min")); + res.append (tr ("1 minute")); + res.append (tr ("2 minutes")); + res.append (tr ("5 minutes")); + res.append (tr ("15 minutes")); + res.append (tr ("30 minutes")); + res.append (tr ("1 hour")); + res.append (tr ("2 hours")); return res; } @@ -137,7 +123,7 @@ QStringList Settings::updateIntervals () const int Settings::intervalIndex2Minutes (int index) const { - int int2min[] = { -1, 1, 2, 5, 15, 30 }; + int int2min[] = { -1, 1, 2, 5, 15, 30, 60, 120 }; if (index < 0 || sizeof (int2min) / sizeof (int2min[0]) <= (unsigned int)index) return -1; @@ -161,7 +147,51 @@ int Settings::minutes2IntervalIndex (int minutes) const return 4; case 30: return 5; + case 60: + return 6; + case 120: + return 7; default: return 0; } } + + +void Settings::setLanguageIndex (int index) +{ + if (index < 0 || index >= _langs.count ()) + _langIndex = 0; + else + _langIndex = index; + + // load settings + if (_ts) { + QCoreApplication::removeTranslator (_ts); + _ts = NULL; + } + + QString alias = _langs[_langIndex].alias (); + QString fileName = QString (APPLICATION_NAME) + "_"; + + _ts = new QTranslator; + + if (alias.isEmpty ()) + fileName += QLocale::system ().name (); + else + fileName += alias; + + if (_ts->load (fileName, TRANSLATION_PATH)) { + QCoreApplication::installTranslator (_ts); + translationsUpdated (); + } + else { + delete _ts; + _ts = NULL; + } +} + + +QString Settings::regionName (const QString &id) const +{ + return Settings::tr (_cities[id].toUtf8 ()); +}