Toolbar items with different states
This code snippet shows how to create a toolbar with items that can have different states. Switching between states is done by callback. At the end of the callback it is necessary to deselect the item, so that it can be clicked again.
//callbcak for item pressed, we have to change item's state and deselect it
static void item_pressed_callback(void *data, Evas_Object *obj, void *event_info) {
Elm_Object_Item *item = event_info;
elm_toolbar_item_state_set(item, elm_toolbar_item_state_next(item));
elm_toolbar_item_selected_set(item, EINA_FALSE);
}
static void toolbar_test(appdata_s *ad) {
Evas_Object *box = elm_box_add(ad->win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(ad->win, box);
evas_object_show(box);
//some content
Evas_Object* label = elm_label_add(ad->win);
elm_object_text_set(label, "Content");
evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(label, 0.5, 0.5);
evas_object_show(label);
//toolbar
Evas_Object* toolbar = elm_toolbar_add(ad->win);
evas_object_size_hint_weight_set(toolbar, 0.0, 0.0);
evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, 0.0);
evas_object_show(toolbar);
//item with different states
Elm_Object_Item *item = elm_toolbar_item_append(toolbar, NULL, "STATE 1", item_pressed_callback, NULL);
elm_toolbar_item_state_add(item, NULL, "STATE 2", item_pressed_callback, NULL);
elm_toolbar_item_state_add(item, NULL, "STATE 3", item_pressed_callback, NULL);
//create another state and delete it
Elm_Toolbar_Item_State *state = elm_toolbar_item_state_add(item, NULL, "STATE 4", item_pressed_callback, NULL);
elm_toolbar_item_state_del(item, state);
//some more items to the toolbar
elm_toolbar_item_append(toolbar, NULL, "ITEM 1", NULL, NULL);
elm_toolbar_item_append(toolbar, NULL, "ITEM 2", NULL, NULL);
elm_box_pack_end(box, toolbar);
elm_box_pack_end(box, label);
}