elementary/menu - applied elm_object_item common APIs.

@deprecated 
elm_menu_item_label_set
elm_menu_item_label_get
elm_menu_item_object_content_set
elm_menu_item_object_content_get
elm_menu_item_disabled_set
elm_menu_item_disabled_get
elm_menu_item_data_set
elm_menu_item_data_get




SVN revision: 65597
This commit is contained in:
ChunEon Park 2011-11-25 11:52:35 +00:00
parent 468985fa84
commit d263480f83
4 changed files with 155 additions and 81 deletions

View File

@ -24,13 +24,13 @@ _populate_4(Elm_Object_Item *menu_it)
elm_menu_item_separator_add(menu, menu_it);
menu_it2 = elm_menu_item_add(menu, menu_it, "go-last", "Disabled item", NULL,
NULL);
elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
elm_object_item_disabled_set(menu_it2, EINA_TRUE);
menu_it2 = elm_menu_item_add(menu, menu_it, "go-next", "Disabled item", NULL,
NULL);
elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
elm_object_item_disabled_set(menu_it2, EINA_TRUE);
menu_it2 = elm_menu_item_add(menu, menu_it, "go-up", "Disabled item", NULL,
NULL);
elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
elm_object_item_disabled_set(menu_it2, EINA_TRUE);
}
static void
@ -44,7 +44,7 @@ _populate_3(Elm_Object_Item *menu_it)
elm_menu_item_separator_add(menu, menu_it);
menu_it2 = elm_menu_item_add(menu, menu_it, "media-playback-stop",
"Disabled item", NULL, NULL);
elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
elm_object_item_disabled_set(menu_it2, EINA_TRUE);
}
static void
@ -71,7 +71,7 @@ _populate_2(Elm_Object_Item *menu_it)
menu_it3 = elm_menu_item_add(menu, menu_it, "system-run", "Disabled item",
NULL, NULL);
elm_menu_item_disabled_set(menu_it3, EINA_TRUE);
elm_object_item_disabled_set(menu_it3, EINA_TRUE);
_populate_4(menu_it2);
}

View File

@ -59,7 +59,7 @@ elm_main(int argc, char **argv)
elm_menu_item_add(menu, menu_it, "window-new", "sub menu", NULL, NULL);
menu_it = elm_menu_item_add(menu, NULL, NULL, "third item", NULL, NULL);
elm_menu_item_disabled_set(menu_it, EINA_TRUE);
elm_object_item_disabled_set(menu_it, EINA_TRUE);
evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _show, menu);
evas_object_show(menu);

View File

