Adding functions to toolbar to set icon lookup order

By: Otavio Pontes <otavio@profusion.mobi>



SVN revision: 54346
This commit is contained in:
Bruno Dilly 2010-11-08 19:58:46 +00:00
parent a1b70711a7
commit 998d6de755
2 changed files with 53 additions and 0 deletions

View File

@ -1300,6 +1300,8 @@ extern "C" {
EAPI Evas_Object *elm_toolbar_add(Evas_Object *parent);
EAPI void elm_toolbar_icon_size_set(Evas_Object *obj, int icon_size);
EAPI int elm_toolbar_icon_size_get(const Evas_Object *obj);
EAPI void elm_toolbar_icon_order_lookup_set(Evas_Object *obj, Elm_Icon_Lookup_Order order);
EAPI Elm_Icon_Lookup_Order elm_toolbar_icon_order_lookup_get(const Evas_Object *obj);
EAPI void elm_toolbar_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select);
EAPI Eina_Bool elm_toolbar_no_select_mode_get(const Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_append(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);

View File

@ -17,6 +17,7 @@ struct _Widget_Data
Eina_Inlist *items;
Elm_Toolbar_Item *more_item, *selected_item;
Elm_Toolbar_Shrink_Mode shrink_mode;
Elm_Icon_Lookup_Order lookup_order;
int icon_size;
double align;
Eina_Bool homogeneous : 1;
@ -543,6 +544,7 @@ _item_new(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb f
Elm_Toolbar_Item *it;
icon_obj = elm_icon_add(obj);
elm_icon_order_lookup_set(icon_obj, wd->lookup_order);
if (!icon_obj) return NULL;
it = elm_widget_item_new(obj, Elm_Toolbar_Item);
if (!it)
@ -654,6 +656,7 @@ elm_toolbar_add(Evas_Object *parent)
elm_toolbar_mode_shrink_set(obj, _elm_config->toolbar_shrink_mode);
evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_RESIZE, _resize, obj);
elm_toolbar_icon_order_lookup_set(obj, ELM_ICON_LOOKUP_THEME_FDO);
_sizing_eval(obj);
return obj;
@ -852,6 +855,10 @@ elm_toolbar_item_state_set(Elm_Toolbar_Item *it, Elm_Toolbar_Item_State *state)
_elm_toolbar_item_icon_obj_set(obj, it, it_state->icon, it_state->icon_str,
wd->icon_size, "elm,state,icon_set,backward");
}
if (it->disabled)
elm_widget_signal_emit(it->icon, "elm,state,disabled", "elm");
else
elm_widget_signal_emit(it->icon, "elm,state,enabled", "elm");
it->current_state = next_state;
return EINA_TRUE;
@ -909,8 +916,11 @@ elm_toolbar_item_state_add(Elm_Toolbar_Item *item, const char *icon, const char
Elm_Toolbar_Item_State *it_state;
Evas_Object *icon_obj;
Evas_Object *obj;
Widget_Data *wd;
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, NULL);
obj = item->base.widget;
wd = elm_widget_data_get(item->base.widget);
if (!wd) return NULL;
if (!item->states)
{
@ -921,6 +931,7 @@ elm_toolbar_item_state_add(Elm_Toolbar_Item *item, const char *icon, const char
}
icon_obj = elm_icon_add(obj);
elm_icon_order_lookup_set(icon_obj, wd->lookup_order);
if (!icon_obj) goto error_state_add;
if (!_item_icon_set(icon_obj, "toolbar/", icon))
@ -2141,3 +2152,43 @@ elm_toolbar_no_select_mode_get(const Evas_Object *obj)
if (!wd) return EINA_FALSE;
return wd->no_select;
}
/**
* Sets icon lookup order, for icons used in this toolbar.
* Icons added before calling this function will not be affected.
* The default lookup order is ELM_ICON_LOOKUP_THEME_FDO.
*
* @param obj The toolbar object
* @param order The icon lookup order
*
* @ingroup Toolbar
*/
EAPI void
elm_toolbar_icon_order_lookup_set(Evas_Object *obj, Elm_Icon_Lookup_Order order)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Elm_Toolbar_Item *it;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
wd->lookup_order = order;
EINA_INLIST_FOREACH(wd->items, it)
elm_icon_order_lookup_set(it->icon, order);
}
/**
* Gets the icon lookup order.
*
* @param obj The Toolbar object
* @return The icon lookup order
*
* @ingroup Toolbar
*/
EAPI Elm_Icon_Lookup_Order
elm_toolbar_icon_order_lookup_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) ELM_ICON_LOOKUP_THEME_FDO;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return ELM_ICON_LOOKUP_THEME_FDO;
return wd->lookup_order;
}