Gengrid items select modes

This code snippet shows how different select modes in gengrid items work. It includes select/unselect callbacks for checking how are they triggered in each mode.
//return an icon (defined by data)
static Evas_Object *_item_content_get(void *data, Evas_Object *obj, const char *part) {
	Evas_Object *icon = elm_icon_add(obj);
	elm_icon_standard_set(icon, data);
	evas_object_show(icon);
	return icon;
}

//select event callback
static void _selected_cb(void *data, Evas_Object *obj, void *event_info) {
	dlog_print(DLOG_INFO, LOG_TAG, "Selected: %p", event_info);
}

//unselect event callback
static void _unselected_cb(void *data, Evas_Object *obj, void *event_info) {
	dlog_print(DLOG_INFO, LOG_TAG, "Unselected: %p", event_info);
}

static void gengrid_test(Evas_Object *parent) {
	Evas_Object *grid = elm_gengrid_add(parent);
	evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
	elm_win_resize_object_add(parent, grid);
	evas_object_show(grid);
	elm_gengrid_horizontal_set(grid, EINA_TRUE);
	elm_gengrid_item_size_set(grid, 150, 150);

	Elm_Gengrid_Item_Class *gic;
	gic = elm_gengrid_item_class_new();
	gic->func.content_get = _item_content_get;

	Elm_Object_Item* clock = elm_gengrid_item_append(grid, gic, "clock", NULL, NULL);
	Elm_Object_Item* close = elm_gengrid_item_append(grid, gic, "close", NULL, NULL);
	Elm_Object_Item* apps = elm_gengrid_item_append(grid, gic, "apps", NULL, NULL);
	Elm_Object_Item* refresh = elm_gengrid_item_append(grid, gic, "refresh", NULL, NULL);

	//set callbacks for selected/unselected events
	evas_object_smart_callback_add(grid, "selected", _selected_cb, NULL);
	evas_object_smart_callback_add(grid, "unselected", _unselected_cb, NULL);

	//select callbacks are sent only after the first click
	elm_gengrid_item_select_mode_set(clock, ELM_OBJECT_SELECT_MODE_DEFAULT);

	//select callbacks are sent after every click (even if item is already selected)
	elm_gengrid_item_select_mode_set(close, ELM_OBJECT_SELECT_MODE_ALWAYS);

	//item can't be selected and doesn't send callbacks
	elm_gengrid_item_select_mode_set(apps, ELM_OBJECT_SELECT_MODE_NONE);

	//item can't be selected and can be smaller than finger size
	elm_gengrid_item_select_mode_set(refresh, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}

Responses

0 Replies