Code cleanups for font config dialog
authorStafford Mitchell Horne <shorne@gmail.com>
Thu, 13 Apr 2006 00:01:15 +0000 (00:01 +0000)
committerStafford Mitchell Horne <shorne@gmail.com>
Thu, 13 Apr 2006 00:01:15 +0000 (00:01 +0000)
 * Move sndev's code into ilist so it can be reused

SVN revision: 22075

src/bin/e_ilist.c
src/bin/e_ilist.h
src/bin/e_int_config_fonts.c
src/bin/e_widget_ilist.c
src/bin/e_widget_ilist.h

index 3b75041..2d08aa0 100644 (file)
@@ -187,6 +187,18 @@ e_ilist_selected_label_get(Evas_Object *obj)
    return NULL;
 }
 
+EAPI Evas_Object *
+e_ilist_selected_icon_get(Evas_Object *obj)
+{
+   E_Smart_Item *si;
+   
+   API_ENTRY return NULL;
+   if (!sd->items) return NULL;
+   si = evas_list_nth(sd->items, sd->selected);
+   if (si) return si->icon_obj;
+   return NULL;
+}
+
 EAPI void *
 e_ilist_selected_data_get(Evas_Object *obj)
 {
@@ -319,6 +331,45 @@ e_ilist_nth_label_set(Evas_Object *obj, int n, const char *label)
    if (si) edje_object_part_text_set(si->base_obj, "label", label);
 }
 
