Divided EFL packages from capi system system setting 10/67010/1
authorJinWang An <jinwang.an@samsung.com>
Fri, 22 Apr 2016 13:12:59 +0000 (22:12 +0900)
committerJinWang An <jinwang.an@samsung.com>
Fri, 22 Apr 2016 13:12:59 +0000 (22:12 +0900)
Change-Id: Ibdfcbefafb38a084af49e9de821a32da87db9eeb
Signed-off-by: JinWang An <jinwang.an@samsung.com>
CMakeLists.txt
packaging/capi-system-system-settings.spec
src/system_setting_platform.c
system-settings-util/CMakeLists.txt [new file with mode: 0755]
system-settings-util/include/system_settings_util.h [new file with mode: 0644]
system-settings-util/src/system_settings_util.c [new file with mode: 0644]

index 0dfb259..56626ff 100755 (executable)
@@ -7,14 +7,20 @@ PROJECT(${fw_name})
 SET(CMAKE_INSTALL_PREFIX /usr)
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 
+SET(SYSTEM_SETTINGS_UTIL system-settings-util)
+SET(LIB_SYSTEM_SETTINGS_UTIL system-settings-util)
+
 SET(LIBDIR "${CMAKE_LIBDIR}")
 SET(INC_DIR include)
 INCLUDE_DIRECTORIES(${INC_DIR})
 
-SET(requires "elementary ecore dlog vconf fontconfig libxml-2.0 pkgmgr pkgmgr-info")
-
+SET(requires "dlog vconf fontconfig libxml-2.0 pkgmgr pkgmgr-info")
 SET(pc_requires "capi-base-common")
 
+
+
+
+
 IF(TIZEN_WEARABLE)
     ADD_DEFINITIONS(-DTIZEN_WEARABLE)
 ENDIF(TIZEN_WEARABLE)
@@ -46,7 +52,10 @@ ADD_DEFINITIONS("-D_TZ_SYS_SHARE=\"${TZ_SYS_SHARE}\"")
 
 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib")
 
-aux_source_directory(src SOURCES)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/${SYSTEM_SETTINGS_UTIL}/include)
+ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/${SYSTEM_SETTINGS_UTIL})
+
+AUX_SOURCE_DIRECTORY(src SOURCES)
 ADD_LIBRARY(${fw_name} SHARED ${SOURCES})
 
 TARGET_LINK_LIBRARIES(${fw_name} ${${fw_name}_LDFLAGS})
index 4b849d7..c7f5fd8 100755 (executable)
@@ -64,6 +64,7 @@ export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
 
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
 cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER}  -DCMAKE_LIBDIR=%{_libdir} \
+       -DCMAKE_INCLUDEDIR=%{_includedir} \
        -DTZ_SYS_DATA=%{TZ_SYS_DATA} \
        -DTZ_SYS_ETC=%{TZ_SYS_ETC} \
        -DTZ_SYS_RO_SHARE=%{TZ_SYS_RO_SHARE} \
@@ -89,5 +90,6 @@ rm -rf %{buildroot}
 %files devel
 %manifest %{name}.manifest
 %{_includedir}/system/*.h
+%{_includedir}/system_settings_util.h
 %{_libdir}/pkgconfig/*.pc
 %{_libdir}/lib*.so
index 42dd8a7..e3a1a15 100644 (file)
@@ -19,6 +19,7 @@
 #include <unistd.h>
 #include <errno.h>
 #include <time.h>
+#include <dlfcn.h>
 
 #include <string.h>
 #include <sys/types.h>
 
 #include <fontconfig/fontconfig.h>
 
-/*#include <pkgmgr-info.h> */
-
-#include <Elementary.h>
-#include <Evas.h>
-#include <Ecore_Evas.h>
-
 #include <pkgmgr-info.h>
 
 #include <system_settings.h>
 #include <efl_assist.h>
 #endif
 
-#ifdef TIZEN_WEARABLE
-#define SMALL_FONT_DPI                      (-90)
-#endif
-#ifdef TIZEN_MOBILE
-#define SMALL_FONT_DPI                      (-80)
-#endif
-#define MIDDLE_FONT_DPI                     (-100)
-#ifdef TIZEN_WEARABLE
-#define LARGE_FONT_DPI                      (-110)
-#endif
-#ifdef TIZEN_MOBILE
-#define LARGE_FONT_DPI                      (-150)
-#endif
-#define HUGE_FONT_DPI                       (-190)
-#define GIANT_FONT_DPI                      (-250)
-
-#define SETTING_FONT_PRELOAD_FONT_PATH _TZ_SYS_RO_SHARE"/fonts"
-#define SETTING_FONT_DOWNLOADED_FONT_PATH _TZ_SYS_RO_SHARE"/fonts"
-
 #define SETTING_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf"
 #define SETTING_DEFAULT_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf"
 
-#define SETTING_STR_LEN  256
-
-#define SETTING_TIME_ZONEINFO_PATH             "/usr/share/zoneinfo/"
-#define SETTING_TIME_SHARE_LOCAL_PATH  "/usr/share/locale"
+#define SETTING_TIME_ZONEINFO_PATH             "/usr/share/zoneinfo/"
+#define SETTING_TIME_SHARE_LOCAL_PATH  "/usr/share/locale"
 #define SETTING_TZONE_SYMLINK_PATH             "/etc/localtime"
 
 
-static char *_get_cur_font();
-static void __font_size_set();
-static int __font_size_get();
-static char *_get_default_font();
-
-static bool font_config_set(char *font_name);
-static void font_config_set_notification();
 int _is_file_accessible(const char *path);
