fixed font-type change
authorMyoungJune Park <mj2004.park@samsung.com>
Fri, 18 Jan 2013 06:48:09 +0000 (15:48 +0900)
committerMyoungJune Park <mj2004.park@samsung.com>
Fri, 18 Jan 2013 06:48:09 +0000 (15:48 +0900)
setting-common/include/setting-common-general-func.h
setting-common/src/setting-common-general-func.c
setting-font/src/setting-font-main.c
src/setting-plugin.c

index 731112e..bb832f7 100755 (executable)
@@ -98,11 +98,8 @@ extern char* get_icon_path(const char *package);
 extern int is_slp_binary();
 extern bool isEmulBin();
 extern int get_popup_btn_response_type(const char *btn_str);
-extern bool is_system_service(const char *pkg_name);
 extern void clear_system_service_data();
 
-extern char *get_default_font(int language);
-extern void *font_conf_doc_parse(char *doc_name, char *font_name);
 extern char *cur_font_get();
 extern void font_config_set(char *font_name);
 extern void font_size_set();
index 58e643b..8c063a6 100755 (executable)
@@ -980,241 +980,6 @@ void clear_system_service_data()
        #endif
 }
 
-bool is_system_service(const char *pkg_name)
-{
-       //SLP native apps list,
-       if (0 == safeStrCmp(pkg_name, "com.samsung.menu-screen")
-           || 0 == safeStrCmp(pkg_name, "com.samsung.live-data-provider")
-           || 0 == safeStrCmp(pkg_name, "com.samsung.live-magazine")
-           || 0 == safeStrCmp(pkg_name, "com.samsung.pwlock")
-           || 0 == safeStrCmp(pkg_name, "com.samsung.quickpanel")
-           || 0 == safeStrCmp(pkg_name, "com.samsung.vtmain")
-           || 0 == safeStrCmp(pkg_name, "com.samsung.call")
-           || 0 == safeStrCmp(pkg_name, "usb_setting")
-           || 0 == safeStrCmp(pkg_name, "com.samsung.indicator")
-           || 0 == safeStrCmp(pkg_name, "com.samsung.cluster-home")
-          )
-       {
-               return TRUE;
-       }
-
-       //OSP service app list,
-       bool ret = FALSE;
-#if SUPPORT_STATIC_LOAD
-       int idx = 0;
-       if (!system_service_list[0]) //just load the file
-       {
-               FILE *fp = fopen(SYSTEM_SERVICE_LIST_PATH, "r");
-               if (fp) {
-                       char result[MAX_PKG_NAME_LEN+1] = {0, };
-                       while (fgets(result, MAX_PKG_NAME_LEN, fp))
-                       {
-                               result[strlen(result) - 1] = '\0';//offset 1
-                               system_service_list[idx++] = strdup(result);
-                       }
-                       fclose(fp);
-               }
-
-       }
-
-       for (idx = 0; idx < MAX_SYSTEM_SERVICE_NUM && system_service_list[idx]; idx++)
-       {
-               if (0 == safeStrCmp(pkg_name, system_service_list[idx])) {
-                       ret = TRUE;
-                       break;
-               }
-       }
-#else
-       FILE *fp = fopen(SYSTEM_SERVICE_LIST_PATH, "r");
-       if (fp) {
-               char result[MAX_PKG_NAME_LEN+1] = {0, };
-               while (fgets(result, MAX_PKG_NAME_LEN, fp))
-               {
-                       result[strlen(result) - 1] = '\0';//offset 1
-                       if (0 == safeStrCmp(pkg_name, result)) {
-                               ret = TRUE;
-                               break;
-                       }
-               }
-               fclose(fp);
-       }
-#endif
-       SETTING_TRACE("ret:%d", ret);
-       return ret;
-}
-
-
-/**
-  * should use g_free to free returned string
-  */
-char *get_default_font(int language)
-{
-       char *font_name = NULL;
-
-       switch(language)
-       {
-       case SETTING_LANG_KOREA:
-               font_name = g_strdup("SLPSansKorean");
-               break;
-       case SETTING_LANG_CHINA:
-               /* output_font : SLPSansFallback*/
-       case SETTING_LANG_CANTONESE:
-               /* output_font : SLPSansFallback*/
-       case SETTING_LANG_TAIWAN:
-               font_name = g_strdup("SLPSansFallback");
-               break;
-       case SETTING_LANG_JAPAN:
-               font_name = g_strdup("UDGothic");
-               break;
-       case SETTING_LANG_AUTOMATIC:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_ENGLISH:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_GERMAN:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_DUTCH:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_SPAINISH:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_PORTUGUESE:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_GREEK:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_ITALIAN:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_FRENCH:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_TURKISH:
-               /* output_font : HelveticaNeue*/
-       case SETTING_LANG_RUSSIAN:
-               font_name = g_strdup("HelveticaNeue");
-               break;
-       default:
-               font_name = g_strdup("HelveticaNeue");
-               break;
-       }
-       return font_name;
-}
-
-
-void *font_conf_doc_parse(char *doc_name, char *font_name)
-{
-       SETTING_TRACE_BEGIN;
-       setting_retvm_if(doc_name == NULL, NULL, "Param data is NULL");
-       setting_retvm_if(font_name == NULL, NULL, "Param data is NULL");
-       xmlDocPtr doc = NULL;
-       xmlNodePtr cur = NULL;
-       xmlNodePtr cur2 = NULL;
-       xmlNodePtr cur3 = NULL;
-       xmlChar *key = NULL;
-
-       doc = xmlParseFile(doc_name);
-       setting_retvm_if(doc == NULL, NULL, "Document not parsed successfully.");
-
-       cur = xmlDocGetRootElement(doc);
-
-       if (cur == NULL) {
-               SETTING_TRACE_DEBUG("empty document");
-               xmlFreeDoc(doc);
-               doc = NULL;
-               return NULL;
-       }
-
-       if(xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
-               SETTING_TRACE_DEBUG("document of the wrong type, root node != fontconfig");
-               xmlFreeDoc(doc);
-               doc = NULL;
-               return NULL;
-       }
-
-       cur = cur->xmlChildrenNode;
-
-       Eina_Bool is_changed = EINA_FALSE;
-       while(cur != NULL)
-       {
-               if((!xmlStrcmp(cur->name, (const xmlChar *)"match")))
-               {
-                       cur2 = cur->xmlChildrenNode;
-                       while(cur2 != NULL)
-                       {
-                               if((!xmlStrcmp(cur2->name, (const xmlChar *)"edit")))
-                               {
-                                       xmlChar *name = xmlGetProp(cur2, (const xmlChar *)"name");
-                                       SETTING_TRACE_DEBUG("name is: %s", name);
-                                       /* if name is not 'family', break */
-                                       if (xmlStrcmp(name, (const xmlChar *)"family"))
-                                       {
-                                               xmlFree(name);
-                                               name = NULL;
-                                               break;
-                                       }
-                                       xmlFree(name);
-                                       name = NULL;
-
-                                       cur3 = cur2->xmlChildrenNode;
-                                       while(cur3 != NULL)
-                                       {
-                                               if((!xmlStrcmp(cur3->name, (const xmlChar *)"string")))
-                                               {
-                                                       xmlNodeSetContent(cur3->xmlChildrenNode, (const xmlChar *)font_name);
-                                                       key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
-                                                       SETTING_TRACE_DEBUG("after changed, string is: %s", key);
-                                                       xmlFree(key);
-                                                       key = NULL;
-                                                       is_changed = EINA_TRUE;
-                                               }
-                                               cur3 = cur3->next;
-                                       }
-                               }
-                               cur2 = cur2->next;
-                       }
-               } else if ((!xmlStrcmp(cur->name, (const xmlChar *)"alias")))
-               {
-                       cur2 = cur->xmlChildrenNode;
-                       while (cur2 != NULL)
-                       {
-                               if ((!xmlStrcmp(cur2->name, (const xmlChar *)"family")))
-                               {
-                                       xmlNodeSetContent(cur2->xmlChildrenNode, (const xmlChar *)font_name);
-                                       key = xmlNodeListGetString(doc, cur2->xmlChildrenNode, 1);
-                                       SETTING_TRACE_DEBUG("after changed, string is: %s", key);
-                                       xmlFree(key);
-                                       key = NULL;
-                                       is_changed = EINA_TRUE;
-                               } else if ((!xmlStrcmp(cur2->name, (const xmlChar *)"prefer")))
-                               {
-                                       cur3 = cur2->xmlChildrenNode;
-                                       while (cur3 != NULL)
-                                       {
-                                               if((!xmlStrcmp(cur3->name, (const xmlChar *)"family")))
-                                               {
-                                                       xmlNodeSetContent(cur3->xmlChildrenNode, (const xmlChar *)font_name);
-                                                       key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
-                                                       SETTING_TRACE_DEBUG("after changed, string is: %s", key);
-                                                       xmlFree(key);
-                                                       key = NULL;
-                                                       is_changed = EINA_TRUE;
-                                                       cur3 = cur3->next;
-                                                       break; /* just set first element, so break */
-                                               }
-                                               cur3 = cur3->next;
-                                       }
-                               }
-                               cur2 = cur2->next;
-                       }
-               }
-               cur = cur->next;
-       }
-
-       if (is_changed) {
-               return doc;
-       } else {
-               xmlFreeDoc(doc);
-               doc = NULL;
-               return NULL;
-       }
-}
-
 
 /**
  * should use g_free to free return string
@@ -1353,16 +1118,16 @@ void font_config_set(char *font_name)
 
        EINA_LIST_FOREACH_SAFE(fo_list, ll, l_next, efo)
        {
-               if (!safeStrCmp(efo->text_class, "slp_medium")) {
+               if (!safeStrCmp(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 (!safeStrCmp(efo->text_class, "slp_roman")) {
+               } else if (!safeStrCmp(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 (!safeStrCmp(efo->text_class, "slp_bold")) {
+               } else if (!safeStrCmp(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 (!safeStrCmp(efo->text_class, "slp_regular")) {
+               } else if (!safeStrCmp(efo->text_class, "tizen_regular")) {
                        elm_config_font_overlay_set(efo->text_class, (const char*)font_name, efo->size);
                        slp_regular_exist = EINA_TRUE;
                }
@@ -1377,16 +1142,16 @@ void font_config_set(char *font_name)
 
        /* 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("slp_medium", (const char*)font_name,  MIDDLE_FONT_DPI);
+               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("slp_roman", (const char*)font_name,  MIDDLE_FONT_DPI);
+               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("slp_bold", (const char*)font_name,  MIDDLE_FONT_DPI);
+               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("slp_regular", (const char*)font_name,  MIDDLE_FONT_DPI);
+               elm_config_font_overlay_set("tizen_regular", (const char*)font_name,  MIDDLE_FONT_DPI);
        }
 
        // Tizen
@@ -1394,7 +1159,7 @@ void font_config_set(char *font_name)
                elm_config_font_overlay_set("tizen", (const char*)font_name,  MIDDLE_FONT_DPI);
        }
 
-       elm_config_font_overlay_set("slp", (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);
index 655d625..d3ae7f5 100755 (executable)
@@ -28,6 +28,7 @@
 #include <system_settings.h>
 
 #define SETTING_FONT_MAX_LEN 10
+#define FONT_BUF_SIZE 256
 
 static int setting_font_main_create(void *cb);
 static int setting_font_main_destroy(void *cb);
@@ -44,6 +45,10 @@ setting_view setting_view_font_main = {
        .cleanup = setting_font_main_cleanup,
 };
 
+
+/**
+ * [API] font-size
+ */
 static char* __setting_font_main_get_font_size(int value)
 {
        const char* font_size_arr[] = {
@@ -70,6 +75,11 @@ static char* __setting_font_main_get_font_size(int value)
        }
 }
 
