2012-07-31 15:07:23 -07:00
|
|
|
#ifndef ELM_WIDGET_PLAYER_H
|
|
|
|
#define ELM_WIDGET_PLAYER_H
|
|
|
|
|
2012-11-25 22:32:53 -08:00
|
|
|
#include "Elementary.h"
|
2012-07-31 15:07:23 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @addtogroup Widget
|
|
|
|
* @{
|
|
|
|
*
|
|
|
|
* @section elm-player-class The Elementary Player Class
|
|
|
|
*
|
|
|
|
* Elementary, besides having the @ref Player widget, exposes its
|
|
|
|
* foundation -- the Elementary Player Class -- in order to create other
|
|
|
|
* widgets which are a player with some more logic on top.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Base layout smart data extended with player instance data.
|
|
|
|
*/
|
2014-03-25 04:33:53 -07:00
|
|
|
typedef struct _Elm_Player_Data Elm_Player_Data;
|
|
|
|
struct _Elm_Player_Data
|
2012-07-31 15:07:23 -07:00
|
|
|
{
|
|
|
|
Evas_Object *video;
|
|
|
|
Evas_Object *emotion;
|
2013-12-15 07:44:55 -08:00
|
|
|
|
2012-07-31 15:07:23 -07:00
|
|
|
/* tracking those to ease disabling/enabling them back */
|
|
|
|
Evas_Object *forward;
|
|
|
|
Evas_Object *info;
|
|
|
|
Evas_Object *next;
|
|
|
|
Evas_Object *pause;
|
|
|
|
Evas_Object *play;
|
|
|
|
Evas_Object *prev;
|
|
|
|
Evas_Object *rewind;
|
|
|
|
Evas_Object *stop;
|
2013-07-25 02:29:59 -07:00
|
|
|
Evas_Object *eject;
|
|
|
|
Evas_Object *volume;
|
|
|
|
Evas_Object *mute;
|
2012-07-31 15:07:23 -07:00
|
|
|
Evas_Object *slider;
|
2013-07-25 02:29:59 -07:00
|
|
|
Evas_Object *vslider;
|
2013-12-15 07:44:55 -08:00
|
|
|
|
2013-07-17 03:29:30 -07:00
|
|
|
Eina_Bool dragging : 1;
|
2012-07-31 15:07:23 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define ELM_PLAYER_DATA_GET(o, sd) \
|
2014-03-25 04:33:53 -07:00
|
|
|
Elm_Player_Data * sd = eo_data_scope_get(o, ELM_OBJ_PLAYER_CLASS)
|
2012-07-31 15:07:23 -07:00
|
|
|
|
|
|
|
#define ELM_PLAYER_DATA_GET_OR_RETURN(o, ptr) \
|
|
|
|
ELM_PLAYER_DATA_GET(o, ptr); \
|
2014-01-15 10:33:40 -08:00
|
|
|
if (EINA_UNLIKELY(!ptr)) \
|
2012-07-31 15:07:23 -07:00
|
|
|
{ \
|
2014-01-15 10:33:40 -08:00
|
|
|
CRI("No widget data for object %p (%s)", \
|
|
|
|
o, evas_object_type_get(o)); \
|
2012-07-31 15:07:23 -07:00
|
|
|
return; \
|
|
|
|
}
|
|
|
|
|
|
|
|
#define ELM_PLAYER_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
|
|
|
|
ELM_PLAYER_DATA_GET(o, ptr); \
|
2014-01-15 10:33:40 -08:00
|
|
|
if (EINA_UNLIKELY(!ptr)) \
|
2012-07-31 15:07:23 -07:00
|
|
|
{ \
|
2014-01-15 10:33:40 -08:00
|
|
|
CRI("No widget data for object %p (%s)", \
|
|
|
|
o, evas_object_type_get(o)); \
|
2012-07-31 15:07:23 -07:00
|
|
|
return val; \
|
|
|
|
}
|
|
|
|
|
2014-01-15 10:33:40 -08:00
|
|
|
#define ELM_PLAYER_CHECK(obj) \
|
|
|
|
if (EINA_UNLIKELY(!eo_isa((obj), ELM_OBJ_PLAYER_CLASS))) \
|
2012-07-31 15:07:23 -07:00
|
|
|
return
|
|
|
|
|
|
|
|
#endif
|