Drop down menu
This code snippet shows how to create a drop down menu button using elementary ctxpopup widget.
static void ctxpopup_item_cb(void *data, Evas_Object *obj, void *event_info) {
dlog_print(DLOG_DEBUG, LOG_TAG, "item selected: %s\n", elm_object_item_text_get(event_info));
}
static void dismissed_cb(void *data, Evas_Object *obj, void *event_info) {
evas_object_del(obj);
}
static void show_ctx_popup(void *data, Evas_Object *obj, void *event_info) {
Evas_Object *parent = (Evas_Object *) data;
Evas_Object *ctxpopup = elm_ctxpopup_add(parent);
//you can also use "dropdown/label" instead
elm_object_style_set(ctxpopup, "dropdown/list");
eext_object_event_callback_add(ctxpopup, EEXT_CALLBACK_BACK, eext_ctxpopup_back_cb, NULL);
evas_object_smart_callback_add(ctxpopup, "dismissed", dismissed_cb, NULL);
//add some items
elm_ctxpopup_item_append(ctxpopup, "Item 1", NULL, ctxpopup_item_cb, NULL);
elm_ctxpopup_item_append(ctxpopup, "Item 2", NULL, ctxpopup_item_cb, NULL);
elm_ctxpopup_item_append(ctxpopup, "Item 3", NULL, ctxpopup_item_cb, NULL);
elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN,
ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
//change position of the popup
Evas_Coord x, y;
evas_pointer_canvas_xy_get(evas_object_evas_get(parent), &x, &y);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
}
static void ctx_popup_test(Evas_Object *parent) {
Evas_Object *button;
button = elm_button_add(parent);
elm_object_style_set(button, "dropdown");
elm_object_text_set(button, "Drop down menu");
evas_object_smart_callback_add(button, "clicked", show_ctx_popup, parent);
evas_object_resize(button, 480, 100);
evas_object_move(button, 0, 200);
evas_object_show(button);
}