}
}
+group { name: "elm/genlist/item/full/default";
+ alias: "elm/genlist/item_compress/full/default";
+ data.item: "selectraise" "on";
+ data.item: "contents" "elm.swallow.content";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "reorder_bg";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -7 -7;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 9 9;
+ }
+ image {
+ normal: "bt_bases.png";
+ border: 6 6 6 6;
+ }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "default" 1.0;
+ inherit: "default" 0.0;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "selected" 0.0;
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.content";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "selected", vl);
+ set_state(PART:"fg1", "selected", vl);
+ set_state(PART:"fg2", "selected", vl);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "default", vl);
+ set_state(PART:"fg1", "default", vl);
+ set_state(PART:"fg2", "default", vl);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ program {
+ name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ }
+}
+
group { name: "elm/genlist/item/one_icon/default";
data.item: "selectraise" "on";
data.item: "texts" "elm.text";
api_data *a = data;
char str[128];
- INF("clicked event on API Button: api_state=<%d>\n", a->state);
+ INF("clicked event on API Button: api_state=<%d>", a->state);
set_api_state(a);
a->state++;
sprintf(str, "Next API function (%u)", a->state);
return ic;
}
+static void on_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("button clicked\n");
+}
+
+static void on_ck_changed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("checkbox changed\n");
+}
+
+Evas_Object *gl_content_full_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
+{
+ Evas_Object *fr, *bx, *ic, *bt, *ck;
+
+ if (strcmp(part, "elm.swallow.content") != 0) return NULL;
+
+ fr = elm_frame_add(obj);
+ elm_layout_text_set(fr, NULL, "A Frame");
+
+ bx = elm_box_add(fr);
+ elm_box_horizontal_set(bx, EINA_TRUE);
+
+ ic = elm_icon_add(bx);
+ elm_icon_standard_set(ic, "home");
+ evas_object_size_hint_min_set(ic, 32, 32);
+ evas_object_size_hint_align_set(ic, 0.5, EVAS_HINT_FILL);
+ evas_object_show(ic);
+ elm_box_pack_end(bx, ic);
+
+ bt = elm_button_add(bx);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_smart_callback_add(bt, "clicked", on_bt_clicked, NULL);
+ elm_layout_text_set(bt, NULL, "Click Me");
+ evas_object_show(bt);
+ elm_box_pack_end(bx, bt);
+
+ ck = elm_check_add(bx);
+ evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_smart_callback_add(ck, "changed", on_ck_changed, NULL);
+ elm_layout_text_set(ck, NULL, "some checkbox");
+ evas_object_show(ck);
+ elm_box_pack_end(bx, ck);
+
+ elm_layout_content_set(fr, NULL, bx);
+ evas_object_size_hint_min_set(fr, 100, 100);
+
+ return fr;
+}
+
+
Eina_Bool gl_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
return EINA_FALSE;
static void
gl_sel(void *data, Evas_Object *obj, void *event_info)
{
- INF("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", data, obj, event_info);
+ printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", data, obj, event_info);
}
static void
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\n", elm_object_item_data_get(gli), where);
+ INF("over %p, where %i", elm_object_item_data_get(gli), where);
else
- INF("over none, where %i\n", where);
+ INF("over none, where %i", where);
}
static void
static void
_gl_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
- INF("selected: %p\n", event_info);
+ printf("selected: %p\n", event_info);
}
static void
_gl_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
- INF("double clicked: %p\n", event_info);
+ printf("double clicked: %p\n", event_info);
}
static void
_gl_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
- INF("longpress %p\n", event_info);
+ printf("longpress %p\n", event_info);
}
static void
gli_selected = elm_genlist_selected_item_get(gl);
if (!gli_selected)
{
- INF("no item selected\n");
+ printf("no item selected\n");
return ;
}
gli_selected = elm_genlist_selected_item_get(gl);
if (!gli_selected)
{
- INF("no item selected\n");
+ printf("no item selected\n");
return ;
}
Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
if (!gli)
{
- INF("no item selected\n");
+ printf("no item selected\n");
return;
}
elm_object_item_del(gli);
Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
if (!gli)
{
- INF("no item selected\n");
+ printf("no item selected\n");
return;
}
elm_object_item_disabled_set(gli, EINA_TRUE);
while (it)
{
elm_genlist_item_update(it);
- INF("%i\n", i);
+ INF("%i", i);
i++;
it = elm_genlist_item_next_get(it);
}
{
Testitem *tit = data;
tit->onoff = elm_check_state_get(obj);
- INF("item %p onoff = %i\n", tit, tit->onoff);
+ printf("item %p onoff = %i\n", tit, tit->onoff);
}
static Elm_Genlist_Item_Class itc3;
{
Testitem *tit = data;
tit->onoff = elm_check_state_get(obj);
- INF("item %p onoff = %i\n", tit, tit->onoff);
+ printf("item %p onoff = %i\n", tit, tit->onoff);
}
static Elm_Genlist_Item_Class itc5;
static void
item_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("drag up\n");
+ INF("drag up");
}
static void
item_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("drag down\n");
+ INF("drag down");
}
static void
item_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("drag left\n");
+ INF("drag left");
}
static void
item_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("drag right\n");
+ INF("drag right");
}
static void
scroll_top(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("Top edge!\n");
+ INF("Top edge!");
}
static void
scroll_bottom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("Bottom edge!\n");
+ INF("Bottom edge!");
}
static void
scroll_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("Left edge!\n");
+ INF("Left edge!");
}
static void
scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("Right edge!\n");
+ INF("Right edge!");
}
static void
item_drag(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("drag\n");
+ INF("drag");
}
static void
item_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("drag stop\n");
+ INF("drag stop");
}
static void
item_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- INF("longpress\n");
+ INF("longpress");
}
void
{
Elm_Object_Item *glit = event_info;
int depth = elm_genlist_item_expanded_depth_get(glit);
- INF("expanded depth for selected item is %d\n", depth);
+ printf("expanded depth for selected item is %d", depth);
}
static void
void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
{
- INF("item deleted.\n");
+ printf("item deleted.\n");
}
static void
{
if (!event_info) return;
elm_genlist_item_item_class_update(event_info, &itc7);
- INF("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
+ printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
}
static void
// if needed, add application logic.
Elm_Object_Item *it;
it = elm_genlist_item_prev_get(item);
- INF("it=%p, prev_it=%p\n",item,it);
+ printf("it=%p, prev_it=%p\n",item,it);
}
/**
// if needed, add application logic.
Elm_Object_Item *it;
it = elm_genlist_item_next_get(item);
- INF("it=%p, next_it=%p\n",item,it);
+ printf("it=%p, next_it=%p\n",item,it);
}
void
gli_selected = elm_genlist_selected_item_get(gl);
if (!gli_selected)
{
- INF("no item selected\n");
+ printf("no item selected\n");
return;
}
gli_selected = elm_genlist_selected_item_get(gl);
if (!gli_selected)
{
- INF("no item selected\n");
+ printf("no item selected\n");
return;
}
void gl15_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
{
- INF("item deleted.\n");
+ printf("item deleted.\n");
}
static Elm_Genlist_Item_Class *itc15;
{
Elm_Object_Item *glit = event_info;
int depth = elm_genlist_item_expanded_depth_get(glit);
- INF("expanded depth for selected item is %d\n", depth);
+ printf("expanded depth for selected item is %d\n", depth);
}
static void
evas_object_show(win);
}
+void
+test_genlist19(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *gl, *bt_50, *bt_1500, *bx, *bxx, *bt;
+ Evas_Object *over;
+ Elm_Object_Item *gli;
+ int i;
+ api_data *api = calloc(1, sizeof(api_data));
+
+ win = elm_win_util_standard_add("genlist-full", "Genlist Full");
+ elm_win_autodel_set(win, EINA_TRUE);
+ 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);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ api->box = bx;
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
+ 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, "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
+ //elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
+ 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);
+
+ 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_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;
+
+ bt_50 = elm_button_add(win);
+ elm_object_text_set(bt_50, "Go to 50");
+ evas_object_show(bt_50);
+ elm_box_pack_end(bx, bt_50);
+
+ bt_1500 = elm_button_add(win);
+ elm_object_text_set(bt_1500, "Go to 1500");
+ evas_object_show(bt_1500);
+ elm_box_pack_end(bx, bt_1500);
+
+ 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 == 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);
+
+ evas_object_resize(win, 480, 800);
+ evas_object_show(win);
+}
+
#endif