+EAPI Evas_Object *
+e_ilist_nth_icon_get(Evas_Object *obj, int n)
+{ 
+   E_Smart_Item *si;
+   
+   API_ENTRY return NULL;
+   if (!sd->items) return NULL;
+   si = evas_list_nth(sd->items, n);
+   if (si) return si->icon_obj;
+   return NULL;
+}
+
+EAPI void
+e_ilist_nth_icon_set(Evas_Object *obj, int n, Evas_Object *icon)
+{ 
+   E_Smart_Item *si;
+   
+   API_ENTRY return;
+   if (!sd->items) return;
+   si = evas_list_nth(sd->items, n);
+   if (si) 
+     { 
+       if (si->icon_obj) 
+         {
+            edje_object_part_unswallow(si->base_obj, si->icon_obj);
+            evas_object_hide(si->icon_obj);
+            evas_object_del(si->icon_obj);
+         }
+
+       si->icon_obj = icon;
+       if (si->icon_obj)
+         {
+            edje_extern_object_min_size_set(si->icon_obj, sd->icon_w, sd->icon_h);
+            edje_object_part_swallow(si->base_obj, "icon_swallow", si->icon_obj);
+            evas_object_show(si->icon_obj);
+         }
+     }
+}
+
 EAPI int
 e_ilist_count(Evas_Object *obj)
 {
index 7f11ba6..92f271c 100644 (file)
@@ -22,6 +22,9 @@ EAPI void         e_ilist_remove_num            (Evas_Object *obj, int n);
 EAPI void         e_ilist_remove_label          (Evas_Object *obj, const char *label);
 EAPI const char  *e_ilist_nth_label_get                (Evas_Object *obj, int n);
 EAPI void        e_ilist_nth_label_set         (Evas_Object *obj, int n, const char *label);
+EAPI void        e_ilist_nth_icon_set          (Evas_Object *obj, int n, Evas_Object *icon);
+EAPI Evas_Object *e_ilist_nth_icon_get         (Evas_Object *obj, int n);
+EAPI Evas_Object *e_ilist_selected_icon_get    (Evas_Object *obj);
 EAPI int          e_ilist_count                 (Evas_Object *obj);
 EAPI void         e_ilist_clear                 (Evas_Object *obj);
 
index 3237c24..5c94a17 100644 (file)
@@ -20,40 +20,6 @@ static void _update_font_class_ilist_icon(void *data);
 
 static void _enabled_fallback_cb_change(void *data, Evas_Object *obj);
 
-typedef struct _E_Smart_Item       E_Smart_Item;
-typedef struct _E_Smart_Data       E_Smart_Data;
-typedef struct _E_Widget_IList_Data E_Widget_IList_Data;
-
-struct _E_Widget_IList_Data
-{
-   Evas_Object *o_widget, *o_scrollframe, *o_ilist;
-   Evas_List *callbacks;
-   char **value;
-};
-
-struct _E_Smart_Data
-{ 
-   Evas_Coord   x, y, w, h;
-   
-   Evas_Object   *smart_obj;
-   Evas_Object   *box_obj;
-   Evas_List     *items;
-   int            selected;
-   Evas_Coord     icon_w, icon_h;
-   unsigned char  selector : 1;
-};
-
-struct _E_Smart_Item
-{
-   E_Smart_Data  *sd;
-   Evas_Object   *base_obj;
-   Evas_Object   *icon_obj;
-   void         (*func) (void *data, void *data2);
-   void         (*func_hilight) (void *data, void *data2);
-   void          *data;
-   void          *data2;
-};
-
 struct _E_Text_Class_Pair
 {
    const char  *class_name;
@@ -102,6 +68,7 @@ const E_Text_Class_Pair text_class_predefined_names[ ] = {
 struct _E_Config_Dialog_Data
 {
    E_Config_Dialog *cfd;
+   Evas *evas;
 
    /* Text Classes */
    Evas_List   *text_classes;
@@ -301,6 +268,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
    int i;
 
    cfdata->cur_index = -1;
+   cfdata->evas = evas;
    o = e_widget_list_add(evas, 0, 0);
   
    /* Create Font Class Widgets */ 
@@ -318,11 +286,15 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
        tc = evas_list_nth(cfdata->text_classes, i);
        if (tc)
          {
-            ic = edje_object_add(evas);
             if (tc->enabled)
-              e_util_edje_icon_set(ic, ILIST_ICON_WITH_DEFINED_FONT);
+              {
+                 ic = edje_object_add(evas);
+                 e_util_edje_icon_set(ic, ILIST_ICON_WITH_DEFINED_FONT);
+              }
             else
-              e_util_edje_icon_set(ic, "");
+              {
+                 ic = NULL;
+              }
             e_widget_ilist_append(cfdata->gui.class_list, ic, tc->class_description, NULL, NULL, NULL);
          }
      }
@@ -467,21 +439,27 @@ static void
 _enabled_font_cb_change(void *data, Evas_Object *obj)
 {
    E_Config_Dialog_Data *cfdata;
+   Evas_Object *icon;
+   int n;
+   
    cfdata = data;   
    if (!cfdata) return;
    
+   n = e_widget_ilist_selected_get(cfdata->gui.class_list);
    if (cfdata->cur_enabled)
      {
        e_widget_disabled_set(cfdata->gui.font, 0);
        e_widget_disabled_set(cfdata->gui.size, 0);
+       icon = edje_object_add(cfdata->evas);
+       e_util_edje_icon_set(icon, ILIST_ICON_WITH_DEFINED_FONT);
      }
    else
      {
        e_widget_disabled_set(cfdata->gui.font, 1);
        e_widget_disabled_set(cfdata->gui.size, 1);
+       icon = NULL;
      }
-
-   _update_font_class_ilist_icon(cfdata);
+   e_widget_ilist_nth_icon_set(cfdata->gui.class_list, n, icon);
 }
 
 /* Private Font Fallback Functions */
@@ -495,50 +473,3 @@ static void _enabled_fallback_cb_change(void *data, Evas_Object *obj)
    e_widget_disabled_set(cfdata->gui.fallback_list, !cfdata->cur_fallbacks_enabled); 
 }
 
-/* Just to have nice icon change in fontclass list */
-static void _update_font_class_ilist_icon(void *data)
-{
-  E_Smart_Item *si;
-  E_Smart_Data *sd;
-  E_Widget_IList_Data *wd;
-  Evas_Object *obj;
-
-  E_Config_Dialog_Data *cfdata;
-
-  if (!(cfdata = data))
-    return;
-
-  if (!(wd = e_widget_data_get(cfdata->gui.class_list)))
-      return;
-
-  obj = wd->o_ilist;
-
-  sd = evas_object_smart_data_get(obj);
-
-  if ((!obj) || (!sd) ||
-      (evas_object_type_get(obj) && strcmp(evas_object_type_get(obj), "e_ilist")))
-    return;
-
-  si = evas_list_nth(sd->items, sd->selected);
-  if (si)
-    {
-      edje_object_part_unswallow(si->base_obj, si->icon_obj);
-      evas_object_hide(si->icon_obj);
-      if (cfdata->cur_enabled)
-       {
-         if (si->icon_obj == NULL)
-           si->icon_obj = edje_object_add(evas_object_evas_get(sd->smart_obj));
-         e_util_edje_icon_set(si->icon_obj, ILIST_ICON_WITH_DEFINED_FONT);
-       }
-      else
-       si->icon_obj = NULL;
-
-      if (si->icon_obj)
-       {
-         edje_extern_object_min_size_set(si->icon_obj, sd->icon_w, sd->icon_h);
-         edje_object_part_swallow(si->base_obj, "icon_swallow", si->icon_obj);
-         evas_object_show(si->icon_obj);
-       }
-    }
-}
-
index 169f42d..3665440 100644 (file)
@@ -184,6 +184,33 @@ e_widget_ilist_nth_label_set(Evas_Object *obj, int n, const char *label)
    e_ilist_nth_label_set(wd->o_ilist, n, label);
 }
 
+EAPI void
+e_widget_ilist_nth_icon_set(Evas_Object *obj, int n, Evas_Object *icon)
+{
+    E_Widget_Data *wd;
+   
+   wd = e_widget_data_get(obj);
+   e_ilist_nth_icon_set(wd->o_ilist, n, icon);
+}
+
+EAPI Evas_Object *
+e_widget_ilist_nth_icon_get(Evas_Object *obj, int n)
+{
+    E_Widget_Data *wd;
+   
+   wd = e_widget_data_get(obj);
+   return e_ilist_nth_icon_get(wd->o_ilist, n);
+}
+
+EAPI Evas_Object *
+e_widget_ilist_selected_icon_get(Evas_Object *obj)
+{
+    E_Widget_Data *wd;
+   
+   wd = e_widget_data_get(obj);
+   return e_ilist_selected_icon_get(wd->o_ilist);
+}
+
 EAPI int
 e_widget_ilist_count(Evas_Object *obj)
 {
index 342d6ae..728d560 100644 (file)
@@ -18,6 +18,9 @@ EAPI void e_widget_ilist_remove_num(Evas_Object *obj, int n);
 EAPI void e_widget_ilist_remove_label(Evas_Object *obj, const char *label);
 EAPI const char *e_widget_ilist_nth_label_get(Evas_Object *obj, int n);
 EAPI void e_widget_ilist_nth_label_set(Evas_Object *obj, int n, const char *label);
+EAPI void e_widget_ilist_nth_icon_set(Evas_Object *obj, int n, Evas_Object *icon);
+EAPI Evas_Object *e_widget_ilist_nth_icon_get(Evas_Object *obj, int n);
+EAPI Evas_Object *e_widget_ilist_selected_icon_get(Evas_Object *obj);
 EAPI int e_widget_ilist_count(Evas_Object *obj);
 EAPI void e_widget_ilist_clear(Evas_Object *obj);