]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - apps/thermostat-demo.git/blob - globalsettings.cpp
Rename SDK Makefile back to Makefile.build
[apps/thermostat-demo.git] / globalsettings.cpp
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;
103 qint16 GlobalSettings::proxyPort()
105     return m_proxyPort;
108 QString GlobalSettings::currentCity()
110     return m_currentCity;
113 void GlobalSettings::setTemperatureFormat(TemperatureFormat temperatureFormat)
115     m_temperatureFormat = temperatureFormat;
118 GlobalSettings::TemperatureFormat GlobalSettings::temperatureFormat()
120     return m_temperatureFormat;
123 void GlobalSettings::setTimeFormat(TimeFormat timeFormat)
125     m_timeFormat = timeFormat;
128 GlobalSettings::TimeFormat GlobalSettings::timeFormat()
130     return m_timeFormat;
133 void GlobalSettings::setDataPath(QString dataPath)
135     m_dataPath = dataPath;
138 QString GlobalSettings::dataPath()
140     return m_dataPath;