hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=8a837c3b4ae411d0b9ddf23ed8a0c6d650c06d44
commit 8a837c3b4ae411d0b9ddf23ed8a0c6d650c06d44 Author: Hermet Park <her...@hermet.pe.kr> Date: Sat Apr 16 00:52:46 2016 +0900 setting: code refactoring. clean up code. this is one step for setting extension. --- src/bin/setting.c | 103 +++++++++++++++++++++++++++++++-------------- src/bin/text_setting.c | 93 ++++++++++++++++++++++------------------ src/include/text_setting.h | 35 +-------------- 3 files changed, 124 insertions(+), 107 deletions(-) diff --git a/src/bin/setting.c b/src/bin/setting.c index 9d5db6a..b9af353 100644 --- a/src/bin/setting.c +++ b/src/bin/setting.c @@ -4,7 +4,12 @@ #include "common.h" #include "text_setting.h" -struct setting_s +typedef enum { + SETTING_VIEW_GENERAL = 0, + SETTING_VIEW_TEXT +} setting_view; + +typedef struct setting_s { Evas_Object *setting_layout; @@ -31,12 +36,17 @@ struct setting_s Evas_Object *apply_btn; Evas_Object *reset_btn; Evas_Object *cancel_btn; -}; -typedef struct setting_s setting_data; + setting_view current_view; +} setting_data; static setting_data *g_sd = NULL; + +/*****************************************************************************/ +/* Internal method implementation */ +/*****************************************************************************/ + static void img_path_entry_update(Evas_Object *entry, Eina_List *edc_img_paths) { @@ -194,7 +204,6 @@ setting_reset_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, text_setting_linenumber_set(config_linenumber_get()); text_setting_auto_indent_set(config_auto_indent_get()); text_setting_auto_complete_set(config_auto_complete_get()); - text_setting_syntax_color_reset(); } @@ -464,26 +473,22 @@ general_layout_create(setting_data *sd, Evas_Object *parent) } static void -general_tab_cb(void *data, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +general_setting_focus_set(void) { - setting_data *sd = data; - Evas_Object *content; - - if (!sd->setting_layout) return; - - content = elm_object_part_content_get(sd->setting_layout, - "elm.swallow.content"); - - if (content == sd->general_layout) return; - - elm_object_part_content_unset(sd->setting_layout, "elm.swallow.content"); - evas_object_hide(content); - - elm_object_part_content_set(sd->setting_layout, "elm.swallow.content", - sd->general_layout); + setting_data *sd = g_sd; elm_object_focus_set(sd->img_path_entry, EINA_TRUE); +} + +static Evas_Object * +general_setting_content_get(Evas_Object *parent EINA_UNUSED) +{ + setting_data *sd = g_sd; + return sd->general_layout; +} +static void +focus_custom_chain_set(setting_data *sd, Evas_Object *content) +{ //Set a custom chain to set the focus order. Eina_List *custom_chain = NULL; custom_chain = eina_list_append(custom_chain, sd->tabbar); @@ -495,14 +500,52 @@ general_tab_cb(void *data, Evas_Object *obj EINA_UNUSED, } static void -text_setting_tab_cb(void *data, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +toolbar_general_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) { setting_data *sd = data; - text_setting_layout_show(sd->setting_layout, sd->tabbar, sd->apply_btn, - sd->reset_btn, sd->cancel_btn); + + if (sd->current_view == SETTING_VIEW_GENERAL) return; + + //Hide previous tab view + Evas_Object *pcontent = elm_object_part_content_unset(sd->setting_layout, + "elm.swallow.content"); + evas_object_hide(pcontent); + + Evas_Object *content = general_setting_content_get(obj); + elm_object_part_content_set(sd->setting_layout, "elm.swallow.content", + content); + focus_custom_chain_set(sd, content); + general_setting_focus_set(); + + sd->current_view = SETTING_VIEW_GENERAL; } +static void +toolbar_text_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + setting_data *sd = data; + + if (sd->current_view == SETTING_VIEW_TEXT) return; + + //Hide previous tab view + Evas_Object *pcontent = elm_object_part_content_unset(sd->setting_layout, + "elm.swallow.content"); + evas_object_hide(pcontent); + + Evas_Object *content = text_setting_content_get(obj); + elm_object_part_content_set(sd->setting_layout, "elm.swallow.content", + content); + focus_custom_chain_set(sd, content); + text_setting_focus_set(); + + sd->current_view = SETTING_VIEW_TEXT; +} + +/*****************************************************************************/ +/* Externally accessible calls */ +/*****************************************************************************/ + void setting_open(void) { @@ -538,8 +581,8 @@ setting_open(void) elm_toolbar_select_mode_set(tabbar, ELM_OBJECT_SELECT_MODE_ALWAYS); evas_object_size_hint_weight_set(tabbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_toolbar_item_append(tabbar, NULL, _("General"), general_tab_cb, sd); - elm_toolbar_item_append(tabbar, NULL, _("Text Editor"), text_setting_tab_cb, sd); + elm_toolbar_item_append(tabbar, NULL, _("General"), toolbar_general_cb, sd); + elm_toolbar_item_append(tabbar, NULL, _("Text Editor"), toolbar_text_cb, sd); elm_object_part_content_set(layout, "elm.swallow.tabbar", tabbar); @@ -547,11 +590,6 @@ setting_open(void) Evas_Object *general_layout = general_layout_create(sd, layout); elm_object_part_content_set(layout, "elm.swallow.content", general_layout); - //Text setting layout - Evas_Object *text_setting_layout; - text_setting_layout = text_setting_layout_create(layout); - evas_object_hide(text_setting_layout); - //Apply Button Evas_Object *apply_btn = elm_button_add(layout); elm_object_text_set(apply_btn, _("Apply")); @@ -578,6 +616,7 @@ setting_open(void) sd->apply_btn = apply_btn; sd->reset_btn = reset_btn; sd->cancel_btn = cancel_btn; + sd->current_view = SETTING_VIEW_GENERAL; menu_activate_request(); } diff --git a/src/bin/text_setting.c b/src/bin/text_setting.c index 35fc496..550be90 100644 --- a/src/bin/text_setting.c +++ b/src/bin/text_setting.c @@ -2,7 +2,6 @@ #include "config.h" #endif #include "common.h" -#include "text_setting.h" #define UNSUPPORTED_FONT_CNT 28 #define UNSUPPORTED_FONT_MAX_LEN 32 @@ -11,6 +10,35 @@ #define SYNTAX_TEMPLATE_FONT_SIZE 10 #define SYNTAX_COLOR_LEN 7 +typedef struct color_keyword_s +{ + int pos_begin; + int pos_end; + int color_type; +} color_keyword; + +typedef struct text_setting_s +{ + Evas_Object *layout; + Evas_Object *text_edit_entry; + Evas_Object *color_ctxpopup; + + Evas_Object *slider_font; + Evas_Object *toggle_linenum; + Evas_Object *toggle_indent; + Evas_Object *toggle_autocomp; + Evas_Object *toggle_smart_undo_redo; + Evas_Object *list_font_name; + + color_keyword *color_keyword_list; + char *syntax_template_format; + char *syntax_template_str; + + const char *font_name; + const char *font_style; + double font_scale; +} text_setting_data; + static char unsupported_font_list[UNSUPPORTED_FONT_CNT][UNSUPPORTED_FONT_MAX_LEN] = { "Dingbats", "KacstArt", "KacstBook", "KacstDecorative", "KacstDigital", @@ -67,13 +95,18 @@ static int color_type_list[COLOR_KEYWORD_MAX_CNT] = static text_setting_data *g_tsd = NULL; +/*****************************************************************************/ +/* Internal method implementation */ +/*****************************************************************************/ + static void syntax_template_set(char *syntax_template_str, char *syntax_template_format, double font_scale) { if (!syntax_template_str || !syntax_template_format) return; - snprintf(syntax_template_str, SYNTAX_TEMPLATE_MAX_LEN, syntax_template_format, + snprintf(syntax_template_str, SYNTAX_TEMPLATE_MAX_LEN, + syntax_template_format, (int) ((SYNTAX_TEMPLATE_FONT_SIZE * font_scale) + 0.5), color_val[color_type_list[0]], color_val[color_type_list[1]], color_val[color_type_list[2]], color_val[color_type_list[3]], @@ -119,7 +152,7 @@ static void syntax_template_apply(void) { text_setting_data *tsd = g_tsd; - Evas_Object *layout = tsd->text_setting_layout; + Evas_Object *layout = tsd->layout; if (!layout) return; Evas_Object *entry = elm_object_part_content_get(layout, @@ -204,7 +237,7 @@ color_ctxpopup_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, color_keyword *selected_color_keyword; selected_color_keyword = evas_object_data_get(obj, "color_keyword"); - elm_object_disabled_set(tsd->text_setting_layout, EINA_FALSE); + elm_object_disabled_set(tsd->layout, EINA_FALSE); elm_object_focus_set(tsd->slider_font, EINA_TRUE); text_setting_syntax_color_update(obj, selected_color_keyword); @@ -529,7 +562,7 @@ text_setting_double_clicked_cb(void *data, Evas_Object *obj, if ((pos >= selected_color_keyword->pos_begin) && (pos <= selected_color_keyword->pos_end)) { - ctxpopup = color_ctxpopup_create(tsd->text_setting_layout, + ctxpopup = color_ctxpopup_create(tsd->layout, selected_color_keyword); if (!ctxpopup) return; @@ -695,10 +728,15 @@ is_supported_font(const char *font_name) return EINA_TRUE; } +/*****************************************************************************/ +/* Externally accessible calls */ +/*****************************************************************************/ + Evas_Object * -text_setting_layout_create(Evas_Object *parent) +text_setting_content_get(Evas_Object *parent) { text_setting_data *tsd = g_tsd; + if (tsd->layout) return tsd->layout; //Layout Evas_Object *layout = elm_layout_add(parent); @@ -882,7 +920,7 @@ text_setting_layout_create(Evas_Object *parent) elm_list_go(list_font_name); if (font_name_it) elm_list_item_selected_set(font_name_it, EINA_TRUE); - tsd->text_setting_layout = layout; + tsd->layout = layout; tsd->text_edit_entry = entry; tsd->slider_font = slider_font; tsd->toggle_linenum = toggle_linenum; @@ -890,39 +928,15 @@ text_setting_layout_create(Evas_Object *parent) tsd->toggle_autocomp = toggle_autocomp; tsd->toggle_smart_undo_redo = toggle_smart_undo_redo; tsd->list_font_name = list_font_name; + return layout; } void -text_setting_layout_show(Evas_Object *setting_layout, Evas_Object *tabbar, - Evas_Object *apply_btn, Evas_Object *reset_btn, - Evas_Object *cancel_btn) +text_setting_focus_set(void) { text_setting_data *tsd = g_tsd; - Evas_Object *content; - - if (!setting_layout) return; - - content = elm_object_part_content_get(setting_layout, - "elm.swallow.content"); - - if (content == tsd->text_setting_layout) return; - - elm_object_part_content_unset(setting_layout, "elm.swallow.content"); - evas_object_hide(content); - - elm_object_part_content_set(setting_layout, "elm.swallow.content", - tsd->text_setting_layout); elm_object_focus_set(tsd->slider_font, EINA_TRUE); - - //Set a custom chain to set the focus order. - Eina_List *custom_chain = NULL; - custom_chain = eina_list_append(custom_chain, tabbar); - custom_chain = eina_list_append(custom_chain, tsd->text_setting_layout); - custom_chain = eina_list_append(custom_chain, apply_btn); - custom_chain = eina_list_append(custom_chain, reset_btn); - custom_chain = eina_list_append(custom_chain, cancel_btn); - elm_object_focus_custom_chain_set(setting_layout, custom_chain); } void @@ -1020,15 +1034,10 @@ text_setting_term(void) text_setting_data *tsd = g_tsd; if (!tsd) return; - if (tsd->color_ctxpopup) - evas_object_del(tsd->color_ctxpopup); - - if (tsd->color_keyword_list) - free(tsd->color_keyword_list); - if (tsd->syntax_template_format) - free(tsd->syntax_template_format); - if (tsd->syntax_template_str) - free(tsd->syntax_template_str); + evas_object_del(tsd->color_ctxpopup); + free(tsd->color_keyword_list); + free(tsd->syntax_template_format); + free(tsd->syntax_template_str); eina_stringshare_del(tsd->font_name); eina_stringshare_del(tsd->font_style); free(tsd); diff --git a/src/include/text_setting.h b/src/include/text_setting.h index 25823f7..8f46ba9 100644 --- a/src/include/text_setting.h +++ b/src/include/text_setting.h @@ -1,36 +1,4 @@ -typedef struct color_keyword_s -{ - int pos_begin; - int pos_end; - int color_type; -} color_keyword; - -struct text_setting_s -{ - Evas_Object *text_setting_layout; - Evas_Object *text_edit_entry; - Evas_Object *color_ctxpopup; - - Evas_Object *slider_font; - Evas_Object *toggle_linenum; - Evas_Object *toggle_indent; - Evas_Object *toggle_autocomp; - Evas_Object *toggle_smart_undo_redo; - Evas_Object *list_font_name; - - color_keyword *color_keyword_list; - char *syntax_template_format; - char *syntax_template_str; - - const char *font_name; - const char *font_style; - double font_scale; -}; - -typedef struct text_setting_s text_setting_data; - -Evas_Object *text_setting_layout_create(Evas_Object *parent); -void text_setting_layout_show(Evas_Object *setting_layout, Evas_Object *tabbar, Evas_Object *apply_btn, Evas_Object *reset_btn, Evas_Object *cancel_btn); +Evas_Object *text_setting_content_get(Evas_Object *parent); void text_setting_syntax_color_reset(void); void text_setting_syntax_color_save(void); void text_setting_config_set(void); @@ -42,3 +10,4 @@ void text_setting_auto_complete_set(Eina_Bool enabled); void text_setting_smart_undo_redo_set(Eina_Bool enabled); void text_setting_term(void); void text_setting_init(void); +void text_setting_focus_set(void); --