53966fcda90cfc2ae1c45a286d9c866f85460ecd
[yandex-traffic] / settings.cpp
1 #include <QtCore>
2 #include <settings.hpp>
3
4
5 Settings::Settings ()
6 {
7     load ();
8 }
9
10
11 void Settings::load ()
12 {
13     QSettings settings;
14
15     makeDefault ();
16
17     _regionID = settings.value ("region", _regionID).toString ();
18
19     _checks[C_ShowLight] = settings.value ("checks/light", _checks[C_ShowLight]).toBool ();
20     _checks[C_ShowRank] = settings.value ("checks/rank", _checks[C_ShowRank]).toBool ();
21     _checks[C_ShowTime] = settings.value ("checks/time", _checks[C_ShowTime]).toBool ();
22     _checks[C_ShowHint] = settings.value ("checks/hint", _checks[C_ShowHint]).toBool ();
23     _checks[C_UpdateOnWiFi] = settings.value ("checks/updateOnWifi", _checks[C_UpdateOnWiFi]).toBool ();
24     _checks[C_UpdateOnGSM] = settings.value ("checks/updateOnGSM", _checks[C_UpdateOnGSM]).toBool ();
25     _checks[C_UpdateWhenLocked] = settings.value ("checks/updateWhenLocked", _checks[C_UpdateWhenLocked]).toBool ();
26
27     // Do we really need to cache cities?
28     // loadCities (&settings);
29
30     _updateIntervalIndex = minutes2IntervalIndex (settings.value ("updateInterval", intervalIndex2Minutes (_updateIntervalIndex)).toInt ());
31
32     _langIndex = settings.value ("langIndex", _langIndex).toInt ();
33     if (_langIndex < 0 || _langIndex >= _langs.count ())
34         _langIndex = 0;
35 }
36
37
38 void Settings::save ()
39 {
40     QSettings settings;
41
42     settings.setValue ("region", _regionID);
43
44     settings.setValue ("checks/light", _checks[C_ShowLight]);
45     settings.setValue ("checks/rank", _checks[C_ShowRank]);
46     settings.setValue ("checks/time", _checks[C_ShowTime]);
47     settings.setValue ("checks/hint", _checks[C_ShowHint]);
48     settings.setValue ("checks/updateOnWifi", _checks[C_UpdateOnWiFi]);
49     settings.setValue ("checks/updateOnGSM", _checks[C_UpdateOnGSM]);
50     settings.setValue ("checks/updateWhenLocked", _checks[C_UpdateWhenLocked]);
51
52     settings.setValue ("updateInterval", intervalIndex2Minutes (_updateIntervalIndex));
53
54     settings.setValue ("langIndex", _langIndex);
55
56 //    saveCities (&settings);
57 }
58
59
60 void Settings::loadCities (QSettings *settings)
61 {
62     QMap<QString, QVariant> v;
63     QMap<QString, QVariant>::const_iterator it;
64
65     v = settings->value ("cities", v).toMap ();
66
67     if (v.size () == 0)
68         return;
69
70     it = v.begin ();
71     _cities.clear ();
72
73     while (it != v.end ()) {
74         _cities[it.key ()] = it.value ().toString ();
75         it++;
76     }
77 }
78
79
80 void Settings::saveCities (QSettings *settings)
81 {
82     QMap<QString, QVariant> v;
83     QMap<QString, QString>::const_iterator it;
84
85     it = _cities.begin ();
86
87     while (it != _cities.end ()) {
88         v[it.key ()] = it.value ();
89         it++;
90     }
91
92     settings->setValue ("cities", v);
93 }
94
95
96 void Settings::makeDefault ()
97 {
98     _regionID = "1";            // Default city
99
100     _cities["1"] = tr ("Moscow");
101     _cities["10174"] = tr ("St.Petersburg");
102     _cities["20544"] = tr ("Kiev");
103     _cities["11162"] = tr ("Ekaterinburg");
104
105     setCheck (C_ShowLight, true);
106     setCheck (C_ShowRank, true);
107     setCheck (C_ShowHint, true);
108
109     setCheck (C_UpdateOnWiFi, true);
110
111     setCheck (C_UpdateWhenLocked, true);
112
113     _updateIntervalIndex = 3;
114
115     // languages
116     _langIndex = 0;
117     _langs.append (Language (QString (""),   tr ("System")));
118     _langs.append (Language (QString ("en"), tr ("English")));
119     _langs.append (Language (QString ("ru"), tr ("Russian")));
120 }
121
122
123 QStringList Settings::updateIntervals () const
124 {
125     QStringList res;
126
127     res.append (tr ("Never"));
128     res.append (tr ("1 min"));
129     res.append (tr ("2 min"));
130     res.append (tr ("5 min"));
131     res.append (tr ("15 min"));
132     res.append (tr ("30 min"));
133
134     return res;
135 }
136
137
138 int Settings::intervalIndex2Minutes (int index) const
139 {
140     int int2min[] = { -1, 1, 2, 5, 15, 30 };
141
142     if (index < 0 || sizeof (int2min) / sizeof (int2min[0]) <= (unsigned int)index)
143         return -1;
144
145     return int2min[index];
146 }
147
148
149 int Settings::minutes2IntervalIndex (int minutes) const
150 {
151     switch (minutes) {
152         case -1:
153             return 0;
154         case 1:
155             return 1;
156         case 2:
157             return 2;
158         case 5:
159             return 3;
160         case 15:
161             return 4;
162         case 30:
163             return 5;
164         default:
165             return 0;
166     }
167 }