Save language settings.
[yandex-traffic] / settings.hpp
1 #ifndef __SETTINGS_H__
2 #define __SETTINGS_H__
3
4 #include <QtCore>
5
6
7 class Language
8 {
9 private:
10     QString _title;
11     QString _alias;
12
13 public:
14     Language (const QString &alias, const QString &title)
15         : _title (title),
16           _alias (alias)
17     {};
18
19     QString title () const
20     { return _title; };
21
22     QString alias () const
23     { return _alias; };
24
25     bool operator== (const Language &lang) const
26     { return _title == lang._title && _alias == lang._alias; };
27
28     bool operator!= (const Language &lang) const
29     { return !(*this == lang); };
30 };
31
32
33 class Settings : public QObject
34 {
35     Q_OBJECT
36 public:
37     enum check_t {
38         C_ShowLight = 0,
39         C_ShowRank,
40         C_ShowTime,
41         C_ShowHint,
42         C_UpdateOnWiFi,
43         C_UpdateOnGSM,
44         C_UpdateWhenLocked,
45     };
46
47 private:
48     QString _regionID;          // region ID which will be displayed
49     QMap<QString, QString> _cities;
50     QMap<check_t, bool> _checks;
51     int _updateIntervalIndex;
52
53     QList<Language> _langs;
54     int _langIndex;
55
56     void makeDefault ();
57
58     void loadCities (QSettings *settings);
59     void saveCities (QSettings *settings);
60
61     int intervalIndex2Minutes (int index) const;
62     int minutes2IntervalIndex (int minutes) const;
63
64 public:
65     Settings ();
66
67     void load ();
68     void save ();
69
70     QString regionID () const
71     { return _regionID; };
72
73     void setRegionID (const QString &id)
74     { _regionID = id; };
75
76     QMap<QString, QString> cities () const
77     { return _cities; };
78
79     bool check (check_t entry) const
80     { return _checks[entry]; };
81
82     void setCheck (check_t entry, bool val)
83     { _checks[entry] = val; };
84
85     QStringList updateIntervals () const;
86
87     int getUpdateIntervalIndex () const
88     { return _updateIntervalIndex; };
89
90     void setUpdateIntervalIndex (int index)
91     { _updateIntervalIndex = index; };
92
93     int updateInterval () const
94     { return intervalIndex2Minutes (_updateIntervalIndex); };
95
96     // Language settings
97     const Language& language () const
98     { return _langs[_langIndex]; };
99
100     const QList<Language>& languages () const
101     { return _langs; };
102
103     void setLanguage (const Language &lang)
104     { _langIndex = _langs.indexOf (lang); };
105 };
106
107
108 #endif // __SETTINGS_H__