forked from enlightenment/efl
Elementary genlist: Code refactoring.
SVN revision: 59942
This commit is contained in:
parent
629a67e86b
commit
6206f5f4a4
|
@ -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 */,
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue