Sorted gengrid

This code snippet demonstrates how to create a sorted gengrid. It shows how to insert items in a sorted manner and how to create a simple Eina_Compare_Cb callback.
//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;
}

//compare two items by their data
static int _compare_items(const void *data1, const void *data2) {
	char *data_item_1 = elm_object_item_data_get(data1);
	char *data_item_2 = elm_object_item_data_get(data2);
	return strcmp(data_item_1, data_item_2);
}

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->item_style = "default";
	gic->func.content_get = _item_content_get;

	//insert items to a sorted gengrid
	//we pass _compare_items function as a parameter
	elm_gengrid_item_sorted_insert(grid, gic, "clock", _compare_items, NULL, NULL);
	elm_gengrid_item_sorted_insert(grid, gic, "close", _compare_items, NULL, NULL);
	elm_gengrid_item_sorted_insert(grid, gic, "folder", _compare_items, NULL, NULL);
	elm_gengrid_item_sorted_insert(grid, gic, "file", _compare_items, NULL, NULL);
	elm_gengrid_item_sorted_insert(grid, gic, "apps", _compare_items, NULL, NULL);
}

Responses

0 Replies