elementary_test: rework a 'Genlist Tree, Insert Sorted' test

This test was reworked for better show how sorted insert work.
Currently sorted insert work bad. The new inserted items does not
check the subitems of prev item.

TODO: fix the elm_genlist_item_sorted_insert.
This commit is contained in:
Vyacheslav Reutskiy 2016-11-07 15:39:02 +02:00
parent 5fc98901ec
commit 867cf1564a
1 changed files with 95 additions and 49 deletions

View File

@ -2500,22 +2500,82 @@ test_genlist12(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
static int
gl13_cmp(const void *pa, const void *pb)
{
const Elm_Object_Item *ia = pa, *ib = pb;
int a = (int)(uintptr_t) elm_object_item_data_get(ia);
int b = (int)(uintptr_t) elm_object_item_data_get(ib);
return a - b;
const char *a = elm_object_item_data_get(pa);
const char *b = elm_object_item_data_get(pb);
if (!a) return -1;
if (!b) return 1;
return strcmp(a, b);
}
static void
_add_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *win = data;
Evas_Object *gl = evas_object_data_get(win, "genlist");
Evas_Object *entry = evas_object_data_get(win, "entry");
api_data *api = evas_object_data_get(win, "api");
const char *item_name = elm_entry_entry_get(entry);
Elm_Object_Item *parent = elm_genlist_selected_item_get(gl);
if ((!item_name) || (!strcmp(item_name, "")))
{
printf("ERROR: Unable to add item with empty name. Please type name.\n");
return;
}
elm_genlist_item_sorted_insert
(gl, api->itc2, eina_stringshare_add(item_name)/* item data */,
parent/* parent */, ELM_GENLIST_ITEM_NONE,
gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
elm_entry_entry_set(entry, NULL);
}
static void
_del_cb(void *data EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *win = data;
Evas_Object *gl = evas_object_data_get(win, "genlist");
Elm_Object_Item *item = elm_genlist_selected_item_get(gl);
if (!item)
{
printf("ERROR: Unable to remove item. Please select item.\n");
return;
}
elm_object_item_del(item);
}
char *
gl6_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
const char *str = data;
return strdup(str);
}
void
gl6_del(void *data, Evas_Object *obj EINA_UNUSED)
{
Eina_Stringshare *str = data;
eina_stringshare_del(str);
}
void
test_genlist13(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Elm_Object_Item *pi[6];
Evas_Object *win, *bx, *gl; int i, base, idx[3] = {1, 10, 15};
Evas_Object *win, *bx, *bx1, *btn_add, *btn_del, *gl, *entry;
api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-tree-insert-sorted", "Genlist Tree, Insert Sorted");
elm_win_autodel_set(win, EINA_TRUE);
evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
evas_object_data_set(win, "api", api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@ -2526,65 +2586,51 @@ test_genlist13(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(gl);
evas_object_data_set(win, "genlist", gl);
api->itc2 = elm_genlist_item_class_new();
api->itc2->item_style = "default";
api->itc2->func.text_get = gl4_text_get;
api->itc2->func.text_get = gl6_text_get;
api->itc2->func.content_get = NULL;
api->itc2->func.state_get = NULL;
api->itc2->func.del = NULL;
api->itc2->func.del = gl6_del;
/* mixed order to test insert sorted */
entry = elm_entry_add(win);
elm_entry_editable_set(entry, EINA_TRUE);
elm_entry_single_line_set(entry, EINA_TRUE);
elm_entry_scrollable_set(entry, EINA_TRUE);
elm_object_part_text_set(entry, "guide", "Type item's name here to add.");
evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(entry);
evas_object_data_set(win, "entry", entry);
for (i = 0; i < 3; i++)
{
pi[i] = elm_genlist_item_sorted_insert
(gl, api->itc2, (void *)(uintptr_t)idx[i]/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */,
NULL/* func */, NULL/* func data */);
}
bx1 = elm_box_add(win);
elm_box_horizontal_set(bx1, EINA_TRUE);
evas_object_show(bx1);
for (i = 0, base = 100; i < 3; i++, base += 100)
{
int j;
for (j = 0; j < 3; j++)
{
elm_genlist_item_sorted_insert
(gl, api->itc2, (void *)(uintptr_t)(idx[j] + base)/* item data */,
pi[i]/* parent */, ELM_GENLIST_ITEM_NONE,
gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
}
}
btn_add = elm_button_add(bx1);
elm_object_text_set(btn_add, "Add");
evas_object_size_hint_weight_set(btn_add, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_smart_callback_add(btn_add, "clicked", _add_cb, win);
elm_box_pack_end(bx1, btn_add);
evas_object_show(btn_add);
for (i = 0; i < 3; i++)
{
pi[i + 3] = elm_genlist_item_sorted_insert
(gl, api->itc2, (void *)(uintptr_t)(idx[i] * 2)/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */, NULL/* func */,
NULL/* func data */);
}
btn_del = elm_button_add(bx1);
elm_object_text_set(btn_del, "Delete");
evas_object_size_hint_weight_set(btn_del, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_smart_callback_add(btn_del, "clicked", _del_cb, win);
elm_box_pack_end(bx1, btn_del);
evas_object_show(btn_del);
for (i = 0, base = 10000; i < 3; i++, base += 10000)
{
int j;
for (j = 0; j < 3; j++)
{
elm_genlist_item_sorted_insert
(gl, api->itc2, (void *)(uintptr_t)(idx[j] + base)/* item data */,
pi[i + 3]/* parent */, ELM_GENLIST_ITEM_NONE,
gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
}
}
elm_genlist_item_class_free(api->itc2);
elm_box_pack_end(bx, gl);
elm_box_pack_end(bx, entry);
elm_box_pack_end(bx, bx1);
evas_object_show(bx);
evas_object_resize(win, 320, 320);
evas_object_resize(win, 480, 480);
evas_object_show(win);
}
/*** Genlist Tree, Insert Relative *****************************************/
static void
my_gl_insert_before_rel(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)