From 6206f5f4a4771c6afd6a9735a3e9784ac1714708 Mon Sep 17 00:00:00 2001 From: Daniel Juyung Seo Date: Sat, 4 Jun 2011 01:52:08 +0000 Subject: [PATCH] Elementary genlist: Code refactoring. SVN revision: 59942 --- legacy/elementary/src/bin/test_genlist.c | 42 +++--------- legacy/elementary/src/lib/elm_genlist.c | 83 +++++++++++++++--------- 2 files changed, 62 insertions(+), 63 deletions(-) diff --git a/legacy/elementary/src/bin/test_genlist.c b/legacy/elementary/src/bin/test_genlist.c index 545403a897..04c14b14de 100644 --- a/legacy/elementary/src/bin/test_genlist.c +++ b/legacy/elementary/src/bin/test_genlist.c @@ -1783,30 +1783,8 @@ test_genlist10(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i /*************/ -static Elm_Genlist_Item_Class itc11; - -char *gl11_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__) -{ - char buf[256]; - snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data); - return strdup(buf); -} - -Evas_Object *gl11_icon_get(void *data __UNUSED__, Evas_Object *obj, const char *part) -{ - char buf[PATH_MAX]; - Evas_Object *ic = elm_icon_add(obj); - if (!strcmp(part, "elm.swallow.end")) - snprintf(buf, sizeof(buf), "%s/images/bubble.png", PACKAGE_DATA_DIR); - else - snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); - elm_icon_file_set(ic, buf, NULL); - evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - return ic; -} - static void -_reorder_tg_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__) +_reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__) { elm_genlist_reorder_mode_set(data, elm_toggle_state_get(obj)); } @@ -1837,7 +1815,7 @@ test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i Evas_Object *win, *bg, *fr, *lb, *bx, *tg, *gl; int i; - win = elm_win_add(NULL, "genlist11", ELM_WIN_BASIC); + win = elm_win_add(NULL, "genlist-reorder-mode", ELM_WIN_BASIC); elm_win_title_set(win, "Genlist Reorder Mode"); elm_win_autodel_set(win, 1); @@ -1872,20 +1850,20 @@ test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i tg = elm_toggle_add(win); elm_toggle_label_set(tg, "Reorder Mode:"); elm_toggle_state_set(tg, elm_mirrored_get()); - evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed, gl); + evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed_cb, gl); elm_box_pack_end(bx, tg); evas_object_show(tg); - itc11.item_style = "default"; - itc11.func.label_get = gl11_label_get; - itc11.func.icon_get = gl11_icon_get; - itc11.func.state_get = gl_state_get; - itc11.func.del = gl_del; - itc11.func.moved = gl_moved; + itc1.item_style = "default"; + itc1.func.label_get = gl_label_get; + itc1.func.icon_get = gl_icon_get; + itc1.func.state_get = gl_state_get; + itc1.func.del = gl_del; + itc1.func.moved = gl_moved; for (i = 0; i < 50; i++) elm_genlist_item_append(gl, - &itc11, + &itc1, (void *)(1 + i)/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE/* flags */, diff --git a/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index 60b4bc9a42..b56843d829 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/src/lib/elm_genlist.c @@ -214,7 +214,7 @@ struct _Widget_Data Evas_Coord anchor_y, reorder_start_y; Elm_List_Mode mode; Ecore_Timer *multi_timer, *scr_hold_timer; - Ecore_Animator *item_moving_effect_timer; + Ecore_Animator *reorder_move_animator; const char *mode_type; unsigned int start_time; Evas_Coord prev_x, prev_y, prev_mx, prev_my; @@ -372,7 +372,8 @@ static void _theme_hook(Evas_Object *obj); static void _show_region_hook(void *data, Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); -static void _item_unrealize(Elm_Genlist_Item *it, Eina_Bool calc); +static void _item_unrealize(Elm_Genlist_Item *it, + Eina_Bool calc); static void _item_block_unrealize(Item_Block *itb); static void _calc_job(void *data); static void _on_focus_hook(void *data, @@ -390,14 +391,19 @@ static void _signal_emit_hook(Evas_Object *obj, const char *source); static Eina_Bool _deselect_all_items(Widget_Data *wd); static void _pan_calculate(Evas_Object *obj); -static void _item_position(Elm_Genlist_Item *it, Evas_Object *obj, Evas_Coord it_x, Evas_Coord it_y); +static void _item_position(Elm_Genlist_Item *it, + Evas_Object *obj, + Evas_Coord it_x, + Evas_Coord it_y); static void _mode_item_realize(Elm_Genlist_Item *it); static void _mode_item_unrealize(Elm_Genlist_Item *it); static void _item_mode_set(Elm_Genlist_Item *it); static void _item_mode_unset(Widget_Data *wd); static void _group_items_recalc(void *data); -static void _item_move_after(Elm_Genlist_Item *it, Elm_Genlist_Item *after); -static void _item_move_before(Elm_Genlist_Item *it, Elm_Genlist_Item *before); +static void _item_move_after(Elm_Genlist_Item *it, + Elm_Genlist_Item *after); +static void _item_move_before(Elm_Genlist_Item *it, + Elm_Genlist_Item *before); static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_VERSION; @@ -2032,7 +2038,9 @@ _item_realize(Elm_Genlist_Item *it, _elm_genlist_item_state_update(it, itc); } - if ((calc) && (it->wd->homogeneous) && ((it->wd->item_width) || ((it->wd->item_width) && (it->wd->group_item_width)))) + if ((calc) && (it->wd->homogeneous) && + ((it->wd->item_width) || + ((it->wd->item_width) && (it->wd->group_item_width)))) { /* homogenous genlist shortcut */ if (!it->mincalcd) @@ -2106,18 +2114,21 @@ _item_realize(Elm_Genlist_Item *it, if (itc) _item_cache_free(itc); evas_event_thaw(evas_object_evas_get(it->wd->obj)); evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); - if (!calc) evas_object_smart_callback_call(it->base.widget, SIG_REALIZED, it); + if (!calc) + evas_object_smart_callback_call(it->base.widget, SIG_REALIZED, it); } static void -_item_unrealize(Elm_Genlist_Item *it, Eina_Bool calc) +_item_unrealize(Elm_Genlist_Item *it, + Eina_Bool calc) { Evas_Object *icon; if (!it->realized) return; if (it->wd->reorder_it == it) return; evas_event_freeze(evas_object_evas_get(it->wd->obj)); - if (!calc) evas_object_smart_callback_call(it->base.widget, SIG_UNREALIZED, it); + if (!calc) + evas_object_smart_callback_call(it->base.widget, SIG_UNREALIZED, it); if (it->long_timer) { ecore_timer_del(it->long_timer); @@ -2132,8 +2143,11 @@ _item_unrealize(Elm_Genlist_Item *it, Eina_Bool calc) } else { - edje_object_mirrored_set(it->base.view, elm_widget_mirrored_get(it->base.widget)); - edje_object_scale_set(it->base.view, elm_widget_scale_get(it->base.widget) * _elm_config->scale); + edje_object_mirrored_set(it->base.view, + elm_widget_mirrored_get(it->base.widget)); + edje_object_scale_set(it->base.view, + elm_widget_scale_get(it->base.widget) + * _elm_config->scale); _item_cache_add(it); } elm_widget_stringlist_free(it->labels); @@ -2300,7 +2314,7 @@ _get_space_for_reorder_item(Elm_Genlist_Item *it) } static Eina_Bool -_reorder_item_moving_effect_timer_cb(void *data) +_reorder_move_animator_cb(void *data) { Elm_Genlist_Item *it = data; Eina_Bool down = EINA_FALSE; @@ -2335,14 +2349,17 @@ _reorder_item_moving_effect_timer_cb(void *data) { it->old_scrl_y = it->scrl_y; it->move_effect_enabled = EINA_FALSE; - it->wd->item_moving_effect_timer = NULL; + it->wd->reorder_move_animator = NULL; return ECORE_CALLBACK_CANCEL; } return ECORE_CALLBACK_RENEW; } static void -_item_position(Elm_Genlist_Item *it, Evas_Object *view, Evas_Coord it_x, Evas_Coord it_y) +_item_position(Elm_Genlist_Item *it, + Evas_Object *view, + Evas_Coord it_x, + Evas_Coord it_y) { if (!it) return; if (!view) return; @@ -2407,16 +2424,20 @@ _item_block_position(Item_Block *itb, if (!it->move_effect_enabled) { it->move_effect_enabled = EINA_TRUE; - it->wd->item_moving_effect_timer = ecore_animator_add(_reorder_item_moving_effect_timer_cb, it); + it->wd->reorder_move_animator = + ecore_animator_add( + _reorder_move_animator_cb, it); } } if (!it->move_effect_enabled) { { if (it->mode_view) - _item_position(it, it->mode_view, it->scrl_x, it->scrl_y); + _item_position(it, it->mode_view, it->scrl_x, + it->scrl_y); else - _item_position(it, it->base.view, it->scrl_x, it->scrl_y); + _item_position(it, it->base.view, it->scrl_x, + it->scrl_y); } it->old_scrl_x = it->scrl_x; it->old_scrl_y = it->scrl_y; @@ -2482,12 +2503,11 @@ static void _calc_job(void *data) { Widget_Data *wd = data; - Item_Block *itb; + Item_Block *itb, *chb = NULL; Evas_Coord minw = -1, minh = 0, y = 0, ow; - Item_Block *chb = NULL; - int in = 0, minw_change = 0; - Eina_Bool changed = EINA_FALSE; + int in = 0; double t0, t; + Eina_Bool minw_change = EINA_FALSE, changed = EINA_FALSE; Eina_Bool did_must_recalc = EINA_FALSE; if (!wd) return; @@ -2532,7 +2552,7 @@ _calc_job(void *data) else if ((!itb->must_recalc) && (minw < itb->minw)) { minw = itb->minw; - minw_change = 1; + minw_change = EINA_TRUE; } itb->w = minw; itb->h = itb->minh; @@ -2614,7 +2634,8 @@ _update_job(void *data) Widget_Data *wd = data; Eina_List *l2; Item_Block *itb; - int num, num0, position = 0, recalc = 0; + int num, num0; + Eina_Bool position = EINA_FALSE, recalc = EINA_FALSE; if (!wd) return; wd->update_job = NULL; num = 0; @@ -2633,7 +2654,7 @@ _update_job(void *data) continue; } num0 = num; - recalc = 0; + recalc = EINA_FALSE; EINA_LIST_FOREACH(itb->items, l2, it) { if (it->updateme) @@ -2646,7 +2667,7 @@ _update_job(void *data) { _item_unrealize(it, EINA_FALSE); _item_realize(it, num, EINA_FALSE); - position = 1; + position = EINA_TRUE; } else { @@ -2654,14 +2675,14 @@ _update_job(void *data) _item_unrealize(it, EINA_TRUE); } if ((it->minw != itminw) || (it->minh != itminh)) - recalc = 1; + recalc = EINA_TRUE; } num++; } itb->updateme = EINA_FALSE; if (recalc) { - position = 1; + position = EINA_TRUE; itb->changed = EINA_TRUE; _item_block_recalc(itb, num0, 0); _item_block_position(itb, num0); @@ -2717,7 +2738,7 @@ _pan_set(Evas_Object *obj, } } done: - if (!sd->wd->item_moving_effect_timer) evas_object_smart_changed(obj); + if (!sd->wd->reorder_move_animator) evas_object_smart_changed(obj); } static void @@ -3857,10 +3878,10 @@ elm_genlist_clear(Evas_Object *obj) eina_list_free(wd->selected); wd->selected = NULL; } - if (wd->item_moving_effect_timer) + if (wd->reorder_move_animator) { - ecore_animator_del(wd->item_moving_effect_timer); - wd->item_moving_effect_timer = NULL; + ecore_animator_del(wd->reorder_move_animator); + wd->reorder_move_animator = NULL; } wd->show_item = NULL; wd->pan_x = 0;