2 #include <settings.hpp>
7 // --------------------------------------------------
9 // --------------------------------------------------
10 QString Language::title () const
12 return Settings::tr (_title.toUtf8 ());
16 // --------------------------------------------------
18 // --------------------------------------------------
19 static Settings* _settings;
22 Settings* Settings::instance ()
25 _settings = new Settings;
37 void Settings::load ()
43 _regionID = settings.value ("region", _regionID).toString ();
45 _checks[C_ShowLight] = settings.value ("checks/light", _checks[C_ShowLight]).toBool ();
46 _checks[C_ShowRank] = settings.value ("checks/rank", _checks[C_ShowRank]).toBool ();
47 _checks[C_ShowTime] = settings.value ("checks/time", _checks[C_ShowTime]).toBool ();
48 _checks[C_ShowHint] = settings.value ("checks/hint", _checks[C_ShowHint]).toBool ();
49 _checks[C_UpdateOnWiFi] = settings.value ("checks/updateOnWifi", _checks[C_UpdateOnWiFi]).toBool ();
50 _checks[C_UpdateOnGSM] = settings.value ("checks/updateOnGSM", _checks[C_UpdateOnGSM]).toBool ();
51 _checks[C_UpdateWhenLocked] = settings.value ("checks/updateWhenLocked", _checks[C_UpdateWhenLocked]).toBool ();
53 _updateIntervalIndex = minutes2IntervalIndex (settings.value ("updateInterval", intervalIndex2Minutes (_updateIntervalIndex)).toInt ());
55 setLanguageIndex (settings.value ("langIndex", _langIndex).toInt ());
59 void Settings::save ()
63 settings.setValue ("region", _regionID);
65 settings.setValue ("checks/light", _checks[C_ShowLight]);
66 settings.setValue ("checks/rank", _checks[C_ShowRank]);
67 settings.setValue ("checks/time", _checks[C_ShowTime]);
68 settings.setValue ("checks/hint", _checks[C_ShowHint]);
69 settings.setValue ("checks/updateOnWifi", _checks[C_UpdateOnWiFi]);
70 settings.setValue ("checks/updateOnGSM", _checks[C_UpdateOnGSM]);
71 settings.setValue ("checks/updateWhenLocked", _checks[C_UpdateWhenLocked]);
73 settings.setValue ("updateInterval", intervalIndex2Minutes (_updateIntervalIndex));
75 settings.setValue ("langIndex", _langIndex);
79 // This routine called before any translations loaded, so strings must be translated explicitly.
80 void Settings::makeDefault ()
82 _regionID = "1"; // Default city
84 _cities["1"] = tr ("Moscow");
85 _cities["10174"] = tr ("St.Petersburg");
86 _cities["20544"] = tr ("Kiev");
87 _cities["11162"] = tr ("Ekaterinburg");
89 setCheck (C_ShowLight, true);
90 setCheck (C_ShowRank, true);
91 setCheck (C_ShowHint, true);
93 setCheck (C_UpdateOnWiFi, true);
95 setCheck (C_UpdateWhenLocked, true);
97 _updateIntervalIndex = 3;
100 _langs.append (Language (QString (""), tr ("System")));
101 _langs.append (Language (QString ("en"), tr ("English")));
102 _langs.append (Language (QString ("ru"), tr ("Russian")));
103 setLanguageIndex (0);
107 QStringList Settings::updateIntervals () const
111 res.append (tr ("Never"));
112 res.append (tr ("1 minute"));
113 res.append (tr ("2 minutes"));
114 res.append (tr ("5 minutes"));
115 res.append (tr ("15 minutes"));
116 res.append (tr ("30 minutes"));
117 res.append (tr ("1 hour"));
118 res.append (tr ("2 hours"));
124 int Settings::intervalIndex2Minutes (int index) const
126 int int2min[] = { -1, 1, 2, 5, 15, 30, 60, 120 };
128 if (index < 0 || sizeof (int2min) / sizeof (int2min[0]) <= (unsigned int)index)
131 return int2min[index];
135 int Settings::minutes2IntervalIndex (int minutes) const
160 void Settings::setLanguageIndex (int index)
162 if (index < 0 || index >= _langs.count ())
169 QCoreApplication::removeTranslator (_ts);
173 QString alias = _langs[_langIndex].alias ();
174 QString fileName = QString (APPLICATION_NAME) + "_";
176 _ts = new QTranslator;
178 if (alias.isEmpty ())
179 fileName += QLocale::system ().name ();
183 if (_ts->load (fileName, TRANSLATION_PATH)) {
184 QCoreApplication::installTranslator (_ts);
185 translationsUpdated ();
194 QString Settings::regionName (const QString &id) const
196 return Settings::tr (_cities[id].toUtf8 ());