Merge "[Copy&Paste] remove "Paste" button when CBHM has no item"
[framework/uifw/elementary.git] / src / edje_externals / elm_navigationbar.c
1 #include <assert.h>
2
3 #include "private.h"
4
5 typedef struct _Elm_Params_Navigationbar
6 {
7    Eina_Bool disable_animation_exists:1;
8    Eina_Bool disable_animation:1;
9    Eina_Bool hidden_exists:1;
10    Eina_Bool hidden:1;
11 } Elm_Params_Navigationbar;
12
13
14 static void
15 external_navigationbar_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
16 {
17    const Elm_Params_Navigationbar *p;
18
19    if (to_params) p = to_params;
20    else if (from_params) p = from_params;
21    else return;
22
23   if(p->disable_animation_exists) elm_navigationbar_animation_disabled_set(obj, p->disable_animation);
24   if(p->hidden_exists) elm_navigationbar_hidden_set(obj, p->hidden);
25 }
26
27 static Eina_Bool
28 external_navigationbar_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
29 {
30    if (!strcmp(param->name, "disable animation"))
31      {
32         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
33           {
34              elm_navigationbar_animation_disabled_set(obj, param->i);
35              return EINA_TRUE;
36           }
37      }
38    else if (!strcmp(param->name, "hidden"))
39      {
40         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
41           {
42              elm_navigationbar_hidden_set(obj, param->i);
43              return EINA_TRUE;
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_navigationbar_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param)
54 {
55    ERR("unknown parameter '%s' of type '%s'",
56        param->name, edje_external_param_type_str(param->type));
57
58    return EINA_FALSE;
59 }
60
61 static void *
62 external_navigationbar_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
63 {
64    Elm_Params_Navigationbar *mem;
65    Edje_External_Param *param;
66    const Eina_List *l;
67
68    mem = calloc(1, sizeof(Elm_Params_Navigationbar));
69    if (!mem)
70      return NULL;
71
72    EINA_LIST_FOREACH(params, l, param)
73      {
74         if (!strcmp(param->name, "disable animation"))
75                 {
76              mem->disable_animation = !!param->i;
77                   mem->disable_animation_exists = EINA_TRUE;
78                 }
79         else if (!strcmp(param->name, "hidden"))
80           {
81              mem->hidden = !!param->i;
82              mem->hidden_exists = EINA_TRUE;
83           }
84      }
85
86    return mem;
87 }
88
89 static Evas_Object *external_navigationbar_content_get(void *data __UNUSED__,
90                 const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
91 {
92         ERR("so content");
93         return NULL;
94 }
95
96 static void
97 external_navigationbar_params_free(void *params)
98 {
99    Elm_Params_Navigationbar* mem = params;
100    free(mem);
101 }
102
103 static Edje_External_Param_Info external_navigationbar_params[] = {
104    EDJE_EXTERNAL_PARAM_INFO_BOOL("disable animation"),
105    EDJE_EXTERNAL_PARAM_INFO_BOOL("hidden"),
106    EDJE_EXTERNAL_PARAM_INFO_SENTINEL
107 };
108
109 DEFINE_EXTERNAL_ICON_ADD(navigationbar, "navigationbar");
110 DEFINE_EXTERNAL_TYPE_SIMPLE(navigationbar, "Navigationbar");