Correct translation load process.
[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     { return _title; };
22
23     QString alias () const
24     { return _alias; };
25
26     bool operator== (const Language &lang) const
27     { return _title == lang._title && _alias == lang._alias; };
28
29     bool operator!= (const Language &lang) const
30     { return !(*this == lang); };
31 };
32
33
34 class Settings : public QObject
35 {
36     Q_OBJECT
37 public:
38     enum check_t {
39         C_ShowLight = 0,
40         C_ShowRank,
41         C_ShowTime,
42         C_ShowHint,
43         C_UpdateOnWiFi,
44         C_UpdateOnGSM,
45         C_UpdateWhenLocked,
46     };
47
48 private:
49     QString _regionID;          // region ID which will be displayed
50     QMap<QString, QString> _cities;
51     QMap<check_t, bool> _checks;
52     int _updateIntervalIndex;
53
54     QList<Language> _langs;
55     int _langIndex;
56
57     QTranslator *_ts;
58
59     void makeDefault ();
60
61     int intervalIndex2Minutes (int index) const;
62     int minutes2IntervalIndex (int minutes) const;
63
64     Settings ();
65
66     void refreshTranslations ();
67
68 public:
69     static Settings* instance ();
70
71     void load ();
72     void save ();
73
74     QString regionID () const
75     { return _regionID; };
76
77     void setRegionID (const QString &id)
78     { _regionID = id; };
79
80     QStringList regionIDs () const
81     { return _cities.keys (); };
82
83     QString regionName (const QString &id) const;
84
85     bool check (check_t entry) const
86     { return _checks[entry]; };
87
88     void setCheck (check_t entry, bool val)
89     { _checks[entry] = val; };
90
91     QStringList updateIntervals () const;
92
93     int getUpdateIntervalIndex () const
94     { return _updateIntervalIndex; };
95
96     void setUpdateIntervalIndex (int index)
97     { _updateIntervalIndex = index; };
98
99     int updateInterval () const
100     { return intervalIndex2Minutes (_updateIntervalIndex); };
101
102     // Language settings
103     const Language& language () const
104     { return _langs[_langIndex]; };
105
106     const QList<Language>& languages () const
107     { return _langs; };
108
109     void setLanguageIndex (int index);
110
111 signals:
112     void translationsUpdated ();
113 };
114
115
116 #endif // __SETTINGS_H__