forked from enlightenment/rage
162 lines
4.1 KiB
C
162 lines
4.1 KiB
C
#include <Elementary.h>
|
|
#include "main.h"
|
|
#include "win.h"
|
|
#include "video.h"
|
|
#include "winvid.h"
|
|
|
|
static void
|
|
_cb_resize(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
win_aspect_adjust(data);
|
|
win_title_update(data);
|
|
}
|
|
|
|
static void
|
|
_cb_decode(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
win_frame_decode(data);
|
|
}
|
|
|
|
static void
|
|
_cb_stop_next(void *data)
|
|
{
|
|
Inf *inf = evas_object_data_get(data, "inf");
|
|
inf->next_job = NULL;
|
|
win_video_next(data);
|
|
}
|
|
|
|
static void
|
|
_cb_stop(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
Inf *inf = evas_object_data_get(data, "inf");
|
|
printf("stop\n");
|
|
if (win_video_have_next(data))
|
|
{
|
|
if (inf->next_job) ecore_job_del(inf->next_job);
|
|
inf->next_job = ecore_job_add(_cb_stop_next, data);
|
|
}
|
|
else elm_exit();
|
|
}
|
|
|
|
static void
|
|
_cb_opened(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
printf("opened\n");
|
|
win_aspect_adjust(data);
|
|
win_frame_decode(data);
|
|
win_title_update(data);
|
|
}
|
|
|
|
static void
|
|
_cb_length(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
printf("len\n");
|
|
win_frame_decode(data);
|
|
win_title_update(data);
|
|
}
|
|
|
|
static void
|
|
_cb_title(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
printf("title\n");
|
|
win_title_update(data);
|
|
}
|
|
|
|
static void
|
|
_cb_audio(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
printf("audio\n");
|
|
win_title_update(data);
|
|
}
|
|
|
|
static void
|
|
_cb_channels(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
printf("channels\n");
|
|
win_title_update(data);
|
|
}
|
|
|
|
static void
|
|
_cb_play_start(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
Inf *inf = evas_object_data_get(data, "inf");
|
|
printf("play start\n");
|
|
win_aspect_adjust(data);
|
|
win_frame_decode(data);
|
|
win_title_update(data);
|
|
inf->playing = EINA_TRUE;
|
|
}
|
|
|
|
static void
|
|
_cb_play_finish(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
Inf *inf = evas_object_data_get(data, "inf");
|
|
printf("play finish\n");
|
|
if (!inf->playing) win_show(data, 160, 160);
|
|
inf->playing = EINA_FALSE;
|
|
}
|
|
|
|
static void
|
|
_cb_button_num(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
printf("button num\n");
|
|
win_title_update(data);
|
|
}
|
|
|
|
static void
|
|
_cb_button(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
|
{
|
|
printf("button\n");
|
|
win_title_update(data);
|
|
}
|
|
|
|
void
|
|
win_video_init(Evas_Object *win)
|
|
{
|
|
Inf *inf = evas_object_data_get(win, "inf");
|
|
Evas_Object *o;
|
|
|
|
o = video_add(win);
|
|
video_fill_set(o, EINA_TRUE);
|
|
inf->vid = o;
|
|
evas_object_smart_callback_add(o, "frame_resize", _cb_resize, win);
|
|
evas_object_smart_callback_add(o, "frame_decode", _cb_decode, win);
|
|
evas_object_smart_callback_add(o, "stop", _cb_stop, win);
|
|
evas_object_smart_callback_add(o, "opened", _cb_opened, win);
|
|
evas_object_smart_callback_add(o, "length", _cb_length, win);
|
|
evas_object_smart_callback_add(o, "title", _cb_title, win);
|
|
evas_object_smart_callback_add(o, "audio", _cb_audio, win);
|
|
evas_object_smart_callback_add(o, "channels", _cb_channels, win);
|
|
evas_object_smart_callback_add(o, "play_start", _cb_play_start, win);
|
|
evas_object_smart_callback_add(o, "play_finish", _cb_play_finish, win);
|
|
evas_object_smart_callback_add(o, "button_num", _cb_button_num, win);
|
|
evas_object_smart_callback_add(o, "button", _cb_button, win);
|
|
elm_object_part_content_set(inf->lay, "rage.content", o);
|
|
evas_object_show(o);
|
|
}
|
|
|
|
void
|
|
win_video_file_list_set(Evas_Object *win, Eina_List *list)
|
|
{
|
|
Inf *inf = evas_object_data_get(win, "inf");
|
|
Eina_List *l, *list2 = NULL;
|
|
const char *f;
|
|
|
|
EINA_LIST_FOREACH(list, l, f)
|
|
{
|
|
list2 = eina_list_append(list2, eina_stringshare_add(f));
|
|
}
|
|
inf->file_list = list2;
|
|
win_video_next(win);
|
|
}
|
|
|
|
void
|
|
win_video_insert(Evas_Object *win, const char *file)
|
|
{
|
|
Inf *inf = evas_object_data_get(win, "inf");
|
|
|
|
inf->file_list = eina_list_append_relative_list
|
|
(inf->file_list, eina_stringshare_add(file), inf->file_cur);
|
|
evas_object_data_set(win, "file_list", inf->file_list);
|
|
}
|