Elementary migration around 2011/04/06
[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->base.label)
20    //  elm_searchbar_text_set(obj, p->base.label);
21    if (p->cancel_button_animation_exists)
22       elm_searchbar_cancel_button_animation_set(obj, p->cancel_button_animation);
23 }
24
25 static Eina_Bool
26 external_searchbar_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
27 {
28    if (!strcmp(param->name, "label"))
29      {
30         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
31           {
32              elm_searchbar_text_set(obj, param->s);
33              return EINA_TRUE;
34           }
35      }
36    else if (!strcmp(param->name, "cancel_button_animation"))
37      {
38          if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
39            {
40               elm_searchbar_cancel_button_animation_set(obj, param->i);
41             return EINA_TRUE;
42          }
43      }
44
45    ERR("unknown parameter '%s' of type '%s'",
46        param->name, edje_external_param_type_str(param->type));
47
48    return EINA_FALSE;
49 }
50
51 static Eina_Bool
52 external_searchbar_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
53 {
54    if (!strcmp(param->name, "label"))
55      {
56         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
57           {
58              param->s = elm_searchbar_text_get((Evas_Object *)obj);
59              return EINA_TRUE;
60           }
61      }
62    else if (!strcmp(param->name, "cancel_button_animation"))
63      {
64         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
65           {
66              return param->i;
67           }
68      }
69
70    ERR("unknown parameter '%s' of type '%s'",
71        param->name, edje_external_param_type_str(param->type));
72
73    return EINA_FALSE;
74 }
75
76 static void *
77 external_searchbar_params_parse(void *data, Evas_Object *obj, const Eina_List *params)
78 {
79    Elm_Params_Searchbar *mem;
80    Edje_External_Param *param;
81    const Eina_List *l;
82
83    //mem = external_common_params_parse(Elm_Params_Searchbar, data, obj, params);
84    if (!mem)
85       return NULL;
86
87    EINA_LIST_FOREACH(params, l, param)
88      {
89         if (!strcmp(param->name, "cancel_button_animation"))
90           {
91              mem->cancel_button_animation = param->i;
92              mem->cancel_button_animation_exists = EINA_TRUE;
93           }
94      }
95
96    return mem;
97 }
98
99 static Evas_Object *external_searchbar_content_get(void *data __UNUSED__,
100                 const Evas_Object *obj, const char *content)
101 {
102         ERR("so content");
103         return NULL;
104 }
105
106 static void
107 external_searchbar_params_free(void *params)
108 {
109    external_common_params_free(params);
110 }
111
112 static Edje_External_Param_Info external_searchbar_params[] = {
113    DEFINE_EXTERNAL_COMMON_PARAMS,
114    EDJE_EXTERNAL_PARAM_INFO_BOOL("cancel_button_animation"),
115    EDJE_EXTERNAL_PARAM_INFO_SENTINEL
116 };
117
118 DEFINE_EXTERNAL_ICON_ADD(searchbar, "searchbar");
119 DEFINE_EXTERNAL_TYPE_SIMPLE(searchbar, "Searchbar");