Merge branch 'master' of eunmi15.lee@165.213.180.234:/git/slp/pkgs/elementary
[framework/uifw/elementary.git] / src / edje_externals / elm_slideshow.c
1 #include "private.h"
2
3 typedef struct _Elm_Params_Slideshow
4 {
5    int timeout;
6    const char *transition;
7    const char *layout;
8    Eina_Bool loop:1;
9    Eina_Bool timeout_exists:1;
10    Eina_Bool loop_exists:1;
11 } Elm_Params_Slideshow;
12
13 static const char *transitions[] = { "fade", "black_fade", "horizontal",
14                                      "vertical", "square", NULL};
15 static const char *layout[] = { "fullscreen", "not_fullscreen", NULL};
16
17 static void
18 external_slideshow_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
19 {
20    const Elm_Params_Slideshow *p;
21
22    if (to_params) p = to_params;
23    else if (from_params) p = from_params;
24    else return;
25
26    if (p->timeout_exists)
27      elm_slideshow_timeout_set(obj , p->timeout);
28    if (p->loop_exists)
29      elm_slideshow_loop_set(obj, p->loop);
30    if (p->transition) {
31       elm_slideshow_transition_set(obj, p->transition);
32    }
33    if (p->layout) {
34          elm_slideshow_layout_set(obj, p->layout);
35    }
36 }
37
38 static Eina_Bool
39 external_slideshow_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
40 {
41    if (!strcmp(param->name, "timeout"))
42      {
43         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
44           {
45              elm_slideshow_timeout_set(obj, param->i);
46              return EINA_TRUE;
47           }
48      }
49    else if (!strcmp(param->name, "loop"))
50      {
51         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
52           {
53              elm_slideshow_loop_set(obj, param->i);
54              return EINA_TRUE;
55           }
56      }
57    else if (!strcmp(param->name, "transition"))
58      {
59         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
60           {
61              elm_slideshow_transition_set(obj, param->s);
62              return EINA_TRUE;
63           }
64      }
65    else if (!strcmp(param->name, "layout"))
66         {
67         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
68           {
69              elm_slideshow_layout_set(obj, param->s);
70              return EINA_TRUE;
71           }
72         }
73
74    ERR("unknown parameter '%s' of type '%s'",
75        param->name, edje_external_param_type_str(param->type));
76
77    return EINA_FALSE;
78 }
79
80 static Eina_Bool
81 external_slideshow_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
82 {
83    if (!strcmp(param->name, "timeout"))
84      {
85         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
86           {
87              param->i = elm_slideshow_timeout_get(obj);
88              return EINA_TRUE;
89           }
90      }
91    else if (!strcmp(param->name, "loop"))
92      {
93         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
94           {
95              param->i = elm_slideshow_loop_get(obj);
96              return EINA_TRUE;
97           }
98      }
99    else if (!strcmp(param->name, "transition"))
100      {
101         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
102           {
103              param->s = elm_slideshow_transition_get(obj);
104              return EINA_TRUE;
105           }
106      }
107    else if (!strcmp(param->name, "layout"))
108         {
109         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
110           {
111              param->s = elm_slideshow_layout_get(obj);
112              return EINA_TRUE;
113           }
114         }
115
116    ERR("unknown parameter '%s' of type '%s'",
117        param->name, edje_external_param_type_str(param->type));
118
119    return EINA_FALSE;
120 }
121
122 static void *
123 external_slideshow_params_parse(void *data, Evas_Object *obj, const Eina_List *params)
124 {
125    Elm_Params_Slideshow *mem;
126    Edje_External_Param *param;
127    const Eina_List *l;
128
129    mem = calloc(1, sizeof(Elm_Params_Slideshow));
130    if (!mem)
131      return NULL;
132
133    EINA_LIST_FOREACH(params, l, param)
134      {
135         if (!strcmp(param->name, "timeout"))
136           {
137              mem->timeout = param->i;
138              mem->timeout_exists = EINA_TRUE;
139           }
140         else if (!strcmp(param->name, "loop"))
141           {
142              mem->loop = param->i;
143              mem->loop_exists = EINA_TRUE;
144           }
145         else if (!strcmp(param->name, "transition"))
146           {
147              mem->transition = param->s;
148           }
149     else if (!strcmp(param->name, "layout"))
150           {
151              mem->layout = param->s;
152           }
153      }
154
155    return mem;
156 }
157
158 static Evas_Object *external_slideshow_content_get(void *data __UNUSED__,
159                 const Evas_Object *obj, const char *content)
160 {
161         ERR("so content");
162         return NULL;
163 }
164
165 static void
166 external_slideshow_params_free(void *params)
167 {
168    return;
169 }
170
171 static Edje_External_Param_Info external_slideshow_params[] = {
172    EDJE_EXTERNAL_PARAM_INFO_INT("timeout"),
173    EDJE_EXTERNAL_PARAM_INFO_BOOL("loop"),
174    EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("transition", "fade", transitions),
175    EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("layout", "fullscreen", transitions),
176    EDJE_EXTERNAL_PARAM_INFO_SENTINEL
177 };
178
179 DEFINE_EXTERNAL_ICON_ADD(slideshow, "slideshow");
180 DEFINE_EXTERNAL_TYPE_SIMPLE(slideshow, "Slideshow");