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);

-- 


Reply via email to