+
+/**
+ * [API] get a font list from current system
+ * REFACTORING: move this feature to system-settings
+ */
 static Eina_List *__setting_font_main_available_list_get()
 {
        SETTING_TRACE_BEGIN
@@ -152,6 +162,53 @@ static void __setting_font_main_genlist_sel_cb(void *data, Evas_Object * obj, vo
        }
 }
 
+
+int get_font_name_str(char* font_type_name, char* trans_font_type_name, int bufsize)
+{
+       if(safeStrCmp(font_type_name, "Choco cooky") == 0)
+               snprintf(trans_font_type_name, bufsize, "%s", _("IDS_ST_BODY_CHOCO_COOKY"));
+       else if(safeStrCmp(font_type_name, "Cool jazz") == 0)
+               snprintf(trans_font_type_name, bufsize, "%s", _("IDS_ST_BODY_COOL_JAZZ"));
+       else if (safeStrCmp(font_type_name, "HelveticaNeue") == 0)
+               snprintf(trans_font_type_name, bufsize, "%s", _("IDS_ST_BODY_HELVETICA_NEUE_M_FONT_NAME"));
+       else
+               snprintf(trans_font_type_name, bufsize, "%s", font_type_name);
+
+       return 1;
+}
+
+int get_font_name_tag(char* font_data, char* temp, int bufsize)
+{
+       SETTING_TRACE("font data : %s", (char*)font_data);
+
+       char* pos = font_data;
+       char new_name[bufsize];
+       int i=0;
+       int count = 0;
+       while(*pos != '\0')
+       {
+               SETTING_TRACE(">>>  %c", *pos);
+               if (*pos == ' ')
+               {
+                       SETTING_TRACE(">>>  empty ' ' ");
+                       new_name[count] = '\\';
+                       count++;
+                       new_name[count] = ' ';
+               } else {
+                       new_name[count] = font_data[i];
+               }
+
+               count++;
+               pos++;
+               i++;
+       }
+       new_name[count] = '\0';
+
+       SETTING_TRACE(">>> new_name length : %d : string : %s", count, (char*)new_name);
+       snprintf(temp, bufsize, "<font=%s>%s</font>", new_name, font_data);
+       return 1;
+}
+
 static void __setting_font_main_genlist_item_create(void *data)
 {
        SETTING_TRACE_BEGIN;
@@ -166,17 +223,26 @@ static void __setting_font_main_genlist_item_create(void *data)
                item = elm_genlist_item_append(ad->genlist, &(ad->itc_seperator), NULL, NULL,
                                        ELM_GENLIST_ITEM_NONE, NULL, NULL);
                elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
                char *font_type_name = NULL;
-               font_type_name = cur_font_get();
+           int ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &font_type_name);
+               SETTING_TRACE("---------------- system-setting call : (%s) ", font_type_name);
 
