Gengrid item classes

This code snippet shows how to create and use different gengrid item classes.
//return clock icon
static Evas_Object *_clock_icon_get(void *data, Evas_Object *obj, const char *part) {
	Evas_Object *icon = elm_icon_add(obj);
	elm_icon_standard_set(icon, "clock");
	evas_object_show(icon);
	return icon;
}

//return refresh icon
static Evas_Object*_refresh_icon_get(void *data, Evas_Object *obj, const char *part) {
	Evas_Object *icon = elm_icon_add(obj);
	elm_icon_standard_set(icon, "refresh");
	evas_object_show(icon);
	return icon;
}

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);

	//create clock item class
	Elm_Gengrid_Item_Class *gic_clock;
	gic_clock = elm_gengrid_item_class_new();
	gic_clock->func.content_get = _clock_icon_get;

	//create refresh item class
	Elm_Gengrid_Item_Class *gic_refresh;
	gic_refresh = elm_gengrid_item_class_new();
	gic_refresh->func.content_get = _refresh_icon_get;

	//create 4 clock items and 4 refresh items
	for (int i = 0; i < 4; i++) {
		elm_gengrid_item_append(grid, gic_clock, NULL, NULL, NULL);
	}
	for (int i = 0; i < 4; i++) {
		elm_gengrid_item_append(grid, gic_refresh, NULL, NULL, NULL);
	}

	//get gengrid item class of the first item
	Elm_Object_Item *first_item = elm_gengrid_first_item_get(grid);
	const Elm_Gengrid_Item_Class *gic = elm_gengrid_item_item_class_get(first_item);

	//add another item with first item's class
	elm_gengrid_item_append(grid, gic, NULL, NULL, NULL);

	//change first item's class to gic_refresh
	elm_gengrid_item_item_class_update(first_item, gic_refresh);
}

Responses

0 Replies