diff --git a/legacy/elementary/doc/widgets/widget_preview_index.c b/legacy/elementary/doc/widgets/widget_preview_index.c index bf910edb00..3e655cecb5 100644 --- a/legacy/elementary/doc/widgets/widget_preview_index.c +++ b/legacy/elementary/doc/widgets/widget_preview_index.c @@ -33,9 +33,9 @@ for (i = 0; i < (sizeof(dict) / sizeof(dict[0])); i++) list_it = elm_list_item_append(o, dict[i], NULL, NULL, NULL, NULL); snprintf(buf, sizeof(buf), "%c", dict[i][0]); - elm_index_item_append(id, buf, list_it); + elm_index_item_append(id, buf, NULL, list_it); } -elm_index_active_set(id, EINA_TRUE); +elm_index_autohide_disabled_set(id, EINA_FALSE); #include "widget_preview_tmpl_foot.c" diff --git a/legacy/elementary/src/bin/test_index.c b/legacy/elementary/src/bin/test_index.c index 2f8e4d9456..e8f7acdf40 100644 --- a/legacy/elementary/src/bin/test_index.c +++ b/legacy/elementary/src/bin/test_index.c @@ -38,20 +38,20 @@ set_api_state(api_data *api) switch(api->state) { /* Put all api-changes under switch */ case INDEX_LEVEL_SET: /* 0 */ - elm_index_active_set(d->id, EINA_TRUE); + elm_index_autohide_disabled_set(d->id, EINA_TRUE); elm_index_item_level_set(d->id, (elm_index_item_level_get(d->id) ? 0 : 1)); break; case INDEX_ACTIVE_SET: /* 1 */ - elm_index_active_set(d->id, EINA_FALSE); + elm_index_autohide_disabled_set(d->id, EINA_FALSE); break; case INDEX_APPEND_RELATIVE: /* 2 */ - elm_index_item_append_relative(d->id, "W", d->item, elm_index_item_find(d->id, d->item)); + elm_index_item_insert_after(d->id, elm_index_item_find(d->id, d->item), "W", NULL, d->item); break; case INDEX_PREPEND: /* 3 */ - elm_index_item_prepend(d->id, "D", d->item); + elm_index_item_prepend(d->id, "D", NULL, d->item); break; case INDEX_ITEM_DEL: /* 4 */ @@ -136,6 +136,12 @@ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *e free(data); } +static void +id_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + printf("Current Index : %s\n", elm_index_item_letter_get((const Elm_Object_Item *)event_info)); +} + void test_index(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { @@ -199,7 +205,7 @@ test_index(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info char buf[32]; snprintf(buf, sizeof(buf), "%c", 'A' + ((j >> 4) & 0xf)); - elm_index_item_append(id, buf, glit); + elm_index_item_append(id, buf, id_cb, glit); if (*buf == 'G') /* Just init dt->item later used in API test */ api->dt.item = glit; @@ -209,7 +215,7 @@ test_index(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info evas_object_smart_callback_add(id, "delay,changed", _index_delay_changed_cb, NULL); evas_object_smart_callback_add(id, "changed", _index_changed_cb, NULL); evas_object_smart_callback_add(id, "selected", _index_selected_cb, NULL); - elm_index_item_go(id, 0); + elm_index_level_go(id, 0); evas_object_resize(win, 320, 480); evas_object_show(win); @@ -267,7 +273,7 @@ test_index2_it_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __U snprintf(letter, sizeof(letter), "%c", label[0]); list_it = elm_list_item_sorted_insert(gui->lst, label, NULL, NULL, NULL, NULL, test_index2_cmp); - elm_index_item_sorted_insert(gui->id, letter, list_it, test_index2_icmp, + elm_index_item_sorted_insert(gui->id, letter, NULL, list_it, test_index2_icmp, test_index2_cmp); elm_list_go(gui->lst); /* FIXME it's not showing the recently added item */ diff --git a/legacy/elementary/src/examples/index_example_01.c b/legacy/elementary/src/examples/index_example_01.c index 4c669fef55..41d7bbb82b 100644 --- a/legacy/elementary/src/examples/index_example_01.c +++ b/legacy/elementary/src/examples/index_example_01.c @@ -161,7 +161,7 @@ elm_main(int argc __UNUSED__, /* indexing by first letters */ snprintf(buf, sizeof(buf), "%c", curr); - elm_index_item_append(d.index, buf, lit); + elm_index_item_append(d.index, buf, NULL, lit); index_it = elm_index_item_find(d.index, lit); elm_object_item_del_cb_set(index_it, _index_item_del); diff --git a/legacy/elementary/src/examples/index_example_02.c b/legacy/elementary/src/examples/index_example_02.c index c3c537f230..a056746c22 100644 --- a/legacy/elementary/src/examples/index_example_02.c +++ b/legacy/elementary/src/examples/index_example_02.c @@ -138,7 +138,7 @@ elm_main(int argc __UNUSED__, /* indexing by first letters */ snprintf(buf, sizeof(buf), "%c", items[i][0]); - elm_index_item_sorted_insert(index, buf, gg_it, _index_icmp, NULL); + elm_index_item_sorted_insert(index, buf, NULL, gg_it, _index_icmp, NULL); } evas_object_smart_callback_add(index, "delay,changed", _index_changed, NULL); diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index 9da5102f44..3f9b9c7c70 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -210,13 +210,13 @@ EAPI extern Elm_Version *elm_version; // Woohyun Jung #include // XXX: needs to change one API #include // XXX: some API names are ambiguous -#include // XXX: all elm_index_item_xxx functions should be modifield -#include // XXX: some APIs should be checked again for deprecating +#include // OK +#include // OK #include // OK #include // OK #include // OK #include -#include // XXX: one API's name is ambiguous +#include // OK #include // OK #include // OK #include // OK diff --git a/legacy/elementary/src/lib/elm_deprecated.h b/legacy/elementary/src/lib/elm_deprecated.h index adf2631d32..f24c19af15 100644 --- a/legacy/elementary/src/lib/elm_deprecated.h +++ b/legacy/elementary/src/lib/elm_deprecated.h @@ -4654,6 +4654,93 @@ EINA_DEPRECATED EAPI void elm_object_cursor_engine_only_set(Evas_Object * */ EINA_DEPRECATED EAPI Eina_Bool elm_object_cursor_engine_only_get(const Evas_Object *obj); +/** + * Go to a given items level on a index widget + * + * @param obj The index object + * @param level The index level (one of @c 0 or @c 1) + * + * @deprecated please use "elm_index_level_go" instead. + * @ingroup Index + */ +EINA_DEPRECATED EAPI void elm_index_item_go(Evas_Object *obj, int level); + +/** + * Enable or disable auto hiding feature for a given index widget. + * + * @param obj The index object + * @param active @c EINA_TRUE to enable auto hiding, @c EINA_FALSE to disable + * + * @see elm_index_active_get() + * + * @deprecated please use "elm_index_autohide_disabled_set" instead. + * @ingroup Index + */ +EINA_DEPRECATED EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active); + +/** + * Get whether auto hiding feature is enabled or not for a given index widget. + * + * @param obj The index object + * @return @c EINA_TRUE, if auto hiding is enabled, @c EINA_FALSE otherwise + * + * @see elm_index_active_set() for more details + * + * @deprecated please use "elm_index_autohide_disabled_get" instead. + * @ingroup Index + */ +EINA_DEPRECATED EAPI Eina_Bool elm_index_active_get(const Evas_Object *obj); + +/** + * Append a new item, on a given index widget, after the item + * having @p relative as data. + * + * @param obj The index object. + * @param letter Letter under which the item should be indexed + * @param item The item data to set for the index's item + * @param relative The index item to be the predecessor of this new one + * @return A handle to the item added or @c NULL, on errors + * + * Despite the most common usage of the @p letter argument is for + * single char strings, one could use arbitrary strings as index + * entries. + * + * @c item will be the pointer returned back on @c "changed", @c + * "delay,changed" and @c "selected" smart events. + * + * @note If @p relative is @c NULL this function will behave as + * elm_index_item_append(). + * + * @deprecated please use "elm_index_item_insert_after" instead. + * @ingroup Index + */ +EAPI Elm_Object_Item *elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative); + +/** + * Prepend a new item, on a given index widget, after the item + * having @p relative as data. + * + * @param obj The index object. + * @param letter Letter under which the item should be indexed + * @param item The item data to set for the index's item + * @param relative The index item to be the successor of this new one + * @return A handle to the item added or @c NULL, on errors + * + * Despite the most common usage of the @p letter argument is for + * single char strings, one could use arbitrary strings as index + * entries. + * + * @c item will be the pointer returned back on @c "changed", @c + * "delay,changed" and @c "selected" smart events. + * + * @note If @p relative is @c NULL this function will behave as + * elm_index_item_prepend(). + * + * @deprecated please use "elm_index_item_insert_before" instead. + * @ingroup Index + */ +EAPI Elm_Object_Item *elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative); + /** * @} */ diff --git a/legacy/elementary/src/lib/elm_index.c b/legacy/elementary/src/lib/elm_index.c index 9b621b5830..db07ee59ea 100644 --- a/legacy/elementary/src/lib/elm_index.c +++ b/legacy/elementary/src/lib/elm_index.c @@ -16,7 +16,7 @@ struct _Widget_Data Ecore_Timer *delay; Eina_Bool level_active[2]; Eina_Bool horizontal : 1; - Eina_Bool active : 1; + Eina_Bool autohide_disabled : 1; Eina_Bool down : 1; Eina_Bool indicator_disabled : 1; }; @@ -26,6 +26,7 @@ struct _Elm_Index_Item ELM_WIDGET_ITEM; const char *letter; int level; + Evas_Smart_Cb func; Eina_Bool selected : 1; }; @@ -176,7 +177,7 @@ _theme_hook(Evas_Object *obj) edje_object_scale_set(wd->base, elm_widget_scale_get(obj) * _elm_config->scale); _sizing_eval(obj); _index_box_auto_fill(obj, wd->bx[0], 0); - if (wd->active) + if (wd->autohide_disabled) if (wd->level == 1) _index_box_auto_fill(obj, wd->bx[1], 1); } @@ -203,7 +204,7 @@ _item_del_pre_hook(Elm_Object_Item *it) } static Elm_Index_Item * -_item_new(Evas_Object *obj, const char *letter, const void *item) +_item_new(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data) { Widget_Data *wd = elm_widget_data_get(obj); Elm_Index_Item *it; @@ -212,20 +213,21 @@ _item_new(Evas_Object *obj, const char *letter, const void *item) if (!it) return NULL; elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook); if (letter) it->letter = eina_stringshare_add(letter); - it->base.data = item; + it->func = func; + it->base.data = data; it->level = wd->level; return it; } static Elm_Index_Item * -_item_find(Evas_Object *obj, const void *item) +_item_find(Evas_Object *obj, const void *data) { Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; Elm_Index_Item *it; if (!wd) return NULL; EINA_LIST_FOREACH(wd->items, l, it) - if (it->base.data == item) return it; + if (it->base.data == data) return it; return NULL; } @@ -458,7 +460,12 @@ _mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *eve evas_object_geometry_get(wd->base, &x, &y, &w, NULL); wd->dx = ev->canvas.x - x; wd->dy = ev->canvas.y - y; - elm_index_active_set(data, 1); + if (!wd->autohide_disabled) + { + _index_box_clear(data, wd->bx[1], 1); + _index_box_auto_fill(data, wd->bx[0], 0); + edje_object_signal_emit(wd->base, "elm,state,active", "elm"); + } _sel_eval(data, ev->canvas.x, ev->canvas.y); edje_object_part_drag_value_set(wd->base, "elm.dragable.pointer", (!edje_object_mirrored_get(wd->base)) ? wd->dx : (wd->dx - w), wd->dy); @@ -472,12 +479,20 @@ _mouse_up(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event Widget_Data *wd = elm_widget_data_get(data); Evas_Event_Mouse_Up *ev = event_info; Elm_Object_Item *item; + Elm_Index_Item *id_item; if (!wd) return; if (ev->button != 1) return; wd->down = 0; item = elm_index_item_selected_get(data, wd->level); - if (item) evas_object_smart_callback_call(data, SIG_SELECTED, item); - elm_index_active_set(data, 0); + if (item) + { + evas_object_smart_callback_call(data, SIG_SELECTED, item); + id_item = (Elm_Index_Item *) item; + if (id_item->func) + id_item->func((void *)id_item->base.data, WIDGET(id_item), id_item); + } + if (!wd->autohide_disabled) + edje_object_signal_emit(wd->base, "elm,state,inactive", "elm"); edje_object_signal_emit(wd->base, "elm,state,level,0", "elm"); if (wd->items && !wd->indicator_disabled) edje_object_signal_emit(wd->base, "elm,indicator,state,inactive", "elm"); @@ -552,6 +567,7 @@ elm_index_add(Evas_Object *parent) wd->indicator_disabled = EINA_FALSE; wd->horizontal = EINA_FALSE; + wd->autohide_disabled = EINA_FALSE; wd->base = edje_object_add(e); _elm_theme_object_set(obj, wd->base, "index", "base/vertical", "default"); @@ -602,16 +618,29 @@ elm_index_add(Evas_Object *parent) return obj; } -EAPI void +EINA_DEPRECATED EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active) +{ + elm_index_autohide_disabled_set(obj, !active); +} + +EINA_DEPRECATED EAPI Eina_Bool +elm_index_active_get(const Evas_Object *obj) +{ + return !elm_index_autohide_disabled_get(obj); +} + +EAPI void +elm_index_autohide_disabled_set(Evas_Object *obj, Eina_Bool disabled) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; - if (wd->active == active) return; - wd->active = active; + disabled = !!disabled; + if (wd->autohide_disabled == disabled) return; + wd->autohide_disabled = disabled; wd->level = 0; - if (wd->active) + if (wd->autohide_disabled) { _index_box_clear(obj, wd->bx[1], 1); _index_box_auto_fill(obj, wd->bx[0], 0); @@ -622,12 +651,12 @@ elm_index_active_set(Evas_Object *obj, Eina_Bool active) } EAPI Eina_Bool -elm_index_active_get(const Evas_Object *obj) +elm_index_autohide_disabled_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return EINA_FALSE; - return wd->active; + return wd->autohide_disabled; } EAPI void @@ -666,13 +695,13 @@ elm_index_item_selected_get(const Evas_Object *obj, int level) } EAPI Elm_Object_Item * -elm_index_item_append(Evas_Object *obj, const char *letter, const void *item) +elm_index_item_append(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); Elm_Index_Item *it; if (!wd) return NULL; - it = _item_new(obj, letter, item); + it = _item_new(obj, letter, func, data); if (!it) return NULL; wd->items = eina_list_append(wd->items, it); _index_box_clear(obj, wd->bx[wd->level], wd->level); @@ -680,55 +709,64 @@ elm_index_item_append(Evas_Object *obj, const char *letter, const void *item) } EAPI Elm_Object_Item * -elm_index_item_prepend(Evas_Object *obj, const char *letter, const void *item) +elm_index_item_prepend(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); Elm_Index_Item *it; if (!wd) return NULL; - it = _item_new(obj, letter, item); + it = _item_new(obj, letter, func, data); if (!it) return NULL; wd->items = eina_list_prepend(wd->items, it); _index_box_clear(obj, wd->bx[wd->level], wd->level); return (Elm_Object_Item *) it; } -EAPI Elm_Object_Item * +EINA_DEPRECATED EAPI Elm_Object_Item * elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative) { - ELM_CHECK_WIDTYPE(obj, widtype) NULL; - Widget_Data *wd = elm_widget_data_get(obj); - Elm_Index_Item *it; - if (!wd) return NULL; - if (!relative) - return elm_index_item_append(obj, letter, item); - it = _item_new(obj, letter, item); - if (!it) return NULL; - wd->items = eina_list_append_relative(wd->items, it, relative); - _index_box_clear(obj, wd->bx[wd->level], wd->level); - return (Elm_Object_Item *) it; + return elm_index_item_insert_after(obj, (Elm_Object_Item *) relative, letter, NULL, item); +} +EINA_DEPRECATED EAPI Elm_Object_Item * +elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative) +{ + return elm_index_item_insert_before(obj, (Elm_Object_Item *) relative, letter, NULL, item); } EAPI Elm_Object_Item * -elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative) +elm_index_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *letter, Evas_Smart_Cb func, const void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); Elm_Index_Item *it; if (!wd) return NULL; - if (!relative) - return elm_index_item_prepend(obj, letter, item); - it = _item_new(obj, letter, item); + if (!after) return elm_index_item_append(obj, letter, func, data); + it = _item_new(obj, letter, func, data); if (!it) return NULL; - wd->items = eina_list_prepend_relative(wd->items, it, relative); + wd->items = eina_list_append_relative(wd->items, it, after); _index_box_clear(obj, wd->bx[wd->level], wd->level); return (Elm_Object_Item *) it; } EAPI Elm_Object_Item * -elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func) +elm_index_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *letter, Evas_Smart_Cb func, const void *data) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + Elm_Index_Item *it; + if (!wd) return NULL; + if (!before) return elm_index_item_prepend(obj, letter, func, data); + it = _item_new(obj, letter, func, data); + if (!it) return NULL; + wd->items = eina_list_prepend_relative(wd->items, it, before); + _index_box_clear(obj, wd->bx[wd->level], wd->level); + return (Elm_Object_Item *) it; +} + +EAPI Elm_Object_Item * +elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); @@ -738,9 +776,9 @@ elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *i if (!wd) return NULL; if (!(wd->items)) - return elm_index_item_append(obj, letter, item); + return elm_index_item_append(obj, letter, func, data); - it = _item_new(obj, letter, item); + it = _item_new(obj, letter, func, data); if (!it) return NULL; lnear = eina_list_search_sorted_near_list(wd->items, cmp_func, it, &cmp); @@ -762,9 +800,7 @@ elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *i elm_widget_item_free(it); } } - _index_box_clear(obj, wd->bx[wd->level], wd->level); - return (Elm_Object_Item *) it; } @@ -775,12 +811,12 @@ elm_index_item_del(Evas_Object *obj __UNUSED__, Elm_Object_Item *it) } EAPI Elm_Object_Item * -elm_index_item_find(Evas_Object *obj, const void *item) +elm_index_item_find(Evas_Object *obj, const void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return NULL; - return (Elm_Object_Item *) _item_find(obj, item); + return (Elm_Object_Item *) _item_find(obj, data); } EAPI void @@ -804,8 +840,14 @@ elm_index_item_clear(Evas_Object *obj) } } -EAPI void +EINA_DEPRECATED EAPI void elm_index_item_go(Evas_Object *obj, int level __UNUSED__) +{ + elm_index_level_go(obj, level); +} + +EAPI void +elm_index_level_go(Evas_Object *obj, int level __UNUSED__) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); diff --git a/legacy/elementary/src/lib/elm_index.h b/legacy/elementary/src/lib/elm_index.h index b715b6ff1c..456e64699f 100644 --- a/legacy/elementary/src/lib/elm_index.h +++ b/legacy/elementary/src/lib/elm_index.h @@ -66,25 +66,25 @@ EAPI Evas_Object *elm_index_add(Evas_Object *parent); * Enable or disable auto hiding feature for a given index widget. * * @param obj The index object - * @param active @c EINA_TRUE to enable auto hiding, @c EINA_FALSE to disable + * @param disabled @c EINA_TRUE to disable auto hiding, @c EINA_FALSE to enable * - * @see elm_index_active_get() + * @see elm_index_autohide_disabled_get() * * @ingroup Index */ -EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active); +EAPI void elm_index_autohide_disabled_set(Evas_Object *obj, Eina_Bool disabled); /** * Get whether auto hiding feature is enabled or not for a given index widget. * * @param obj The index object - * @return @c EINA_TRUE, if auto hiding is enabled, @c EINA_FALSE otherwise + * @return @c EINA_TRUE, if auto hiding is disabled, @c EINA_FALSE otherwise * * @see elm_index_active_set() for more details * * @ingroup Index */ -EAPI Eina_Bool elm_index_active_get(const Evas_Object *obj); +EAPI Eina_Bool elm_index_autohide_disabled_get(const Evas_Object *obj); /** * Set the items level for a given index widget. @@ -118,7 +118,6 @@ EAPI int elm_index_item_level_get(const Evas_Object *obj); * * @ingroup Index */ -//XXX: elm_index_selected_item_get. EAPI Elm_Object_Item *elm_index_item_selected_get(const Evas_Object *obj, int level); /** @@ -126,7 +125,8 @@ EAPI Elm_Object_Item *elm_index_item_selected_get(const Evas_Object *obj, i * * @param obj The index object. * @param letter Letter under which the item should be indexed - * @param item The item data to set for the index's item + * @param func The function to call when the item is selected. + * @param data The item data to set for the index's item * @return A handle to the item added or @c NULL, on errors * * Despite the most common usage of the @p letter argument is for @@ -138,14 +138,15 @@ EAPI Elm_Object_Item *elm_index_item_selected_get(const Evas_Object *obj, i * * @ingroup Index */ -EAPI Elm_Object_Item *elm_index_item_append(Evas_Object *obj, const char *letter, const void *item); +EAPI Elm_Object_Item *elm_index_item_append(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data); /** * Prepend a new item on a given index widget. * * @param obj The index object. * @param letter Letter under which the item should be indexed - * @param item The item data to set for the index's item + * @param func The function to call when the item is selected. + * @param data The item data to set for the index's item * @return A handle to the item added or @c NULL, on errors * * Despite the most common usage of the @p letter argument is for @@ -157,16 +158,16 @@ EAPI Elm_Object_Item *elm_index_item_append(Evas_Object *obj, const char *l * * @ingroup Index */ -EAPI Elm_Object_Item *elm_index_item_prepend(Evas_Object *obj, const char *letter, const void *item); +EAPI Elm_Object_Item *elm_index_item_prepend(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data); /** - * Append a new item, on a given index widget, after the item - * having @p relative as data. + * Insert a new item into the index object after item @p after. * * @param obj The index object. + * @param after The index item to insert after. * @param letter Letter under which the item should be indexed - * @param item The item data to set for the index's item - * @param relative The index item to be the predecessor of this new one + * @param func The function to call when the item is clicked. + * @param data The item data to set for the index's item * @return A handle to the item added or @c NULL, on errors * * Despite the most common usage of the @p letter argument is for @@ -181,16 +182,16 @@ EAPI Elm_Object_Item *elm_index_item_prepend(Evas_Object *obj, const char * * * @ingroup Index */ -EAPI Elm_Object_Item *elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative); +EAPI Elm_Object_Item *elm_index_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *letter, Evas_Smart_Cb func, const void *data); /** - * Prepend a new item, on a given index widget, after the item - * having @p relative as data. + * Insert a new item into the index object before item @p before. * * @param obj The index object. + * @param before The index item to insert after. * @param letter Letter under which the item should be indexed - * @param item The item data to set for the index's item - * @param relative The index item to be the successor of this new one + * @param func The function to call when the item is clicked. + * @param data The item data to set for the index's item * @return A handle to the item added or @c NULL, on errors * * Despite the most common usage of the @p letter argument is for @@ -205,7 +206,7 @@ EAPI Elm_Object_Item *elm_index_item_append_relative(Evas_Object *obj, cons * * @ingroup Index */ -EAPI Elm_Object_Item *elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative); +EAPI Elm_Object_Item *elm_index_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *letter, Evas_Smart_Cb func, const void *data); /** * Insert a new item into the given index widget, using @p cmp_func @@ -213,7 +214,8 @@ EAPI Elm_Object_Item *elm_index_item_prepend_relative(Evas_Object *obj, con * * @param obj The index object. * @param letter Letter under which the item should be indexed - * @param item The item data to set for the index's item + * @param func The function to call when the item is clicked. + * @param data The item data to set for the index's item * @param cmp_func The comparing function to be used to sort index * items by #index item handles * @param cmp_data_func A @b fallback function to be called for the @@ -239,19 +241,18 @@ EAPI Elm_Object_Item *elm_index_item_prepend_relative(Evas_Object *obj, con * * @ingroup Index */ -EAPI Elm_Object_Item *elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func); +EAPI Elm_Object_Item *elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func); /** * Find a given index widget's item, using item data. * * @param obj The index object - * @param item The item data pointed to by the desired index item + * @param data The item data pointed to by the desired index item * @return The index item handle, if found, or @c NULL otherwise * * @ingroup Index */ -//XXX: After changing above APIs, this should be deprecated. -EAPI Elm_Object_Item *elm_index_item_find(Evas_Object *obj, const void *item); +EAPI Elm_Object_Item *elm_index_item_find(Evas_Object *obj, const void *data); /** * Removes @b all items from a given index widget. @@ -273,8 +274,7 @@ EAPI void elm_index_item_clear(Evas_Object *obj); * * @ingroup Index */ -//XXX: how about elm_index_level_go ?? -EAPI void elm_index_item_go(Evas_Object *obj, int level); +EAPI void elm_index_level_go(Evas_Object *obj, int level); /** * Get the letter (string) set on a given index widget item. @@ -310,7 +310,7 @@ EAPI void elm_index_indicator_disabled_set(Evas_Object *obj, Ein * * @ingroup Index */ -EAPI Eina_Bool elm_index_indicator_disabled_get(const Evas_Object *obj); +EAPI Eina_Bool elm_index_indicator_disabled_get(const Evas_Object *obj); /** * @}