@ -15973,8 +15973,13 @@ extern "C" {
*
* Signals that you can add callbacks for are:
* @li "clicked" - the user clicked the empty space in the menu to dismiss.
* event_info is NULL.
*
* Default contents parts of the menu items that you can use for are:
* @li "default" - A main content of the menu item
*
* Default text parts of the menu items that you can use for are:
* @li "default" - label in the menu item
*
* @see @ref tutorial_menu
* @{
*/
@ -16033,10 +16038,11 @@ extern "C" {
/**
* @brief Get the Evas_Object of an Elm_Menu_Item
*
* @param item The menu item object.
* @param it The menu item object.
* @return The edje object containing the swallowed content
*
* @warning Don't manipulate this object!
*
*/
EAPI Evas_Object *elm_menu_item_object_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
@ -16073,15 +16079,18 @@ extern "C" {
*
* @warning Don't use this funcion on items created with
* elm_menu_item_add_object() or elm_menu_item_separator_add().
*
* @deprecated Use elm_object_item_text_set() instead
*/
EAPI void elm_menu_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
EINA_DEPRECATED EAPI void elm_menu_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
/**
* @brief Get the label of a menu item
*
* @param it The menu item object.
* @return The label of @p item
* @deprecated Use elm_object_item_text_get() instead
*/
EAPI const char *elm_menu_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
EINA_DEPRECATED EAPI const char *elm_menu_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief Set the icon of a menu item to the standard icon with name @p icon
*
@ -16109,8 +16118,10 @@ extern "C" {
*
* Use this function to change the object swallowed by a menu item, deleting
* any previously swallowed object.
*
* @deprecated Use elm_object_item_content_set() instead
*/
EAPI Eina_Bool elm_menu_item_object_content_set(Elm_Object_Item *it, Evas_Object *obj) EINA_ARG_NONNULL(1);
EINA_DEPRECATED EAPI Eina_Bool elm_menu_item_object_content_set(Elm_Object_Item *it, Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Get the content object of a menu item
*
@ -16121,8 +16132,10 @@ extern "C" {
* icon object.
*
* @see elm_menu_item_object_content_set()
*
* @deprecated Use elm_object_item_content_get() instead
*/
EAPI Evas_Object *elm_menu_item_object_content_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
EINA_DEPRECATED EAPI Evas_Object *elm_menu_item_object_content_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief Set the selected state of @p item.
*
@ -16144,8 +16157,9 @@ extern "C" {
*
* @param it The menu item object.
* @param disabled The enabled/disabled state of the item
* @deprecated Use elm_object_item_disabled_set() instead
*/
EAPI void elm_menu_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
EINA_DEPRECATED EAPI void elm_menu_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
/**
* @brief Get the disabled state of @p item.
*
@ -16153,8 +16167,9 @@ extern "C" {
* @return The enabled/disabled state of the item
*
* @see elm_menu_item_disabled_set()
* @deprecated Use elm_object_item_disabled_get() instead
*/
EAPI Eina_Bool elm_menu_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
EINA_DEPRECATED EAPI Eina_Bool elm_menu_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief Add a separator item to menu @p obj under @p parent.
*
@ -16199,15 +16214,19 @@ extern "C" {
* @return The data associated with @p item or NULL if none was set.
*
* This is the data set with elm_menu_add() or elm_menu_item_data_set().
*
* @deprecated Use elm_object_item_data_get() instead
*/
EAPI void *elm_menu_item_data_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
EINA_DEPRECATED EAPI void *elm_menu_item_data_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief Sets the data to be associated with menu item @p item.
*
* @param it The item
* @param data The data to be associated with @p item
*
* @deprecated Use elm_object_item_data_set() instead
*/
EAPI void elm_menu_item_data_set(Elm_Object_Item *it, const void *data) EINA_ARG_NONNULL(1);
EINA_DEPRECATED EAPI void elm_menu_item_data_set(Elm_Object_Item *it, const void *data) EINA_ARG_NONNULL(1);
/**
* @brief Returns a list of @p item's subitems.

View File

@ -21,7 +21,6 @@ struct _Elm_Menu_Item
} submenu;
Eina_Bool separator : 1;
Eina_Bool disabled : 1;
Eina_Bool selected : 1;
Eina_Bool object_item : 1;
};
@ -36,6 +35,7 @@ struct _Widget_Data
static const char *widtype = NULL;
static void _del_hook(Evas_Object *obj);
static void _theme_hook(Evas_Object *obj);
static void _item_disable_set_hook(Elm_Object_Item *it);
static void _sizing_eval(Evas_Object *obj);
static void _submenu_sizing_eval(Elm_Menu_Item *parent);
static void _item_sizing_eval(Elm_Menu_Item *item);
@ -117,8 +117,8 @@ _theme_hook(Evas_Object *obj)
_elm_theme_object_set
(obj, VIEW(item), "menu", "item_with_submenu",
elm_widget_style_get(obj));
elm_menu_item_label_set((Elm_Object_Item *) item,
item->label);
elm_object_item_text_set((Elm_Object_Item *) item,
item->label);
elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
item->icon_str);
}
@ -126,18 +126,12 @@ _theme_hook(Evas_Object *obj)
{
_elm_theme_object_set(obj, VIEW(item), "menu", "item",
elm_widget_style_get(obj));
elm_menu_item_label_set((Elm_Object_Item *) item,
item->label);
elm_object_item_text_set((Elm_Object_Item *) item,
item->label);
elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
item->icon_str);
}
if (item->disabled)
edje_object_signal_emit
(VIEW(item), "elm,state,disabled", "elm");
else
edje_object_signal_emit
(VIEW(item), "elm,state,enabled", "elm");
edje_object_message_signal_process(VIEW(item));
_item_disable_set_hook((Elm_Object_Item *) item);
edje_object_scale_set(VIEW(item), elm_widget_scale_get(obj) *
_elm_config->scale);
}
@ -145,6 +139,88 @@ _theme_hook(Evas_Object *obj)
_sizing_eval(obj);
}
static void
_item_text_set_hook(Elm_Object_Item *it,
const char *part,
const char *label)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *item;
if (part && strcmp(part, "default")) return;
item = (Elm_Menu_Item *) it;
eina_stringshare_replace(&item->label, label);
if (label)
edje_object_signal_emit(VIEW(item), "elm,state,text,visible", "elm");
else
edje_object_signal_emit(VIEW(item), "elm,state,text,hidden", "elm");
edje_object_message_signal_process(VIEW(item));
edje_object_part_text_set(VIEW(item), "elm.text", label);
_sizing_eval(WIDGET(item));
}
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
if (part && strcmp(part, "default")) return NULL;
return ((Elm_Menu_Item *) it)->label;
}
static void
_item_content_set_hook(Elm_Object_Item *it,
const char *part,
Evas_Object *content)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *item;
if (part && strcmp(part, "default")) return;
item = (Elm_Menu_Item *) it;
if (item->content)
{
elm_widget_sub_object_del(WIDGET(item), item->content);
evas_object_del(item->content);
}
item->content = content;
elm_widget_sub_object_add(WIDGET(item), item->content);
edje_object_part_swallow(VIEW(item), "elm.swallow.content", item->content);
_sizing_eval(WIDGET(item));
}
static Evas_Object *
_item_content_get_hook(const Elm_Object_Item *it, const char *part)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
if (part && strcmp(part, "default")) return NULL;
return ((Elm_Menu_Item *) it)->content;
}
static void
_item_disable_set_hook(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (elm_widget_item_disabled_get(item))
{
edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
if (item->submenu.open) _submenu_hide(item);
}
else
edje_object_signal_emit(VIEW(item), "elm,state,enabled", "elm");
edje_object_message_signal_process(VIEW(item));
}
static void
_sizing_eval(Evas_Object *obj)
{
@ -426,8 +502,8 @@ _item_submenu_obj_create(Elm_Menu_Item *item)
edje_object_mirrored_set(VIEW(item), elm_widget_mirrored_get(WIDGET(item)));
_elm_theme_object_set(WIDGET(item), VIEW(item), "menu", "item_with_submenu", elm_widget_style_get(WIDGET(item)));
elm_menu_item_label_set((Elm_Object_Item *) item,
item->label);
elm_object_item_text_set((Elm_Object_Item *) item,
item->label);
if (item->icon_str)
elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
item->icon_str);
@ -556,7 +632,6 @@ elm_menu_close(Evas_Object *obj)
EAPI Evas_Object *
elm_menu_item_object_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return VIEW(((Elm_Menu_Item *) it));
}
@ -576,7 +651,8 @@ _item_clone(Evas_Object *obj, Elm_Menu_Item *parent, Elm_Menu_Item *item)
item->label,
item->func,
item->base.data);
elm_menu_item_disabled_set(new_item, item->disabled);
elm_object_item_disabled_set(new_item,
elm_widget_item_disabled_get(item));
EINA_LIST_FOREACH(item->submenu.items, iter, subitem)
_item_clone(obj, (Elm_Menu_Item *) new_item, subitem);
@ -633,13 +709,20 @@ elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, c
evas_object_del(icon_obj);
return NULL;
}
elm_widget_item_disable_set_hook_set(subitem, _item_disable_set_hook);
elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
elm_widget_item_content_set_hook_set(subitem, _item_content_set_hook);
elm_widget_item_content_get_hook_set(subitem, _item_content_get_hook);
subitem->base.data = data;
subitem->func = func;
subitem->parent = (Elm_Menu_Item *) parent;
subitem->content = icon_obj;
_item_obj_create(subitem);
elm_menu_item_label_set((Elm_Object_Item *) subitem, label);
elm_object_item_text_set((Elm_Object_Item *) subitem, label);
elm_widget_sub_object_add(WIDGET(subitem), subitem->content);
edje_object_part_swallow(VIEW(subitem), "elm.swallow.content", subitem->content);
@ -662,6 +745,12 @@ elm_menu_item_add_object(Evas_Object *obj, Elm_Object_Item *parent, Evas_Object
subitem = elm_widget_item_new(obj, Elm_Menu_Item);
if (!subitem) return NULL;
elm_widget_item_disable_set_hook_set(subitem, _item_disable_set_hook);
elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
elm_widget_item_content_set_hook_set(subitem, _item_content_set_hook);
elm_widget_item_content_get_hook_set(subitem, _item_content_get_hook);
subitem->base.data = data;
subitem->func = func;
subitem->parent = (Elm_Menu_Item *) parent;
@ -689,26 +778,13 @@ elm_menu_item_index_get(const Elm_Object_Item *it)
EAPI void
elm_menu_item_label_set(Elm_Object_Item *it, const char *label)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
eina_stringshare_replace(&item->label, label);
if (label)
edje_object_signal_emit(VIEW(item), "elm,state,text,visible", "elm");
else
edje_object_signal_emit(VIEW(item), "elm,state,text,hidden", "elm");
edje_object_message_signal_process(VIEW(item));
edje_object_part_text_set(VIEW(item), "elm.text", label);
_sizing_eval(WIDGET(item));
_item_text_set_hook(it, NULL, label);
}
EAPI const char *
elm_menu_item_label_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return ((Elm_Menu_Item *) it)->label;
return _item_text_get_hook(it, NULL);
}
EAPI void
@ -737,26 +813,13 @@ elm_menu_item_object_icon_name_set(Elm_Object_Item *it, const char *icon)
EAPI void
elm_menu_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (disabled == item->disabled) return;
item->disabled = !!disabled;
if (disabled)
{
edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
if (item->submenu.open) _submenu_hide(item);
}
else
edje_object_signal_emit(VIEW(item), "elm,state,enabled", "elm");
edje_object_message_signal_process(VIEW(item));
elm_object_item_disabled_set(it, disabled);
}
EAPI Eina_Bool
elm_menu_item_disabled_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
return ((Elm_Menu_Item *) it)->disabled;
return elm_object_item_disabled_get(it);
}
EAPI Elm_Object_Item *
@ -776,8 +839,14 @@ elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent)
subitem = elm_widget_item_new(obj, Elm_Menu_Item);
if (!subitem) return NULL;
WIDGET(subitem) = obj;
subitem->separator = 1;
elm_widget_item_disable_set_hook_set(subitem, _item_disable_set_hook);
elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
elm_widget_item_content_set_hook_set(subitem, _item_content_set_hook);
elm_widget_item_content_get_hook_set(subitem, _item_content_get_hook);
subitem->separator = EINA_TRUE;
_item_separator_obj_create(subitem);
if (!p_item)
{
@ -798,28 +867,14 @@ elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent)
EAPI Eina_Bool
elm_menu_item_object_content_set(Elm_Object_Item *it, Evas_Object *obj)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (item->content)
{
elm_widget_sub_object_del(WIDGET(item), item->content);
evas_object_del(item->content);
}
item->content = obj;
elm_widget_sub_object_add(WIDGET(item), item->content);
edje_object_part_swallow(VIEW(item), "elm.swallow.content", item->content);
_sizing_eval(WIDGET(item));
_item_content_set_hook(it, NULL, obj);
return EINA_TRUE;
}
EAPI Evas_Object *
elm_menu_item_object_content_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return ((Elm_Menu_Item *) it)->content;
return _item_content_get_hook(it, NULL);
}
EAPI const char *