*/
#include "sst_font.h"
-#include <dlfcn.h>
#include <libxml/tree.h>
#include <vconf.h>
#include "sst.h"
+#include "sst_utils_wrapper.h"
-static const char* const sst_utils_library = SETTING_UTILS_SO_FILE_PATH;
-
-static int dl_is_available_font(char *str)
-{
- void *handle = NULL;
- char *error;
- int ret = 0;
- int (*check_available_font)(char *font_name);
-
- handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
- if (NULL == handle) {
- ERR("dlopen(%s) Fail", sst_utils_library);
- return 0;
- }
-
- check_available_font = dlsym(handle, "sstu_is_available_font");
- if ((error = dlerror()) != NULL) {
- ERR("dlsym(sstu_is_available_font) Fail(%s)", error);
- dlclose(handle);
- return 0;
- }
- ret = check_available_font(str);
- dlclose(handle);
- return ret;
-}
-
-static void dl_font_size_set()
+int sst_font_set_size(sst_interface *iface, int value)
{
- void *handle = NULL;
- char *error;
- void(*set_font_size)();
-
- handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
- if (NULL == handle) {
- ERR("dlopen(%s) Fail", sst_utils_library);
- return;
- }
+ RETVM_IF(value < 0 || SYSTEM_SETTINGS_FONT_SIZE_GIANT < value,
+ SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, "Invalid size(%d)", value);
- set_font_size = dlsym(handle, "sstu_set_font_size");
- if ((error = dlerror()) != NULL) {
- ERR("dlsym(sstu_set_font_size) Fail(%s)", error);
- dlclose(handle);
- return;
- }
- set_font_size();
- dlclose(handle);
- return;
-}
-
-static void dl_font_config_set_notification()
-{
- void *handle = NULL;
- char *error;
- void (*set_font_nodification)();
-
- handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
- if (NULL == handle) {
- ERR("dlopen(%s) Fail", sst_utils_library);
- return;
- }
-
- set_font_nodification = dlsym(handle, "sstu_font_config_set_notification");
- if ((error = dlerror()) != NULL) {
- ERR("dlsym(sstu_font_config_set_notification) Fail(%s)", error);
- dlclose(handle);
- return;
- }
- set_font_nodification();
- dlclose(handle);
- return;
-}
-
-static bool dl_font_config_set(char *font_name)
-{
- void *handle = NULL;
- char *error;
- bool ret = false;
- bool (*check_font_type)(char *font_name);
-
- handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
- if (NULL == handle) {
- ERR("dlopen(%s) Fail", sst_utils_library);
- return false;
- }
-
- check_font_type = dlsym(handle, "sstu_set_font_config");
- if ((error = dlerror()) != NULL) {
- ERR("dlsym(sstu_set_font_config) Fail(%s)", error);
- dlclose(handle);
- return false;
- }
- ret = check_font_type(font_name);
- dlclose(handle);
- return ret;
-}
-
-static char *dl_get_default_font_info()
-{
- void *handle = NULL;
- char *error;
- char *ret = NULL;
- char *(*get_font_info)();
-
- handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
- if (NULL == handle) {
- ERR("dlopen(%s) Fail", sst_utils_library);
- return NULL;
- }
-
- get_font_info = dlsym(handle, "sstu_get_default_font");
- if ((error = dlerror()) != NULL) {
- ERR("dlsym(sstu_get_default_font) Fail(%s)", error);
- dlclose(handle);
- return NULL;
- }
- ret = get_font_info();
- dlclose(handle);
- return ret;
-}
-
-int sst_font_set_size(sst_interface *iface, void *value)
-{
- int *vconf_value;
- vconf_value = *(int **)value;
-
- RETVM_IF(*vconf_value < 0 || SYSTEM_SETTINGS_FONT_SIZE_GIANT < *vconf_value,
- SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, "Invalid value(%d)", *vconf_value);
-
- if (vconf_set_int(iface->vconf_key, *vconf_value)) {
- ERR("vconf_set_int(%s) Fail", iface->vconf_key);
+ if (vconf_set_int(iface->vconf_key, value)) {
+ ERR("vconf_set_int(%s, %d) Fail", iface->vconf_key, value);
return SYSTEM_SETTINGS_ERROR_IO_ERROR;
}
- dl_font_size_set();
+ sstu_set_font_size();
return SYSTEM_SETTINGS_ERROR_NONE;
}
-static void* font_conf_doc_parse(char *doc_name, char *font_name)
+static void* font_conf_doc_parse(const char *doc_name, const char *font_name)
{
xmlDocPtr doc = NULL;
xmlNodePtr cur = NULL;
xmlChar *key = NULL;
doc = xmlParseFile(doc_name);
-
cur = xmlDocGetRootElement(doc);
-
if (cur == NULL) {
xmlFreeDoc(doc);
doc = NULL;
}
}
-int sst_font_set_type(sst_interface *iface, void *value)
+int sst_font_set_type(sst_interface *iface, const char *font_name)
{
- char *font_name = NULL;
- font_name = (char*)value;
-
/* get current font list */
- int is_found = dl_is_available_font(font_name);
- if (is_found == 1) {
- DBG("found font : %s ", font_name);
- } else {
- ERR(" NOT found font : %s ", font_name);
+ int is_found = sstu_is_available_font(font_name);
+ if (FALSE == is_found) {
+ ERR("NO font(%s)", font_name);
return SYSTEM_SETTINGS_ERROR_IO_ERROR;
}
- bool bsave = dl_font_config_set(font_name);
+ bool bsave = sstu_set_font_config(font_name);
if (!bsave) {
- ERR("dl_font_config_set() Fail");
+ ERR("sstu_set_font_config() Fail");
return SYSTEM_SETTINGS_ERROR_IO_ERROR;
}
xmlDocPtr doc = font_conf_doc_parse(SETTING_FONT_CONF_FILE, font_name);
if (doc != NULL) {
- xmlSaveFormatFile(SETTING_FONT_CONF_FILE, doc, 0);
+ int ret = xmlSaveFormatFile(SETTING_FONT_CONF_FILE, doc, 0);
xmlFreeDoc(doc);
- doc = NULL;
+ if (ret <= -1) {
+ ERR("xmlSaveFormatFile() Fail");
+ return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+ }
}
- dl_font_config_set_notification();
+ sstu_font_config_set_notification();
- char *vconf_value;
- vconf_value = (char*)value;
- if (vconf_set_str(iface->vconf_key, vconf_value)) {
- ERR("vconf_set_str(%s) Fail", iface->vconf_key);
+ if (vconf_set_str(iface->vconf_key, font_name)) {
+ ERR("vconf_set_str(%s, %s) Fail", iface->vconf_key, font_name);
return SYSTEM_SETTINGS_ERROR_IO_ERROR;
}
return SYSTEM_SETTINGS_ERROR_NONE;
}
-int sst_font_get_default_type(sst_interface *iface, void **value)
+int sst_font_get_default_type(sst_interface *iface, char **value)
{
- char *font_name = dl_get_default_font_info();
+ char *font_name = sstu_get_default_font();
if (NULL == font_name) {
- ERR("dl_get_default_font_info() Fail");
+ ERR("sstu_get_default_font() Fail");
return SYSTEM_SETTINGS_ERROR_IO_ERROR;
}
- *value = (void*)font_name;
+ *value = font_name;
return SYSTEM_SETTINGS_ERROR_NONE;
}