-               char trans_font_type_name[256] = {0,};          
+               #if 0
+               char trans_font_type_name[256] = {0,};
                if(safeStrCmp(font_type_name, "Choco cooky") == 0)
                        snprintf(trans_font_type_name, 256, "%s", _("IDS_ST_BODY_CHOCO_COOKY"));
                else if(safeStrCmp(font_type_name, "Cool jazz") == 0)
                        snprintf(trans_font_type_name, 256, "%s", _("IDS_ST_BODY_COOL_JAZZ"));
-               else
+               else if (safeStrCmp(font_type_name, "HelveticaNeue") == 0)
                        snprintf(trans_font_type_name, 256, "%s", _("IDS_ST_BODY_HELVETICA_NEUE_M_FONT_NAME"));
-
+               else
+                       snprintf(trans_font_type_name, 256, "%s", font_type_name);
+               #else
+               char trans_font_type_name[FONT_BUF_SIZE] = {0,};
+               ret = get_font_name_str(font_type_name, trans_font_type_name, FONT_BUF_SIZE);
+               //SETTING_TRACE_DEBUG("font data : %s", (char*)font_data);
+               #endif
                SETTING_TRACE_DEBUG("current font : %s, trans font name: %s", font_type_name, trans_font_type_name);
 
                ad->font_type = setting_create_Gendial_exp_parent_field(ad->genlist,
@@ -226,25 +292,15 @@ static void __setting_font_main_genlist_item_create(void *data)
 
 
 /**
+ * [API] set current font
  * font change
  */
 static void __setting_font_main_font_set(char *font_name)
 {
        retm_if(font_name == NULL, "Invalid argument: font_name is NULL");
-       xmlDocPtr doc = (xmlDocPtr)font_conf_doc_parse(SETTING_FONT_CONF_FILE, font_name);
-
-       if(doc != NULL) {
-               xmlSaveFormatFile(SETTING_FONT_CONF_FILE, doc, 0);
-               xmlFreeDoc(doc);
-               doc = NULL;
-       }
-
-       font_config_set(font_name);
+    int ret;
+    ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, font_name);
 
-       /* 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, "slp");
 }
 
 static void __setting_font_main_popup_cb(void *data, Evas_Object *obj, void *event_info)
@@ -257,15 +313,23 @@ static void __setting_font_main_popup_cb(void *data, Evas_Object *obj, void *eve
        case POPUP_RESPONSE_OK:
                {
                        /* extract font name from tag mixed string */
+                       SETTING_TRACE("??? --> popup - get FONT : %s ", ad->subitem->keyStr);
+
+                       SETTING_TRACE("sub_desc --> popup - get FONT : %s ", ad->subitem->sub_desc);
+
                        char *temp = NULL;
                        temp = strchr(ad->subitem->keyStr, '>');
                        temp += 1;
                        char *last = NULL;
                        last = strrchr(temp, '<');
 
+                       #if 0
                        char font_name[64] = {0,};
                        safeCopyStr(font_name, temp, (int)(last-temp));
-
+                       #else
+                       // sub - descc
+                       char *font_name = g_strdup(ad->subitem->sub_desc);
+                       #endif
                        /* set font name to font main and font config */
                        ad->font_type->sub_desc = (char *)g_strdup(_(font_name));
                        elm_object_item_data_set(ad->font_type->item, ad->font_type);
@@ -365,14 +429,9 @@ static void __setting_font_main_exp_cb(void *data, Evas_Object *obj, void *event
                Setting_GenGroupItem_Data *item = NULL;
                EINA_LIST_FOREACH(font_list, l, font_data)
                {
+                       char temp[FONT_BUF_SIZE] = {0,};
+                       int ret = get_font_name_tag(font_data, temp, FONT_BUF_SIZE);
                        SETTING_TRACE_DEBUG("font data : %s", (char*)font_data);
-                       char temp[256] = {0,};
-                       if(safeStrCmp(font_data, "Choco cooky") == 0)
-                               snprintf(temp, 256, "<font=%s>%s</font>", "Chococooky", _("IDS_ST_BODY_CHOCO_COOKY"));
-                       else if(safeStrCmp(font_data, "Cool jazz") == 0)
-                               snprintf(temp, 256, "<font=%s>%s</font>", "Cooljazz", _("IDS_ST_BODY_COOL_JAZZ"));
-                       else
-                               snprintf(temp, 256, "<font=%s>%s</font>", "HelveticaNeue", _("IDS_ST_BODY_HELVETICA_NEUE_M_FONT_NAME"));
 
                        item = setting_create_Gendial_exp_sub_field(scroller, &(ad->itc_1text_1icon_2),
                                                     __setting_font_main_sub_list_sel_cb, ad,
@@ -382,7 +441,10 @@ static void __setting_font_main_exp_cb(void *data, Evas_Object *obj, void *event
 
                        if (item) {
                                item->userdata = ad;
-                               if (!safeStrCmp(ad->font_name, (const char*)font_data)) {
+                               //item->sub_desc = font_data;
+                               item->sub_desc = strdup(font_data);
+                               //if (!safeStrCmp(ad->font_name, (const char*)font_data)) {
+                               if (!safeStrCmp(ad->font_name, (const char*)item->sub_desc)) {
                                        matched_font = i;
                                }
                        }
@@ -426,8 +488,7 @@ static int setting_font_main_create(void *cb)
                                                   NULL,
                                                   ad, &ad->genlist, &ad->navibar);
 
-       setting_enable_expandable_genlist(ad->genlist, ad,
-                               __setting_font_main_exp_cb, NULL);
+       setting_enable_expandable_genlist(ad->genlist, ad, __setting_font_main_exp_cb, NULL);
 
        __setting_font_main_genlist_item_create(ad);
 
index ee3570f..feaa148 100755 (executable)
@@ -1011,17 +1011,6 @@ static void* editbox_func(void *data, xmlNode *xmlObj)
 
        }
 #endif
-       if (list_item)
-       {
-               list_item->userdata = ad;
-               list_item->isSinglelineFlag = TRUE;
-               //list_item->start_change_cb = (setting_call_back_func)__entry_key_down_cb;
-               //list_item->stop_change_cb = __entry_unfocus_cb;
-               //list_item->maxlength_reached_cb = __max_len_reached;
-               list_item->x_callback_cb = _input_panel_event_cb;
-               //list_item->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set));
-       }
-
        if (list_item) {
                list_item->userdata = xmlObj;
                list_item->stop_change_cb = __entry_unfocus_cb;