Merge "[Editfield] A preevent issue was fixed"
[framework/uifw/elementary.git] / src / edje_externals / elm_searchbar.c
1 #include "private.h"
2
3 typedef struct _Elm_Params_Searchbar
4 {
5    Elm_Params base;
6    Eina_Bool cancel_button_animation:1;
7    Eina_Bool cancel_button_animation_exists:1;
8 } Elm_Params_Searchbar;
9
10 static void
11 external_searchbar_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
12 {
13    const Elm_Params_Searchbar *p;
14
15    if (to_params) p = to_params;
16    else if (from_params) p = from_params;
17    else return;
18
19    if (p->cancel_button_animation_exists)
20       elm_searchbar_cancel_button_animation_set(obj, p->cancel_button_animation);
21 }
22
23 static Eina_Bool
24 external_searchbar_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
25 {
26
27    if (!strcmp(param->name, "cancel_button_animation"))
28      {
29          if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
30            {
31               elm_searchbar_cancel_button_animation_set(obj, param->i);
32             return EINA_TRUE;
33          }
34      }
35
36    ERR("unknown parameter '%s' of type '%s'",
37        param->name, edje_external_param_type_str(param->type));
38
39    return EINA_FALSE;
40 }
41
42 static Eina_Bool
43 external_searchbar_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
44 {
45    if (!strcmp(param->name, "cancel_button_animation"))
46      {
47         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
48           {
49              return param->i;
50           }
51      }
52
53    ERR("unknown parameter '%s' of type '%s'",
54        param->name, edje_external_param_type_str(param->type));
55
56    return EINA_FALSE;
57 }
58
59 static void *
60 external_searchbar_params_parse(void *data __UNUSED__,
61                                 Evas_Object *obj __UNUSED__,
62                                 const Eina_List *params)
63 {
64    Elm_Params_Searchbar *mem = NULL;
65    Edje_External_Param *param;
66    const Eina_List *l;
67
68    mem = calloc(1, sizeof(Elm_Params_Searchbar));
69    if (!mem)
70       return NULL;
71
72    EINA_LIST_FOREACH(params, l, param)
73      {
74         if (!strcmp(param->name, "cancel_button_animation"))
75           {
76              mem->cancel_button_animation = !!param->i;
77              mem->cancel_button_animation_exists = EINA_TRUE;
78           }
79      }
80
81    return mem;
82 }
83
84 static Evas_Object *external_searchbar_content_get(void *data __UNUSED__,
85                 const Evas_Object *obj __UNUSED__,
86                 const char *content __UNUSED__)
87 {
88         ERR("so content");
89         return NULL;
90 }
91
92 static void
93 external_searchbar_params_free(void *params)
94 {
95    Elm_Params_Searchbar *mem = params;
96    free(params);
97 }
98
99 static Edje_External_Param_Info external_searchbar_params[] = {
100    DEFINE_EXTERNAL_COMMON_PARAMS,
101    EDJE_EXTERNAL_PARAM_INFO_BOOL("cancel_button_animation"),
102    EDJE_EXTERNAL_PARAM_INFO_SENTINEL
103 };
104
105 DEFINE_EXTERNAL_ICON_ADD(searchbar, "searchbar");
106 DEFINE_EXTERNAL_TYPE_SIMPLE(searchbar, "Searchbar");