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() << "Data Path: " << dataPath();
81 if(settingsObject.status() == QSettings::NoError)
82 return true;
83 else
84 return false;
85 }
87 void GlobalSettings::setProxyInfo(QString proxyHost, qint16 proxyPort)
88 {
89 m_proxyHost = proxyHost;
90 m_proxyPort = proxyPort;
91 }
93 void GlobalSettings::setCurrentCity(QString currentCity)
94 {
95 m_currentCity = currentCity;
96 }
98 QString GlobalSettings::proxyHost()
99 {
100 return m_proxyHost;
101 }
103 qint16 GlobalSettings::proxyPort()
104 {
105 return m_proxyPort;
106 }
108 QString GlobalSettings::currentCity()
109 {
110 return m_currentCity;
111 }
113 void GlobalSettings::setTemperatureFormat(TemperatureFormat temperatureFormat)
114 {
115 m_temperatureFormat = temperatureFormat;
116 }
118 GlobalSettings::TemperatureFormat GlobalSettings::temperatureFormat()
119 {
120 return m_temperatureFormat;
121 }
123 void GlobalSettings::setTimeFormat(TimeFormat timeFormat)
124 {
125 m_timeFormat = timeFormat;
126 }
128 GlobalSettings::TimeFormat GlobalSettings::timeFormat()
129 {
130 return m_timeFormat;
131 }
133 void GlobalSettings::setDataPath(QString dataPath)
134 {
135 m_dataPath = dataPath;
136 }
138 QString GlobalSettings::dataPath()
139 {
140 return m_dataPath;
141 }