Log connection state transitions.
[yandex-traffic] / settings.hpp
1 #ifndef __SETTINGS_H__
2 #define __SETTINGS_H__
3
4 #include <QtCore>
5
6
7
8 class Language
9 {
10 private:
11     QString _title;
12     QString _alias;
13
14 public:
15     Language (const QString &alias, const QString &title)
16         : _title (title),
17           _alias (alias)
18     {};
19
20     QString title () const;
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     QTranslator *_ts;
57
58     void makeDefault ();
59
60     int intervalIndex2Minutes (int index) const;
61     int minutes2IntervalIndex (int minutes) const;
62
63     Settings ();
64
65     void refreshTranslations ();
66
67 public:
68     static Settings* instance ();
69
70     void load ();
71     void save ();
72
73     QString regionID () const
74     { return _regionID; };
75
76     void setRegionID (const QString &id)
77     { _regionID = id; };
78
79     QStringList regionIDs () const
80     { return _cities.keys (); };
81
82     QString regionName (const QString &id) const;
83
84     bool check (check_t entry) const
85     { return _checks[entry]; };
86
87     void setCheck (check_t entry, bool val)
88     { _checks[entry] = val; };
89
90     QStringList updateIntervals () const;
91
92     int getUpdateIntervalIndex () const
93     { return _updateIntervalIndex; };
94
95     void setUpdateIntervalIndex (int index)
96     { _updateIntervalIndex = index; };
97
98     int updateInterval () const
99     { return intervalIndex2Minutes (_updateIntervalIndex); };
100
101     // Language settings
102     const Language& language () const
103     { return _langs[_langIndex]; };
104
105     const QList<Language>& languages () const
106     { return _langs; };
107
108     void setLanguageIndex (int index);
109
110 signals:
111     void translationsUpdated ();
112 };
113
114
115 #endif // __SETTINGS_H__