Change toolbar API for consistency with other widgets

BIG FAT WARNING: lots of changes on toolbar API

Trying to get a lib with easy to use API, I'm changing toolbar API
to be consistent with genlist / gengrid widgets and to be more concise.

Functions select_next, select_first, select_last, unselect, unselect_all
get all are gone.
You can do this calling a combination of the others functions.

This commit changes toolbar to use inlist, and previous items can be
get.

So now we have:
Elm_Toolbar_Item *elm_toolbar_first_item_get(const Evas_Object *obj)
Elm_Toolbar_Item *elm_toolbar_last_item_get(const Evas_Object *obj)
Elm_Toolbar_Item *elm_toolbar_item_next_get(const Elm_Toolbar_Item *it)
Elm_Toolbar_Item *elm_toolbar_item_prev_get(const Elm_Toolbar_Item *it)
Eina_Bool elm_toolbar_item_selected_get(const Elm_Toolbar_Item)
void elm_toolbar_item_selected_set(Elm_Toolbar_Item *item, Eina_Bool selected)
Elm_Toolbar_Item *elm_toolbar_selected_item_get(const Evas_Object *obj)

With these functions you can iterate over the items list getting /
selecting the item you need.

Another big change is that elm_toolbar_item_add is gone. Now you can
insert items in the position you want, with the functions append,
prepend, insert after, insert before (a relative item).

If you don't like any changes or have a case of use for something
that should be different, please ping me.

At last, includes ELM_TOOLBAR_ITEM_CHECK_OR_RETURN on EAPI that
receives items.



SVN revision: 53894
This commit is contained in:
Bruno Dilly 2010-10-26 10:29:24 +00:00
parent 652cb23af2
commit 01d04e55e0
8 changed files with 466 additions and 426 deletions

View File

@ -949,20 +949,20 @@ _status_config_full(Evas_Object *win, Evas_Object *bx0)
evas_object_size_hint_weight_set(tb, 1.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
sizing = it = elm_toolbar_item_add(tb, "zoom-fit-best", "Sizing", _cf_sizing, win);
sizing = it = elm_toolbar_item_append(tb, "zoom-fit-best", "Sizing", _cf_sizing, win);
elm_toolbar_item_priority_set(it, 100);
it = elm_toolbar_item_add(tb, "preferences-desktop-theme", "Theme", _cf_themes, win);
it = elm_toolbar_item_append(tb, "preferences-desktop-theme", "Theme", _cf_themes, win);
elm_toolbar_item_priority_set(it, 90);
elm_toolbar_item_add(tb, "preferences-desktop-font", "Fonts", _cf_fonts, win);
elm_toolbar_item_append(tb, "preferences-desktop-font", "Fonts", _cf_fonts, win);
it = elm_toolbar_item_add(tb, "system-users", "Profiles", _cf_profiles, win);
it = elm_toolbar_item_append(tb, "system-users", "Profiles", _cf_profiles, win);
elm_toolbar_item_priority_set(it, 90);
elm_toolbar_item_add(tb, "system-run", "Scrolling", _cf_scrolling, win);
elm_toolbar_item_add(tb, "video-display", "Rendering", _cf_rendering, win);
elm_toolbar_item_add(tb, "appointment-new", "Caches", _cf_caches, win);
elm_toolbar_item_append(tb, "system-run", "Scrolling", _cf_scrolling, win);
elm_toolbar_item_append(tb, "video-display", "Rendering", _cf_rendering, win);
elm_toolbar_item_append(tb, "appointment-new", "Caches", _cf_caches, win);
elm_box_pack_end(bx0, tb);
evas_object_show(tb);
@ -989,7 +989,7 @@ _status_config_full(Evas_Object *win, Evas_Object *bx0)
evas_object_show(fl);
evas_object_data_set(win, "flip", fl);
elm_toolbar_item_select(sizing);
elm_toolbar_item_selected_set(sizing, EINA_TRUE);
}
static void

View File

