1 #include "globalsettings.h"
3 #include <QFileInfo>
4 #include <QSettings>
5 #include <QtDebug>
7 /***********************************************************************************************************
8 * GlobalSettings
9 * Singleton class to be used from anywhere to allow global access to any configuration values
10 * Also handles reading and writing of files using QSettings API to allow for standardized file formats
11 ************************************************************************************************************/
13 //initialization of static instance variable
14 GlobalSettings* GlobalSettings::m_instance = NULL;
16 //private constructor so class must be instantiated through getInstance function
17 GlobalSettings::GlobalSettings()
18 {
19 }
21 GlobalSettings::~GlobalSettings()
22 {
23 }
25 //FUNCTION: getInstance()
26 //
27 // Checks to see if static instance member variable points to anything,
28 // if not, creates instance of settings class, loads the data from a file,
29 // then returns the pointer to the instance
31 GlobalSettings* GlobalSettings::getInstance()
32 {
33 if(m_instance == NULL)
34 {
35 m_instance = new GlobalSettings;
36 m_instance->load();
37 }
39 return m_instance;
40 }
42 //FUNCTION: save()
43 //
44 // Uses standard QSettings Qt API to store the settings in a file that is easily
45 // user editable.
47 bool GlobalSettings::save()
48 {
49 QSettings settingsObject("ti", "thermostat");
51 settingsObject.setValue("proxy-host", proxyHost());
52 settingsObject.setValue("proxy-port", proxyPort());
53 settingsObject.setValue("current-city", currentCity());
54 settingsObject.setValue("temperature-format", temperatureFormat());
55 settingsObject.setValue("time-format", timeFormat());
57 if(settingsObject.status() == QSettings::NoError)
58 return true;
59 else
60 return false;
62 }
64 //FUNCTION: load()
65 //
66 // Uses QSettings API to load config values from a previously written file and also can set default values if
67 // no configuration file is present
69 bool GlobalSettings::load()
70 {
71 QSettings settingsObject("ti", "thermostat");
73 setProxyInfo(settingsObject.value("proxy-host", "").toString(), settingsObject.value("proxy-port", 0).toInt());
74 setCurrentCity(settingsObject.value("current-city", "Dallas,TX").toString());
75 setTemperatureFormat(static_cast<GlobalSettings::TemperatureFormat>(settingsObject.value("temperature-format", GlobalSettings::TempFormatF).toInt()));
76 setTimeFormat(static_cast<GlobalSettings::TimeFormat>(settingsObject.value("time-format", GlobalSettings::TimeFormat12h).toInt()));
77 setDataPath(QFileInfo(settingsObject.fileName()).absolutePath());
79 qDebug() << "Settings loaded...";
80 qDebug() << "Proxy Host: " << proxyHost();
81 qDebug() << "Proxy Port: " << proxyPort();
82 qDebug() << "Current City: " << currentCity();
83 qDebug() << "Temperature Format: " << temperatureFormat();
84 qDebug() << "Time Format: " << timeFormat();
85 qDebug() << "Data Path: " << dataPath();
87 if(settingsObject.status() == QSettings::NoError)
88 return true;
89 else
90 return false;
91 }
93 void GlobalSettings::setProxyInfo(QString proxyHost, qint16 proxyPort)
94 {
95 m_proxyHost = proxyHost;
96 m_proxyPort = proxyPort;
97 }
99 void GlobalSettings::setCurrentCity(QString currentCity)
100 {
101 m_currentCity = currentCity;
102 }
104 QString GlobalSettings::proxyHost()
105 {
106 return m_proxyHost;
107 }
109 qint16 GlobalSettings::proxyPort()
110 {
111 return m_proxyPort;
112 }
114 QString GlobalSettings::currentCity()
115 {
116 return m_currentCity;
117 }
119 void GlobalSettings::setTemperatureFormat(TemperatureFormat temperatureFormat)
120 {
121 m_temperatureFormat = temperatureFormat;
122 }
124 GlobalSettings::TemperatureFormat GlobalSettings::temperatureFormat()
125 {
126 return m_temperatureFormat;
127 }
129 void GlobalSettings::setTimeFormat(TimeFormat timeFormat)
130 {
131 m_timeFormat = timeFormat;
132 }
134 GlobalSettings::TimeFormat GlobalSettings::timeFormat()
135 {
136 return m_timeFormat;
137 }
139 void GlobalSettings::setDataPath(QString dataPath)
140 {
141 m_dataPath = dataPath;
142 }
144 QString GlobalSettings::dataPath()
145 {
146 return m_dataPath;
147 }