efl

Форк
0
131 строка · 3.5 Кб
1
#include "private.h"
2

3
typedef struct _Elm_Params_Frame
4
{
5
   Elm_Params base;
6
   const char *label;
7
   Evas_Object *content; /* part name whose obj is to be set as content */
8
} Elm_Params_Frame;
9

10
static void
11
external_frame_state_set(void *data EINA_UNUSED, Evas_Object *obj,
12
                         const void *from_params, const void *to_params,
13
                         float pos EINA_UNUSED)
14
{
15
   const Elm_Params_Frame *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) elm_object_text_set(obj, p->label);
22
   if (p->content) elm_object_content_set(obj, p->content);
23
}
24

25
static Eina_Bool
26
external_frame_param_set(void *data EINA_UNUSED, Evas_Object *obj,
27
                         const Edje_External_Param *param)
28
{
29
   if (!strcmp(param->name, "label"))
30
     {
31
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
32
          {
33
             elm_object_text_set(obj, param->s);
34
             return EINA_TRUE;
35
          }
36
     }
37
   else if (!strcmp(param->name, "content"))
38
     {
39
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
40
          {
41
             Evas_Object *content =
42
                external_common_param_elm_layout_get(obj,param);
43
             if ((strcmp(param->s, "")) && (!content)) return EINA_FALSE;
44
             elm_object_content_set(obj, content);
45
             return EINA_TRUE;
46
          }
47
     }
48

49
   ERR("unknown parameter '%s' of type '%s'",
50
       param->name, edje_external_param_type_str(param->type));
51

52
   return EINA_FALSE;
53
}
54

55
static Eina_Bool
56
external_frame_param_get(void *data EINA_UNUSED, const Evas_Object *obj,
57
                         Edje_External_Param *param)
58
{
59
   if (!strcmp(param->name, "label"))
60
     {
61
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
62
          {
63
             param->s = elm_object_text_get(obj);
64
             return EINA_TRUE;
65
          }
66
     }
67
   else if (!strcmp(param->name, "content"))
68
     {
69
        /* not easy to get content name back from live object */
70
        return EINA_FALSE;
71
     }
72

73
   ERR("unknown parameter '%s' of type '%s'",
74
       param->name, edje_external_param_type_str(param->type));
75

76
   return EINA_FALSE;
77
}
78

79
static void *
80
external_frame_params_parse(void *data EINA_UNUSED, Evas_Object *obj,
81
                            const Eina_List *params)
82
{
83
   Elm_Params_Frame *mem;
84
   Edje_External_Param *param;
85
   const Eina_List *l;
86

87
   mem = calloc(1, sizeof(Elm_Params_Frame));
88
   if (!mem)
89
     return NULL;
90

91
   EINA_LIST_FOREACH(params, l, param)
92
     {
93
        if (!strcmp(param->name, "content"))
94
          mem->content = external_common_param_elm_layout_get(obj, param);
95
        else if (!strcmp(param->name, "label"))
96
          mem->label = eina_stringshare_add(param->s);
97
     }
98

99
   return mem;
100
}
101

102
static Evas_Object *external_frame_content_get(void *data EINA_UNUSED,
103
                                               const Evas_Object *obj EINA_UNUSED,
104
                                               const char *content EINA_UNUSED)
105
{
106
   if (!strcmp(content, "content"))
107
     return elm_object_content_get(obj);
108

109
   ERR("unknown content '%s'", content);
110
   return NULL;
111
}
112

113
static void
114
external_frame_params_free(void *params)
115
{
116
   Elm_Params_Frame *mem = params;
117

118
   if (mem->label)
119
      eina_stringshare_del(mem->label);
120
   free(params);
121
}
122

123
static Edje_External_Param_Info external_frame_params[] = {
124
   DEFINE_EXTERNAL_COMMON_PARAMS,
125
   EDJE_EXTERNAL_PARAM_INFO_STRING("label"),
126
   EDJE_EXTERNAL_PARAM_INFO_STRING("content"),
127
   EDJE_EXTERNAL_PARAM_INFO_SENTINEL
128
};
129

130
DEFINE_EXTERNAL_ICON_ADD(frame, "frame");
131
DEFINE_EXTERNAL_TYPE_SIMPLE(frame, "Frame");
132

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.