@ -200,12 +200,12 @@ test_cursor2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_inf
elm_toolbar_homogenous_set(o, 0);
evas_object_size_hint_weight_set(o, 0.0, 0.0);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.0);
tit = elm_toolbar_item_add(o, NULL, "Bogosity", NULL, NULL);
tit = elm_toolbar_item_append(o, NULL, "Bogosity", NULL, NULL);
elm_toolbar_item_cursor_set(tit, ELM_CURSOR_BOGOSITY);
tit = elm_toolbar_item_add(o, NULL, "Unset", NULL, NULL);
tit = elm_toolbar_item_append(o, NULL, "Unset", NULL, NULL);
elm_toolbar_item_cursor_set(tit, ELM_CURSOR_BOGOSITY);
elm_toolbar_item_cursor_unset(tit);
tit = elm_toolbar_item_add(o, NULL, "Xterm", NULL, NULL);
tit = elm_toolbar_item_append(o, NULL, "Xterm", NULL, NULL);
elm_toolbar_item_cursor_set(tit, ELM_CURSOR_XTERM);
elm_box_pack_end(bx, o);
evas_object_show(o);

View File

@ -239,10 +239,10 @@ test_flip2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
elm_toolbar_item_add(tb, "arrow_left", "Hello", NULL, NULL);
elm_toolbar_item_add(tb, "arrow_right", "Out", NULL, NULL);
elm_toolbar_item_add(tb, "home", "There", NULL, NULL);
elm_toolbar_item_add(tb, "refresh", "World", NULL, NULL);
elm_toolbar_item_append(tb, "arrow_left", "Hello", NULL, NULL);
elm_toolbar_item_append(tb, "arrow_right", "Out", NULL, NULL);
elm_toolbar_item_append(tb, "home", "There", NULL, NULL);
elm_toolbar_item_append(tb, "refresh", "World", NULL, NULL);
elm_box_pack_end(o, tb);
evas_object_show(tb);

View File

@ -18,6 +18,7 @@ static Eina_Bool _dir_has_subs(const char *path);
static void
_tstatus(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Toolbar_Item *sel;
const char *status;
if (elm_panel_hidden_get((Evas_Object*)data))
@ -25,12 +26,14 @@ _tstatus(void *data, Evas_Object *obj, void *event_info __UNUSED__)
else
status = "shown";
printf("The top panel is currently %s\n", status);
elm_toolbar_item_unselect_all(obj);
sel = elm_toolbar_selected_item_get(obj);
elm_toolbar_item_selected_set(sel, EINA_FALSE);
}
static void
_bstatus(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Elm_Toolbar_Item *sel;
const char *status;
if (elm_panel_hidden_get((Evas_Object*)data))
@ -38,7 +41,8 @@ _bstatus(void *data, Evas_Object *obj, void *event_info __UNUSED__)
else
status = "shown";
printf("The bottom panel is currently %s\n", status);
elm_toolbar_item_unselect_all(obj);
sel = elm_toolbar_selected_item_get(obj);
elm_toolbar_item_selected_set(sel, EINA_FALSE);
}
static char *
@ -182,7 +186,7 @@ test_panel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(toolbar);
elm_toolbar_item_add(toolbar, "home", "Hello", _tstatus, panel);
elm_toolbar_item_append(toolbar, "home", "Hello", _tstatus, panel);
elm_panel_content_set(panel, toolbar);
elm_box_pack_end(vbx, panel);
@ -246,7 +250,7 @@ test_panel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(toolbar);
elm_toolbar_item_add(toolbar, "home", "Hello", _bstatus, panel);
elm_toolbar_item_append(toolbar, "home", "Hello", _bstatus, panel);
elm_panel_content_set(panel, toolbar);
elm_box_pack_end(vbx, panel);

View File

