From 37bb1db02348a7247c259eebc034934cc2204693 Mon Sep 17 00:00:00 2001 From: MyoungJune Park Date: Fri, 18 Jan 2013 15:48:09 +0900 Subject: [PATCH] fixed font-type change --- .../include/setting-common-general-func.h | 3 - setting-common/src/setting-common-general-func.c | 253 +-------------------- setting-font/src/setting-font-main.c | 117 +++++++--- src/setting-plugin.c | 11 - 4 files changed, 98 insertions(+), 286 deletions(-) diff --git a/setting-common/include/setting-common-general-func.h b/setting-common/include/setting-common-general-func.h index 731112e..bb832f7 100755 --- a/setting-common/include/setting-common-general-func.h +++ b/setting-common/include/setting-common-general-func.h @@ -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(); diff --git a/setting-common/src/setting-common-general-func.c b/setting-common/src/setting-common-general-func.c index 58e643b..8c063a6 100755 --- a/setting-common/src/setting-common-general-func.c +++ b/setting-common/src/setting-common-general-func.c @@ -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); diff --git a/setting-font/src/setting-font-main.c b/setting-font/src/setting-font-main.c index 655d625..d3ae7f5 100755 --- a/setting-font/src/setting-font-main.c +++ b/setting-font/src/setting-font-main.c @@ -28,6 +28,7 @@ #include #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, "%s", 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, "%s", "Chococooky", _("IDS_ST_BODY_CHOCO_COOKY")); - else if(safeStrCmp(font_data, "Cool jazz") == 0) - snprintf(temp, 256, "%s", "Cooljazz", _("IDS_ST_BODY_COOL_JAZZ")); - else - snprintf(temp, 256, "%s", "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); diff --git a/src/setting-plugin.c b/src/setting-plugin.c index ee3570f..feaa148 100755 --- a/src/setting-plugin.c +++ b/src/setting-plugin.c @@ -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; -- 2.7.4