* add interface functionality that notifies if font class is enabled/disabled by showing or

hidding icon for the list item.


SVN revision: 22057
This commit is contained in:
sndev 2006-04-12 14:45:10 +00:00 committed by sndev
parent d4abae1e6d
commit df36261f83
1 changed files with 88 additions and 1 deletions

View File

@ -3,6 +3,9 @@
*/
#include "e.h"
#define ILIST_ICON_WITH_DEFINED_FONT "enlightenment/e"
#define ILIST_ICON_WITHOUT_DEFINED_FONT ""
typedef struct _E_Text_Class_Pair E_Text_Class_Pair;
typedef struct _CFText_Class CFText_Class;
@ -13,9 +16,44 @@ static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Co
static void _ilist_font_cb_change(void *data, Evas_Object *obj);
static void _enabled_font_cb_change(void *data, Evas_Object *obj);
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;
@ -282,7 +320,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
{
ic = edje_object_add(evas);
if (tc->enabled)
e_util_edje_icon_set(ic, "enlightenment/e");
e_util_edje_icon_set(ic, ILIST_ICON_WITH_DEFINED_FONT);
else
e_util_edje_icon_set(ic, "");
e_widget_ilist_append(cfdata->gui.class_list, ic, tc->class_description, NULL, NULL, NULL);
@ -442,6 +480,8 @@ _enabled_font_cb_change(void *data, Evas_Object *obj)
e_widget_disabled_set(cfdata->gui.font, 1);
e_widget_disabled_set(cfdata->gui.size, 1);
}
_update_font_class_ilist_icon(cfdata);
}
/* Private Font Fallback Functions */
@ -455,3 +495,50 @@ 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);
}
}
}