aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/elementary/src/edje_externals/elm_check.c
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-04-22 09:20:32 +1000
committerDavid Walter Seikel2012-04-22 09:20:32 +1000
commit3ad3455551be0d7859ecb02290376206d5e66498 (patch)
tree497917e12b4d7f458dff9765d9b53f64c4e03fc3 /libraries/elementary/src/edje_externals/elm_check.c
parentUpdate EFL to latest beta. (diff)
downloadSledjHamr-3ad3455551be0d7859ecb02290376206d5e66498.zip
SledjHamr-3ad3455551be0d7859ecb02290376206d5e66498.tar.gz
SledjHamr-3ad3455551be0d7859ecb02290376206d5e66498.tar.bz2
SledjHamr-3ad3455551be0d7859ecb02290376206d5e66498.tar.xz
And actually include new files, plus elementary libraries.
Diffstat (limited to 'libraries/elementary/src/edje_externals/elm_check.c')
-rw-r--r--libraries/elementary/src/edje_externals/elm_check.c148
1 files changed, 148 insertions, 0 deletions
diff --git a/libraries/elementary/src/edje_externals/elm_check.c b/libraries/elementary/src/edje_externals/elm_check.c
new file mode 100644
index 0000000..287b734
--- /dev/null
+++ b/libraries/elementary/src/edje_externals/elm_check.c
@@ -0,0 +1,148 @@
1#include "private.h"
2
3typedef struct _Elm_Params_Check
4{
5 Elm_Params base;
6 const char *label;
7 Evas_Object *icon;
8 Eina_Bool state:1;
9 Eina_Bool state_exists:1;
10} Elm_Params_Check;
11
12static void
13external_check_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
14{
15 const Elm_Params_Check *p;
16
17 if (to_params) p = to_params;
18 else if (from_params) p = from_params;
19 else return;
20
21 if (p->label)
22 elm_object_text_set(obj, p->label);
23 if (p->icon)
24 elm_object_part_content_set(obj, "icon", p->icon);
25 if (p->state_exists)
26 elm_check_state_set(obj, p->state);
27}
28
29static Eina_Bool
30external_check_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
31{
32 if (!strcmp(param->name, "label"))
33 {
34 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
35 {
36 elm_object_text_set(obj, param->s);
37 return EINA_TRUE;
38 }
39 }
40 else if (!strcmp(param->name, "icon"))
41 {
42 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
43 {
44 Evas_Object *icon = external_common_param_icon_get(obj, param);
45 if ((strcmp(param->s, "")) && (!icon)) return EINA_FALSE;
46 elm_object_part_content_set(obj, "icon", icon);
47 return EINA_TRUE;
48 }
49 }
50 else if (!strcmp(param->name, "state"))
51 {
52 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
53 {
54 elm_check_state_set(obj, param->i);
55 return EINA_TRUE;
56 }
57 }
58
59 ERR("unknown parameter '%s' of type '%s'",
60 param->name, edje_external_param_type_str(param->type));
61
62 return EINA_FALSE;
63}
64
65static Eina_Bool
66external_check_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
67{
68 if (!strcmp(param->name, "label"))
69 {
70 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
71 {
72 param->s = elm_object_text_get(obj);
73 return EINA_TRUE;
74 }
75 }
76 else if (!strcmp(param->name, "icon"))
77 {
78 /* not easy to get icon name back from live object */
79 return EINA_FALSE;
80 }
81 else if (!strcmp(param->name, "state"))
82 {
83 if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
84 {
85 param->i = elm_check_state_get(obj);
86 return EINA_TRUE;
87 }
88 }
89
90 ERR("unknown parameter '%s' of type '%s'",
91 param->name, edje_external_param_type_str(param->type));
92
93 return EINA_FALSE;
94}
95
96static void *
97external_check_params_parse(void *data __UNUSED__, Evas_Object *obj, const Eina_List *params)
98{
99 Elm_Params_Check *mem;
100 Edje_External_Param *param;
101 const Eina_List *l;
102
103 mem = calloc(1, sizeof(Elm_Params_Check));
104 if (!mem)
105 return NULL;
106
107 external_common_icon_param_parse(&mem->icon, obj, params);
108
109 EINA_LIST_FOREACH(params, l, param)
110 {
111 if (!strcmp(param->name, "state"))
112 {
113 mem->state = !!param->i;
114 mem->state_exists = EINA_TRUE;
115 }
116 else if (!strcmp(param->name, "label"))
117 mem->label = eina_stringshare_add(param->s);
118 }
119
120 return mem;
121}
122
123static Evas_Object *external_check_content_get(void *data __UNUSED__,
124 const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
125{
126 ERR("No content.");
127 return NULL;
128}
129
130static void
131external_check_params_free(void *params)
132{
133 Elm_Params_Check *mem = params;
134 if (mem->label)
135 eina_stringshare_del(mem->label);
136 free(params);
137}
138
139static Edje_External_Param_Info external_check_params[] = {
140 DEFINE_EXTERNAL_COMMON_PARAMS,
141 EDJE_EXTERNAL_PARAM_INFO_STRING("label"),
142 EDJE_EXTERNAL_PARAM_INFO_STRING("icon"),
143 EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL("state", 0, "unchecked", "checked"),
144 EDJE_EXTERNAL_PARAM_INFO_SENTINEL
145};
146
147DEFINE_EXTERNAL_ICON_ADD(check, "check")
148DEFINE_EXTERNAL_TYPE_SIMPLE(check, "Check")