#include <QtCore>
+class Language
+{
+private:
+ QString _title;
+ QString _alias;
+
+public:
+ Language (const QString &alias, const QString &title)
+ : _title (title),
+ _alias (alias)
+ {};
+
+ QString title () const
+ { return _title; };
+
+ QString alias () const
+ { return _alias; };
+
+ bool operator== (const Language &lang) const
+ { return _title == lang._title && _alias == lang._alias; };
+
+ bool operator!= (const Language &lang) const
+ { return !(*this == lang); };
+};
+
+
class Settings : public QObject
{
Q_OBJECT
public:
enum check_t {
- C_Light = 0,
- C_Rank,
- C_Time,
- C_Hint,
- C_TotalCount
+ C_ShowLight = 0,
+ C_ShowRank,
+ C_ShowTime,
+ C_ShowHint,
+ C_UpdateOnWiFi,
+ C_UpdateOnGSM,
+ C_UpdateWhenLocked,
};
private:
QString _regionID; // region ID which will be displayed
QMap<QString, QString> _cities;
- bool _checks[C_TotalCount];
+ QMap<check_t, bool> _checks;
+ int _updateIntervalIndex;
+
+ QList<Language> _langs;
+ int _langIndex;
void makeDefault ();
-public:
+ int intervalIndex2Minutes (int index) const;
+ int minutes2IntervalIndex (int minutes) const;
+
Settings ();
+public:
+ static Settings* instance ();
- bool load ();
- bool save ();
+ void load ();
+ void save ();
QString regionID () const
{ return _regionID; };
+ void setRegionID (const QString &id)
+ { _regionID = id; };
+
QMap<QString, QString> cities () const
{ return _cities; };
bool check (check_t entry) const
{ return _checks[entry]; };
+
+ void setCheck (check_t entry, bool val)
+ { _checks[entry] = val; };
+
+ QStringList updateIntervals () const;
+
+ int getUpdateIntervalIndex () const
+ { return _updateIntervalIndex; };
+
+ void setUpdateIntervalIndex (int index)
+ { _updateIntervalIndex = index; };
+
+ int updateInterval () const
+ { return intervalIndex2Minutes (_updateIntervalIndex); };
+
+ // Language settings
+ const Language& language () const
+ { return _langs[_langIndex]; };
+
+ const QList<Language>& languages () const
+ { return _langs; };
+
+ void setLanguage (const Language &lang)
+ { _langIndex = _langs.indexOf (lang); };
};