Krotos Modules 3
Loading...
Searching...
No Matches
SettingsFile.cpp
Go to the documentation of this file.
1namespace krotos
2{
3 SettingsFile::SettingsFile(const File& settingsFile)
4 : JsonFile(settingsFile, "settings_version",
5 "{"
6 "\"settings_version\": \"2\","
7 "\"settings\" : []}")
8 {
9 }
10
11 var SettingsFile::getSetting(const Identifier& key)
12 {
13 if (m_data.isObject())
14 {
15 DynamicObject* dynamicObject = m_data.getDynamicObject();
16 if (dynamicObject != nullptr)
17 {
18 var settingsArray = dynamicObject->getProperty("settings");
19 if (settingsArray.isObject())
20 {
21 DynamicObject* settingsObj = settingsArray.getDynamicObject();
22 if (settingsObj != nullptr)
23 {
24 return settingsObj->getProperty(key);
25 }
26 }
27 }
28 }
29
30 return var();
31 }
32
33 void SettingsFile::setSetting(const Identifier& key, const var& value)
34 {
35 if (m_data.isObject())
36 {
37 DynamicObject* dynamicObject = m_data.getDynamicObject();
38 if (dynamicObject != nullptr)
39 {
40 // retrieve the existing settings object or create one if it doesn't exist
41 var settingsVar = dynamicObject->getProperty("settings");
42 DynamicObject* settingsObj = settingsVar.getDynamicObject();
43 if (settingsObj == nullptr)
44 {
45 settingsObj = new DynamicObject(); // Create new DynamicObject
46 dynamicObject->setProperty("settings", var(settingsObj));
47 }
48
49 // set the new setting in the settings object
50 if (settingsObj != nullptr)
51 {
52 settingsObj->setProperty(key, value);
53 }
54 }
55
56 save();
57 }
58 else
59 {
60 jassertfalse;
61 }
62 }
63
65 {
66 if (m_data.isObject())
67 {
68 DynamicObject* dynamicObject = m_data.getDynamicObject();
69 if (dynamicObject != nullptr)
70 {
71 var version = dynamicObject->getProperty("settings_version");
72 if (version.isString())
73 {
74 return version.toString();
75 }
76 }
77 }
78
79 // return an empty string if the settings_version doesn't exist or is not a string.
80 return "";
81 }
82
83 void SettingsFile::setSettingsVersion(const String& version)
84 {
85 if (m_data.isObject())
86 {
87 DynamicObject* dynamicObject = m_data.getDynamicObject();
88 if (dynamicObject != nullptr)
89 {
90 dynamicObject->setProperty("settings_version", version);
91 }
92 }
93
94 save();
95 }
96
97 void SettingsFile::setDefaultIfVoid(const Identifier& key, const var& defaultValue)
98 {
99 if (getSetting(key).isVoid())
100 {
101 setSetting(key, defaultValue);
102 }
103 }
104} // namespace krotos
Definition JsonFile.h:6
void save()
Call save internal.
Definition JsonFile.cpp:134
var m_data
The parsed json data.
Definition JsonFile.h:55
void setDefaultIfVoid(const Identifier &key, const var &defaultValue)
Sets the default value (if required) associated with a given key in the settings.
Definition SettingsFile.cpp:97
String getSettingsVersion() const
Retrieves the settings version from the JSON data. This function retrieves the settings version from ...
Definition SettingsFile.cpp:64
void setSetting(const Identifier &key, const var &value)
Sets the value associated with a given key in the settings.
Definition SettingsFile.cpp:33
void setSettingsVersion(const String &version)
Sets the settings version in the JSON data. This function sets the settings version in the JSON data ...
Definition SettingsFile.cpp:83
var getSetting(const Identifier &key)
Retrieves the value associated with a given key.
Definition SettingsFile.cpp:11
SettingsFile(const File &settingsFile)
Constructor that initializes the SettingsFile with a given File object.
Definition SettingsFile.cpp:3
Definition AirAbsorptionFilter.cpp:2