@ -75,23 +75,23 @@ test_toolbar(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_inf
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
item = elm_toolbar_item_add(tb, "document-print", "Hello", tb_1, ph1);
item = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_toolbar_item_disabled_set(item, EINA_TRUE);
elm_toolbar_item_priority_set(item, 100);
item = elm_toolbar_item_add(tb, "folder-new", "World", tb_2, ph1);
item = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(item, -100);
item = elm_toolbar_item_add(tb, "object-rotate-right", "H", tb_3, ph4);
item = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
elm_toolbar_item_priority_set(item, 150);
item = elm_toolbar_item_add(tb, "mail-send", "Comes", tb_4, ph4);
item = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(item, 0);
item = elm_toolbar_item_add(tb, "clock", "Elementary", tb_5, ph4);
item = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(item, -200);
item = elm_toolbar_item_add(tb, "refresh", "Menu", NULL, NULL);
item = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(item, 1);
elm_toolbar_item_priority_set(item, -999999);
elm_toolbar_menu_parent_set(tb, win);
@ -185,23 +185,23 @@ test_toolbar2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
item = elm_toolbar_item_add(tb, "document-print", "Hello", tb_1, ph1);
item = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_toolbar_item_disabled_set(item, EINA_TRUE);
elm_toolbar_item_priority_set(item, -100);
item = elm_toolbar_item_add(tb, "folder-new", "World", tb_2, ph1);
item = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(item, 100);
item = elm_toolbar_item_add(tb, "object-rotate-right", "H", tb_3, ph4);
item = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
elm_toolbar_item_priority_set(item, -150);
item = elm_toolbar_item_add(tb, "mail-send", "Comes", tb_4, ph4);
item = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(item, -200);
item = elm_toolbar_item_add(tb, "clock", "Elementary", tb_5, ph4);
item = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(item, 0);
item = elm_toolbar_item_add(tb, "refresh", "Menu", NULL, NULL);
item = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(item, 1);
elm_toolbar_item_priority_set(item, -999999);
elm_toolbar_menu_parent_set(tb, win);
@ -295,23 +295,23 @@ test_toolbar3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
ph3 = elm_photo_add(win);
ph4 = elm_photo_add(win);
item = elm_toolbar_item_add(tb, "document-print", "Hello", tb_1, ph1);
item = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_toolbar_item_disabled_set(item, EINA_TRUE);
elm_toolbar_item_priority_set(item, 0);
item = elm_toolbar_item_add(tb, "folder-new", "World", tb_2, ph1);
item = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(item, -200);
item = elm_toolbar_item_add(tb, "object-rotate-right", "H", tb_3, ph4);
item = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
elm_toolbar_item_priority_set(item, 1);
item = elm_toolbar_item_add(tb, "mail-send", "Comes", tb_4, ph4);
item = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(item, -10);
item = elm_toolbar_item_add(tb, "clock", "Elementary", tb_5, ph4);
item = elm_toolbar_item_append(tb, "clock", "Elementary", tb_5, ph4);
elm_toolbar_item_priority_set(item, 50);
item = elm_toolbar_item_add(tb, "refresh", "Menu", NULL, NULL);
item = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
elm_toolbar_item_menu_set(item, 1);
elm_toolbar_item_priority_set(item, 999999);
elm_toolbar_menu_parent_set(tb, win);

View File

@ -288,10 +288,10 @@ test_tooltip(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_inf
elm_box_pack_end(bx, tb);
evas_object_show(tb);
ti = elm_toolbar_item_add(tb, NULL, "Open", NULL, NULL);
ti = elm_toolbar_item_append(tb, NULL, "Open", NULL, NULL);
elm_toolbar_item_tooltip_text_set(ti, "Opens a file");
ti = elm_toolbar_item_add(tb, NULL, "Icon", NULL, NULL);
ti = elm_toolbar_item_append(tb, NULL, "Icon", NULL, NULL);
elm_toolbar_item_tooltip_content_cb_set
(ti, _tt_item_icon, (void *)456L, _tt_item_icon_del);
elm_toolbar_item_tooltip_style_set(ti, "transparent");

View File

@ -1171,17 +1171,27 @@ 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 Elm_Toolbar_Item *elm_toolbar_item_add(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
EAPI Elm_Toolbar_Item *elm_toolbar_item_append(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
EAPI Elm_Toolbar_Item *elm_toolbar_item_prepend(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
EAPI Elm_Toolbar_Item *elm_toolbar_item_insert_before(Evas_Object *obj, Elm_Toolbar_Item *before, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
EAPI Elm_Toolbar_Item *elm_toolbar_item_insert_after(Evas_Object *obj, Elm_Toolbar_Item *after, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
EAPI Elm_Toolbar_Item *elm_toolbar_first_item_get(const Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_last_item_get(const Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_next_get(const Elm_Toolbar_Item *item);
EAPI Elm_Toolbar_Item *elm_toolbar_item_prev_get(const Elm_Toolbar_Item *item);
EAPI Evas_Object *elm_toolbar_item_toolbar_get(const Elm_Toolbar_Item *item);
EAPI void elm_toolbar_item_priority_set(Elm_Toolbar_Item *item, int priority);
EAPI int elm_toolbar_item_priority_get(const Elm_Toolbar_Item *item);
EAPI const char *elm_toolbar_item_icon_name_get(const Elm_Toolbar_Item *item);
EAPI Evas_Object *elm_toolbar_item_icon_get(const Elm_Toolbar_Item *item);
EAPI const char *elm_toolbar_item_label_get(const Elm_Toolbar_Item *item);
EAPI Eina_Bool elm_toolbar_item_selected_get(const Elm_Toolbar_Item *item);
EAPI void elm_toolbar_item_label_set(Elm_Toolbar_Item *item, const char *label);
EAPI Elm_Toolbar_Item *elm_toolbar_item_find_by_label(const Evas_Object *obj, const char *label);
EAPI Eina_Bool elm_toolbar_item_selected_get(const Elm_Toolbar_Item *item);
EAPI void elm_toolbar_item_selected_set(Elm_Toolbar_Item *item, Eina_Bool selected);
EAPI Elm_Toolbar_Item *elm_toolbar_selected_item_get(const Evas_Object *obj);
EAPI void elm_toolbar_item_del(Elm_Toolbar_Item *item);
EAPI void elm_toolbar_item_del_cb_set(Elm_Toolbar_Item *it, Evas_Smart_Cb func);
EAPI void elm_toolbar_item_select(Elm_Toolbar_Item *item);
EAPI void elm_toolbar_item_del_cb_set(Elm_Toolbar_Item *item, Evas_Smart_Cb func);
EAPI Eina_Bool elm_toolbar_item_disabled_get(const Elm_Toolbar_Item *item);
EAPI void elm_toolbar_item_disabled_set(Elm_Toolbar_Item *item, Eina_Bool disabled);
EAPI void elm_toolbar_item_separator_set(Elm_Toolbar_Item *item, Eina_Bool separator);
@ -1192,8 +1202,6 @@ extern "C" {
EAPI Eina_Bool elm_toolbar_homogenous_get(const Evas_Object *obj);
EAPI void elm_toolbar_menu_parent_set(Evas_Object *obj, Evas_Object *parent);
EAPI Evas_Object *elm_toolbar_menu_parent_get(const Evas_Object *obj);
EAPI void elm_toolbar_item_unselect_all(Evas_Object *obj);
EAPI void elm_toolbar_item_unselect(Elm_Toolbar_Item *item);
EAPI void elm_toolbar_align_set(Evas_Object *obj, double align);
EAPI double elm_toolbar_align_get(const Evas_Object *obj);
EAPI void elm_toolbar_item_menu_set(Elm_Toolbar_Item *item, Eina_Bool menu);
@ -1210,15 +1218,6 @@ extern "C" {
EAPI const char *elm_toolbar_item_cursor_style_get(const Elm_Toolbar_Item *item);
EAPI void elm_toolbar_item_cursor_engine_only_set(Elm_Toolbar_Item *item, Eina_Bool engine_only);
EAPI Eina_Bool elm_toolbar_item_cursor_engine_only_get(const Elm_Toolbar_Item *item);
EAPI Eina_List *elm_toolbar_item_get_all(Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_get_first(Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_get_last(Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_get_next(Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_select_next(Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_select_first(Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_select_last(Evas_Object *obj);
EAPI Elm_Toolbar_Item *elm_toolbar_item_find_by_label(Evas_Object *obj, const char *label);
/* smart callbacks called:
* "clicked" - when the user clicks on a toolbar item and becomes selected
*/

File diff suppressed because it is too large Load Diff