Elementary: replace eo_data_get for objects data referencing.
[platform/upstream/elementary.git] / src / lib / elm_widget_player.h
1 #ifndef ELM_WIDGET_PLAYER_H
2 #define ELM_WIDGET_PLAYER_H
3
4 #include "Elementary.h"
5
6 /**
7  * @addtogroup Widget
8  * @{
9  *
10  * @section elm-player-class The Elementary Player Class
11  *
12  * Elementary, besides having the @ref Player widget, exposes its
13  * foundation -- the Elementary Player Class -- in order to create other
14  * widgets which are a player with some more logic on top.
15  */
16
17 /**
18  * Base layout smart data extended with player instance data.
19  */
20 typedef struct _Elm_Player_Smart_Data Elm_Player_Smart_Data;
21 struct _Elm_Player_Smart_Data
22 {
23    Evas_Object          *video;
24    Evas_Object          *emotion;
25    
26    /* tracking those to ease disabling/enabling them back */
27    Evas_Object          *forward;
28    Evas_Object          *info;
29    Evas_Object          *next;
30    Evas_Object          *pause;
31    Evas_Object          *play;
32    Evas_Object          *prev;
33    Evas_Object          *rewind;
34    Evas_Object          *stop;
35    Evas_Object          *slider;
36    
37    Ecore_Timer          *delay_update;
38    double                last_update_time;
39 };
40
41 /**
42  * @}
43  */
44
45 #define ELM_PLAYER_DATA_GET(o, sd) \
46   Elm_Player_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_PLAYER_CLASS)
47
48 #define ELM_PLAYER_DATA_GET_OR_RETURN(o, ptr)        \
49   ELM_PLAYER_DATA_GET(o, ptr);                       \
50   if (!ptr)                                          \
51     {                                                \
52        CRITICAL("No widget data for object %p (%s)", \
53                 o, evas_object_type_get(o));         \
54        return;                                       \
55     }
56
57 #define ELM_PLAYER_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
58   ELM_PLAYER_DATA_GET(o, ptr);                         \
59   if (!ptr)                                            \
60     {                                                  \
61        CRITICAL("No widget data for object %p (%s)",   \
62                 o, evas_object_type_get(o));           \
63        return val;                                     \
64     }
65
66 #define ELM_PLAYER_CHECK(obj)                                      \
67   if (!eo_isa((obj), ELM_OBJ_PLAYER_CLASS)) \
68     return
69
70 #endif