Ephoto: Fix slideshow transitions.
This commit is contained in:
parent
1b0f8b1eed
commit
b186c391da
|
@ -447,16 +447,6 @@ collections {
|
||||||
color: 255 255 255 255;
|
color: 255 255 255 255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
swallow { "ephoto.swallow.slideshow.item";
|
|
||||||
scale: 1;
|
|
||||||
mouse_events: 1;
|
|
||||||
clip_to: "slide_clip";
|
|
||||||
description {
|
|
||||||
state: "default" 0.0;
|
|
||||||
rel1.to: "slide_clip";
|
|
||||||
rel2.to: "slide_clip";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
swallow { "ephoto.swallow.slideshow.item2";
|
swallow { "ephoto.swallow.slideshow.item2";
|
||||||
scale: 1;
|
scale: 1;
|
||||||
mouse_events: 1;
|
mouse_events: 1;
|
||||||
|
@ -467,6 +457,16 @@ collections {
|
||||||
rel2.to: "slide_clip2";
|
rel2.to: "slide_clip2";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
swallow { "ephoto.swallow.slideshow.item";
|
||||||
|
scale: 1;
|
||||||
|
mouse_events: 1;
|
||||||
|
clip_to: "slide_clip";
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
rel1.to: "slide_clip";
|
||||||
|
rel2.to: "slide_clip";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
programs {
|
programs {
|
||||||
program {
|
program {
|
||||||
|
@ -484,6 +484,10 @@ collections {
|
||||||
after: "black_fade_3";
|
after: "black_fade_3";
|
||||||
}
|
}
|
||||||
program { name: "black_fade_3";
|
program { name: "black_fade_3";
|
||||||
|
action: SIGNAL_EMIT "ephoto,transition,raise" "ephoto";
|
||||||
|
after: "black_fade_4";
|
||||||
|
}
|
||||||
|
program { name: "black_fade_4";
|
||||||
action: STATE_SET "black_fade" 0.0;
|
action: STATE_SET "black_fade" 0.0;
|
||||||
target: "slide_clip2";
|
target: "slide_clip2";
|
||||||
transition: SINUSOIDAL 0.75;
|
transition: SINUSOIDAL 0.75;
|
||||||
|
|
|
@ -26,6 +26,7 @@ struct _Ephoto_Slideshow
|
||||||
Evas_Object *fullscreen_after;
|
Evas_Object *fullscreen_after;
|
||||||
Ephoto_Entry *entry;
|
Ephoto_Entry *entry;
|
||||||
Eina_Bool playing;
|
Eina_Bool playing;
|
||||||
|
Eina_Bool timer_end;
|
||||||
Ecore_Timer *timer;
|
Ecore_Timer *timer;
|
||||||
Ephoto_Slideshow_Move move;
|
Ephoto_Slideshow_Move move;
|
||||||
float timeout;
|
float timeout;
|
||||||
|
@ -116,6 +117,15 @@ _slideshow_move_randomize(Ephoto_Slideshow *ss)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_on_transition_raise(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
|
const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Ephoto_Slideshow *ss = data;
|
||||||
|
|
||||||
|
evas_object_raise(ss->current_item);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_on_transition_end(void *data, Evas_Object *obj EINA_UNUSED,
|
_on_transition_end(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
|
const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
|
||||||
|
@ -134,6 +144,7 @@ _on_transition_end(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
}
|
}
|
||||||
elm_layout_content_set(ss->slideshow, "ephoto.swallow.slideshow.item",
|
elm_layout_content_set(ss->slideshow, "ephoto.swallow.slideshow.item",
|
||||||
ss->current_item);
|
ss->current_item);
|
||||||
|
evas_object_raise(ss->current_item);
|
||||||
evas_object_show(ss->current_item);
|
evas_object_show(ss->current_item);
|
||||||
elm_layout_signal_emit(ss->slideshow, "ephoto,transition,done", "ephoto");
|
elm_layout_signal_emit(ss->slideshow, "ephoto,transition,done", "ephoto");
|
||||||
|
|
||||||
|
@ -214,7 +225,10 @@ _slideshow_transition(void *data)
|
||||||
ss->timer = NULL;
|
ss->timer = NULL;
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
ss->current += 1;
|
if (ss->timer_end)
|
||||||
|
ss->current += 1;
|
||||||
|
else
|
||||||
|
ss->timer_end = EINA_TRUE;
|
||||||
if (!eina_list_nth(ss->entries, ss->current))
|
if (!eina_list_nth(ss->entries, ss->current))
|
||||||
ss->current = 0;
|
ss->current = 0;
|
||||||
if (ss->old_item)
|
if (ss->old_item)
|
||||||
|
@ -389,15 +403,14 @@ _first(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Slideshow *ss = data;
|
Ephoto_Slideshow *ss = data;
|
||||||
|
|
||||||
_slideshow_pause(ss);
|
if (ss->timer)
|
||||||
if (ss->current_item)
|
|
||||||
{
|
{
|
||||||
elm_layout_content_unset(ss->slideshow, "ephoto.swallow.slideshow");
|
ecore_timer_del(ss->timer);
|
||||||
evas_object_del(ss->current_item);
|
ss->timer = NULL;
|
||||||
ss->current_item = NULL;
|
|
||||||
}
|
}
|
||||||
ss->current = 0;
|
ss->current = 0;
|
||||||
_slideshow_play(ss);
|
ss->timer_end = EINA_FALSE;
|
||||||
|
_slideshow_transition(ss);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -405,15 +418,14 @@ _next(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Slideshow *ss = data;
|
Ephoto_Slideshow *ss = data;
|
||||||
|
|
||||||
_slideshow_pause(ss);
|
if (ss->timer)
|
||||||
if (ss->current_item)
|
|
||||||
{
|
{
|
||||||
elm_layout_content_unset(ss->slideshow, "ephoto.swallow.slideshow");
|
ecore_timer_del(ss->timer);
|
||||||
evas_object_del(ss->current_item);
|
ss->timer = NULL;
|
||||||
ss->current_item = NULL;
|
|
||||||
}
|
}
|
||||||
ss->current += 1;
|
ss->current += 1;
|
||||||
_slideshow_play(ss);
|
ss->timer_end = EINA_FALSE;
|
||||||
|
_slideshow_transition(ss);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -449,15 +461,14 @@ _previous(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
{
|
{
|
||||||
Ephoto_Slideshow *ss = data;
|
Ephoto_Slideshow *ss = data;
|
||||||
|
|
||||||
_slideshow_pause(ss);
|
if (ss->timer)
|
||||||
if (ss->current_item)
|
|
||||||
{
|
{
|
||||||
elm_layout_content_unset(ss->slideshow, "ephoto.swallow.slideshow.item");
|
ecore_timer_del(ss->timer);
|
||||||
evas_object_del(ss->current_item);
|
ss->timer = NULL;
|
||||||
ss->current_item = NULL;
|
|
||||||
}
|
}
|
||||||
ss->current -= 1;
|
ss->current -= 1;
|
||||||
_slideshow_play(ss);
|
ss->timer_end = EINA_FALSE;
|
||||||
|
_slideshow_transition(ss);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -465,15 +476,14 @@ _last(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Slideshow *ss = data;
|
Ephoto_Slideshow *ss = data;
|
||||||
|
|
||||||
_slideshow_pause(ss);
|
if (ss->timer)
|
||||||
if (ss->current_item)
|
|
||||||
{
|
{
|
||||||
elm_layout_content_unset(ss->slideshow, "ephoto.swallow.slideshow");
|
ecore_timer_del(ss->timer);
|
||||||
evas_object_del(ss->current_item);
|
ss->timer = NULL;
|
||||||
ss->current_item = NULL;
|
|
||||||
}
|
}
|
||||||
ss->current = eina_list_count(ss->entries) - 1;
|
ss->current = eina_list_count(ss->entries) - 1;
|
||||||
_slideshow_play(ss);
|
ss->timer_end = EINA_FALSE;
|
||||||
|
_slideshow_transition(ss);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -654,6 +664,7 @@ ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent)
|
||||||
ss->old_item = NULL;
|
ss->old_item = NULL;
|
||||||
ss->current_item = NULL;
|
ss->current_item = NULL;
|
||||||
ss->event = NULL;
|
ss->event = NULL;
|
||||||
|
ss->timer_end = EINA_TRUE;
|
||||||
|
|
||||||
elm_layout_file_set(slideshow, PACKAGE_DATA_DIR "/themes/ephoto.edj",
|
elm_layout_file_set(slideshow, PACKAGE_DATA_DIR "/themes/ephoto.edj",
|
||||||
"ephoto,slideshow,base");
|
"ephoto,slideshow,base");
|
||||||
|
@ -666,6 +677,8 @@ ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent)
|
||||||
EVAS_HINT_EXPAND);
|
EVAS_HINT_EXPAND);
|
||||||
evas_object_size_hint_align_set(slideshow, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_size_hint_align_set(slideshow, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
|
||||||
|
edje_object_signal_callback_add(elm_layout_edje_get(ss->slideshow),
|
||||||
|
"ephoto,transition,raise", "ephoto", _on_transition_raise, ss);
|
||||||
edje_object_signal_callback_add(elm_layout_edje_get(ss->slideshow),
|
edje_object_signal_callback_add(elm_layout_edje_get(ss->slideshow),
|
||||||
"ephoto,transition,end", "ephoto", _on_transition_end, ss);
|
"ephoto,transition,end", "ephoto", _on_transition_end, ss);
|
||||||
return ss->slideshow;
|
return ss->slideshow;
|
||||||
|
|
Loading…
Reference in New Issue