Merge "[Copy&Paste] remove "Paste" button when CBHM has no item"
[framework/uifw/elementary.git] / src / edje_externals / elm_navigationbar_ex.c
1 #include <assert.h>
2
3 #include "private.h"
4
5 typedef struct _Elm_Params_Navigationbar_ex
6 {
7    Eina_Bool del_on_pop_exists:1;
8    Eina_Bool del_on_pop:1;
9 } Elm_Params_Navigationbar_ex;
10
11
12 static void
13 external_navigationbar_ex_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
14 {
15    const Elm_Params_Navigationbar_ex *p;
16
17    if (to_params) p = to_params;
18    else if (from_params) p = from_params;
19    else return;
20
21   if(p->del_on_pop_exists) elm_navigationbar_ex_delete_on_pop_set(obj, p->del_on_pop);
22 }
23
24 static Eina_Bool
25 external_navigationbar_ex_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
26 {
27    if (!strcmp(param->name, "delete on pop"))
28      {
29         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
30           {
31              elm_navigationbar_ex_delete_on_pop_set(obj, param->i);
32              return EINA_TRUE;
33           }
34      }
35    ERR("unknown parameter '%s' of type '%s'",
36        param->name, edje_external_param_type_str(param->type));
37
38    return EINA_FALSE;
39 }
40
41 static Eina_Bool
42 external_navigationbar_ex_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param)
43 {
44    ERR("unknown parameter '%s' of type '%s'",
45        param->name, edje_external_param_type_str(param->type));
46
47    return EINA_FALSE;
48 }
49
50 static void *
51 external_navigationbar_ex_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
52 {
53    Elm_Params_Navigationbar_ex *mem;
54    Edje_External_Param *param;
55    const Eina_List *l;
56
57    mem = calloc(1, sizeof(Elm_Params_Navigationbar_ex));
58    if (!mem)
59      return NULL;
60
61    EINA_LIST_FOREACH(params, l, param)
62      {
63         if (!strcmp(param->name, "delete on pop"))
64                 {
65              mem->del_on_pop = !!param->i;
66                   mem->del_on_pop_exists = EINA_TRUE;
67                 }
68      }
69
70    return mem;
71 }
72
73 static Evas_Object *external_navigationbar_ex_content_get(void *data __UNUSED__,
74                 const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
75 {
76         ERR("so content");
77         return NULL;
78 }
79
80 static void
81 external_navigationbar_ex_params_free(void *params)
82 {
83    Elm_Params_Navigationbar_ex* mem = params;
84    free(mem);
85 }
86
87 static Edje_External_Param_Info external_navigationbar_ex_params[] = {
88    EDJE_EXTERNAL_PARAM_INFO_BOOL("delete on pop"),
89    EDJE_EXTERNAL_PARAM_INFO_SENTINEL
90 };
91
92 DEFINE_EXTERNAL_ICON_ADD(navigationbar_ex, "navigationbar_ex");
93 DEFINE_EXTERNAL_TYPE_SIMPLE(navigationbar_ex, "Navigationbar_ex");