-int __is_available_font(char *font_name);
+
+bool dl_is_supported_image_type_load(char *path);
+bool dl_font_config_set(char *font_name);
+char *dl_get_font_info(char *str);
+int *dl_is_available_font(char *str);
+void dl_font_size_set();
+void dl_font_config_set_notification();
+
 
 /**
  * VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR has a path of the ringtone file which user choose
@@ -184,7 +158,7 @@ int system_setting_get_font_size(system_settings_key_e key, system_setting_data_
 int system_setting_get_default_font_type(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
 {
        SETTING_TRACE_BEGIN;
-       char *font_name = _get_default_font();
+       char *font_name = dl_get_font_info("default");
        if (font_name) {
                *value = (void *)font_name;
                return SYSTEM_SETTINGS_ERROR_NONE;
@@ -197,7 +171,7 @@ int system_setting_get_default_font_type(system_settings_key_e key, system_setti
 int system_setting_get_font_type(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
 {
        SETTING_TRACE_BEGIN;
-       char *font_name = _get_cur_font();
+       char *font_name = dl_get_font_info("cur");
        *value = (void *)font_name;
 
        return SYSTEM_SETTINGS_ERROR_NONE;
@@ -326,48 +300,149 @@ int system_setting_set_email_alert_ringtone(system_settings_key_e key, system_se
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
+bool dl_is_supported_image_type_load(char *path)
+{
+       void *handle;
+       int error;
+       bool ret = false;
+       bool (*image_type_check)(char *path);
+
+       handle = dlopen("/usr/lib/libsystem-settings-util.so.0.1.0",  RTLD_LAZY);
+       if(!handle)
+       {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return false;
+       }
+
+       image_type_check = dlsym(handle, "__is_supported_image_type_load");
+       if((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find __is_supported_image_type_load function at libsystem-settings-util.so.0.1.0");
+               return false;
+       }
+       ret = image_type_check(path);
+       dlclose(handle);
+       return ret;
+}
 
-bool __is_supported_image_type_load(char *path)
+int *dl_is_available_font(char *str)
 {
-       SETTING_TRACE_BEGIN;
-       /*evas_init(); */
-       ecore_evas_init();
-       Ecore_Evas  *ee;
-       Evas        *evas;
+       void *handle;
+       int error;
+       int ret = false;
+       int (*check_available_font)(char *font_name);
+
+       handle = dlopen("/usr/lib/libsystem-settings-util.so.0.1.0",  RTLD_LAZY);
+       if(!handle)
+       {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return false;
+       }
 
-       ee = ecore_evas_new(NULL, 0, 0, 100, 100, NULL);
-       evas = ecore_evas_get(ee);
+       check_available_font = dlsym(handle, "_is_available_font");
+       if((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find font_config_set function at libsystem-settings-util.so.0.1.0");
+               return false;
+       }
+       ret = check_available_font(str);
+       dlclose(handle);
+       return ret;
+}
 
