#include "elementary_config.h"
#endif
#include <Elementary.h>
-#ifndef ELM_LIB_QUICKLAUNCH
+
+Evas_Object * _elm_min_set(Evas_Object *obj, Evas_Object *parent,
+ Evas_Coord w, Evas_Coord h);
+
struct _api_data
{
unsigned int state; /* What state we are testing */
void *box; /* Use this to get box content */
+
+ Elm_Genlist_Item_Class *itc;
+ Elm_Genlist_Item_Class *itc1;
+ Elm_Genlist_Item_Class *itc2;
+ void *gl;
};
typedef struct _api_data api_data;
}
static void
-_api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+_api_bt_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{ /* Will add here a SWITCH command containing code to modify test-object */
/* in accordance a->state value. */
api_data *a = data;
Eina_Bool checked;
} Testitem;
-static Elm_Genlist_Item_Class *itc1;
-char *gl_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+static char *
+gl_text_get1(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
char buf[256];
- snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
+ int num = (int)(uintptr_t)data;
+
+ if (num == 5)
+ snprintf(buf, sizeof(buf), "Item # %i (Genlist Cleear on Select)", num);
+ else
+ snprintf(buf, sizeof(buf), "Item # %i", num);
+
return strdup(buf);
}
-Evas_Object *gl_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
+Evas_Object *gl_content_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part)
{
char buf[PATH_MAX];
Evas_Object *ic = elm_icon_add(obj);
return ic;
}
-static void on_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+static void on_bt_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
printf("button clicked\n");
}
-static void on_ck_changed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+static void on_ck_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
printf("checkbox changed\n");
}
-Evas_Object *gl_content_full_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
+Evas_Object *gl_content_full_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part)
{
Evas_Object *fr, *bx, *ic, *bt, *ck;
ic = elm_icon_add(bx);
elm_icon_standard_set(ic, "home");
- evas_object_size_hint_min_set(ic, 32, 32);
+ evas_object_size_hint_min_set(ic,
+ ELM_SCALE_SIZE(32),
+ ELM_SCALE_SIZE(32));
evas_object_size_hint_align_set(ic, 0.5, EVAS_HINT_FILL);
evas_object_show(ic);
elm_box_pack_end(bx, ic);
elm_box_pack_end(bx, ck);
elm_layout_content_set(fr, NULL, bx);
- evas_object_size_hint_min_set(fr, 100, 100);
+ evas_object_size_hint_min_set(fr,
+ ELM_SCALE_SIZE(100),
+ ELM_SCALE_SIZE(100));
return fr;
}
-Eina_Bool gl_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+Eina_Bool gl_state_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
return EINA_FALSE;
}
}
static void
-_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl_sel_clear_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_genlist_clear(obj);
+}
+
+static void
+_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Evas_Object *gl = data;
Evas_Event_Mouse_Move *ev = event_info;
Elm_Object_Item *gli;
gli = elm_genlist_at_xy_item_get(gl, ev->cur.canvas.x, ev->cur.canvas.y, &where);
if (gli)
- INF("over %p, where %i", elm_object_item_data_get(gli), where);
+ INF("<%s> over %p, where %i\n", __func__, elm_object_item_data_get(gli), where);
else
- INF("over none, where %i", where);
+ INF("<%s> over none, where %i\n", __func__,where);
}
static void
-_bt50_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_bt50_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_IN);
}
static void
-_bt1500_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_bt1500_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
}
static void
-_gl_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+_gl_selected(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
printf("selected: %p\n", event_info);
}
static void
-_gl_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+_gl_double_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
printf("double clicked: %p\n", event_info);
}
static void
-_gl_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+_gl_right_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ printf("right clicked: %p\n", event_info);
+}
+
+static void
+_gl_longpress(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
printf("longpress %p\n", event_info);
}
static void
-_cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_cleanup_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
free(data);
}
void
-test_genlist(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bt_50, *bt_1500, *bx, *bxx, *bt;
Evas_Object *over;
evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bxx = elm_box_add(win);
- elm_win_resize_object_add(win, bxx);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bxx);
evas_object_show(bxx);
bx = elm_box_add(win);
gl = elm_genlist_add(win);
evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
+ evas_object_smart_callback_add(gl, "clicked,right", _gl_right_clicked, NULL);
evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
// FIXME: This causes genlist to resize the horiz axis very slowly :(
// Reenable this and resize the window horizontally, then try to resize it back
over = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(over, 0, 0, 0, 0);
evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
- evas_object_repeat_events_set(over, 1);
+ evas_object_repeat_events_set(over, EINA_TRUE);
evas_object_show(over);
evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, over);
- itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get1;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
bt_50 = elm_button_add(win);
elm_object_text_set(bt_50, "Go to 50");
for (i = 0; i < 2000; i++)
{
- gli = elm_genlist_item_append(gl, itc1,
- (void *)(long)i/* item data */,
- NULL/* parent */,
- ELM_GENLIST_ITEM_NONE,
- gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ if (i == 5)
+ {
+ gli = elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE,
+ gl_sel_clear_cb/* func */,
+ (void *)(uintptr_t)(i * 10)/* func data */);
+ }
+ else
+ {
+ gli = elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */,
+ (void *)(uintptr_t)(i * 10)/* func data */);
+ }
+
if (i == 50)
evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
else if (i == 1500)
evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
}
- elm_genlist_item_class_free(itc1);
+ elm_genlist_item_class_free(api->itc1);
evas_object_resize(win, 480, 800);
evas_object_show(win);
/*************/
static void
-my_gl_clear(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_clear(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
- elm_genlist_clear(gl);
+ elm_genlist_clear(data);
}
+static char *
+gl_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
+{
+ char buf[256];
+ snprintf(buf, sizeof(buf), "Item # %i", (int)(uintptr_t)data);
+ return strdup(buf);
+}
static void
-my_gl_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_add(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
static int i = 0;
- if (!itc1) itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
+ if (!api->itc1)
+ {
+ ERR("Genlist item class should not be null. Something very bad is happening!!");
+ return;
+ }
+
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
- elm_genlist_item_append(gl, itc1,
- (void *)(long)i/* item data */,
+ elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ (void *)(uintptr_t)(i * 10)/* func data */);
i++;
}
static void
-my_gl_insert_before(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_insert_before(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
static int i = 0;
Elm_Object_Item *gli_selected;
- if (!itc1) itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
+ if (!api->itc1)
+ {
+ ERR("Genlist item class should not be null. Something very bad is happening!!");
+ return;
+ }
+
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
gli_selected = elm_genlist_selected_item_get(gl);
if (!gli_selected)
return ;
}
- elm_genlist_item_insert_before(gl, itc1,
- (void *)(long)i/* item data */,
+ elm_genlist_item_insert_before(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
NULL/* parent */,
gli_selected /* item before */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ (void *)(uintptr_t)(i * 10)/* func data */);
i++;
}
static void
-my_gl_insert_after(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_insert_after(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
static int i = 0;
Elm_Object_Item *gli_selected;
- if (!itc1) itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
+ if (!api->itc1)
+ {
+ ERR("Genlist item class should not be null. Something very bad is happening!!");
+ return;
+ }
+
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
gli_selected = elm_genlist_selected_item_get(gl);
if (!gli_selected)
return ;
}
- elm_genlist_item_insert_after(gl, itc1,
- (void *)(long)i/* item data */,
+ elm_genlist_item_insert_after(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
NULL/* parent */,
gli_selected /* item after */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ (void *)(uintptr_t)(i * 10)/* func data */);
i++;
}
static void
-my_gl_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_del(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
if (!gli)
{
}
static void
-my_gl_disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_disable(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
if (!gli)
{
}
static void
-my_gl_update_all(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_update_all(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
int i = 0;
Elm_Object_Item *it = elm_genlist_first_item_get(gl);
while (it)
}
static void
-my_gl_first(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_first(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
Elm_Object_Item *gli = elm_genlist_first_item_get(gl);
if (!gli) return;
elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_IN);
}
static void
-my_gl_last(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_last(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
Elm_Object_Item *gli = elm_genlist_last_item_get(gl);
if (!gli) return;
elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_IN);
}
static Eina_Bool
-my_gl_flush_delay(void *data __UNUSED__)
+my_gl_flush_delay(void *data EINA_UNUSED)
{
elm_cache_all_flush();
return ECORE_CALLBACK_CANCEL;
}
static void
-my_gl_flush(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_flush(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
ecore_timer_add(1.2, my_gl_flush_delay, NULL);
}
+static void
+_genlist_del_cb(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ if (!data) return;
+
+ elm_genlist_item_class_free(data);
+}
+
void
-test_genlist2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *bg, *gl, *bx, *bx2, *bx3, *bt;
Elm_Object_Item *gli[10];
char buf[PATH_MAX];
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_add(NULL, "genlist2", ELM_WIN_BASIC);
elm_win_title_set(win, "Genlist 2");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bg = elm_bg_add(win);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
elm_bg_file_set(bg, buf, NULL);
- elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bx = elm_box_add(win);
elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
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);
+ api->gl = gl;
evas_object_show(gl);
- itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
- gli[0] = elm_genlist_item_append(gl, itc1,
+ gli[0] = elm_genlist_item_append(gl, api->itc1,
(void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1001/* func data */);
- gli[1] = elm_genlist_item_append(gl, itc1,
+ gli[1] = elm_genlist_item_append(gl, api->itc1,
(void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1002/* func data */);
- gli[2] = elm_genlist_item_append(gl, itc1,
+ gli[2] = elm_genlist_item_append(gl, api->itc1,
(void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1003/* func data */);
- gli[3] = elm_genlist_item_prepend(gl, itc1,
+ gli[3] = elm_genlist_item_prepend(gl, api->itc1,
(void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1004/* func data */);
- gli[4] = elm_genlist_item_prepend(gl, itc1,
+ gli[4] = elm_genlist_item_prepend(gl, api->itc1,
(void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
(void *)1005/* func data */);
- gli[5] = elm_genlist_item_insert_before(gl, itc1,
+ gli[5] = elm_genlist_item_insert_before(gl, api->itc1,
(void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
gl_sel/* func */, (void *)1006/* func data */);
- gli[6] = elm_genlist_item_insert_after(gl, itc1,
+ gli[6] = elm_genlist_item_insert_after(gl, api->itc1,
(void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
gl_sel/* func */, (void *)1007/* func data */);
elm_box_pack_end(bx, gl);
bt = elm_button_add(win);
elm_object_text_set(bt, "/\\");
- evas_object_smart_callback_add(bt, "clicked", my_gl_first, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_first, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "\\/");
- evas_object_smart_callback_add(bt, "clicked", my_gl_last, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_last, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "#");
- evas_object_smart_callback_add(bt, "clicked", my_gl_disable, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_disable, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "U");
- evas_object_smart_callback_add(bt, "clicked", my_gl_update_all, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_update_all, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "+");
- evas_object_smart_callback_add(bt, "clicked", my_gl_add, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_add, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "-");
- evas_object_smart_callback_add(bt, "clicked", my_gl_del, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_del, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "+ before");
- evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx3, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "+ after");
- evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx3, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Flush");
- evas_object_smart_callback_add(bt, "clicked", my_gl_flush, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_flush, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx3, bt);
elm_box_pack_end(bx, bx3);
evas_object_show(bx3);
- /* item_class_ref is needed for itc1. some items can be added in callbacks */
- elm_genlist_item_class_ref(itc1);
- elm_genlist_item_class_free(itc1);
-
+ evas_object_event_callback_add(gl, EVAS_CALLBACK_DEL, _genlist_del_cb, api->itc1);
+
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
/*************/
-
-static Elm_Genlist_Item_Class itc2;
-
-char *gl2_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+char *gl2_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
const Testitem *tit = data;
char buf[256];
return ic;
}
-Eina_Bool gl2_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+Eina_Bool gl2_state_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
return EINA_FALSE;
}
static void
-my_gl_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_update(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Testitem *tit = data;
tit->mode++;
}
static void
-my_gl_labels_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_labels_update(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Testitem *tit = data;
tit->mode++;
}
static void
-my_gl_contents_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_contents_update(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Testitem *tit = data;
tit->mode++;
}
void
-test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist3(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bx, *bx2, *bt;
static Testitem tit[3];
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist3", "Genlist 3");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(gl);
- itc2.item_style = "default";
- itc2.func.text_get = gl2_text_get;
- itc2.func.content_get = gl2_content_get;
- itc2.func.state_get = gl2_state_get;
- itc2.func.del = NULL;
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl2_text_get;
+ api->itc1->func.content_get = gl2_content_get;
+ api->itc1->func.state_get = gl2_state_get;
+ api->itc1->func.del = NULL;
tit[0].mode = 0;
- tit[0].item = elm_genlist_item_append(gl, &itc2,
+ tit[0].item = elm_genlist_item_append(gl, api->itc1,
&(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
tit[1].mode = 1;
- tit[1].item = elm_genlist_item_append(gl, &itc2,
+ tit[1].item = elm_genlist_item_append(gl, api->itc1,
&(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
tit[2].mode = 2;
- tit[2].item = elm_genlist_item_append(gl, &itc2,
+ tit[2].item = elm_genlist_item_append(gl, api->itc1,
&(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
+ elm_genlist_item_class_free(api->itc1);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
/*************/
static void
-my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Testitem *tit = data;
tit->onoff = elm_check_state_get(obj);
printf("item %p onoff = %i\n", tit, tit->onoff);
}
-static Elm_Genlist_Item_Class itc3;
-
-char *gl3_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+char *gl3_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
const Testitem *tit = data;
char buf[256];
return NULL;
}
-Eina_Bool gl3_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+Eina_Bool gl3_state_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
return EINA_FALSE;
}
+static void _realized(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ei)
+{
+ Evas_Object *check;
+ Eina_List *items;
+ items = NULL;
+
+ if (!ei) return;
+ Elm_Object_Item *item = ei;
+
+ check = elm_object_item_part_content_get(item, "elm.swallow.end");
+
+ if (!check) return;
+
+ items = eina_list_append(items, check);
+ elm_object_item_access_order_set(item, items);
+}
+
void
-test_genlist4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist4(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bx, *bx2, *bt;
static Testitem tit[3];
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist4", "Genlist 4");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
gl = elm_genlist_add(win);
elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
- elm_genlist_multi_select_set(gl, 1);
+ elm_genlist_multi_select_set(gl, EINA_TRUE);
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);
+ api->gl = gl;
evas_object_show(gl);
- itc3.item_style = "default";
- itc3.func.text_get = gl3_text_get;
- itc3.func.content_get = gl3_content_get;
- itc3.func.state_get = gl3_state_get;
- itc3.func.del = NULL;
+ evas_object_smart_callback_add(gl, "realized", _realized, NULL);
+
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl3_text_get;
+ api->itc1->func.content_get = gl3_content_get;
+ api->itc1->func.state_get = gl3_state_get;
+ api->itc1->func.del = NULL;
tit[0].mode = 0;
- tit[0].item = elm_genlist_item_append(gl, &itc3,
+ tit[0].item = elm_genlist_item_append(gl, api->itc1,
&(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
tit[1].mode = 1;
- tit[1].item = elm_genlist_item_append(gl, &itc3,
+ tit[1].item = elm_genlist_item_append(gl, api->itc1,
&(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
tit[2].mode = 2;
- tit[2].item = elm_genlist_item_append(gl, &itc3,
+ tit[2].item = elm_genlist_item_append(gl, api->itc1,
&(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
+ elm_genlist_item_class_free(api->itc1);
elm_box_pack_end(bx, gl);
evas_object_show(bx);
/*************/
static void
-my_gl_item_check_changed2(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+my_gl_item_check_changed2(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Testitem *tit = data;
tit->onoff = elm_check_state_get(obj);
printf("item %p onoff = %i\n", tit, tit->onoff);
}
-static Elm_Genlist_Item_Class itc5;
-
-char *gl5_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
+char *gl5_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part)
{
const Testitem *tit = data;
- char buf[256];
+ char buf[256] = { 0 };
if (!strcmp(part, "elm.text"))
{
snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
ic = elm_icon_add(obj);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_image_file_set(ic, buf, NULL);
- elm_image_resizable_set(ic, 0, 0);
+ elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
evas_object_show(ic);
elm_box_pack_end(bx, ic);
ic = elm_icon_add(obj);
elm_image_file_set(ic, buf, NULL);
- elm_image_resizable_set(ic, 0, 0);
+ elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
evas_object_show(ic);
elm_box_pack_end(bx, ic);
elm_box_horizontal_set(bx, EINA_TRUE);
return NULL;
}
-Eina_Bool gl5_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+Eina_Bool gl5_state_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
return EINA_FALSE;
}
static void
-item_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+item_drag_up(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("drag up");
}
static void
-item_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+item_drag_down(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("drag down");
}
static void
-item_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+item_drag_left(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("drag left");
}
static void
-item_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+item_drag_right(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("drag right");
}
static void
-scroll_top(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+scroll_top(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("Top edge!");
}
static void
-scroll_bottom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+scroll_bottom(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("Bottom edge!");
}
static void
-scroll_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+scroll_left(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("Left edge!");
}
static void
-scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+scroll_right(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("Right edge!");
}
static void
-item_drag(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+item_drag(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("drag");
}
static void
-item_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+item_drag_stop(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("drag stop");
}
static void
-item_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+item_longpress(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
INF("longpress");
}
void
-test_genlist5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist5(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bx, *bx2, *bt;
static Testitem tit[3];
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist5", "Genlist 5");
elm_win_autodel_set(win, EINA_TRUE);
+ elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
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);
+ api->gl = gl;
evas_object_show(gl);
- itc5.item_style = "double_label";
- itc5.func.text_get = gl5_text_get;
- itc5.func.content_get = gl5_content_get;
- itc5.func.state_get = gl5_state_get;
- itc5.func.del = NULL;
+
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "double_label";
+ api->itc1->func.text_get = gl5_text_get;
+ api->itc1->func.content_get = gl5_content_get;
+ api->itc1->func.state_get = gl5_state_get;
+ api->itc1->func.del = NULL;
tit[0].mode = 0;
- tit[0].item = elm_genlist_item_append(gl, &itc5,
+ tit[0].item = elm_genlist_item_append(gl, api->itc1,
&(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
tit[1].mode = 1;
- tit[1].item = elm_genlist_item_append(gl, &itc5,
+ tit[1].item = elm_genlist_item_append(gl, api->itc1,
&(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
tit[2].mode = 2;
- tit[2].item = elm_genlist_item_append(gl, &itc5,
+ tit[2].item = elm_genlist_item_append(gl, api->itc1,
&(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
NULL/* func data */);
evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
- evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL);
- evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL);
- evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL);
- evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL);
evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
+ elm_genlist_item_class_free(api->itc1);
evas_object_resize(win, 320, 320);
evas_object_show(win);
}
/*************/
-static Elm_Genlist_Item_Class *itc4;
-
static void
-gl4_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl4_sel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
int depth = elm_genlist_item_expanded_depth_get(glit);
}
static void
-gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl4_exp(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{
+ api_data *api = data;
Elm_Object_Item *glit = event_info;
Evas_Object *gl = elm_object_item_widget_get(glit);
- int val = (int)(long) elm_object_item_data_get(glit);
+ int val = (int)(uintptr_t) elm_object_item_data_get(glit);
int i = 0;
val *= 10;
for (i = 0; i < 10; i++)
{
- elm_genlist_item_append(gl, itc4,
- (void *)(long) (val + i)/* item data */,
+ elm_genlist_item_append(gl, api->itc2,
+ (void *)(uintptr_t) (val + i)/* item data */,
glit/* parent */,
ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
}
static void
-gl4_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl4_con(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
+
+ /*
+ const Eina_List *list = NULL, *l = NULL;
+ Elm_Object_Item *it = NULL;
+
+ printf("\n");
+
+ list = elm_genlist_item_subitems_get(glit);
+ EINA_LIST_FOREACH(list, l, it)
+ {
+ printf("sub item: %p %s\n", it, elm_object_item_text_get(it));
+ }
+ */
+
elm_genlist_item_subitems_clear(glit);
}
static void
-gl4_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl4_exp_req(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_expanded_set(glit, EINA_TRUE);
}
static void
-gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl4_con_req(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_expanded_set(glit, EINA_FALSE);
}
-char *gl4_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+char *gl4_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
char buf[256];
- snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
+ snprintf(buf, sizeof(buf), "Item mode %i", (int)(uintptr_t)data);
return strdup(buf);
}
-Evas_Object *gl4_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
+Evas_Object *gl4_content_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part)
{
char buf[PATH_MAX];
if (!strcmp(part, "elm.swallow.icon"))
return NULL;
}
-Eina_Bool gl4_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+Eina_Bool gl4_state_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
return EINA_FALSE;
}
-void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+void gl4_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED)
{
printf("item deleted.\n");
}
static void
-_tree_effect_enable_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_tree_effect_enable_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
elm_genlist_tree_effect_enabled_set(data, EINA_TRUE);
}
static void
-_tree_effect_disable_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_tree_effect_disable_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
elm_genlist_tree_effect_enabled_set(data, EINA_FALSE);
}
void
-test_genlist6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist6(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bx, *fr, *bx2, *rd1, *rd2;
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-tree", "Genlist Tree");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
gl = elm_genlist_add(win);
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);
+ api->gl = gl;
evas_object_show(gl);
elm_genlist_tree_effect_enabled_set(gl, EINA_TRUE);
-
- itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl4_text_get;
- itc1->func.content_get = gl4_content_get;
- itc1->func.state_get = gl4_state_get;
- itc1->func.del = gl4_del;
-
- itc4 = elm_genlist_item_class_new();
- itc4->item_style = "tree_effect";
- itc4->func.text_get = gl4_text_get;
- itc4->func.content_get = gl4_content_get;
- itc4->func.state_get = gl4_state_get;
- itc4->func.del = gl4_del;
-
- elm_genlist_item_append(gl, itc4,
+ evas_object_smart_callback_add(gl, "edge,left", scroll_left, NULL);
+ evas_object_smart_callback_add(gl, "edge,right", scroll_right, NULL);
+ evas_object_smart_callback_add(gl, "edge,top", scroll_top, NULL);
+ evas_object_smart_callback_add(gl, "edge,bottom", scroll_bottom, NULL);
+
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl4_text_get;
+ api->itc1->func.content_get = gl4_content_get;
+ api->itc1->func.state_get = gl4_state_get;
+ api->itc1->func.del = gl4_del;
+
+ api->itc2 = elm_genlist_item_class_new();
+ api->itc2->item_style = "tree_effect";
+ api->itc2->func.text_get = gl4_text_get;
+ api->itc2->func.content_get = gl4_content_get;
+ api->itc2->func.state_get = gl4_state_get;
+ api->itc2->func.del = gl4_del;
+
+ elm_genlist_item_append(gl, api->itc2,
(void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_append(gl, itc4,
+ elm_genlist_item_append(gl, api->itc2,
(void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_append(gl, itc1,
+ elm_genlist_item_append(gl, api->itc1,
(void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_class_free(itc1);
- elm_genlist_item_class_free(itc4);
+ elm_genlist_item_class_free(api->itc1);
+ elm_genlist_item_class_free(api->itc2);
- evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
- evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
- evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
- evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
+ evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, api);
+ evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, api);
+ evas_object_smart_callback_add(gl, "expanded", gl4_exp, api);
+ evas_object_smart_callback_add(gl, "contracted", gl4_con, api);
elm_box_pack_end(bx, gl);
Evas_Object *win, *naviframe;
};
-static Elm_Genlist_Item_Class itc7;
-
static void
gl_sel7(void *data, Evas_Object *obj, void *event_info)
{
if (!event_info) return;
- elm_genlist_item_item_class_update(event_info, &itc7);
- printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
+ api_data *api = data;
+ elm_genlist_item_item_class_update(event_info, api->itc2);
+ printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, api->itc2->item_style);
}
static void
-test_genlist7_back_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_gl7_back_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
struct genlist7_data *info = data;
if (!info) return;
}
static void
-test_genlist7_swipe(void *data, Evas_Object *obj __UNUSED__, void *event_info)
+_gl7_swipe_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{
struct genlist7_data *info = data;
Evas_Object *box, *entry, *button;
elm_object_text_set(button, "back");
evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
- evas_object_smart_callback_add(button, "clicked", test_genlist7_back_cb,
+ evas_object_smart_callback_add(button, "clicked", _gl7_back_cb,
info);
evas_object_show(button);
}
void
-test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist7(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *naviframe;
static struct genlist7_data info;
static Testitem tit[3];
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist7", "Genlist 7");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
info.win = win;
naviframe = elm_naviframe_add(win);
gl = elm_genlist_add(win);
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_smart_callback_add(gl, "swipe", test_genlist7_swipe, &info);
+ evas_object_smart_callback_add(gl, "swipe", _gl7_swipe_cb, &info);
+ api->gl = gl;
evas_object_show(gl);
elm_naviframe_item_simple_push(naviframe, gl);
- itc2.item_style = "default";
- itc2.func.text_get = gl2_text_get;
- itc2.func.content_get = gl2_content_get;
- itc2.func.state_get = gl2_state_get;
- itc2.func.del = NULL;
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl2_text_get;
+ api->itc1->func.content_get = gl2_content_get;
+ api->itc1->func.state_get = gl2_state_get;
+ api->itc1->func.del = NULL;
- itc7.item_style = "double_label";
- itc7.func.text_get = gl5_text_get;
- itc7.func.content_get = gl5_content_get;
- itc7.func.state_get = gl5_state_get;
- itc7.func.del = NULL;
+ api->itc2 = elm_genlist_item_class_new();
+ api->itc2->item_style = "double_label";
+ api->itc2->func.text_get = gl5_text_get;
+ api->itc2->func.content_get = gl5_content_get;
+ api->itc2->func.state_get = gl5_state_get;
+ api->itc2->func.del = NULL;
tit[0].mode = 0;
- tit[0].item = elm_genlist_item_append(gl, &itc2,
+ tit[0].item = elm_genlist_item_append(gl, api->itc1,
&(tit[0])/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
- NULL/* func data */);
+ api/* func data */);
tit[1].mode = 1;
- tit[1].item = elm_genlist_item_append(gl, &itc2,
+ tit[1].item = elm_genlist_item_append(gl, api->itc1,
&(tit[1])/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
- NULL/* func data */);
+ api/* func data */);
tit[2].mode = 2;
- tit[2].item = elm_genlist_item_append(gl, &itc2,
+ tit[2].item = elm_genlist_item_append(gl, api->itc1,
&(tit[2])/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
- NULL/* func data */);
+ api/* func data */);
evas_object_resize(win, 320, 320);
evas_object_show(win);
/*************/
-static Elm_Genlist_Item_Class *itc_group;
-
-char *gl8_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+char *gl8_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
char buf[256];
- snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)", (int)((long)data / 10), (int)(long)data);
+ snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)", (int)((uintptr_t)data / 10), (int)(uintptr_t)data);
return strdup(buf);
}
static void
-_bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_bt_show_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
elm_genlist_item_show(data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
}
static void
-_bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_bt_bring_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
}
void
-test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist8(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bt[8], *bx, *bx2, *bx3;
Elm_Object_Item *gli = NULL, *git = NULL;
int i, bt_num;
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-group", "Genlist Group");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, gl);
+ api->gl = gl;
evas_object_show(gl);
// Use homogeneous mode for group index + homogeneous test.
// Homogeneous is not mandatory for group index.
elm_genlist_homogeneous_set(gl, EINA_TRUE);
- itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
-
- itc_group = elm_genlist_item_class_new();
- itc_group->item_style = "group_index";
- itc_group->func.text_get = gl8_text_get;
- itc_group->func.content_get = NULL;
- itc_group->func.state_get = NULL;
- itc_group->func.del = NULL;
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
+
+ api->itc2 = elm_genlist_item_class_new();
+ api->itc2->item_style = "group_index";
+ api->itc2->func.text_get = gl8_text_get;
+ api->itc2->func.content_get = NULL;
+ api->itc2->func.state_get = NULL;
+ api->itc2->func.del = NULL;
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
{
if (!(i % 10))
{
- gli = git = elm_genlist_item_append(gl, itc_group,
- (void *)(long)i/* item data */,
+ gli = git = elm_genlist_item_append(gl, api->itc2,
+ (void *)(uintptr_t)i/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_GROUP,
gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ (void *)(uintptr_t)(i * 10)/* func data */);
elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
else if (git)
{
- gli = elm_genlist_item_append(gl, itc1,
- (void *)(long)i/* item data */,
+ gli = elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
git/* parent */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ (void *)(uintptr_t)(i * 10)/* func data */);
}
switch (i)
{
break;
}
}
- elm_genlist_item_class_free(itc1);
- elm_genlist_item_class_free(itc_group);
+
+ elm_genlist_item_class_free(api->itc1);
+ elm_genlist_item_class_free(api->itc2);
evas_object_resize(win, 480, 800);
evas_object_show(win);
/*************/
static void
-gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl9_exp(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{
+ api_data *api = data;
Elm_Object_Item *glit = event_info;
Evas_Object *gl = elm_object_item_widget_get(glit);
- int val = (int)(long) elm_object_item_data_get(glit);
+ int val = (int)(uintptr_t) elm_object_item_data_get(glit);
val *= 10;
- elm_genlist_item_append(gl, itc1,
- (void *)(long) (val + 1)/* item data */,
+ elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t) (val + 1)/* item data */,
glit/* parent */,
ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_append(gl, itc1,
- (void *)(long) (val + 2)/* item data */,
+ elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t) (val + 2)/* item data */,
glit/* parent */,
ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_append(gl, itc1,
- (void *)(long) (val + 3)/* item data */,
+ elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t) (val + 3)/* item data */,
glit/* parent */,
ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
}
static void
-gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl9_con(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_subitems_clear(glit);
}
static void
-gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl9_exp_req(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_expanded_set(glit, EINA_TRUE);
}
static void
-gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl9_con_req(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_expanded_set(glit, EINA_FALSE);
}
void
-test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist9(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bx;
Elm_Object_Item *git;
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-group-tree", "Genlist Group Tree");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, gl);
+ api->gl = gl;
evas_object_show(gl);
- itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
-
- itc_group = elm_genlist_item_class_new();
- itc_group->item_style = "group_index";
- itc_group->func.text_get = gl8_text_get;
- itc_group->func.content_get = NULL;
- itc_group->func.state_get = NULL;
- itc_group->func.del = NULL;
-
- git = elm_genlist_item_append(gl, itc_group,
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
+
+ api->itc2 = elm_genlist_item_class_new();
+ api->itc2->item_style = "group_index";
+ api->itc2->func.text_get = gl8_text_get;
+ api->itc2->func.content_get = NULL;
+ api->itc2->func.state_get = NULL;
+ api->itc2->func.del = NULL;
+
+ git = elm_genlist_item_append(gl, api->itc2,
(void *)0/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
NULL/* func data */);
elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- elm_genlist_item_append(gl, itc1,
+ elm_genlist_item_append(gl, api->itc1,
(void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_append(gl, itc1,
+ elm_genlist_item_append(gl, api->itc1,
(void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_append(gl, itc1,
+ elm_genlist_item_append(gl, api->itc1,
(void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
- git = elm_genlist_item_append(gl, itc_group,
+ git = elm_genlist_item_append(gl, api->itc2,
(void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
NULL/* func data */);
elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- elm_genlist_item_append(gl, itc1,
+ elm_genlist_item_append(gl, api->itc1,
(void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_append(gl, itc1,
+ elm_genlist_item_append(gl, api->itc1,
(void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_append(gl, itc1,
+ elm_genlist_item_append(gl, api->itc1,
(void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
NULL/* func data */);
- elm_genlist_item_class_free(itc1);
- elm_genlist_item_class_free(itc_group);
+ elm_genlist_item_class_free(api->itc1);
+ elm_genlist_item_class_free(api->itc2);
- evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
- evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
- evas_object_smart_callback_add(gl, "expanded", gl9_exp, gl);
- evas_object_smart_callback_add(gl, "contracted", gl9_con, gl);
+ evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, api);
+ evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, api);
+ evas_object_smart_callback_add(gl, "expanded", gl9_exp, api);
+ evas_object_smart_callback_add(gl, "contracted", gl9_con, api);
evas_object_resize(win, 480, 800);
evas_object_show(win);
}
/*************/
-
-static Elm_Genlist_Item_Class itc10;
static char *mode_type[] = { "slide", "rotate" };
-char *gl10_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
+char *gl10_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part)
{
char buf[256];
if (!strcmp(part, "elm.text.mode"))
- snprintf(buf, sizeof(buf), "Mode # %i", (int)(long)data);
+ snprintf(buf, sizeof(buf), "Mode # %i", (int)(uintptr_t)data);
else
- snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
+ snprintf(buf, sizeof(buf), "Item # %i", (int)(uintptr_t)data);
return strdup(buf);
}
-Evas_Object *gl10_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
+Evas_Object *gl10_content_get(void *data EINA_UNUSED, Evas_Object *obj, const char *part)
{
char buf[PATH_MAX];
Evas_Object *ic = elm_icon_add(obj);
}
static void
-_gl_sel10(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_gl_sel10(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
if (!data) return;
int v = elm_radio_value_get(data);
}
static void
-_my_gl_mode_right(void *data, Evas_Object *obj __UNUSED__, void *event_info)
+_my_gl_mode_right(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{
if (!data) return;
int v = elm_radio_value_get(data);
}
static void
-_my_gl_mode_left(void *data, Evas_Object *obj __UNUSED__, void *event_info)
+_my_gl_mode_left(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{
if (!data) return;
int v = elm_radio_value_get(data);
}
static void
-_my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+_my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
fprintf(stderr, "drag\n");
if (!data) return;
}
void
-test_genlist10(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist10(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *fr, *bx, *bx2, *rd, *rdg, *gl;
int i;
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-decorate-item-mode", "Genlist Decorate Item Mode");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
fr = elm_frame_add(win);
- elm_object_text_set(fr, "Decorate Mode Type");
+ elm_object_text_set(fr, "Decorate Item Mode Type");
elm_box_pack_end(bx, fr);
evas_object_show(fr);
evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, rdg);
evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, rdg);
evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, rdg);
+ api->gl = gl;
evas_object_show(gl);
- itc10.item_style = "default";
- itc10.decorate_item_style = "mode";
- itc10.func.text_get = gl10_text_get;
- itc10.func.content_get = gl10_content_get;
- itc10.func.state_get = gl_state_get;
- itc10.func.del = NULL;
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->decorate_item_style = "mode";
+ api->itc1->func.text_get = gl10_text_get;
+ api->itc1->func.content_get = gl10_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
for (i = 0; i < 50; i++)
elm_genlist_item_append(gl,
- &itc10,
- (void *)(long)(1000 + i)/* item data */,
+ api->itc1,
+ (void *)(uintptr_t)(1000 + i)/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE/* flags */,
_gl_sel10/* func */,
elm_box_pack_end(bx, gl);
+ elm_genlist_item_class_free(api->itc1);
evas_object_resize(win, 520, 520);
evas_object_show(win);
}
/*************/
static void
-_reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+_reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
elm_genlist_reorder_mode_set(data, elm_check_state_get(obj));
}
* gl_moved is called after an item was reordered.
* This is only called when reorder mode is enabled.
*
- * @param data : the genlist object passed as data.
* @param obj : the genlist object.
- * @param item : the moved item.
+ * @param event_info : the moved item.
*
- * the item(*item) had been moved
+ * the item(event_info) had been moved
*
*/
-static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
+static void
+_gl_reorder_moved_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
{
- // if needed, add application logic.
+ printf("\"moved\" it: %p\n", event_info);
}
/**
- * gl_moved_after is called after an item was reordered.
+ * _gl_reorder_moved_after_cb is called after an item was reordered.
* This is only called when reorder mode is enabled.
*
- * @param data : the genlist object passed as data.
* @param obj : the genlist object.
- * @param item : the moved item.
+ * @param event_info : the moved item.
*
- * the item(*item) had been moved after the given relative item(*rel_item) in list.
+ * the item(event_info) had been moved after the given relative item(*rel_item) in list.
*
*/
-static void gl_moved_after(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
+static void
+_gl_reorder_moved_after_cb(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED, void *event_info)
{
// if needed, add application logic.
- Elm_Object_Item *it;
- it = elm_genlist_item_prev_get(item);
- printf("it=%p, prev_it=%p\n",item,it);
+ Elm_Object_Item *it = elm_genlist_item_prev_get((Elm_Object_Item *)event_info);
+ printf("it = %p, prev_it = %p\n", event_info, it);
}
/**
- * gl_moved_before is called after an item was reordered.
+ * _gl_reorder_moved_before_cb is called after an item was reordered.
* This is only called when reorder mode is enabled.
*
- * @param data : the genlist object passed as data.
* @param obj : the genlist object.
- * @param item : the moved item.
+ * @param event_info : the moved item.
*
- * the item(*item) had been moved before the given relative item(*rel_item) in list.
+ * the item(event_info) had been moved before the given relative item(*rel_item) in list.
*
*/
-static void gl_moved_before(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
+static void
+_gl_reorder_moved_before_cb(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED, void *event_info)
{
// if needed, add application logic.
- Elm_Object_Item *it;
- it = elm_genlist_item_next_get(item);
- printf("it=%p, next_it=%p\n",item,it);
+ Elm_Object_Item *it = elm_genlist_item_next_get((Elm_Object_Item *)event_info);
+ printf("it = %p, next_it = %p\n", event_info, it);
+}
+
+static void
+_gl_reorder_item_focused_cb(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ printf("\"item,focused\" it: %p\n", event_info);
+}
+
+static void
+_gl_reorder_item_unfocused_cb(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ printf("\"item,unfocused\" it: %p\n", event_info);
+}
+
+static void
+_gl_reorder_item_selected_cb(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ printf("\"selected\" it: %p\n", event_info);
+}
+
+static void
+_gl_reorder_item_unselected_cb(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ printf("\"unselected\" it: %p\n", event_info);
}
void
-test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist_reorder(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
{
Evas_Object *win, *fr, *lb, *bx, *tg, *gl;
int i;
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-reorder-mode", "Genlist Reorder Mode");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
gl = elm_genlist_add(win);
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);
+ api->gl = gl;
evas_object_show(gl);
tg = elm_check_add(win);
elm_box_pack_end(bx, tg);
evas_object_show(tg);
- itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
- evas_object_smart_callback_add(gl, "moved", (Evas_Smart_Cb)gl_moved, gl);
- evas_object_smart_callback_add(gl, "moved,after", (Evas_Smart_Cb)gl_moved_after, gl);
- evas_object_smart_callback_add(gl, "moved,before", (Evas_Smart_Cb)gl_moved_before, gl);
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
+ evas_object_smart_callback_add(gl, "moved", _gl_reorder_moved_cb, NULL);
+ evas_object_smart_callback_add(gl, "moved,after", _gl_reorder_moved_after_cb, NULL);
+ evas_object_smart_callback_add(gl, "moved,before", _gl_reorder_moved_before_cb, NULL);
+ evas_object_smart_callback_add(gl, "item,focused", _gl_reorder_item_focused_cb, NULL);
+ evas_object_smart_callback_add(gl, "item,unfocused", _gl_reorder_item_unfocused_cb, NULL);
+ evas_object_smart_callback_add(gl, "selected", _gl_reorder_item_selected_cb, NULL);
+ evas_object_smart_callback_add(gl, "unselected", _gl_reorder_item_unselected_cb, NULL);
for (i = 0; i < 50; i++)
elm_genlist_item_append(gl,
- itc1,
- (void *)(long)(1 + i)/* item data */,
+ api->itc1,
+ (void *)(uintptr_t)(1 + i)/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE/* flags */,
NULL/* func */,
NULL/* func data */);
- elm_genlist_item_class_free(itc1);
+ elm_genlist_item_class_free(api->itc1);
elm_box_pack_end(bx, gl);
/*************/
-char *gl12_text_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+char *gl12_text_get(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
return strdup("Enlightenment is not just a window manager for Linux/X11 and others, but also a whole suite of libraries to help you create beautiful user interfaces with much less work than doing it the old fashioned way and fighting with traditional toolkits, not to mention a traditional window manager. It covers uses from small mobile devices like phones all the way to powerful multi-core desktops (which are the primary development environment).");
}
void
-test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist12(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *bx, *gl;
int i;
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-textblock", "Genlist Textblock");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, gl);
+ api->gl = gl;
evas_object_show(gl);
- itc1 = elm_genlist_item_class_new();
- itc1->item_style = "message";
- itc1->func.text_get = gl12_text_get;
- itc1->func.content_get = gl_content_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "message";
+ api->itc1->func.text_get = gl12_text_get;
+ api->itc1->func.content_get = gl_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
for (i = 0; i < 1000; i++)
{
- elm_genlist_item_append(gl, itc1,
- (void *)(long)i/* item data */,
+ elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ (void *)(uintptr_t)(i * 10)/* func data */);
}
- elm_genlist_item_class_free(itc1);
+ elm_genlist_item_class_free(api->itc1);
evas_object_resize(win, 400, 500);
evas_object_show(win);
gl13_cmp(const void *pa, const void *pb)
{
const Elm_Object_Item *ia = pa, *ib = pb;
- int a = (int)(long) elm_object_item_data_get(ia);
- int b = (int)(long) elm_object_item_data_get(ib);
+ 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;
}
void
-test_genlist13(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+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};
+ 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);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(gl);
- itc4 = elm_genlist_item_class_new();
- itc4->item_style = "default";
- itc4->func.text_get = gl4_text_get;
- itc4->func.content_get = NULL;
- itc4->func.state_get = NULL;
- itc4->func.del = NULL;
+ api->itc2 = elm_genlist_item_class_new();
+ api->itc2->item_style = "default";
+ api->itc2->func.text_get = gl4_text_get;
+ api->itc2->func.content_get = NULL;
+ api->itc2->func.state_get = NULL;
+ api->itc2->func.del = NULL;
/* mixed order to test insert sorted */
for (i = 0; i < 3; i++)
{
pi[i] = elm_genlist_item_sorted_insert
- (gl, itc4, (void *)(long)idx[i]/* item data */, NULL/* parent */,
+ (gl, api->itc2, (void *)(uintptr_t)idx[i]/* item data */, NULL/* parent */,
ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */,
NULL/* func */, NULL/* func data */);
}
for (j = 0; j < 3; j++)
{
elm_genlist_item_sorted_insert
- (gl, itc4, (void *)(long)(idx[j] + base)/* item data */,
+ (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 */);
}
for (i = 0; i < 3; i++)
{
pi[i + 3] = elm_genlist_item_sorted_insert
- (gl, itc4, (void *)(long)(idx[i] * 2)/* item data */, NULL/* parent */,
+ (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 */);
}
for (j = 0; j < 3; j++)
{
elm_genlist_item_sorted_insert
- (gl, itc4, (void *)(long)(idx[j] + base)/* item data */,
+ (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(itc4);
+ elm_genlist_item_class_free(api->itc2);
elm_box_pack_end(bx, gl);
evas_object_show(bx);
/*************/
static void
-my_gl_insert_before_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_insert_before_rel(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
static int i = 1000;
Elm_Object_Item *gli_selected;
- if (!itc1) itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = NULL;
- itc1->func.state_get = NULL;
- itc1->func.del = NULL;
+ if (!api->itc1) api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = NULL;
+ api->itc1->func.state_get = NULL;
+ api->itc1->func.del = NULL;
gli_selected = elm_genlist_selected_item_get(gl);
if (!gli_selected)
return;
}
- elm_genlist_item_insert_before(gl, itc1,
- (void *)(long)i/* item data */,
+ elm_genlist_item_insert_before(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
elm_genlist_item_parent_get(gli_selected),
gli_selected/* item before */,
ELM_GENLIST_ITEM_NONE,
}
static void
-my_gl_insert_after_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+my_gl_insert_after_rel(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
- Evas_Object *gl = data;
+ api_data *api = data;
+ Evas_Object *gl = api->gl;
static int i = 0;
Elm_Object_Item *gli_selected;
- if (!itc1) itc1 = elm_genlist_item_class_new();
- itc1->item_style = "default";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = NULL;
- itc1->func.state_get = NULL;
- itc1->func.del = NULL;
+ if (!api->itc1) api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl_text_get;
+ api->itc1->func.content_get = NULL;
+ api->itc1->func.state_get = NULL;
+ api->itc1->func.del = NULL;
gli_selected = elm_genlist_selected_item_get(gl);
if (!gli_selected)
return;
}
- elm_genlist_item_insert_after(gl, itc1,
- (void *)(long)i/* item data */,
+ elm_genlist_item_insert_after(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
elm_genlist_item_parent_get(gli_selected),
gli_selected/* item after */,
ELM_GENLIST_ITEM_NONE,
}
void
-test_genlist14(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist14(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Elm_Object_Item *pi[6];
Evas_Object *win, *bx, *bx2, *bt, *gl;
-4 /* item '21' - insert before pi[4], item '33' */
};
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-tree-insert-relative", "Genlist Tree, Insert Relative");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
gl = elm_genlist_add(win);
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);
+ api->gl = gl;
evas_object_show(gl);
- itc4 = elm_genlist_item_class_new();
- itc4->item_style = "default";
- itc4->func.text_get = gl4_text_get;
- itc4->func.content_get = NULL;
- itc4->func.state_get = NULL;
- itc4->func.del = NULL;
+ api->itc2 = elm_genlist_item_class_new();
+ api->itc2->item_style = "default";
+ api->itc2->func.text_get = gl4_text_get;
+ api->itc2->func.content_get = NULL;
+ api->itc2->func.state_get = NULL;
+ api->itc2->func.del = NULL;
/* mixed order to test insert sorted */
// BUG2: should be able to insert after=NULL, append
pi[0] = elm_genlist_item_append
- (gl, itc4, (void *)(long)idx[0]/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t)idx[0]/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
{
if (relative[i] < 0)
pi[i] = elm_genlist_item_insert_before
- (gl, itc4, (void *)(long)idx[i]/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t)idx[i]/* item data */,
NULL/* parent */, pi[-relative[i]],
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
else
pi[i] = elm_genlist_item_insert_after
- (gl, itc4, (void *)(long)idx[i]/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t)idx[i]/* item data */,
NULL/* parent */, pi[relative[i]],
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
}
Elm_Object_Item *sub_glit[6];
int j;
- base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
+ base = 1000 * (int)(uintptr_t) elm_object_item_data_get(pi[i]);
sub_glit[0] = elm_genlist_item_append
- (gl, itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
+ (gl, api->itc2, (void *)(uintptr_t) (idx[0] + base)/* item data */, pi[i]/* parent */,
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
for (j = 1; j < 6; j++) {
if (relative[j] < 0)
sub_glit[j] = elm_genlist_item_insert_before
- (gl, itc4, (void *)(long) (idx[j] + base)/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t) (idx[j] + base)/* item data */,
pi[i]/* parent */, sub_glit[-relative[j]],
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
else
sub_glit[j] = elm_genlist_item_insert_after
- (gl, itc4, (void *)(long) (idx[j] + base)/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t) (idx[j] + base)/* item data */,
pi[i]/* parent */, sub_glit[relative[j]],
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
}
{
if (relative[i] < 0)
pi[i] = elm_genlist_item_insert_before
- (gl, itc4, (void *)(long) idx[i]/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t) idx[i]/* item data */,
NULL/* parent */, pi[-relative[i]],
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
else
pi[i] = elm_genlist_item_insert_after
- (gl, itc4, (void *)(long) idx[i]/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t) idx[i]/* item data */,
NULL/* parent */, pi[relative[i]],
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
}
Elm_Object_Item *sub_glit[6];
int j;
- base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
+ base = 1000 * (int)(uintptr_t) elm_object_item_data_get(pi[i]);
sub_glit[0] = elm_genlist_item_append
- (gl, itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
+ (gl, api->itc2, (void *)(uintptr_t) (idx[0] + base)/* item data */, pi[i]/* parent */,
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
for (j = 1; j < 6; j++) {
if (relative[j] < 0)
sub_glit[j] = elm_genlist_item_insert_before
- (gl, itc4, (void *)(long) (idx[j] + base)/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t) (idx[j] + base)/* item data */,
pi[i]/* parent */, sub_glit[-relative[j]],
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
else
sub_glit[j] = elm_genlist_item_insert_after
- (gl, itc4, (void *)(long) (idx[j] + base)/* item data */,
+ (gl, api->itc2, (void *)(uintptr_t) (idx[j] + base)/* item data */,
pi[i]/* parent */, sub_glit[relative[j]],
ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
}
bt = elm_button_add(win);
elm_object_text_set(bt, "+ before");
- evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before_rel, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before_rel, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "+ after");
- evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after_rel, gl);
+ evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after_rel, api);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
- /* item_class_ref is needed for itc4. some items can be added in callbacks */
- elm_genlist_item_class_ref(itc4);
- elm_genlist_item_class_free(itc4);
+ /* item_class_ref is needed for itc2. some items can be added in callbacks */
+ elm_genlist_item_class_ref(api->itc2);
+ elm_genlist_item_class_free(api->itc2);
evas_object_resize(win, 320, 320);
evas_object_show(win);
/*************/
-static void _edit_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+static void _edit_icon_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Elm_Object_Item *item = (Elm_Object_Item *)data;
elm_object_item_del(item);
}
-char *gl15_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+char *gl15_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
const Testitem *tit = data;
char buf[256];
Testitem *tit = data;
char buf[PATH_MAX];
- // "edit_default" EDC layout is like below. each part is swallow part.
+ // "edit" EDC layout is like below. each part is swallow part.
// the existing item is swllowed to elm.swallow.edit.content part.
// --------------------------------------------------------------------
// | elm.edit.icon.1 | elm.swallow.decorate.content | elm.edit.icon,2 |
}
static void
-gl15_sel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+gl15_sel(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
Testitem *tit = data;
if (elm_genlist_decorate_mode_get(obj))
}
static void
-gl15_deco_all_mode(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+gl15_deco_all_mode(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
elm_genlist_decorate_mode_set(data, EINA_TRUE);
elm_genlist_select_mode_set(data, ELM_OBJECT_SELECT_MODE_ALWAYS);
}
static void
-gl15_normal_mode(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+gl15_normal_mode(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
elm_genlist_decorate_mode_set(data, EINA_FALSE);
elm_genlist_select_mode_set(data, ELM_OBJECT_SELECT_MODE_DEFAULT);
}
-void gl15_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+void gl15_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED)
{
- printf("item deleted.\n");
+ Testitem *ti = data;
+ printf("item deleted. (# %d)\n", ti->mode);
}
-static Elm_Genlist_Item_Class *itc15;
void
-test_genlist15(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist15(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *bx, *bx2, *bt, *gl;
int i;
static Testitem tit[100];
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-decorate-all-mode", "Genlist Decorate All Mode");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
gl = elm_genlist_add(win);
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);
+ api->gl = gl;
evas_object_show(gl);
- itc15 = elm_genlist_item_class_new();
- itc15->item_style = "default";
- itc15->func.text_get = gl15_text_get;
- itc15->func.content_get = gl15_content_get;
- itc15->func.state_get = gl_state_get;
- itc15->func.del = gl15_del;
- itc15->decorate_all_item_style = "edit";
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl15_text_get;
+ api->itc1->func.content_get = gl15_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = gl15_del;
+ api->itc1->decorate_all_item_style = "edit";
for (i = 0; i < 100; i++)
{
tit[i].mode = i;
- tit[i].item = elm_genlist_item_append(gl, itc15,
+ tit[i].item = elm_genlist_item_append(gl, api->itc1,
&(tit[i])/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE/* flags */,
gl15_sel/* func */,
- (void *)(long)&(tit[i])/* func data */);
+ (void *)(uintptr_t)&(tit[i])/* func data */);
}
- elm_genlist_item_class_free(itc15);
+ elm_genlist_item_class_free(api->itc1);
elm_box_pack_end(bx, gl);
evas_object_show(bx);
/*************/
-static void _flip_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+static void _flip_icon_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
const Testitem *tit = data;
elm_genlist_item_flip_set(tit->item, EINA_TRUE);
}
-char *gl16_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+char *gl16_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
{
const Testitem *tit = data;
char buf[256];
}
void
-test_genlist16(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist16(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *bx, *gl;
int i;
static Testitem tit[100];
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-flip-mode", "Genlist Flip Mode");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
gl = elm_genlist_add(win);
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);
+ api->gl = gl;
evas_object_show(gl);
/* note: flip mode can be used with/without edit mode */
elm_genlist_decorate_mode_set(gl, EINA_TRUE);
elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
- itc15 = elm_genlist_item_class_new();
- itc15->item_style = "default";
- itc15->func.text_get = gl16_text_get;
- itc15->func.content_get = gl16_content_get;
- itc15->func.state_get = gl_state_get;
- itc15->func.del = NULL;
- itc15->decorate_all_item_style = "edit";
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->func.text_get = gl16_text_get;
+ api->itc1->func.content_get = gl16_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
+ api->itc1->decorate_all_item_style = "edit";
for (i = 0; i < 100; i++)
{
tit[i].mode = i;
- tit[i].item = elm_genlist_item_append(gl, itc15,
+ tit[i].item = elm_genlist_item_append(gl, api->itc1,
&(tit[i])/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE/* flags */,
gl_sel/* func */,
- (void *)(long)&(tit[i])/* func data */);
+ (void *)(uintptr_t)&(tit[i])/* func data */);
}
- elm_genlist_item_class_free(itc15);
+ elm_genlist_item_class_free(api->itc1);
elm_box_pack_end(bx, gl);
evas_object_show(bx);
/*************/
-static Elm_Genlist_Item_Class *itc17;
-
char *
-gl17_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
+gl17_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part)
{
const Testitem *tit = data;
char buf[256];
if (!strcmp(part, "elm.text.mode"))
snprintf(buf, sizeof(buf), "Mode # %i", tit->mode);
else
- snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
+ snprintf(buf, sizeof(buf), "Item # %i", (int)(uintptr_t)data);
return strdup(buf);
}
}
void
-_decorate_all_set_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+_decorate_all_set_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
if (!data) return;
}
void
-_decorate_all_unset_btn_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_decorate_all_unset_btn_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
if (evas_object_data_get(data, "tree_effect"))
elm_genlist_tree_effect_enabled_set(data, EINA_TRUE);
}
void
-test_genlist17(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist17(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *fr1, *fr2, *bx, *bx2, *rdg = NULL, *gl;
int i;
static Testitem tit[50];
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-decorate-modes", "Genlist Decorate Modes");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, rdg);
evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, rdg);
evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, rdg);
+ api->gl = gl;
evas_object_show(gl);
- itc17 = elm_genlist_item_class_new();
- itc17->item_style = "default";
- itc17->decorate_item_style = "mode";
- itc17->func.text_get = gl15_text_get;
- itc17->func.content_get = gl15_content_get;
- itc17->func.state_get = gl_state_get;
- itc17->func.del = NULL;
- itc17->decorate_all_item_style = "edit";
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "default";
+ api->itc1->decorate_item_style = "mode";
+ api->itc1->func.text_get = gl15_text_get;
+ api->itc1->func.content_get = gl15_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
+ api->itc1->decorate_all_item_style = "edit";
for (i = 0; i < 50; i++)
{
tit[i].checked = EINA_FALSE;
tit[i].mode = i;
tit[i].item = elm_genlist_item_append(gl,
- itc17,
+ api->itc1,
&(tit[i])/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE/* flags */,
NULL/* func data */);
}
- elm_genlist_item_class_free(itc17);
+ elm_genlist_item_class_free(api->itc1);
elm_box_pack_end(bx, gl);
fr2 = _decorate_all_mode_frame_new(win, rdg, gl);
}
/*************/
-
-Elm_Genlist_Item_Class *itc18, *itc18_tree;
Evas_Object *
_tree_effect_frame_new(Evas_Object *win, Evas_Object **rdg, Evas_Object *gl)
{
}
static void
-gl18_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl18_sel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
int depth = elm_genlist_item_expanded_depth_get(glit);
}
static void
-gl18_del(void *data, Evas_Object *obj __UNUSED__)
+gl18_del(void *data, Evas_Object *obj EINA_UNUSED)
{
free(data);
}
static void
-gl18_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl18_exp(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
+ api_data *api = data;
Elm_Object_Item *glit = event_info;
Evas_Object *gl = elm_object_item_widget_get(glit);
Testitem *tit = elm_object_item_data_get(glit);
tit = calloc(1, sizeof(Testitem));
tit->mode = val + i;
tit->item = elm_genlist_item_append(gl,
- itc18_tree,
+ api->itc2,
tit/* item data */,
glit/* parent */,
ELM_GENLIST_ITEM_TREE,
tit = calloc(1, sizeof(Testitem));
tit->mode = i;
tit->item = elm_genlist_item_append(gl,
- itc18,
+ api->itc1,
tit/* item data */,
glit/* parent */,
ELM_GENLIST_ITEM_NONE,
}
static void
-gl18_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+gl18_con(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Object_Item *glit = event_info;
elm_genlist_item_subitems_clear(glit);
}
static void
-gl18_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
+gl18_exp_req(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info)
{
Elm_Object_Item *glit = event_info;
}
static void
-gl18_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
+gl18_con_req(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info)
{
Elm_Object_Item *glit = event_info;
}
void
-test_genlist18(void *data __UNUSED__,
- Evas_Object *obj __UNUSED__,
- void *event_info __UNUSED__)
+test_genlist18(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bx, *fr1, *fr2, *bx2, *rdg;
Testitem *tit = NULL;
int i, j;
+ api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist-tree-decorate-all",
"Genlist Tree and Decorate All Mode");
elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
gl = elm_genlist_add(win);
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);
+ api->gl = gl;
evas_object_show(gl);
elm_genlist_tree_effect_enabled_set(gl, EINA_TRUE);
evas_object_data_set(gl, "tree_effect", "true");
/* normal item */
- itc18 = elm_genlist_item_class_new();
- itc18->item_style = "tree_effect"; /* item/tree_effect */
- itc18->func.text_get = gl15_text_get;
- itc18->func.content_get = gl15_content_get;
- itc18->func.state_get = gl_state_get;
- itc18->func.del = gl18_del;
- itc18->decorate_all_item_style = "edit";
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "tree_effect"; /* item/tree_effect */
+ api->itc1->func.text_get = gl15_text_get;
+ api->itc1->func.content_get = gl15_content_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = gl18_del;
+ api->itc1->decorate_all_item_style = "edit";
/* expandable item */
- itc18_tree = elm_genlist_item_class_new();
- itc18_tree->item_style = "tree_effect"; /* tree/tree_effect */
- itc18_tree->func.text_get = gl15_text_get;
- itc18_tree->func.content_get = gl15_content_get;
- itc18_tree->func.state_get = gl_state_get;
- itc18_tree->func.del = gl18_del;
- itc18_tree->decorate_all_item_style = "edit";
+ api->itc2 = elm_genlist_item_class_new();
+ api->itc2->item_style = "tree_effect"; /* tree/tree_effect */
+ api->itc2->func.text_get = gl15_text_get;
+ api->itc2->func.content_get = gl15_content_get;
+ api->itc2->func.state_get = gl_state_get;
+ api->itc2->func.del = gl18_del;
+ api->itc2->decorate_all_item_style = "edit";
for (i = 0; i < 5; i++)
{
tit = calloc(1, sizeof(Testitem));
tit->mode = i;
tit->item = elm_genlist_item_append(gl,
- itc18_tree,
+ api->itc2,
tit/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_TREE,
tit = calloc(1, sizeof(Testitem));
tit->mode = i;
tit->item = elm_genlist_item_append(gl,
- itc18,
+ api->itc1,
tit/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE,
i++;
}
- elm_genlist_item_class_free(itc18);
- elm_genlist_item_class_free(itc18_tree);
+ elm_genlist_item_class_free(api->itc1);
+ elm_genlist_item_class_free(api->itc2);
- evas_object_smart_callback_add(gl, "expand,request", gl18_exp_req, gl);
- evas_object_smart_callback_add(gl, "contract,request", gl18_con_req, gl);
- evas_object_smart_callback_add(gl, "expanded", gl18_exp, gl);
- evas_object_smart_callback_add(gl, "contracted", gl18_con, gl);
+ evas_object_smart_callback_add(gl, "expand,request", gl18_exp_req, api);
+ evas_object_smart_callback_add(gl, "contract,request", gl18_con_req, api);
+ evas_object_smart_callback_add(gl, "expanded", gl18_exp, api);
+ evas_object_smart_callback_add(gl, "contracted", gl18_con, api);
elm_box_pack_end(bx, gl);
}
void
-test_genlist19(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+test_genlist19(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl, *bt_50, *bt_1500, *bx, *bxx, *bt;
Evas_Object *over;
int i;
api_data *api = calloc(1, sizeof(api_data));
- win = elm_win_util_standard_add("genlist-full", "Genlist Full");
+ win = elm_win_util_standard_add("genlist-full", "Genlist Full Widget");
elm_win_autodel_set(win, EINA_TRUE);
evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, gl);
+ api->gl = gl;
evas_object_show(gl);
over = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(over, 0, 0, 0, 0);
evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
- evas_object_repeat_events_set(over, 1);
+ evas_object_repeat_events_set(over, EINA_TRUE);
evas_object_show(over);
evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, over);
- itc1 = elm_genlist_item_class_new();
- itc1->item_style = "full";
- itc1->func.text_get = gl_text_get;
- itc1->func.content_get = gl_content_full_get;
- itc1->func.state_get = gl_state_get;
- itc1->func.del = NULL;
+ api->itc1 = elm_genlist_item_class_new();
+ api->itc1->item_style = "full";
+ api->itc1->func.text_get = NULL;
+ api->itc1->func.content_get = gl_content_full_get;
+ api->itc1->func.state_get = gl_state_get;
+ api->itc1->func.del = NULL;
bt_50 = elm_button_add(win);
elm_object_text_set(bt_50, "Go to 50");
for (i = 0; i < 2000; i++)
{
- gli = elm_genlist_item_append(gl, itc1,
- (void *)(long)i/* item data */,
+ gli = elm_genlist_item_append(gl, api->itc1,
+ (void *)(uintptr_t)i/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ (void *)(uintptr_t)(i * 10)/* func data */);
if (i == 50)
evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
else if (i == 1500)
evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
}
- elm_genlist_item_class_free(itc1);
+ elm_genlist_item_class_free(api->itc1);
evas_object_resize(win, 480, 800);
evas_object_show(win);
}
-#endif
+/*************/
+
+/* test genlist item styles */
+
+const char *_genlist_styles[] = {
+ "default", "full", "one_icon", "end_icon", "no_icon",
+ "default_style", "double_label", "icon_top_text_bottom",
+ "message", "media", "media-album", "media-preview",
+ NULL
+};
+
+static void
+_genlist_renew(Evas_Object *obj, const char *style)
+{
+ Elm_Genlist_Item_Class *ic;
+ Evas_Object *check;
+ int i;
+
+ if (!obj) return;
+
+ elm_genlist_clear(obj);
+
+ check = evas_object_data_get(obj, "check");
+ if (elm_check_state_get(check))
+ elm_genlist_mode_set(obj, ELM_LIST_COMPRESS);
+ else
+ elm_genlist_mode_set(obj, ELM_LIST_SCROLL);
+
+ ic = elm_genlist_item_class_new();
+ ic->item_style = style;
+ ic->func.text_get = gl_text_get;
+ ic->func.content_get = gl_content_get;
+ ic->func.state_get = NULL;
+ ic->func.del = NULL;
+
+ for (i = 0; i < 50; i++)
+ {
+ elm_genlist_item_append(obj, ic, (void *)(uintptr_t)i, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ elm_genlist_item_class_free(ic);
+}
+
+static void
+_item_style_sel_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *gl = evas_object_data_get(obj, "genlist");
+ if (gl)
+ _genlist_renew(gl, elm_object_item_text_get(event_info));
+}
+
+static Evas_Object *
+_item_styles_list_create(Evas_Object *parent)
+{
+ Evas_Object *list;
+ int i = 0;
+
+ list = elm_list_add(parent);
+ evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ while (_genlist_styles[i])
+ {
+ elm_list_item_append(list, _genlist_styles[i], NULL, NULL,
+ _item_style_sel_cb, _genlist_styles[i]);
+ i++;
+ }
+
+ return list;
+}
+
+void
+test_genlist_item_styles(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *win, *box, *gl, *list, *table, *check;
+
+ win = elm_win_util_standard_add("genlist-item-styles", "Genlist Item Styles");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ elm_box_horizontal_set(box, EINA_TRUE);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, box);
+ evas_object_show(box);
+
+ list = _item_styles_list_create(box);
+ evas_object_show(list);
+
+ table = _elm_min_set(list, box, 200, 0);
+ evas_object_size_hint_weight_set(table, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, table);
+ evas_object_show(table);
+
+ gl = elm_genlist_add(box);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, gl);
+ evas_object_show(gl);
+
+ check = elm_check_add(win);
+ elm_object_text_set(check, "Compress");
+ elm_box_pack_end(box, check);
+ evas_object_show(check);
+ evas_object_data_set(gl, "check", check);
+ _genlist_renew(gl, "default");
+
+ evas_object_data_set(list, "genlist", gl);
+
+ evas_object_resize(win, 600, 600);
+ evas_object_show(win);
+}
+
+/***********/
+
+typedef struct _Genlist_Multi_Data Genlist_Multi_Data;
+struct _Genlist_Multi_Data
+{
+ Evas_Object *gl;
+ Evas_Object *rd1;
+ Evas_Object *rd2;
+};
+
+static void
+_multi_select_changed_cb(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ Eina_Bool multi = elm_check_state_get(obj);
+ Genlist_Multi_Data *gd = data;
+ if (!gd) return;
+
+ elm_genlist_multi_select_set(gd->gl, multi);
+ elm_object_disabled_set(gd->rd1, !multi);
+ elm_object_disabled_set(gd->rd2, !multi);
+}
+
+static void
+_multi_select_mode_changed_cb(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ // TIZEN_ONLY: Apply genlist widget from Tizen 2.3
+ (void) data;
+ (void) obj;
+ //elm_genlist_multi_select_mode_set(data, elm_radio_value_get(obj));
+ //
+}
+
+static void
+_multi_select_frame_create(Evas_Object *bx, Genlist_Multi_Data *gd)
+{
+ Evas_Object *fr, *bx2, *bx3, *tg, *rd, *rdg;
+ if (!gd) return;
+
+ fr = elm_frame_add(bx);
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.5);
+ elm_object_text_set(fr, "Multi Select Option");
+ elm_box_pack_end(bx, fr);
+ evas_object_show(fr);
+
+ bx2 = elm_box_add(fr);
+ elm_object_content_set(fr, bx2);
+ evas_object_show(bx2);
+
+ tg = elm_check_add(bx2);
+ elm_object_style_set(tg, "toggle");
+ elm_object_text_set(tg, "Multi Select Mode");
+ elm_box_pack_end(bx2, tg);
+ evas_object_show(tg);
+
+ bx3 = elm_box_add(bx2);
+ elm_box_horizontal_set(bx3, EINA_TRUE);
+ elm_box_pack_end(bx2, bx3);
+ evas_object_show(bx3);
+
+ gd->rd1 = rdg = rd = elm_radio_add(bx3);
+ elm_radio_state_value_set(rd, ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT);
+ elm_object_text_set(rd, "Default Mode");
+ elm_box_pack_end(bx3, rd);
+ evas_object_show(rd);
+ elm_object_disabled_set(rd, EINA_TRUE);
+ evas_object_smart_callback_add(rd, "changed",
+ _multi_select_mode_changed_cb, gd->gl);
+
+ gd->rd2 = rd = elm_radio_add(bx3);
+ elm_radio_state_value_set(rd, ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL);
+ elm_radio_group_add(rd, rdg);
+ elm_object_text_set(rd, "With Control Mode");
+ elm_box_pack_end(bx3, rd);
+ evas_object_show(rd);
+ elm_object_disabled_set(rd, EINA_TRUE);
+ evas_object_smart_callback_add(rd, "changed",
+ _multi_select_mode_changed_cb, gd->gl);
+
+ evas_object_smart_callback_add(tg, "changed",
+ _multi_select_changed_cb, gd);
+}
+
+void
+test_genlist_multi_select(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *win, *gl, *bx;
+ Genlist_Multi_Data *gd = calloc(1, sizeof(Genlist_Multi_Data));
+ Elm_Genlist_Item_Class *itc = NULL;
+ int i = 0;
+
+ win = elm_win_util_standard_add("genlist-multi-select", "Genlist Multi Select");
+ elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, gd);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gd->gl = gl = elm_genlist_add(bx);
+ _multi_select_frame_create(bx, gd);
+
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, gl);
+ evas_object_show(gl);
+
+ itc = elm_genlist_item_class_new();
+ itc->item_style = "default";
+ itc->func.text_get = gl_text_get;
+ itc->func.content_get = gl_content_get;
+ itc->func.state_get = gl_state_get;
+ itc->func.del = NULL;
+
+ for (i = 0; i < 100; i++)
+ {
+ elm_genlist_item_append(gl, itc,
+ (void *)(uintptr_t)i/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */,
+ (void *)(uintptr_t)(i * 10)/* func data */);
+ }
+ elm_genlist_item_class_free(itc);
+
+ evas_object_resize(win, 320, 500);
+ evas_object_show(win);
+}
+
+/* test genlist item search by text */
+
+typedef struct _gl20_Event_Data gl20_Event_Data;
+struct _gl20_Event_Data
+{
+ Evas_Object *gl_obj;
+ Evas_Object *tg_obj;
+ Evas_Object *en_obj;
+ Elm_Object_Item *last_item_found;
+};
+
+static const char *_gl20_items_text[] = {
+ "Albany", "Annapolis",
+ "Atlanta", "Augusta",
+ "Austin", "Baton Rouge",
+ "Bismarck", "Boise",
+ "Boston", "Carson City",
+ "Charleston", "Cheyenne",
+ "Columbia", "Columbus",
+ "Concord", "Denver",
+ "Des Moines", "Dover",
+ "Frankfort", "Harrisburg",
+ "Hartford", "Helena",
+ "Honolulu", "Indianapolis",
+ "Jackson", "Jefferson City",
+ "Juneau", "Lansing",
+ "Lincoln", "Little Rock",
+ "Madison", "Montgomery",
+ "Montpelier", "Nashville",
+ "Oklahoma City", "Olympia",
+ "Phoenix", "Pierre",
+ "Providence", "Raleigh",
+ "Richmond", "Sacramento",
+ "Saint Paul", "Salem",
+ "Salt Lake City", "Santa Fe",
+ "Springfield", "Tallahassee",
+ "Topeka", "Trenton" };
+
+static char *
+_gl20_text_get(void *data, Evas_Object *obj EINA_UNUSED,
+ const char *part EINA_UNUSED)
+{
+ char buf[32];
+ int item_index = (int)(uintptr_t)data;
+
+ if (item_index < 50)
+ {
+ snprintf(buf, sizeof(buf), "%s", _gl20_items_text[item_index]);
+ return strdup(buf);
+ }
+ else if (item_index < 100)
+ {
+ snprintf(buf, sizeof(buf), "%X", (item_index - 50));
+ return strdup(buf);
+ }
+ else if (item_index == 100)
+ return strdup("Tree Item");
+
+ return NULL;
+}
+
+static void
+_gl20_search_item(gl20_Event_Data *event_data, Elm_Object_Item * it)
+{
+ // TIZEN_ONLY: Apply genlist widget from Tizen 2.3
+ (void) event_data;
+ (void) it;
+ /*
+ const char *str = elm_entry_entry_get(event_data->en_obj);
+ if (!str || !strlen(str)) return;
+
+ Elm_Glob_Match_Flags flag = 0;
+ if (!elm_check_state_get(event_data->tg_obj)) flag = ELM_GLOB_MATCH_NOCASE;
+
+ printf("Looking for \"%s\". ", str);
+ event_data->last_item_found = elm_genlist_search_by_text_item_get
+ (event_data->gl_obj, it, NULL, str, flag);
+
+ if (event_data->last_item_found)
+ {
+ printf("Found.\n");
+ elm_genlist_item_selected_set(event_data->last_item_found, EINA_TRUE);
+ elm_genlist_item_bring_in(event_data->last_item_found,
+ ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
+ elm_object_focus_set(event_data->en_obj, EINA_TRUE);
+ }
+ else
+ printf("Not Found.\n");
+ */
+}
+
+static void
+_gl20_search_settings_changed_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *einfo EINA_UNUSED)
+{
+ _gl20_search_item(data, NULL);
+}
+
+static Elm_Genlist_Item_Class *
+_gl20_item_class_create(const char *item_style)
+{
+ Elm_Genlist_Item_Class * itc = elm_genlist_item_class_new();
+ itc->item_style = item_style;
+ itc->func.text_get = _gl20_text_get;
+ itc->func.content_get = gl_content_get;
+ itc->func.state_get = gl_state_get;
+ itc->func.del = NULL;
+ return itc;
+}
+
+static void
+_gl20_expand_cb(void *data EINA_UNUSED, Evas_Object *o EINA_UNUSED,
+ void *event_info)
+{
+ Elm_Object_Item *glit = event_info;
+ Evas_Object *gl = elm_object_item_widget_get(glit);
+ Elm_Genlist_Item_Class *itc = NULL;
+ int i = 0;
+
+ itc = _gl20_item_class_create("default");
+
+ for (i = 50; i < 100; i++)
+ {
+ elm_genlist_item_append(gl, itc,
+ (void *)(uintptr_t) i/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_NONE, NULL/* func */,
+ NULL/* func data */);
+ }
+ elm_genlist_item_class_free(itc);
+}
+
+static void _gl20_on_keydown(void *data, Evas *evas EINA_UNUSED,
+ Evas_Object *o EINA_UNUSED, void *einfo)
+{
+ Evas_Event_Key_Down *ev = einfo;
+ gl20_Event_Data * event_data = (gl20_Event_Data *)data;
+
+ if (!strcmp(ev->key, "Return"))
+ {
+ printf("Looking for next item\n");
+ _gl20_search_item(data, event_data->last_item_found);
+ }
+}
+
+void
+test_genlist20(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *win, *bx, *gl;
+ Evas_Object *fr, *lb_frame; // info frame
+ Evas_Object *bx_entry, *lb_entry, *en; // search line
+ Evas_Object *tg; // "case sensitive" toggle
+ Elm_Genlist_Item_Class *itc = NULL;
+ gl20_Event_Data* event_data = NULL;
+ int i = 0;
+
+ win = elm_win_util_standard_add("genlist-item-search-by-text",
+ "Genlist Item Search By Text");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ fr = elm_frame_add(bx);
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(fr, "Information");
+ elm_box_pack_end(bx, fr);
+ evas_object_show(fr);
+
+ lb_frame = elm_label_add(fr);
+ elm_object_text_set(lb_frame,
+ "<align=left>This is an example of "
+ "elm_genlist_search_by_text_item_get() usage.<br>"
+ "Enter search string to the entry and press Enter to "
+ "show next search result.<br>");
+ elm_object_content_set(fr, lb_frame);
+ evas_object_show(lb_frame);
+
+ tg = elm_check_add(win);
+ elm_object_style_set(tg, "toggle");
+ elm_object_text_set(tg, " Case Sensitive Search");
+ elm_check_state_set(tg, EINA_TRUE);
+ elm_box_pack_end(bx, tg);
+ evas_object_show(tg);
+
+ bx_entry = elm_box_add(win);
+ elm_box_horizontal_set(bx_entry, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx_entry, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(bx_entry, EVAS_HINT_FILL, 0.0);
+ elm_box_pack_end(bx, bx_entry);
+ evas_object_show(bx_entry);
+
+ lb_entry = elm_label_add(win);
+ elm_object_text_set(lb_entry, " Search:");
+ evas_object_size_hint_weight_set(lb_entry, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(lb_entry, 0.0, EVAS_HINT_FILL);
+ elm_box_pack_end(bx_entry, lb_entry);
+ evas_object_show(lb_entry);
+
+ en = elm_entry_add(win);
+ elm_entry_single_line_set(en, EINA_TRUE);
+ elm_entry_scrollable_set(en, EINA_TRUE);
+ elm_object_part_text_set(en, "guide", "Type item's name here to search.");
+ evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx_entry, en);
+ evas_object_show(en);
+ elm_object_focus_set(en, EINA_TRUE);
+
+ gl = elm_genlist_add(bx);
+
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, gl);
+ evas_object_show(gl);
+
+ event_data = calloc(1, sizeof(gl20_Event_Data));
+ event_data->tg_obj = tg;
+ event_data->en_obj = en;
+ event_data->gl_obj = gl;
+ event_data->last_item_found = NULL;
+
+ evas_object_event_callback_add(en, EVAS_CALLBACK_KEY_DOWN,
+ _gl20_on_keydown, (void*)event_data);
+ evas_object_event_callback_add(gl, EVAS_CALLBACK_FREE,
+ _cleanup_cb, (void*)event_data);
+ evas_object_smart_callback_add(en, "changed,user",
+ _gl20_search_settings_changed_cb, (void*)event_data);
+ evas_object_smart_callback_add(tg, "changed",
+ _gl20_search_settings_changed_cb, (void*)event_data);
+ evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
+ evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
+ evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
+ evas_object_smart_callback_add(gl, "expanded", _gl20_expand_cb, gl);
+
+ itc = _gl20_item_class_create("tree_effect");
+
+ elm_genlist_item_append(gl, itc,
+ (void *)100/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_TREE,
+ NULL/* func */,
+ NULL/* func data */);
+
+ itc->item_style = "default";
+
+ for (i = 0; i < 50; i++)
+ {
+ elm_genlist_item_append(gl, itc,
+ (void *)(uintptr_t)i/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE,
+ NULL/* func */,
+ NULL/* func data */);
+ }
+
+ elm_genlist_item_class_free(itc);
+
+ evas_object_resize(win, 320, 500);
+ evas_object_show(win);
+}
+
+/* test genlist deletion */
+
+static void _gl_del_sel(void *data, Evas_Object *obj, void *event_info);
+
+static void
+_gl_del_win_del_cb(void *data, Evas *e EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ if (!data) return;
+ elm_genlist_item_class_free(data);
+}
+
+static void
+_gl_del_unrealized_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info)
+{
+ int num = (int)(uintptr_t)elm_object_item_data_get(event_info);
+ printf("unrealized item # %d\n", num);
+}
+
+static void
+_gl_del_doubleclick_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info)
+{
+ int num = (int)(uintptr_t)elm_object_item_data_get(event_info);
+ int num_category = num % 4;
+
+ if (num_category == 3)
+ elm_genlist_clear(obj);
+}
+static Evas_Object *
+_gl_del_genlist_add(Evas_Object *bx)
+{
+ Evas_Object *gl = NULL;
+
+ gl = elm_genlist_add(bx);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, gl);
+ evas_object_show(gl);
+ evas_object_smart_callback_add(gl, "unrealized",
+ _gl_del_unrealized_cb, NULL);
+ evas_object_smart_callback_add(gl, "clicked,double",
+ _gl_del_doubleclick_cb, NULL);
+
+ return gl;
+}
+
+static void
+_gl_del_item_append(Evas_Object *gl, Elm_Genlist_Item_Class *itc)
+{
+ int i = 0;
+ for (i = 0; i < 1000; i++)
+ {
+ elm_genlist_item_append(gl, itc,
+ (void *)(uintptr_t)i/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE,
+ _gl_del_sel/* func */,
+ (void *)(uintptr_t)(i)/* func data */);
+ }
+}
+
+char *_gl_del_text_get(void *data, Evas_Object *obj EINA_UNUSED,
+ const char *part EINA_UNUSED)
+{
+ char buf[256] = { 0 };
+ int num = (int)(uintptr_t)data;
+ int num_category = num % 4;
+
+ if (num_category == 0)
+ snprintf(buf, sizeof(buf),
+ "Item #%.02i - 1. Item Del", num);
+ else if (num_category == 1)
+ snprintf(buf, sizeof(buf),
+ "Item #%.02i - 2. Genlist Clear and Item Append", num);
+ else if (num_category == 2)
+ snprintf(buf, sizeof(buf),
+ "Item #%.02i - 3. Genlist Del", num);
+ else if (num_category == 3)
+ snprintf(buf, sizeof(buf),
+ "Item #%.02i - 4. Genlist Clear on double-click", num);
+
+ return strdup(buf);
+}
+
+static void
+_gl_del_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ int num = (int)(uintptr_t)data;
+ int num_category = num % 4;
+ Elm_Object_Item *it = event_info;
+ Elm_Genlist_Item_Class *itc =
+ (Elm_Genlist_Item_Class *)elm_genlist_item_item_class_get(it);
+
+ if (num_category == 0)
+ elm_object_item_del(it);
+ else if (num_category == 1)
+ {
+ elm_genlist_clear(obj);
+ _gl_del_item_append(obj, itc);
+ }
+ else if (num_category == 2)
+ {
+ evas_object_del(obj);
+ }
+}
+
+static void
+_gl_del_del_cb(void *data, Evas_Object *obj EINA_UNUSED)
+{
+ printf("deleted item # %d\n", (int)(uintptr_t)data);
+}
+
+void
+test_genlist_del(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *win, *bx, *fr, *lb, *gl;
+ Elm_Genlist_Item_Class *itc = NULL;
+
+ win = elm_win_util_standard_add("genlist-del", "Genlist Del");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ elm_box_align_set(bx, 0.5, 0.0);
+ evas_object_show(bx);
+
+ fr = elm_frame_add(bx);
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(fr, "Information");
+ elm_box_pack_end(bx, fr);
+ evas_object_show(fr);
+
+ lb = elm_label_add(fr);
+ elm_object_text_set(lb, "<align=left>This example tests the following cases"
+ " on item selection.<br/>"
+ " 1. genlist item deletion<br/>"
+ " 2. genlist clear and item append<br/>"
+ " 3. genlist del<br/>"
+ " 4. genlist clear on double-click</align>");
+ elm_object_content_set(fr, lb);
+ evas_object_show(lb);
+
+ itc = elm_genlist_item_class_new();
+ itc->item_style = "default";
+ itc->func.text_get = _gl_del_text_get;
+ itc->func.content_get = gl_content_get;
+ itc->func.state_get = NULL;
+ itc->func.del = _gl_del_del_cb;
+ evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,
+ _gl_del_win_del_cb, itc);
+
+ gl = _gl_del_genlist_add(bx);
+ _gl_del_item_append(gl, itc);
+
+ evas_object_resize(win, 320, 500);
+ evas_object_show(win);
+}
+
+/*************/
+static unsigned _gl_focus_objects = 3;
+static const char *_gl_focus_object_names[] = {"None", "Square", "Button", "Check", "Box"};
+
+// for the top genlist items
+static char *
+gl_focus_top_items_text_get(void *data, Evas_Object *obj EINA_UNUSED,
+ const char *part EINA_UNUSED)
+{
+ if (!data) return NULL;
+
+ if (!strcmp(data, "do_nothing"))
+ return strdup("Genlist Item");
+ else if (!strcmp(data, "popup_sel"))
+ return strdup("Create a popup on Select");
+ else if (!strcmp(data, "popup_mouse_down"))
+ return strdup("Create a popup on Mouse Down");
+ else if (!strcmp(data, "clear_on_focus"))
+ return strdup("Genlist Clear on Focus");
+ else
+ return NULL;
+}
+
+static char *
+gl_focus_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part EINA_UNUSED)
+{
+ char buf[256];
+ unsigned char op = (uintptr_t)data % 100;
+ unsigned char v1, v2;
+
+ v1 = op / 10;
+ if (v1 > 4) v1 = 4;
+ v2 = op % 10;
+ if (v2 > 4) v2 = 4;
+ snprintf(buf, sizeof(buf), " %s / %s ",
+ _gl_focus_object_names[v1], _gl_focus_object_names[v2]);
+ return strdup(buf);
+}
+
+static Evas_Object *
+gl_focus_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ Evas_Object *cnt = NULL;
+
+ char op = (uintptr_t)data % 100;
+ char type = (!strcmp(part,"elm.swallow.icon")) ? op / 10 : op % 10;
+
+ switch(type)
+ {
+ case 1:
+ cnt = elm_bg_add(obj);
+ evas_object_color_set(cnt, 128, 18, 128, 255);
+ break;
+ case 2:
+ cnt = elm_button_add(obj);
+ break;
+ case 3:
+ cnt = elm_check_add(obj);
+ break;
+ case 4:
+ cnt = elm_box_add(obj);
+ evas_object_size_hint_align_set(cnt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_horizontal_set(cnt, EINA_TRUE);
+ elm_box_pack_end(cnt, gl_focus_content_get((void *)2, obj, ""));
+ elm_box_pack_end(cnt, gl_focus_content_get((void *)3, obj, ""));
+ elm_box_pack_end(cnt, gl_focus_content_get((void *)2, obj, ""));
+ break;
+ default:
+ break;
+
+ }
+ if (cnt)
+ {
+ evas_object_size_hint_weight_set(cnt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(cnt);
+ }
+ return cnt;
+}
+
+static void
+_gl_focus_sel_popup_close_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ evas_object_del(data);
+}
+
+static void
+_gl_focus_sel_popup_create(Evas_Object *parent)
+{
+ Evas_Object *popup = NULL, *btn = NULL;
+
+ popup = elm_popup_add(parent);
+ elm_object_text_set(popup, "Popup for the genlist focus test with popup creation.");
+
+ // popup buttons
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, "Close");
+ elm_object_part_content_set(popup, "button1", btn);
+ evas_object_smart_callback_add(btn, "clicked", _gl_focus_sel_popup_close_btn_cb, popup);
+
+ // popup show should be called after adding all the contents and the buttons
+ // of popup to set the focus into popup's contents correctly.
+ evas_object_show(popup);
+}
+
+static void
+_gl_focus_0_item_sel_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ _gl_focus_sel_popup_create(obj);
+}
+
+static void
+_gl_focus_item_loop_enable_changed_cb(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *gl = data;
+ elm_object_scroll_item_loop_enabled_set(gl, elm_check_state_get(obj));
+}
+
+static void
+_gl_focus_focus_on_selection_set(Evas_Object *gl,
+ Evas_Object *chk, Eina_Bool focus)
+{
+ // TIZEN_ONLY: Apply genlist widget from Tizen 2.3
+ (void) gl;
+ (void) chk;
+ (void) focus;
+// elm_genlist_focus_on_selection_set(gl, focus);
+// elm_check_state_set(chk, focus);
+// printf("genlist_focus_on_selection = %s\n", (focus) ? "true" : "false");
+ //
+}
+
+static void
+_gl_focus_focus_on_selection_changed_cb(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ // TIZEN_ONLY: Apply genlist widget from Tizen 2.3
+ _gl_focus_focus_on_selection_set(data, obj, EINA_FALSE);
+// Eina_Bool nextstate = !elm_genlist_focus_on_selection_get(data);
+// _gl_focus_focus_on_selection_set(data, obj, nextstate);
+ //
+}
+
+static void
+_gl_focus_focus_highlight_changed_cb(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_win_focus_highlight_enabled_set(data,
+ elm_check_state_get(obj));
+}
+
+static void
+_gl_focus_focus_animate_changed_cb(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_win_focus_highlight_animate_set(data,
+ elm_check_state_get(obj));
+}
+
+static void
+_gl_focus_move_policy_changed_cb(void *data EINA_UNUSED,
+ Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ int val = elm_radio_value_get(obj);
+
+ if (val == 0)
+ elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_CLICK);
+ else if (val == 1)
+ elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_IN);
+}
+
+static void
+_gl_focus_item_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ printf("item,focused: %p\n", event_info);
+
+ if (event_info == data)
+ elm_genlist_clear(obj);
+}
+
+static void
+_gl_focus_item_unfocus_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+ void *event_info)
+{
+ printf("item,unfocused %p\n", event_info);
+}
+
+static void
+_gl_focus_item_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ printf("%s: %p\n", (char *)data, event_info);
+}
+
+static void
+_gl_focus_key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ Evas_Event_Key_Down *ev = event_info;
+ printf("\n=== Key Down : %s ===\n", ev->keyname);
+}
+
+static void
+_gl_focus_mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
+ Evas_Object *obj, void *event_info)
+{
+ Evas_Event_Mouse_Down *ev = event_info;
+ Elm_Object_Item *it = NULL;
+ int postret = 0;
+
+ it = elm_genlist_at_xy_item_get(obj, ev->canvas.x, ev->canvas.y, &postret);
+ if (!it) return;
+
+ if (elm_genlist_item_index_get(it) == 4)
+ _gl_focus_sel_popup_create(obj);
+}
+
+static Ecore_Timer *timer = NULL;
+static void
+_gl_focus_win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ ecore_timer_del(timer);
+ timer = NULL;
+}
+
+static void
+_gl_focus_item_select_on_focus_disable_changed_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_config_item_select_on_focus_disabled_set(elm_check_state_get(obj));
+}
+
+static void
+_gl_first_item_focus_on_first_focus_in_cb(void *data EINA_UNUSED, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_config_first_item_focus_on_first_focusin_set(elm_check_state_get(obj));
+}
+static Eina_Bool
+_focus_timer_cb(void *data)
+{
+ elm_object_item_focus_set(data, EINA_TRUE);
+ timer = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool
+_select_timer_cb(void *data)
+{
+ elm_genlist_item_selected_set(data, EINA_TRUE);
+ timer = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void
+_focus_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ ecore_timer_del(timer);
+ timer = ecore_timer_add(1.5, _focus_timer_cb, data);
+}
+
+static void
+_sel_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ ecore_timer_del(timer);
+ timer = ecore_timer_add(1.5, _select_timer_cb, data);
+}
+
+static void
+_dis_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ elm_object_item_disabled_set(data, EINA_TRUE);
+}
+
+static void
+_add_more_items_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Elm_Genlist_Item_Class *itc = NULL;
+ int i = 0;
+
+ itc = elm_genlist_item_class_new();
+ itc->item_style = "default";
+ itc->func.text_get = gl_text_get;
+ itc->func.content_get = NULL;
+ itc->func.state_get = NULL;
+ itc->func.del = NULL;
+
+
+ for (i = 0; i < 1000; i++)
+ {
+ elm_genlist_item_append(data, itc, (void *)(uintptr_t)i,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+
+ elm_genlist_item_class_free(itc);
+}
+
+static void
+_focus_button_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ printf("Button clicked: %s\n", (char *)data);
+}
+
+void
+_focus_autoscroll_changed_cb(void *data EINA_UNUSED,
+ Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ elm_config_focus_autoscroll_mode_set(elm_radio_value_get(obj));
+}
+
+/* this function is used in another tests such as list, gengrid, and toolbar. */
+Evas_Object *
+_focus_autoscroll_mode_frame_create(Evas_Object *parent)
+{
+ Evas_Object *fr, *bx, *rdg, *rd;
+
+ fr = elm_frame_add(parent);
+ elm_object_text_set(fr, "Focus Autoscroll Mode");
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, 0.5);
+ evas_object_show(fr);
+
+ bx = elm_box_add(fr);
+ elm_object_content_set(fr, bx);
+ evas_object_show(bx);
+
+ rdg = rd = elm_radio_add(bx);
+ elm_radio_state_value_set(rd, ELM_FOCUS_AUTOSCROLL_MODE_SHOW);
+ elm_object_text_set(rd, "ELM_FOCUS_AUTOSCROLL_MODE_SHOW");
+ elm_object_tooltip_text_set(rd, "Directly show the focused region<br/>"
+ "or item automatically inside a scroller.");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(rd, 0.0, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, rd);
+ evas_object_show(rd);
+ evas_object_smart_callback_add(rd, "changed",
+ _focus_autoscroll_changed_cb,
+ NULL);
+
+ rd = elm_radio_add(bx);
+ elm_radio_state_value_set(rd, ELM_FOCUS_AUTOSCROLL_MODE_NONE);
+ elm_object_text_set(rd, "ELM_FOCUS_AUTOSCROLL_MODE_NONE");
+ elm_object_tooltip_text_set(rd, "Do not show the focused region or<br/>"
+ "item automatically inside a scroller.");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(rd, 0.0, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, rd);
+ elm_radio_group_add(rd, rdg);
+ evas_object_show(rd);
+ evas_object_smart_callback_add(rd, "changed",
+ _focus_autoscroll_changed_cb,
+ NULL);
+
+
+ rd = elm_radio_add(bx);
+ elm_radio_state_value_set(rd, ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN);
+ elm_object_text_set(rd, "ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN");
+ elm_object_tooltip_text_set(rd, "Bring in the focused region or item<br/>"
+ "automatically which might invole the scrolling.");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(rd, 0.0, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, rd);
+ elm_radio_group_add(rd, rdg);
+ evas_object_show(rd);
+ evas_object_smart_callback_add(rd, "changed",
+ _focus_autoscroll_changed_cb,
+ NULL);
+
+ elm_radio_value_set(rdg, elm_config_focus_autoscroll_mode_get());
+
+ return fr;
+}
+
+static void
+_test_genlist_focus_option_panel_create(Evas_Object *win, Evas_Object *bx,
+ Evas_Object *gl, Elm_Object_Item *it_0,
+ Elm_Object_Item *it_2)
+{
+ Evas_Object *fr = NULL, *bx_opt = NULL, *chk = NULL;
+ Evas_Object *bx_mv = NULL, *rd = NULL, *rdg = NULL;
+ Evas_Object *btn_box = NULL, *btn = NULL;
+
+ fr = elm_frame_add(bx);
+ elm_object_text_set(fr, "Options");
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, fr);
+ evas_object_show(fr);
+
+ bx_opt = elm_box_add(fr);
+ elm_box_horizontal_set(bx_opt, EINA_TRUE);
+ elm_object_content_set(fr, bx_opt);
+ evas_object_show(bx_opt);
+
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "Focus Highlight");
+ elm_check_state_set(chk, EINA_TRUE);
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(chk, "changed",
+ _gl_focus_focus_highlight_changed_cb,
+ win);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "Focus Animation");
+ elm_check_state_set(chk, EINA_TRUE);
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(chk, "changed",
+ _gl_focus_focus_animate_changed_cb,
+ win);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "Focus on selection");
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(chk, "changed",
+ _gl_focus_focus_on_selection_changed_cb, gl);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "Item Looping Enable");
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(chk, "changed",
+ _gl_focus_item_loop_enable_changed_cb, gl);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "Item Select on Focus disable");
+ elm_check_state_set(chk, elm_config_item_select_on_focus_disabled_get());
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(chk, "changed",
+ _gl_focus_item_select_on_focus_disable_changed_cb,
+ NULL);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+
+ chk = elm_check_add(bx_opt);
+ elm_object_text_set(chk, "First item focus on first focus in");
+ elm_check_state_set(chk, elm_config_first_item_focus_on_first_focusin_get());
+ evas_object_size_hint_weight_set(chk, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(chk, "changed",
+ _gl_first_item_focus_on_first_focus_in_cb,
+ NULL);
+ elm_box_pack_end(bx_opt, chk);
+ evas_object_show(chk);
+
+ // Focus Autoscroll Mode
+ fr = _focus_autoscroll_mode_frame_create(bx);
+ elm_box_pack_end(bx, fr);
+
+ // Focus Movement Policy
+ fr = elm_frame_add(bx);
+ elm_object_text_set(fr, "Focus Movement Policy");
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, fr);
+ evas_object_show(fr);
+
+ bx_mv = elm_box_add(fr);
+ elm_box_horizontal_set(bx_mv, EINA_TRUE);
+ elm_object_content_set(fr, bx_mv);
+ evas_object_show(bx_mv);
+
+ rdg = rd = elm_radio_add(bx_mv);
+ elm_object_text_set(rd, "Focus Move by Click");
+ elm_radio_state_value_set(rd, 0);
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(rd, "changed",
+ _gl_focus_move_policy_changed_cb,
+ NULL);
+ elm_box_pack_end(bx_mv, rd);
+ evas_object_show(rd);
+
+ rd = elm_radio_add(bx_mv);
+ elm_object_text_set(rd, "Focus Move by Mouse-In");
+ elm_radio_group_add(rd, rdg);
+ elm_radio_state_value_set(rd, 1);
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(rd, "changed",
+ _gl_focus_move_policy_changed_cb,
+ NULL);
+ elm_box_pack_end(bx_mv, rd);
+ evas_object_show(rd);
+
+ // Options
+ fr = elm_frame_add(bx);
+ elm_object_text_set(fr, "Options");
+ evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, fr);
+ evas_object_show(fr);
+
+ btn_box = elm_box_add(fr);
+ elm_object_content_set(fr, btn_box);
+ evas_object_show(btn_box);
+
+ btn = elm_button_add(btn_box);
+ elm_object_text_set(btn, "Focus 2nd Item after 1.5 seconds.");
+ evas_object_size_hint_weight_set(btn, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(btn_box, btn);
+ evas_object_show(btn);
+ evas_object_smart_callback_add(btn, "clicked", _focus_btn_cb, it_2);
+
+ btn = elm_button_add(btn_box);
+ elm_object_text_set(btn, "Select 2nd Item after 1.5 seconds.");
+ evas_object_size_hint_weight_set(btn, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(btn_box, btn);
+ evas_object_show(btn);
+ evas_object_smart_callback_add(btn, "clicked", _sel_btn_cb, it_2);
+
+ btn = elm_button_add(btn_box);
+ elm_object_text_set(btn, "Disable 1st Item.");
+ evas_object_size_hint_weight_set(btn, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(btn_box, btn);
+ evas_object_show(btn);
+ evas_object_smart_callback_add(btn, "clicked", _dis_btn_cb, it_0);
+
+
+ btn = elm_button_add(btn_box);
+ elm_object_text_set(btn, "Add more Genlist items");
+ evas_object_size_hint_weight_set(btn, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(btn_box, btn);
+ evas_object_show(btn);
+ evas_object_smart_callback_add(btn, "clicked", _add_more_items_btn_cb, gl);
+}
+
+void
+test_genlist_focus(void *data EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *win, *bx, *bx2, *gl, *btn;
+ unsigned lhand, rhand;
+ Elm_Object_Item *it = NULL, *it_1 = NULL, *it_2 = NULL;
+ Elm_Genlist_Item_Class *itc = NULL, *itc1 = NULL, *itc2 = NULL;
+
+ api_data *api = calloc(1, sizeof(api_data));
+ win = elm_win_util_standard_add("genlist-focus", "Genlist Focus");
+ elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,
+ _gl_focus_win_del_cb, NULL);
+
+ elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
+ elm_win_focus_highlight_animate_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ btn = elm_button_add(bx);
+ elm_object_text_set(btn, "Up");
+ elm_box_pack_end(bx, btn);
+ evas_object_smart_callback_add(btn, "clicked",
+ _focus_button_clicked_cb, "Up");
+ evas_object_show(btn);
+
+ bx2 = elm_box_add(bx);
+ elm_box_horizontal_set(bx2, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
+ btn = elm_button_add(bx2);
+ elm_object_text_set(btn, "Left");
+ elm_box_pack_end(bx2, btn);
+ evas_object_smart_callback_add(btn, "clicked",
+ _focus_button_clicked_cb, "Left");
+ evas_object_show(btn);
+
+ gl = elm_genlist_add(bx);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_box_pack_end(bx2, gl);
+ api->gl = gl;
+ evas_object_show(gl);
+ evas_object_smart_callback_add(gl, "selected", _gl_focus_item_cb, "selected");
+ evas_object_smart_callback_add(gl, "unselected", _gl_focus_item_cb, "unselected");
+ evas_object_smart_callback_add(gl, "activated", _gl_focus_item_cb, "activated");
+ evas_object_smart_callback_add(gl, "highlighted", _gl_focus_item_cb, "highlighted");
+ evas_object_smart_callback_add(gl, "unhighlighted", _gl_focus_item_cb, "unhighlighted");
+ evas_object_event_callback_add(gl, EVAS_CALLBACK_KEY_DOWN, _gl_focus_key_down_cb, NULL);
+ evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_DOWN, _gl_focus_mouse_down_cb, NULL);
+
+ btn = elm_button_add(bx2);
+ elm_object_text_set(btn, "Right");
+ elm_box_pack_end(bx2, btn);
+ evas_object_smart_callback_add(btn, "clicked",
+ _focus_button_clicked_cb, "Right");
+ evas_object_show(btn);
+
+ btn = elm_button_add(bx);
+ elm_object_text_set(btn, "Down");
+ elm_box_pack_end(bx, btn);
+ evas_object_smart_callback_add(btn, "clicked",
+ _focus_button_clicked_cb, "Down");
+ evas_object_show(btn);
+
+ itc = elm_genlist_item_class_new();
+ itc->item_style = "default";
+ itc->func.text_get = gl_focus_top_items_text_get;
+ itc->func.content_get = NULL;
+ itc->func.state_get = NULL;
+ itc->func.del = NULL;
+
+ itc1 = elm_genlist_item_class_new();
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_focus_text_get;
+ itc1->func.content_get = gl_focus_content_get;
+ itc1->func.state_get = NULL;
+ itc1->func.del = NULL;
+
+ itc2 = elm_genlist_item_class_new();
+ itc2->item_style = "tree_effect";
+ itc2->func.text_get = gl_focus_text_get;
+ itc2->func.content_get = gl_focus_content_get;
+ itc2->func.state_get = NULL;
+ itc2->func.del = NULL;
+
+ it_1 = elm_genlist_item_append(gl, itc, "do_nothing", NULL, ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+ it_2 = elm_genlist_item_append(gl, itc, "do_nothing", NULL, ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+ elm_genlist_item_append(gl, itc, "popup_sel", NULL, ELM_GENLIST_ITEM_NONE,
+ _gl_focus_0_item_sel_cb, NULL);
+ elm_genlist_item_append(gl, itc, "popup_mouse_down", NULL, ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+
+ it = elm_genlist_item_append(gl, itc, "clear_on_focus", NULL, ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+ evas_object_smart_callback_add(gl, "item,focused", _gl_focus_item_focus_cb, it);
+ evas_object_smart_callback_add(gl, "item,unfocused", _gl_focus_item_unfocus_cb, NULL);
+
+ for (lhand = 0; lhand < _gl_focus_objects; lhand++)
+ {
+ for (rhand = 0; rhand < _gl_focus_objects; rhand++)
+ {
+ unsigned digit1 = lhand * 10 + rhand;
+ elm_genlist_item_append(gl, itc1, (void*)(uintptr_t)digit1,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ unsigned digit2 = (_gl_focus_objects - lhand -1) * 10 +
+ (_gl_focus_objects - rhand -1);
+ it = elm_genlist_item_append(gl, itc1, (void*)(uintptr_t)digit2,
+ NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ if (rhand == 4)
+ elm_object_item_disabled_set(it, EINA_TRUE);
+
+ if (rhand == (_gl_focus_objects - 1))
+ elm_genlist_item_append(gl, itc2, (void*)(uintptr_t)digit1,
+ NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
+ }
+ }
+
+ elm_genlist_item_class_free(itc);
+ elm_genlist_item_class_free(itc1);
+ elm_genlist_item_class_free(itc2);
+
+ // Options
+ _test_genlist_focus_option_panel_create(win, bx, gl, it_1, it_2);
+
+ evas_object_resize(win, 420, 600);
+ evas_object_show(win);
+}
+