#define GRID_IMAGE_LIMIT_W 91
#define GRID_IMAGE_LIMIT_H 113
+#define ANIM_DURATION 120 // 2 seconds
+#define ANIM_FLOPS (1.0/60)
+
// gic should live at gengrid callback functions
Elm_Gengrid_Item_Class gic;
{
struct appdata *ad = g_get_main_appdata();
+ if (ad->anim_status != STATUS_NONE)
+ return;
+
Elm_Gengrid_Item *sgobj = NULL;
sgobj = elm_gengrid_selected_item_get(ad->hig);
griditem_t *ti = NULL;
static void _grid_click_paste(void *data, Evas_Object *obj, void *event_info)
{
struct appdata *ad = data;
+ if (ad->anim_status != STATUS_NONE)
+ return;
+
Elm_Gengrid_Item *sgobj = NULL;
sgobj = elm_gengrid_selected_item_get(ad->hig);
griditem_t *ti = NULL;
{
struct appdata *ad = data;
+ if (ad->anim_status != STATUS_NONE)
+ return;
+
#define EDJE_CLOSE_PART_PREFIX "background/close"
if (!strncmp(source, EDJE_CLOSE_PART_PREFIX, strlen(EDJE_CLOSE_PART_PREFIX)))
{
struct appdata *ad = data;
double cdy, cdw;
+ ad->windowshow = EINA_FALSE;
ad->hicount = 0;
ad->pastetextonly = EINA_TRUE;
ad->anim_status = STATUS_NONE;
struct appdata *ad = data;
static int anim_count = 0;
- static int anim_end = 120;
int anim_starty, anim_endy, deltay;
-// if (anim_count == 0)
-// {
- switch (ad->anim_status)
- {
- case HIDE_ANIM:
- anim_starty = (int)((1.0*CLIPDRAWER_HEIGHT/SCREEN_HEIGHT)*ad->root_h);
- anim_endy = ad->root_h;
- anim_starty = anim_endy - anim_starty;
- break;
- case SHOW_ANIM:
- anim_starty = ad->root_h;
- anim_endy = (int)((1.0*CLIPDRAWER_HEIGHT/SCREEN_HEIGHT)*ad->root_h);
- anim_endy = anim_starty-anim_endy;
- break;
- default:
- return EINA_FALSE;
- }
+ double posprop;
-// }
-
- double posprop = 1.0*anim_count/anim_end;
- if (ad->anim_status == HIDE_ANIM)
- deltay = (int)((anim_endy-anim_starty)*posprop);
- else
- deltay = (int)((anim_starty-anim_endy)*posprop);
+ switch (ad->anim_status)
+ {
+ case HIDE_ANIM:
+ anim_starty = (int)((1.0*CLIPDRAWER_HEIGHT/SCREEN_HEIGHT)*ad->root_h);
+ anim_endy = ad->root_h;
+ anim_starty = anim_endy - anim_starty;
+ break;
+ case SHOW_ANIM:
+ anim_starty = ad->root_h;
+ anim_endy = (int)((1.0*CLIPDRAWER_HEIGHT/SCREEN_HEIGHT)*ad->root_h);
+ anim_endy = anim_starty-anim_endy;
+ break;
+ default:
+ return EINA_FALSE;
+ }
- if (anim_count > anim_end)
+ if (anim_count > ANIM_DURATION)
{
anim_count = 0;
- ad->anim_status = STATUS_NONE;
if (ad->anim_status == HIDE_ANIM)
{
evas_object_hide(ad->win_main);
elm_win_lower(ad->win_main);
}
+ ad->anim_status = STATUS_NONE;
return EINA_FALSE;
}
- if (ad->anim_status == HIDE_ANIM)
- evas_object_move(ad->win_main, 0, anim_starty+deltay);
- else
- evas_object_move(ad->win_main, 0, anim_starty-deltay);
- anim_count++;
-
- if (ad->anim_status == HIDE_ANIM)
- fprintf(stderr, "## cur pos y = %d\n", anim_starty+deltay);
- else
- fprintf(stderr, "## cur pos y = %d\n", anim_starty-deltay);
-
- return EINA_TRUE;
-}
-
-void clipdrawer_anim_show_effect(void *data)
-{
- struct appdata *ad = data;
-
- if (ad->anim_status != STATUS_NONE)
+ posprop = 1.0*anim_count/ANIM_DURATION;
+ switch (ad->anim_status)
{
- DTRACE("ERR: another animation is showing\n");
- return;
+ case HIDE_ANIM:
+ deltay = (int)((anim_endy-anim_starty)*posprop);
+ evas_object_move(ad->win_main, 0, anim_starty+deltay);
+ //fprintf(stderr, "## cur pos y = %d\n", anim_starty+deltay);
+ break;
+ case SHOW_ANIM:
+ deltay = (int)((anim_starty-anim_endy)*posprop);
+ evas_object_move(ad->win_main, 0, anim_starty-deltay);
+ //fprintf(stderr, "## cur pos y = %d\n", anim_starty-deltay);
+ break;
+ default:
+ return EINA_FALSE;
}
- ad->anim_status = SHOW_ANIM;
- ecore_timer_add(1.0/60, anim_pos_calc_cb, ad);
+ anim_count++;
+ return EINA_TRUE;
}
-void clipdrawer_anim_hide_effect(void *data)
+void clipdrawer_anim_effect(void *data, anim_status_t atype)
{
struct appdata *ad = data;
return;
}
- ad->anim_status = HIDE_ANIM;
- ecore_timer_add(1.0/60, anim_pos_calc_cb, ad);
+ ad->anim_status = atype;
+ ecore_timer_add(ANIM_FLOPS, anim_pos_calc_cb, ad);
}
void clipdrawer_activate_view(void *data)
{
set_transient_for(ad);
evas_object_show(ad->win_main);
-// clipdrawer_anim_show_effect(ad);
+ clipdrawer_anim_effect(ad, SHOW_ANIM);
elm_win_activate(ad->win_main);
+ ad->windowshow = EINA_TRUE;
}
}
{
struct appdata *ad = data;
- if (ad->win_main)
+ if (ad->win_main && ad->windowshow)
{
unset_transient_for(ad);
-// clipdrawer_anim_hide_effect(ad);
- evas_object_hide(ad->win_main);
- elm_win_lower(ad->win_main);
+ clipdrawer_anim_effect(ad, HIDE_ANIM);
+ ad->windowshow = EINA_FALSE;
+// evas_object_hide(ad->win_main);
+// elm_win_lower(ad->win_main);
}
}