also add a slider for seek in the video

SVN revision: 72765
This commit is contained in:
Davide Andreoli 2012-06-24 11:55:46 +00:00
parent 98a9da059e
commit 304434ccf6
2 changed files with 70 additions and 13 deletions

View File

@ -573,8 +573,8 @@ collections {
}
description { state: "expanded" 0.0;
inherit: "default" 0.0;
min: 200 24;
max: 200 24;
min: 216 24;
max: 216 24;
}
}
part { name: "play";
@ -604,18 +604,52 @@ collections {
rel2.offset: 16 0;
}
}
part { name: "posline";
mouse_events: 0;
repeat_events: 1;
clip_to: "media_clip";
description { state: "default" 0.0;
image.normal: "media_line.png";
min: 90 10;
max: 90 10;
rel1.to: "stop";
rel2.to: "stop";
rel1.offset: 25 0;
rel2.offset: 90 0;
}
}
part { name: "terminology.posdrag"; type: RECT;
mouse_events: 1;
repeat_events: 1;
clip_to: "media_clip";
dragable {
confine: "posline";
x: 1 1 0;
y: 0 0 0;
}
description { state: "default" 0.0;
color: 255 0 0 150;
min: 10 10;
max: 10 10;
}
description { state: "muted" 0.0;
visible: 0;
}
}
part { name: "volline";
mouse_events: 0;
repeat_events: 1;
clip_to: "media_clip";
description { state: "default" 0.0;
image.normal: "media_line.png";
min: 150 10;
max: 150 10;
rel1.to: "stop";
rel2.to: "stop";
min: 60 10;
max: 60 10;
rel1.to: "posline";
rel2.to: "posline";
rel1.relative: 1.0 0.0;
rel2.relative: 1.0 1.0;
rel1.offset: 25 0;
rel2.offset: 150 0;
rel2.offset: 60 0;
}
}
part { name: "terminology.voldrag"; type: RECT;

View File

@ -299,11 +299,17 @@ _cb_mov_frame_decode(void *data, Evas_Object *obj __UNUSED__, void *event __UNUS
{
Media *sd = evas_object_smart_data_get(data);
Evas_Coord ox, oy, ow, oh;
double len, pos;
if (!sd) return;
evas_object_geometry_get(data, &ox, &oy, &ow, &oh);
evas_object_show(sd->o_img);
_type_mov_calc(data, ox, oy, ow, oh);
len = emotion_object_play_length_get(sd->o_img);
pos = emotion_object_position_get(sd->o_img);
pos /= len;
edje_object_part_drag_value_set(sd->o_ctrl, "terminology.posdrag", pos, pos);
}
static void
@ -392,6 +398,16 @@ _cb_media_vol(void *data, Evas_Object *obj, const char *emission, const char *so
media_volume_set(data, vx + vy);
}
static void
_cb_media_pos(void *data, Evas_Object *obj, const char *emission, const char *source)
{
double vx, vy;
Media *sd = evas_object_smart_data_get(data);
if (!sd) return;
edje_object_part_drag_value_get(sd->o_ctrl, "terminology.posdrag", &vx, &vy);
media_position_set(data, vx + vy);
}
static void
_type_mov_init(Evas_Object *obj)
{
@ -441,10 +457,16 @@ _type_mov_init(Evas_Object *obj)
theme_apply(o, sd->config, "terminology/mediactrl");
vol = emotion_object_audio_volume_get(sd->o_img);
edje_object_part_drag_value_set(o, "terminology.voldrag", vol, vol);
edje_object_signal_callback_add(o, "play", "", _cb_media_play, obj);
edje_object_signal_callback_add(o, "pause", "", _cb_media_pause, obj);
edje_object_signal_callback_add(o, "stop", "", _cb_media_stop, obj);
edje_object_signal_callback_add(o, "drag", "terminology.voldrag", _cb_media_vol, obj);
edje_object_signal_callback_add(o, "play", "",
_cb_media_play, obj);
edje_object_signal_callback_add(o, "pause", "",
_cb_media_pause, obj);
edje_object_signal_callback_add(o, "stop", "",
_cb_media_stop, obj);
edje_object_signal_callback_add(o, "drag", "terminology.posdrag",
_cb_media_pos, obj);
edje_object_signal_callback_add(o, "drag", "terminology.voldrag",
_cb_media_vol, obj);
/* TODO where to stack the object in the ui? controls cannot be part of
* the 'media smart obj' becouse controls need to be on top of the term obj.
*
@ -661,10 +683,11 @@ media_play_set(Evas_Object *obj, Eina_Bool play)
void
media_position_set(Evas_Object *obj, double pos)
{
double len;
Media *sd = evas_object_smart_data_get(obj);
if ((!sd) || (sd->type != TYPE_MOV)) return;
emotion_object_position_set(sd->o_img, pos);
edje_object_part_drag_value_set(sd->o_ctrl, "terminology.posdrag", pos, pos);
len = emotion_object_play_length_get(sd->o_img);
emotion_object_position_set(sd->o_img, len * pos);
}
void