Do not cache 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     int intervalIndex2Minutes (int index) const;
59     int minutes2IntervalIndex (int minutes) const;
60
61 public:
62     Settings ();
63
64     void load ();
65     void save ();
66
67     QString regionID () const
68     { return _regionID; };
69
70     void setRegionID (const QString &id)
71     { _regionID = id; };
72
73     QMap<QString, QString> cities () const
74     { return _cities; };
75
76     bool check (check_t entry) const
77     { return _checks[entry]; };
78
79     void setCheck (check_t entry, bool val)
80     { _checks[entry] = val; };
81
82     QStringList updateIntervals () const;
83
84     int getUpdateIntervalIndex () const
85     { return _updateIntervalIndex; };
86
87     void setUpdateIntervalIndex (int index)
88     { _updateIntervalIndex = index; };
89
90     int updateInterval () const
91     { return intervalIndex2Minutes (_updateIntervalIndex); };
92
93     // Language settings
94     const Language& language () const
95     { return _langs[_langIndex]; };
96
97     const QList<Language>& languages () const
98     { return _langs; };
99
100     void setLanguage (const Language &lang)
101     { _langIndex = _langs.indexOf (lang); };
102 };
103
104
105 #endif // __SETTINGS_H__