efl
106 строк · 2.6 Кб
1#include "private.h"
2
3typedef struct _Elm_Params_Label
4{
5Elm_Params base;
6const char* label;
7} Elm_Params_Label;
8
9static void
10external_label_state_set(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
11const void *from_params, const void *to_params,
12float pos EINA_UNUSED)
13{
14const Elm_Params_Label *p;
15
16if (to_params) p = to_params;
17else if (from_params) p = from_params;
18else return;
19
20if (p->label) elm_object_text_set(obj, p->label);
21}
22
23static Eina_Bool
24external_label_param_set(void *data EINA_UNUSED, Evas_Object *obj,
25const Edje_External_Param *param)
26{
27if (!strcmp(param->name, "label"))
28{
29if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
30{
31elm_object_text_set(obj, param->s);
32return EINA_TRUE;
33}
34}
35
36ERR("unknown parameter '%s' of type '%s'",
37param->name, edje_external_param_type_str(param->type));
38
39return EINA_FALSE;
40}
41
42static Eina_Bool
43external_label_param_get(void *data EINA_UNUSED, const Evas_Object *obj,
44Edje_External_Param *param)
45{
46if (!strcmp(param->name, "label"))
47{
48if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
49{
50param->s = elm_object_text_get(obj);
51return EINA_TRUE;
52}
53}
54
55ERR("unknown parameter '%s' of type '%s'",
56param->name, edje_external_param_type_str(param->type));
57
58return EINA_FALSE;
59}
60
61static void *
62external_label_params_parse(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
63const Eina_List *params EINA_UNUSED)
64{
65Elm_Params_Label *mem;
66Edje_External_Param *param;
67const Eina_List *l;
68
69mem = ELM_NEW(Elm_Params_Label);
70if (!mem)
71return NULL;
72
73EINA_LIST_FOREACH(params, l, param)
74{
75if (!strcmp(param->name, "label"))
76mem->label = eina_stringshare_add(param->s);
77}
78
79return mem;
80}
81
82static Evas_Object *external_label_content_get(void *data EINA_UNUSED,
83const Evas_Object *obj EINA_UNUSED,
84const char *content EINA_UNUSED)
85{
86ERR("no content");
87return NULL;
88}
89
90static void
91external_label_params_free(void *params)
92{
93Elm_Params_Label *mem = params;
94if (mem->label)
95eina_stringshare_del(mem->label);
96free(params);
97}
98
99static Edje_External_Param_Info external_label_params[] = {
100DEFINE_EXTERNAL_COMMON_PARAMS,
101EDJE_EXTERNAL_PARAM_INFO_STRING("label"),
102EDJE_EXTERNAL_PARAM_INFO_SENTINEL
103};
104
105DEFINE_EXTERNAL_ICON_ADD(label, "label");
106DEFINE_EXTERNAL_TYPE_SIMPLE(label, "Label");
107