svn update: 51469 (latest:51480)
[framework/uifw/elementary.git] / src / edje_externals / elm_button.c
1 #include "private.h"
2
3 typedef struct _Elm_Params_Button
4 {
5    Elm_Params base;
6    Evas_Object *icon;
7 } Elm_Params_Button;
8
9 static void
10 external_button_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
11 {
12    const Elm_Params_Button *p;
13
14    if (to_params) p = to_params;
15    else if (from_params) p = from_params;
16    else return;
17
18    if (p->base.label)
19      elm_button_label_set(obj, p->base.label);
20    if (p->icon)
21      elm_button_icon_set(obj, p->icon);
22 }
23
24 static Eina_Bool
25 external_button_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
26 {
27    if (!strcmp(param->name, "label"))
28      {
29         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
30           {
31              elm_button_label_set(obj, param->s);
32              return EINA_TRUE;
33           }
34      }
35    else if (!strcmp(param->name, "icon"))
36      {
37         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
38           {
39              Evas_Object *icon = external_common_param_icon_get(obj, param);
40              if ((strcmp(param->s, "")) && (!icon)) return EINA_FALSE;
41              elm_button_icon_set(obj, icon);
42              return EINA_TRUE;
43           }
44      }
45
46    ERR("unknown parameter '%s' of type '%s'",
47        param->name, edje_external_param_type_str(param->type));
48
49    return EINA_FALSE;
50 }
51
52 static Eina_Bool
53 external_button_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
54 {
55    if (!strcmp(param->name, "label"))
56      {
57         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
58           {
59              param->s = elm_button_label_get(obj);
60              return EINA_TRUE;
61           }
62      }
63    else if (!strcmp(param->name, "icon"))
64      {
65         /* not easy to get icon name back from live object */
66         return EINA_FALSE;
67      }
68
69    ERR("unknown parameter '%s' of type '%s'",
70        param->name, edje_external_param_type_str(param->type));
71
72    return EINA_FALSE;
73 }
74
75 static void *
76 external_button_params_parse(void *data, Evas_Object *obj, const Eina_List *params)
77 {
78    Elm_Params_Button *mem;
79
80    mem = external_common_params_parse(Elm_Params_Button, data, obj, params);
81    if (!mem)
82      return NULL;
83
84    external_common_icon_param_parse(&mem->icon, obj, params);
85
86    return mem;
87 }
88
89 static Evas_Object *external_button_content_get(void *data __UNUSED__,
90                 const Evas_Object *obj, const char *content)
91 {
92         ERR("so content");
93         return NULL;
94 }
95
96 static void
97 external_button_params_free(void *params)
98 {
99    Elm_Params_Button *mem = params;
100
101    external_common_params_free(params);
102 }
103
104 static Edje_External_Param_Info external_button_params[] = {
105    DEFINE_EXTERNAL_COMMON_PARAMS,
106    EDJE_EXTERNAL_PARAM_INFO_STRING("icon"),
107    EDJE_EXTERNAL_PARAM_INFO_SENTINEL
108 };
109
110 DEFINE_EXTERNAL_ICON_ADD(button, "button");
111 DEFINE_EXTERNAL_TYPE_SIMPLE(button, "Button");