Separator: init support of JSON config

This commit is contained in:
李通洲
2023-03-09 17:00:37 +08:00
parent 4cf130bd07
commit 0ab2eda0ae
12 changed files with 136 additions and 43 deletions
+11 -3
View File
@@ -8,6 +8,16 @@
#include <assert.h>
static inline bool parseModuleJsonObject(FFinstance* instance, const char* type, JSONCData* data, json_object* module)
{
return
ffParseBatteryJsonObject(instance, type, data, module) ||
ffParseCommandJsonObject(instance, type, data, module) ||
ffParseOSJsonObject(instance, type, data, module) ||
ffParseSeparatorJsonObject(instance, type, data, module) ||
false;
}
static inline void wrapJsoncFree(JSONCData* data)
{
assert(data);
@@ -37,9 +47,7 @@ static const char* parseModules(FFinstance* instance, JSONCData* data, json_obje
else
return "modules must be an array of strings or objects";
if(!ffParseBatteryJsonObject(instance, type, data, module))
if(!ffParseCommandJsonObject(instance, type, data, module))
if(!ffParseOSJsonObject(instance, type, data, module))
if(!parseModuleJsonObject(instance, type, data, module))
return "Unknown module type";
}
+2 -3
View File
@@ -118,6 +118,7 @@ static void defaultConfig(FFinstance* instance)
initModuleArg(&instance->config.users);
initModuleArg(&instance->config.bluetooth);
initModuleArg(&instance->config.sound);
ffInitSeparatorOptions(&instance->config.separator);
initModuleArg(&instance->config.gamepad);
ffStrbufInitA(&instance->config.libPCI, 0);
@@ -169,8 +170,6 @@ static void defaultConfig(FFinstance* instance)
instance->config.soundType = FF_SOUND_TYPE_MAIN;
ffStrbufInitA(&instance->config.separatorString, 0);
instance->config.localIpShowType = FF_LOCALIP_TYPE_IPV4_BIT;
ffStrbufInit(&instance->config.localIpNamePrefix);
@@ -364,6 +363,7 @@ static void destroyConfig(FFinstance* instance)
destroyModuleArg(&instance->config.openCL);
destroyModuleArg(&instance->config.users);
destroyModuleArg(&instance->config.bluetooth);
ffDestroySeparatorOptions(&instance->config.separator);
destroyModuleArg(&instance->config.sound);
destroyModuleArg(&instance->config.gamepad);
@@ -394,7 +394,6 @@ static void destroyConfig(FFinstance* instance)
ffStrbufDestroy(&instance->config.libnm);
ffStrbufDestroy(&instance->config.diskFolders);
ffStrbufDestroy(&instance->config.separatorString);
ffStrbufDestroy(&instance->config.localIpNamePrefix);
ffStrbufDestroy(&instance->config.publicIpUrl);
ffStrbufDestroy(&instance->config.weatherOutputFormat);