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