-       Evas_Object *img = evas_object_image_add(evas);
-       evas_object_image_file_set(img, path, NULL);
-       Evas_Load_Error ret = evas_object_image_load_error_get(img);
+void dl_font_size_set()
+{
+       void *handle;
+       int error;
+       void (*set_font_size)();
 
-       bool result = false;
-       if (ret == EVAS_LOAD_ERROR_NONE) {
-               SETTING_TRACE("%s - OK", path);
-               result = true;
-       } else {
-               SETTING_TRACE("%s - NO", path);
-               result = false;
+       handle = dlopen("/usr/lib/libsystem-settings-util.so.0.1.0",  RTLD_LAZY);
+       if(!handle)
+       {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return;
+       }
+
+       set_font_size = dlsym(handle, "__font_size_set");
+       if((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find font_config_set function at libsystem-settings-util.so.0.1.0");
+               return;
        }
-       ecore_evas_free(ee);
-       evas_shutdown();
-       return result;
+       set_font_size();
+       dlclose(handle);
+       return;
 }
 
-bool __is_supported_image_type(char *path)
+void dl_font_config_set_notification()
 {
-       SETTING_TRACE_BEGIN;
+       void *handle;
+       int error;
+       void (*set_font_nodification)();
+
+       handle = dlopen("/usr/lib/libsystem-settings-util.so.0.1.0",  RTLD_LAZY);
+       if(!handle)
+       {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return;
+       }
+
+       set_font_nodification = dlsym(handle, "font_config_set_notification");
+       if((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find font_config_set function at libsystem-settings-util.so.0.1.0");
+               return;
+       }
+       set_font_nodification();
+       dlclose(handle);
+       return;
+}
+
+bool dl_font_config_set(char *font_name)
+{
+       void *handle;
+       int error;
        bool ret = false;
+       bool (*check_font_type)(char *font_name);
 
-       evas_init();
-       if (evas_object_image_extension_can_load_get(path))
-               ret = true;
-       else
-               ret = false;
+       handle = dlopen("/usr/lib/libsystem-settings-util.so.0.1.0",  RTLD_LAZY);
+       if(!handle)
+       {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return false;
+       }
 
-       evas_shutdown();
+       check_font_type = dlsym(handle, "font_config_set");
+       if((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find font_config_set function at libsystem-settings-util.so.0.1.0");
+               return false;
+       }
+       ret = check_font_type(font_name);
+       dlclose(handle);
+       return ret;
+}
+
+char *dl_get_font_info(char *str)
+{
+       void *handle;
+       int error;
+       char* ret = NULL;
+       char *(*get_font_info)();
+
+       handle = dlopen("/usr/lib/libsystem-settings-util.so.0.1.0",  RTLD_LAZY);
+       if(!handle)
+       {
+               SETTING_TRACE("ERROR!! canNOT find libsystem-settings-util.so.0.1.0");
+               return false;
+       }
+
+       if(strcmp(str,"cur") == 0)
+               get_font_info = dlsym(handle, "_get_cur_font");
+       else
+               get_font_info = dlsym(handle, "_get_default_font");
 
+       if((error = dlerror()) != NULL) {
+               SETTING_TRACE("ERROR!! canNOT find %s function at libsystem-settings-util.so.0.1.0", str);
+               return false;
+       }
+       ret = get_font_info();
+       dlclose(handle);
        return ret;
 }
 
@@ -521,7 +596,7 @@ int system_setting_set_wallpaper_home_screen(system_settings_key_e key, system_s
        char *vconf_value;
        vconf_value = (char *)value;
 
-       bool isok  = __is_supported_image_type_load(vconf_value);
+       bool isok  = dl_is_supported_image_type_load(vconf_value);
        if (!isok) {
                /* not supported */
                SETTING_TRACE("path : %s is not supported file format", vconf_value);
@@ -620,7 +695,7 @@ int system_setting_set_wallpaper_lock_screen(system_settings_key_e key, system_s
        char *vconf_value;
        vconf_value = (char *)value;
 
-       bool isok  = __is_supported_image_type_load(vconf_value);
+       bool isok  = dl_is_supported_image_type_load(vconf_value);
        if (!isok) {
                /* not supported */
                SETTING_TRACE("path : %s is not supported file format", vconf_value);
@@ -653,7 +728,7 @@ int system_setting_set_font_size(system_settings_key_e key, system_setting_data_
        if (system_setting_vconf_set_value_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, *vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       __font_size_set();
+       dl_font_size_set();
        SETTING_TRACE_END;
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
@@ -687,7 +762,7 @@ void *font_conf_doc_parse(char *doc_name, char *font_name)
 
        cur = cur->xmlChildrenNode;
 
-       Eina_Bool is_changed = EINA_FALSE;
+       bool is_changed = false;
        while (cur != NULL) {
                if ((!xmlStrcmp(cur->name, (const xmlChar *)"match"))) {
                        cur2 = cur->xmlChildrenNode;
@@ -710,7 +785,7 @@ void *font_conf_doc_parse(char *doc_name, char *font_name)
                                                        key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
                                                        xmlFree(key);
                                                        key = NULL;
-                                                       is_changed = EINA_TRUE;
+                                                       is_changed = true;
                                                }
                                                cur3 = cur3->next;
                                        }
@@ -725,7 +800,7 @@ void *font_conf_doc_parse(char *doc_name, char *font_name)
                                        key = xmlNodeListGetString(doc, cur2->xmlChildrenNode, 1);
                                        xmlFree(key);
                                        key = NULL;
-                                       is_changed = EINA_TRUE;
+                                       is_changed = true;
                                } else if ((!xmlStrcmp(cur2->name, (const xmlChar *)"prefer"))) {
                                        cur3 = cur2->xmlChildrenNode;
                                        while (cur3 != NULL) {
@@ -734,7 +809,7 @@ void *font_conf_doc_parse(char *doc_name, char *font_name)
                                                        key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
                                                        xmlFree(key);
                                                        key = NULL;
-                                                       is_changed = EINA_TRUE;
+                                                       is_changed = true;
                                                        cur3 = cur3->next;
                                                        return doc;
                                                }
@@ -763,7 +838,7 @@ int system_setting_set_font_type(system_settings_key_e key, system_setting_data_
        font_name = (char *)value;
 
        /* get current font list */
-       int is_found = __is_available_font(font_name);
+       int is_found = dl_is_available_font(font_name);
 
        if (is_found) {
                SETTING_TRACE("found font : %s ", font_name);
@@ -772,7 +847,7 @@ int system_setting_set_font_type(system_settings_key_e key, system_setting_data_
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
 
-       bool bsave = font_config_set(font_name);
+       bool bsave = dl_font_config_set(font_name);
 
        if (!bsave) {
                SETTING_TRACE(" font type save error by font_config_set() ");
@@ -788,7 +863,7 @@ int system_setting_set_font_type(system_settings_key_e key, system_setting_data_
                doc = NULL;
        }
 
-       font_config_set_notification();
+       dl_font_config_set_notification();
 
        char *vconf_value;
        vconf_value = (char *)value;
@@ -1026,416 +1101,6 @@ int system_setting_unset_changed_callback_motion_activation(system_settings_key_
        return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_MOTION_ACTIVATION, 3);
 }
 
-static char *_get_cur_font()
-{
-       SETTING_TRACE_BEGIN;
-       xmlDocPtr doc = NULL;
-       xmlNodePtr cur = NULL;
-       xmlNodePtr cur2 = NULL;
-       xmlNodePtr cur3 = NULL;
-       xmlChar *key = NULL;
-
-       char *font_name = NULL;
-
-       doc = xmlParseFile(SETTING_FONT_CONF_FILE);
-
-       cur = xmlDocGetRootElement(doc);
-
-       if (cur == NULL) {
-               xmlFreeDoc(doc);
-               doc = NULL;
-               return NULL;
-       }
-
-       if (xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
-               xmlFreeDoc(doc);
-               doc = NULL;
-               return NULL;
-       }
-
-       cur = cur->xmlChildrenNode;
-
-       while (cur != NULL) {
-               if ((!xmlStrcmp(cur->name, (const xmlChar *)"match"))) {
-                       cur2 = cur->xmlChildrenNode;
-                       while (cur2 != NULL) {
-                               if ((!xmlStrcmp(cur2->name, (const xmlChar *)"edit"))) {
-                                       cur3 = cur2->xmlChildrenNode;
-                                       while (cur3 != NULL) {
-                                               if ((!xmlStrcmp(cur3->name, (const xmlChar *)"string"))) {
-                                                       key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
-
-                                                       font_name = g_strdup((char *)key);
-                                                       xmlFree(key);
-                                                       key = NULL;
-                                                       xmlFreeDoc(doc);
-                                                       doc = NULL;
-                                                       return font_name;
-                                               }
-                                               cur3 = cur3->next;
-                                       }
-                               }
-                               cur2 = cur2->next;
-                       }
-               }
-               cur = cur->next;
-       }
-
-       xmlFreeDoc(doc);
-       doc = NULL;
-       return NULL;
-}
-
-static void font_config_set_notification()
-{
-       SETTING_TRACE_BEGIN;
-#if 0
-       /* notification */
-       Ecore_X_Window ecore_win = ecore_x_window_root_first_get();
-       Ecore_X_Atom atom = ecore_x_atom_get("FONT_TYPE_change");
-       ecore_x_window_prop_string_set(ecore_win, atom, "tizen");
-#endif
-}
-
-int __is_available_font(char *font_name)
-{
-       SETTING_TRACE_BEGIN;
-       FcObjectSet *os = NULL;
-       FcFontSet *fs = NULL;
-       FcPattern *pat = NULL;
-       FcConfig *font_config = NULL;
-
-       int ret = 0;
-
-       if (font_name == NULL)
-               return -1;
-
-       font_config = FcInitLoadConfigAndFonts();
-
-       /*setting_retvm_if(font_config == NULL, NULL, "Failed: FcInitLoadConfigAndFonts"); */
-
-       char *locale = setlocale(0, NULL);
-
-       pat = FcPatternCreate();
-
-       os = FcObjectSetBuild(FC_FAMILY, FC_FILE, FC_FAMILYLANG, (char *) 0);
-
-       if (os) {
-               fs = FcFontList(font_config, pat, os);
-               FcObjectSetDestroy(os);
-               os = NULL;
-       }
-
-       if (pat) {
-               FcPatternDestroy(pat);
-               pat = NULL;
-       }
-
-       if (fs) {
-               int j;
-               SETTING_TRACE("fs->nfont = %d", fs->nfont);
-
-               for (j = 0; j < fs->nfont; j++) {
-                       FcChar8 *family = NULL;
-                       FcChar8 *file = NULL;
-
-                       if (FcPatternGetString(fs->fonts[j], FC_FILE, 0, &file) == FcResultMatch) {
-                               int preload_path_len = strlen(SETTING_FONT_PRELOAD_FONT_PATH);
-                               int download_path_len = strlen(SETTING_FONT_DOWNLOADED_FONT_PATH);
-
-                               if (file && (!strncmp((const char *)file, SETTING_FONT_PRELOAD_FONT_PATH, preload_path_len)
-                                            || !strncmp((const char *)file, SETTING_FONT_DOWNLOADED_FONT_PATH, download_path_len))) {
-                                       char *family_result = NULL;
-                                       FcChar8 *lang = NULL;
-                                       int id = 0;
-                                       if (FcPatternGetString(fs->fonts[j], FC_FAMILY, id, &family) != FcResultMatch) {
-                                               break;
-                                       }
-                                       if (FcPatternGetString(fs->fonts[j], FC_FAMILYLANG, id, &lang) != FcResultMatch) {
-                                               break;
-                                       }
-                                       family_result = (char *)family;
-
-                                       /* Find proper family name for current locale. */
-                                       while (locale && family && lang) {
-                                               if (!strncmp(locale, (char *)lang, strlen((char *)lang))) {
-                                                       family_result = (char *)family;
-                                                       break;
-                                               }
-
-                                               /* I will set english as default family language. */
-                                               /* If there is no proper family language for current locale, */
-                                               /* we have to show the english family name. */
-                                               if (!strcmp((char *)lang, "en")) {
-                                                       family_result = (char *)family;
-                                               }
-                                               id++;
-                                               if (FcPatternGetString(fs->fonts[j], FC_FAMILY, id, &family) != FcResultMatch) {
-                                                       break;
-                                               }
-                                               if (FcPatternGetString(fs->fonts[j], FC_FAMILYLANG, id, &lang) != FcResultMatch) {
-                                                       break;
-                                               }
-                                       }
-
-                                       if (family_result) {
-                                               SETTING_TRACE("-------- FONT - family_result = %s", (char *)family_result);
-                                               if (strcmp(family_result, font_name) == 0) {
-                                                       ret = 1;
-                                                       break;
-                                               }
-                                       }
-                               }
-                       }
-               }
-               FcFontSetDestroy(fs);
-               fs = NULL;
-       }
-       FcConfigDestroy(font_config);
-       font_config = NULL;
-       return ret;
-}
-
-
-static char *_get_default_font()
-{
-       SETTING_TRACE_BEGIN;
-       xmlDocPtr doc = NULL;
-       xmlNodePtr cur = NULL;
-       xmlNodePtr cur2 = NULL;
-       xmlNodePtr cur3 = NULL;
-       xmlChar *key = NULL;
-       struct _xmlAttr *properties = NULL;
-       char *default_font_name = NULL;
-
-       doc = xmlParseFile(SETTING_DEFAULT_FONT_CONF_FILE);
-
-       cur = xmlDocGetRootElement(doc);
-
-       if (cur == NULL) {
-               xmlFreeDoc(doc);
-               doc = NULL;
-               return NULL;
-       }
-
-       if (xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
-               xmlFreeDoc(doc);
-               doc = NULL;
-               return NULL;
-       }
-
-       cur = cur->xmlChildrenNode;
-
-       while (cur != NULL) {
-               if ((!xmlStrcmp(cur->name, (const xmlChar *)"match"))) {
-                       cur2 = cur->xmlChildrenNode;
-                       while (cur2 != NULL) {
-                               if ((!xmlStrcmp(cur2->name, (const xmlChar *)"edit"))) {
-                                       properties = cur2->properties;
-                                       /*find the "name" property*/
-                                       while (NULL != properties) {
-                                               if (!xmlStrcmp(properties->name, (const xmlChar *)"name")) {
-                                                       break;
-                                               }
-                                               properties = properties->next;
-                                       }
-
-                                       /*If the value of "name" property is "family", then get the child node string,
-                                       it shall be the default font type*/
-                                       if (NULL != properties && !xmlStrcmp(properties->children->content, (const xmlChar *)"family")) {
-                                               cur3 = cur2->xmlChildrenNode;
-                                               while (cur3 != NULL) {
-                                                       if ((!xmlStrcmp(cur3->name, (const xmlChar *)"string"))) {
-                                                               key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
-                                                               default_font_name = g_strdup((char *)key);
-                                                               xmlFree(key);
-                                                               key = NULL;
-                                                               xmlFreeDoc(doc);
-                                                               doc = NULL;
-                                                               return default_font_name;
-                                                       }
-                                                       cur3 = cur3->next;
-                                               }
-                                       }
-                               }
-                               cur2 = cur2->next;
-                       }
-               }
-               cur = cur->next;
-       }
-
-       xmlFreeDoc(doc);
-       doc = NULL;
-       return NULL;
-}
-
-static bool font_config_set(char *font_name)
-{
-       SETTING_TRACE_BEGIN;
-       Eina_List *text_classes = NULL;
-       Elm_Text_Class *etc = NULL;
-       const Eina_List *l = NULL;
-       Eina_List *fo_list = NULL;
-       Elm_Font_Overlay *efo = NULL;
-
-       int font_size = __font_size_get();
-       int size = 0;
-
-       text_classes = elm_config_text_classes_list_get();
-
-       fo_list = (Eina_List *)elm_config_font_overlay_list_get();
-
-       Eina_List *ll = NULL;
-       Eina_List *l_next = NULL;
-
-       Eina_Bool slp_medium_exist = EINA_FALSE;
-       Eina_Bool slp_roman_exist = EINA_FALSE;
-       Eina_Bool slp_bold_exist = EINA_FALSE;
-       Eina_Bool slp_regular_exist = EINA_FALSE;
-
-       /* Tizen */
-       Eina_Bool tizen_exist = EINA_FALSE;
-
-       EINA_LIST_FOREACH_SAFE(fo_list, ll, l_next, efo) {
-               if (!strcmp(efo->text_class, "tizen_medium")) {
-                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
-                       slp_medium_exist = EINA_TRUE;
-               } else if (!strcmp(efo->text_class, "tizen_roman")) {
-                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
-                       slp_roman_exist = EINA_TRUE;
-               } else if (!strcmp(efo->text_class, "tizen_bold")) {
-                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
-                       slp_bold_exist = EINA_TRUE;
-               } else if (!strcmp(efo->text_class, "tizen_regular")) {
-                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
-                       slp_regular_exist = EINA_TRUE;
-               }
-
-               /* Tizen */
-               if (!strcmp(efo->text_class, "tizen")) {
-                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
-                       tizen_exist = EINA_TRUE;
-               }
-
-       }
-
-       /* if slp_XX do not exist, need to set them, font size is -100(100%) */
-       if (slp_medium_exist == EINA_FALSE) {
-               elm_config_font_overlay_set("tizen_medium", (const char *)font_name,  MIDDLE_FONT_DPI);
-       }
-       if (slp_roman_exist == EINA_FALSE) {
-               elm_config_font_overlay_set("tizen_roman", (const char *)font_name,  MIDDLE_FONT_DPI);
-       }
-       if (slp_bold_exist == EINA_FALSE) {
-               elm_config_font_overlay_set("tizen_bold", (const char *)font_name,  MIDDLE_FONT_DPI);
-       }
-       if (slp_regular_exist == EINA_FALSE) {
-               elm_config_font_overlay_set("tizen_regular", (const char *)font_name,  MIDDLE_FONT_DPI);
-       }
-
-       /* Tizen */
-       if (tizen_exist == EINA_FALSE) {
-               elm_config_font_overlay_set("tizen", (const char *)font_name,  MIDDLE_FONT_DPI);
-       }
-
-       elm_config_font_overlay_set("tizen", (const char *)font_name,  MIDDLE_FONT_DPI);
-
-       /* Tizen */
-       elm_config_font_overlay_set("tizen", (const char *)font_name,  MIDDLE_FONT_DPI);
-
-       EINA_LIST_FOREACH(text_classes, l, etc) {
-               ll = NULL;
-
-               size = font_size;
-               EINA_LIST_FOREACH(fo_list, ll, efo) {
-                       if (!strcmp(etc->name, efo->text_class)) {
-                               size = efo->size;
-                       }
-               }
-               elm_config_font_overlay_set(etc->name, (const char *)font_name, size);
-       }
-       elm_config_text_classes_list_free(text_classes);
-       text_classes = NULL;
-
-       /* add new function */
-#ifdef USE_EFL_ASSIST
-       ea_theme_system_font_set(font_name, font_size);
-       ea_theme_system_fonts_apply();
-#endif
-
-       elm_config_font_overlay_apply();
-       elm_config_all_flush();
-       elm_config_save();
-       return 1;
-}
-
-static void __font_size_set()
-{
-       SETTING_TRACE_BEGIN;
-       Eina_List *text_classes = NULL;
-       Elm_Text_Class *etc = NULL;
-       const Eina_List *l = NULL;
-       int font_size = __font_size_get();
-       char *font_name = _get_cur_font();
-
-       if (font_size == -1) {
-               return;
-       }
-
-       text_classes = elm_config_text_classes_list_get();
-
-       EINA_LIST_FOREACH(text_classes, l, etc) {
-               elm_config_font_overlay_set(etc->name, font_name, font_size);
-       }
-
-       elm_config_text_classes_list_free(text_classes);
-
-#ifdef USE_EFL_ASSIST
-       ea_theme_system_font_set(font_name, font_size);
-       ea_theme_system_fonts_apply();
-#endif
-
-       elm_config_font_overlay_apply();
-       elm_config_all_flush();
-       elm_config_save();
-
-       text_classes = NULL;
-       g_free(font_name);
-}
-
-static int __font_size_get()
-{
-       SETTING_TRACE_BEGIN;
-       int font_size = -1;
-
-       int vconf_value = -1;
-       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &vconf_value)) {
-               return -1;
-       }
-
-       switch (vconf_value) {
-       case SYSTEM_SETTINGS_FONT_SIZE_SMALL:
-               font_size = SMALL_FONT_DPI;
-               break;
-       case SYSTEM_SETTINGS_FONT_SIZE_NORMAL:
-               font_size = MIDDLE_FONT_DPI;
-               break;
-       case SYSTEM_SETTINGS_FONT_SIZE_LARGE:
-               font_size = LARGE_FONT_DPI;
-               break;
-       case SYSTEM_SETTINGS_FONT_SIZE_HUGE:
-               font_size = HUGE_FONT_DPI;
-               break;
-       case SYSTEM_SETTINGS_FONT_SIZE_GIANT:
-               font_size = GIANT_FONT_DPI;
-               break;
-       default:
-               font_size = MIDDLE_FONT_DPI;
-               break;
-       }
-       return font_size;
-}
-
 /*//////////////////////////////////////////////////////////////////////////////////////// */
 /*--------------------------------------- */
 int system_setting_get_locale_country(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
diff --git a/system-settings-util/CMakeLists.txt b/system-settings-util/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..a1a238f
--- /dev/null
@@ -0,0 +1,43 @@
+#set variable
+# SYSTEM_SETTINGS_UTIL - setting-common
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(${SYSTEM_SETTINGS_UTIL})
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+SET(requires "elementary ecore dlog vconf fontconfig libxml-2.0 pkgmgr pkgmgr-info")
+
+PKG_CHECK_MODULES(system_settings_util REQUIRED ${requires})
+
+FOREACH(flag ${system_settings_util_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Werror-implicit-function-declaration")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DSLP_DEBUG")
+ADD_DEFINITIONS("-shared")
+
+#SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl, --rpath=/usr/lib")
+
+#make lib-${LIB_SYSTEM_SETTINGS_UTIL}.so files
+ADD_LIBRARY(${LIB_SYSTEM_SETTINGS_UTIL} SHARED
+       ./src/system_settings_util.c
+)
+
+TARGET_LINK_LIBRARIES(${LIB_SYSTEM_SETTINGS_UTIL} ${system_settings_util_LDFLAGS})
+SET_TARGET_PROPERTIES(${LIB_SYSTEM_SETTINGS_UTIL} PROPERTIES VERSION 0.1.0 SOVERSION 1)
+INSTALL(TARGETS ${LIB_SYSTEM_SETTINGS_UTIL} DESTINATION ${CMAKE_LIBDIR})
+
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/system_settings_util.h DESTINATION ${CMAKE_INCLUDEDIR})
+
diff --git a/system-settings-util/include/system_settings_util.h b/system-settings-util/include/system_settings_util.h
new file mode 100644 (file)
index 0000000..cd51373
--- /dev/null
@@ -0,0 +1,4 @@
+bool font_config_set(char *font_name);
+int __is_available_font(char *font_name);
+char *_get_default_font();
+char *_get_cur_font();
diff --git a/system-settings-util/src/system_settings_util.c b/system-settings-util/src/system_settings_util.c
new file mode 100644 (file)
index 0000000..0810222
--- /dev/null
@@ -0,0 +1,519 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <time.h>
+
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <regex.h>
+
+#include <dlog.h>
+#include <vconf.h>
+
+#include <glib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+
+#include <fontconfig/fontconfig.h>
+
+#include <Elementary.h>
+#include <Evas.h>
+#include <Ecore_Evas.h>
+
+#include <pkgmgr-info.h>
+
+#include <system_settings.h>
+#include <system_settings_private.h>
+
+#include <tzplatform_config.h>
+#include <system_settings_util.h>
+
+#ifdef TIZEN_WEARABLE
+#define SMALL_FONT_DPI                      (-90)
+#endif
+#ifdef TIZEN_MOBILE
+#define SMALL_FONT_DPI                      (-80)
+#endif
+#define MIDDLE_FONT_DPI                     (-100)
+#ifdef TIZEN_WEARABLE
+#define LARGE_FONT_DPI                      (-110)
+#endif
+#ifdef TIZEN_MOBILE
+#define LARGE_FONT_DPI                      (-150)
+#endif
+#define HUGE_FONT_DPI                       (-190)
+#define GIANT_FONT_DPI                      (-250)
+
+#define SETTING_FONT_PRELOAD_FONT_PATH _TZ_SYS_RO_SHARE"/fonts"
+#define SETTING_FONT_DOWNLOADED_FONT_PATH _TZ_SYS_RO_SHARE"/fonts"
+
+#define SETTING_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf"
+#define SETTING_DEFAULT_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf"
+
+
+bool font_config_set(char *font_name);
+int __is_available_font(char *font_name);
+char *_get_default_font();
+char *_get_cur_font();
+
+int __font_size_get();
+void __font_size_set();
+
+bool __is_supported_image_type_load(char *path)
+{
+       SETTING_TRACE_BEGIN;
+       //evas_init();
+       ecore_evas_init();
+       Ecore_Evas  *ee;
+       Evas        *evas;
+
+       ee = ecore_evas_new(NULL, 0, 0, 100, 100, NULL);
+       evas = ecore_evas_get(ee);
+
+       Evas_Object *img = evas_object_image_add(evas);
+       evas_object_image_file_set(img, path, NULL);
+       Evas_Load_Error ret = evas_object_image_load_error_get(img);
+
+       bool result = false;
+       if (ret == EVAS_LOAD_ERROR_NONE) {
+               SETTING_TRACE("%s - OK", path);
+               result = true;
+       } else {
+               SETTING_TRACE("%s - NO", path);
+               result = false;
+       }
+       ecore_evas_free(ee);
+       evas_shutdown();
+       return result;
+}
+
+bool __is_supported_image_type(char *path)
+{
+       SETTING_TRACE_BEGIN;
+       bool ret = false;
+
+       evas_init();
+       if (evas_object_image_extension_can_load_get(path))
+               ret = true;
+       else
+               ret = false;
+
+       evas_shutdown();
+
+       return ret;
+}
+
+char *_get_cur_font()
+{
+       SETTING_TRACE_BEGIN;
+       xmlDocPtr doc = NULL;
+       xmlNodePtr cur = NULL;
+       xmlNodePtr cur2 = NULL;
+       xmlNodePtr cur3 = NULL;
+       xmlChar *key = NULL;
+
+       char *font_name = NULL;
+
+       doc = xmlParseFile(SETTING_FONT_CONF_FILE);
+
+       cur = xmlDocGetRootElement(doc);
+
+       if (cur == NULL) {
+               xmlFreeDoc(doc);
+               doc = NULL;
+               return NULL;
+       }
+
+       if (xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
+               xmlFreeDoc(doc);
+               doc = NULL;
+               return NULL;
+       }
+
+       cur = cur->xmlChildrenNode;
+
+       while (cur != NULL) {
+               if ((!xmlStrcmp(cur->name, (const xmlChar *)"match"))) {
+                       cur2 = cur->xmlChildrenNode;
+                       while (cur2 != NULL) {
+                               if ((!xmlStrcmp(cur2->name, (const xmlChar *)"edit"))) {
+                                       cur3 = cur2->xmlChildrenNode;
+                                       while (cur3 != NULL) {
+                                               if ((!xmlStrcmp(cur3->name, (const xmlChar *)"string"))) {
+                                                       key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
+
+                                                       font_name = g_strdup((char *)key);
+                                                       xmlFree(key);
+                                                       key = NULL;
+                                                       xmlFreeDoc(doc);
+                                                       doc = NULL;
+                                                       return font_name;
+                                               }
+                                               cur3 = cur3->next;
+                                       }
+                               }
+                               cur2 = cur2->next;
+                       }
+               }
+               cur = cur->next;
+       }
+
+       xmlFreeDoc(doc);
+       doc = NULL;
+       return NULL;
+}
+
+void font_config_set_notification()
+{
+       SETTING_TRACE_BEGIN;
+#if 0
+       /* notification */
+       Ecore_X_Window ecore_win = ecore_x_window_root_first_get();
+       Ecore_X_Atom atom = ecore_x_atom_get("FONT_TYPE_change");
+       ecore_x_window_prop_string_set(ecore_win, atom, "tizen");
+#endif
+}
+
+int __is_available_font(char *font_name)
+{
+       SETTING_TRACE_BEGIN;
+       FcObjectSet *os = NULL;
+       FcFontSet *fs = NULL;
+       FcPattern *pat = NULL;
+       Eina_List *list = NULL;
+       FcConfig *font_config = NULL;
+
+       int ret = 0;
+
+       if (font_name == NULL)
+               return -1;
+
+       font_config = FcInitLoadConfigAndFonts();
+
+       /*setting_retvm_if(font_config == NULL, NULL, "Failed: FcInitLoadConfigAndFonts"); */
+
+       char *locale = setlocale(0, NULL);
+
+       pat = FcPatternCreate();
+
+       os = FcObjectSetBuild(FC_FAMILY, FC_FILE, FC_FAMILYLANG, (char *) 0);
+
+       if (os) {
+               fs = FcFontList(font_config, pat, os);
+               FcObjectSetDestroy(os);
+               os = NULL;
+       }
+
+       if (pat) {
+               FcPatternDestroy(pat);
+               pat = NULL;
+       }
+
+       if (fs) {
+               int j;
+               SETTING_TRACE("fs->nfont = %d", fs->nfont);
+
+               for (j = 0; j < fs->nfont; j++) {
+                       FcChar8 *family = NULL;
+                       FcChar8 *file = NULL;
+
+                       if (FcPatternGetString(fs->fonts[j], FC_FILE, 0, &file) == FcResultMatch) {
+                               int preload_path_len = strlen(SETTING_FONT_PRELOAD_FONT_PATH);
+                               int download_path_len = strlen(SETTING_FONT_DOWNLOADED_FONT_PATH);
+
+                               if (file && (!strncmp((const char *)file, SETTING_FONT_PRELOAD_FONT_PATH, preload_path_len)
+                                            || !strncmp((const char *)file, SETTING_FONT_DOWNLOADED_FONT_PATH, download_path_len))) {
+                                       char *family_result = NULL;
+                                       FcChar8 *lang = NULL;
+                                       int id = 0;
+                                       if (FcPatternGetString(fs->fonts[j], FC_FAMILY, id, &family) != FcResultMatch) {
+                                               break;
+                                       }
+                                       if (FcPatternGetString(fs->fonts[j], FC_FAMILYLANG, id, &lang) != FcResultMatch) {
+                                               break;
+                                       }
+                                       family_result = (char *)family;
+
+                                       /* Find proper family name for current locale. */
+                                       while (locale && family && lang) {
+                                               if (!strncmp(locale, (char *)lang, strlen((char *)lang))) {
+                                                       family_result = (char *)family;
+                                                       break;
+                                               }
+
+                                               /* I will set english as default family language. */
+                                               /* If there is no proper family language for current locale, */
+                                               /* we have to show the english family name. */
+                                               if (!strcmp((char*)lang, (char*)"en")) {
+                                                       family_result = (char *)family;
+                                               }
+                                               id++;
+                                               if (FcPatternGetString(fs->fonts[j], FC_FAMILY, id, &family) != FcResultMatch) {
+                                                       break;
+                                               }
+                                               if (FcPatternGetString(fs->fonts[j], FC_FAMILYLANG, id, &lang) != FcResultMatch) {
+                                                       break;
+                                               }
+                                       }
+
+                                       if (family_result) {
+                                               SETTING_TRACE("-------- FONT - family_result = %s", (char *)family_result);
+                                               if (strcmp(family_result, font_name) == 0) {
+                                                       ret = 1;
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               FcFontSetDestroy(fs);
+               fs = NULL;
+       }
+       FcConfigDestroy(font_config);
+       font_config = NULL;
+       return ret;
+}
+
+
+char *_get_default_font()
+{
+       SETTING_TRACE_BEGIN;
+       xmlDocPtr doc = NULL;
+       xmlNodePtr cur = NULL;
+       xmlNodePtr cur2 = NULL;
+       xmlNodePtr cur3 = NULL;
+       xmlChar *key = NULL;
+       struct _xmlAttr *properties = NULL;
+       char *default_font_name = NULL;
+
+       doc = xmlParseFile(SETTING_DEFAULT_FONT_CONF_FILE);
+
+       cur = xmlDocGetRootElement(doc);
+
+       if (cur == NULL) {
+               xmlFreeDoc(doc);
+               doc = NULL;
+               return NULL;
+       }
+
+       if (xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
+               xmlFreeDoc(doc);
+               doc = NULL;
+               return NULL;
+       }
+
+       cur = cur->xmlChildrenNode;
+
+       while (cur != NULL) {
+               if ((!xmlStrcmp(cur->name, (const xmlChar *)"match"))) {
+                       cur2 = cur->xmlChildrenNode;
+                       while (cur2 != NULL) {
+                               if ((!xmlStrcmp(cur2->name, (const xmlChar *)"edit"))) {
+                                       properties = cur2->properties;
+                                       /*find the "name" property*/
+                                       while (NULL != properties) {
+                                               if (!xmlStrcmp(properties->name, (const xmlChar *)"name")) {
+                                                       break;
+                                               }
+                                               properties = properties->next;
+                                       }
+
+                                       /*If the value of "name" property is "family", then get the child node string,
+                                       it shall be the default font type*/
+                                       if (NULL != properties && !xmlStrcmp(properties->children->content, (const xmlChar *)"family")) {
+                                               cur3 = cur2->xmlChildrenNode;
+                                               while (cur3 != NULL) {
+                                                       if ((!xmlStrcmp(cur3->name, (const xmlChar *)"string"))) {
+                                                               key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
+                                                               default_font_name = g_strdup((char *)key);
+                                                               xmlFree(key);
+                                                               key = NULL;
+                                                               xmlFreeDoc(doc);
+                                                               doc = NULL;
+                                                               return default_font_name;
+                                                       }
+                                                       cur3 = cur3->next;
+                                               }
+                                       }
+                               }
+                               cur2 = cur2->next;
+                       }
+               }
+               cur = cur->next;
+       }
+
+       xmlFreeDoc(doc);
+       doc = NULL;
+       return NULL;
+}
+
+bool font_config_set(char *font_name)
+{
+       SETTING_TRACE_BEGIN;
+       Eina_List *text_classes = NULL;
+       Elm_Text_Class *etc = NULL;
+       const Eina_List *l = NULL;
+       Eina_List *fo_list = NULL;
+       Elm_Font_Overlay *efo = NULL;
+
+       int font_size = __font_size_get();
+       int size = 0;
+
+       text_classes = elm_config_text_classes_list_get();
+
+       fo_list = (Eina_List *)elm_config_font_overlay_list_get();
+
+       Eina_List *ll = NULL;
+       Eina_List *l_next = NULL;
+
+       Eina_Bool slp_medium_exist = EINA_FALSE;
+       Eina_Bool slp_roman_exist = EINA_FALSE;
+       Eina_Bool slp_bold_exist = EINA_FALSE;
+       Eina_Bool slp_regular_exist = EINA_FALSE;
+
+       /* Tizen */
+       Eina_Bool tizen_exist = EINA_FALSE;
+
+       EINA_LIST_FOREACH_SAFE(fo_list, ll, l_next, efo) {
+               if (!strcmp(efo->text_class, "tizen_medium")) {
+                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
+                       slp_medium_exist = EINA_TRUE;
+               } else if (!strcmp(efo->text_class, "tizen_roman")) {
+                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
+                       slp_roman_exist = EINA_TRUE;
+               } else if (!strcmp(efo->text_class, "tizen_bold")) {
+                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
+                       slp_bold_exist = EINA_TRUE;
+               } else if (!strcmp(efo->text_class, "tizen_regular")) {
+                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
+                       slp_regular_exist = EINA_TRUE;
+               }
+
+               /* Tizen */
+               if (!strcmp(efo->text_class, "tizen")) {
+                       elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size);
+                       tizen_exist = EINA_TRUE;
+               }
+
+       }
+
+       /* if slp_XX do not exist, need to set them, font size is -100(100%) */
+       if (slp_medium_exist == EINA_FALSE) {
+               elm_config_font_overlay_set("tizen_medium", (const char *)font_name,  MIDDLE_FONT_DPI);
+       }
+       if (slp_roman_exist == EINA_FALSE) {
+               elm_config_font_overlay_set("tizen_roman", (const char *)font_name,  MIDDLE_FONT_DPI);
+       }
+       if (slp_bold_exist == EINA_FALSE) {
+               elm_config_font_overlay_set("tizen_bold", (const char *)font_name,  MIDDLE_FONT_DPI);
+       }
+       if (slp_regular_exist == EINA_FALSE) {
+               elm_config_font_overlay_set("tizen_regular", (const char *)font_name,  MIDDLE_FONT_DPI);
+       }
+
+       /* Tizen */
+       if (tizen_exist == EINA_FALSE) {
+               elm_config_font_overlay_set("tizen", (const char *)font_name,  MIDDLE_FONT_DPI);
+       }
+
+       elm_config_font_overlay_set("tizen", (const char *)font_name,  MIDDLE_FONT_DPI);
+
+       /* Tizen */
+       elm_config_font_overlay_set("tizen", (const char *)font_name,  MIDDLE_FONT_DPI);
+
+       EINA_LIST_FOREACH(text_classes, l, etc) {
+               ll = NULL;
+
+               size = font_size;
+               EINA_LIST_FOREACH(fo_list, ll, efo) {
+                       if (!strcmp(etc->name, efo->text_class)) {
+                               size = efo->size;
+                       }
+               }
+               elm_config_font_overlay_set(etc->name, (const char *)font_name, size);
+       }
+       elm_config_text_classes_list_free(text_classes);
+       text_classes = NULL;
+
+       /* add new function */
+#ifdef USE_EFL_ASSIST
+       ea_theme_system_font_set(font_name, font_size);
+       ea_theme_system_fonts_apply();
+#endif
+
+       elm_config_font_overlay_apply();
+       elm_config_all_flush();
+       elm_config_save();
+       return 1;
+}
+
+void __font_size_set()
+{
+       SETTING_TRACE_BEGIN;
+       Eina_List *text_classes = NULL;
+       Elm_Text_Class *etc = NULL;
+       const Eina_List *l = NULL;
+       int font_size = __font_size_get();
+       char *font_name = _get_cur_font();
+
+       if (font_size == -1) {
+               return;
+       }
+
+       text_classes = elm_config_text_classes_list_get();
+
+       EINA_LIST_FOREACH(text_classes, l, etc) {
+               elm_config_font_overlay_set(etc->name, font_name, font_size);
+       }
+
+       elm_config_text_classes_list_free(text_classes);
+
+#ifdef USE_EFL_ASSIST
+       ea_theme_system_font_set(font_name, font_size);
+       ea_theme_system_fonts_apply();
+#endif
+
+       elm_config_font_overlay_apply();
+       elm_config_all_flush();
+       elm_config_save();
+
+       text_classes = NULL;
+       g_free(font_name);
+}
+
+int __font_size_get()
+{
+       SETTING_TRACE_BEGIN;
+       int font_size = -1;
+
+       int vconf_value = -1;
+       if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &vconf_value)) {
+               return -1;
+       }
+
+       switch (vconf_value) {
+               case SYSTEM_SETTINGS_FONT_SIZE_SMALL:
+                       font_size = SMALL_FONT_DPI;
+                       break;
+               case SYSTEM_SETTINGS_FONT_SIZE_NORMAL:
+                       font_size = MIDDLE_FONT_DPI;
+                       break;
+               case SYSTEM_SETTINGS_FONT_SIZE_LARGE:
+                       font_size = LARGE_FONT_DPI;
+                       break;
+               case SYSTEM_SETTINGS_FONT_SIZE_HUGE:
+                       font_size = HUGE_FONT_DPI;
+                       break;
+               case SYSTEM_SETTINGS_FONT_SIZE_GIANT:
+                       font_size = GIANT_FONT_DPI;
+                       break;
+               default:
+                       font_size = MIDDLE_FONT_DPI;
+                       break;
+       }
+       return font_size;
+}