224 lines
5.0 KiB
C
224 lines
5.0 KiB
C
#include "e_mod_main.h"
|
|
|
|
|
|
void
|
|
ngi_item_init_defaults(Ngi_Item *it)
|
|
{
|
|
Ng *ng = it->box->ng;
|
|
int ok = 0;
|
|
|
|
it->obj = edje_object_add(ng->evas);
|
|
|
|
switch(ng->cfg->orient)
|
|
{
|
|
case E_GADCON_ORIENT_BOTTOM:
|
|
ok = ngi_object_theme_set(it->obj, "e/modules/engage/icon_bottom");
|
|
break;
|
|
case E_GADCON_ORIENT_TOP:
|
|
ok = ngi_object_theme_set(it->obj, "e/modules/engage/icon_top");
|
|
break;
|
|
case E_GADCON_ORIENT_LEFT:
|
|
ok = ngi_object_theme_set(it->obj, "e/modules/engage/icon_left");
|
|
break;
|
|
case E_GADCON_ORIENT_RIGHT:
|
|
ok = ngi_object_theme_set(it->obj, "e/modules/engage/icon_right");
|
|
break;
|
|
}
|
|
|
|
/* TODO remove fallback */
|
|
if (!ok)
|
|
{
|
|
if (!e_theme_edje_object_set(it->obj, "base/theme/modules/engage", "e/modules/engage/icon"))
|
|
edje_object_file_set(it->obj, ngi_config->theme_path, "e/modules/engage/icon");
|
|
}
|
|
|
|
it->over = edje_object_add(ng->evas);
|
|
|
|
switch(ng->cfg->orient)
|
|
{
|
|
case E_GADCON_ORIENT_BOTTOM:
|
|
ok = ngi_object_theme_set(it->over, "e/modules/engage/icon_over_bottom");
|
|
break;
|
|
case E_GADCON_ORIENT_TOP:
|
|
ok = ngi_object_theme_set(it->over, "e/modules/engage/icon_over_top");
|
|
break;
|
|
case E_GADCON_ORIENT_LEFT:
|
|
ok = ngi_object_theme_set(it->over, "e/modules/engage/icon_over_left");
|
|
break;
|
|
case E_GADCON_ORIENT_RIGHT:
|
|
ok = ngi_object_theme_set(it->over, "e/modules/engage/icon_over_right");
|
|
break;
|
|
}
|
|
if (!ok)
|
|
{
|
|
if (!e_theme_edje_object_set(it->over, "base/theme/modules/engage", "e/modules/engage/icon_overlay"))
|
|
edje_object_file_set(it->over, ngi_config->theme_path, "e/modules/engage/icon_overlay");
|
|
}
|
|
|
|
|
|
evas_object_layer_set(it->over, 9999);
|
|
evas_object_show(it->over);
|
|
evas_object_show(it->obj);
|
|
}
|
|
|
|
void
|
|
ngi_item_show(Ngi_Item *it, int instant)
|
|
{
|
|
Ng *ng = it->box->ng;
|
|
|
|
evas_object_show(it->obj);
|
|
evas_object_show(it->over);
|
|
|
|
ngi_item_signal_emit(it, "e,state,item,show");
|
|
|
|
if (eina_list_data_find(ng->items_remove, it))
|
|
ng->items_remove = eina_list_remove(ng->items_remove, it);
|
|
|
|
if (instant)
|
|
{
|
|
it->scale = 1.0;
|
|
ngi_animate(ng);
|
|
return;
|
|
}
|
|
|
|
it->start_time = ecore_time_get();
|
|
it->scale = 0.0;
|
|
ng->items_show = eina_list_append(ng->items_show, it);
|
|
ngi_animate(ng);
|
|
}
|
|
|
|
void
|
|
ngi_item_remove(Ngi_Item *it)
|
|
{
|
|
if (!it) return;
|
|
|
|
Ng *ng = it->box->ng;
|
|
double now = ecore_time_get();
|
|
|
|
edje_object_signal_emit(it->obj, "e,state,item,hide", "e");
|
|
|
|
if (now - it->start_time < ng->opt.fade_duration)
|
|
it->start_time = now - (ng->opt.fade_duration - (now - it->start_time));
|
|
else
|
|
it->start_time = now;
|
|
|
|
it->delete_me = 1;
|
|
|
|
if (eina_list_data_find(ng->items_show, it))
|
|
ng->items_show = eina_list_remove(ng->items_show, it);
|
|
|
|
if (!eina_list_data_find(ng->items_remove, it))
|
|
ng->items_remove = eina_list_append(ng->items_remove, it);
|
|
|
|
if (it == ng->item_active)
|
|
ng->item_active = NULL;
|
|
|
|
if (it == ng->item_drag)
|
|
ng->item_drag = NULL;
|
|
|
|
ngi_animate(ng);
|
|
}
|
|
|
|
void
|
|
ngi_item_free(Ngi_Item *it)
|
|
{
|
|
Ng *ng = it->box->ng;
|
|
|
|
if (it == ng->item_active)
|
|
ng->item_active = NULL;
|
|
|
|
if (it == ng->item_drag)
|
|
ng->item_drag = NULL;
|
|
|
|
if (eina_list_data_find(ng->items_remove, it))
|
|
ng->items_remove = eina_list_remove(ng->items_remove, it);
|
|
|
|
if (eina_list_data_find(ng->items_show, it))
|
|
ng->items_show = eina_list_remove(ng->items_show, it);
|
|
|
|
it->box->items = eina_list_remove(it->box->items, it);
|
|
|
|
if (it->obj)
|
|
evas_object_del(it->obj);
|
|
|
|
if (it->over)
|
|
evas_object_del(it->over);
|
|
|
|
if (it->label)
|
|
eina_stringshare_del(it->label);
|
|
|
|
if (it->cb_free) it->cb_free(it);
|
|
}
|
|
|
|
void
|
|
ngi_item_label_set(Ngi_Item *it, const char *label)
|
|
{
|
|
if (it->label)
|
|
eina_stringshare_del(it->label);
|
|
|
|
if (label)
|
|
it->label = eina_stringshare_add(label);
|
|
else
|
|
it->label = NULL;
|
|
}
|
|
|
|
void
|
|
ngi_item_signal_emit(Ngi_Item *it, char *sig)
|
|
{
|
|
if (it->obj)
|
|
edje_object_signal_emit(it->obj, sig, "e");
|
|
if (it->over)
|
|
edje_object_signal_emit(it->over, sig, "e");
|
|
}
|
|
|
|
void
|
|
ngi_item_mouse_in(Ngi_Item *it)
|
|
{
|
|
if (!it || it->delete_me) return;
|
|
|
|
ngi_item_signal_emit(it,"e,state,mouse,in");
|
|
|
|
if (it->box->ng->cfg->mouse_over_anim)
|
|
ngi_item_signal_emit(it,"e,state,animate,in");
|
|
|
|
if (it->cb_mouse_in)
|
|
it->cb_mouse_in(it);
|
|
}
|
|
|
|
void
|
|
ngi_item_mouse_out(Ngi_Item *it)
|
|
{
|
|
if (!it || it->delete_me) return;
|
|
|
|
ngi_item_signal_emit(it,"e,state,mouse,out");
|
|
|
|
if (it->box->ng->cfg->mouse_over_anim)
|
|
ngi_item_signal_emit(it,"e,state,animate,out");
|
|
|
|
if (it->cb_mouse_out)
|
|
it->cb_mouse_out(it);
|
|
}
|
|
|
|
void
|
|
ngi_item_mouse_down(Ngi_Item *it, Ecore_Event_Mouse_Button *ev)
|
|
{
|
|
if (!it || it->delete_me) return;
|
|
|
|
ngi_item_signal_emit(it,"e,state,mouse,down");
|
|
|
|
if (it->cb_mouse_down)
|
|
it->cb_mouse_down(it, ev);
|
|
}
|
|
|
|
void
|
|
ngi_item_mouse_up(Ngi_Item *it, Ecore_Event_Mouse_Button *ev)
|
|
{
|
|
if (!it || it->delete_me) return;
|
|
|
|
ngi_item_signal_emit(it,"e,state,mouse,up");
|
|
|
|
if (it->cb_mouse_up)
|
|
it->cb_mouse_up(it, ev);
|
|
}
|
|
|