efl

Форк
0
/
elm_slideshow.c 
187 строк · 5.1 Кб
1
#include "private.h"
2

3
typedef struct _Elm_Params_Slideshow
4
{
5
   Elm_Params base;
6
   double timeout;
7
   const char *transition;
8
   const char *layout;
9
   Eina_Bool loop:1;
10
   Eina_Bool timeout_exists:1;
11
   Eina_Bool loop_exists:1;
12
} Elm_Params_Slideshow;
13

14
static const char *transitions[] =
15
{
16
   "fade", "black_fade", "horizontal", "vertical", "square", NULL
17
};
18
static const char *layout[] = { "fullscreen", "not_fullscreen", NULL };
19

20
static void
21
external_slideshow_state_set(void *data EINA_UNUSED, Evas_Object *obj,
22
                             const void *from_params, const void *to_params,
23
                             float pos EINA_UNUSED)
24
{
25
   const Elm_Params_Slideshow *p;
26

27
   if (to_params) p = to_params;
28
   else if (from_params) p = from_params;
29
   else return;
30

31
   if (p->timeout_exists)
32
     elm_slideshow_timeout_set(obj , p->timeout);
33
   if (p->loop_exists)
34
     elm_slideshow_loop_set(obj, p->loop);
35
   if (p->transition)
36
     elm_slideshow_transition_set(obj, p->transition);
37
   if (p->layout)
38
     elm_slideshow_layout_set(obj, p->layout);
39
}
40

41
static Eina_Bool
42
external_slideshow_param_set(void *data EINA_UNUSED, Evas_Object *obj,
43
                             const Edje_External_Param *param)
44
{
45
   if (!strcmp(param->name, "timeout"))
46
     {
47
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
48
          {
49
             elm_slideshow_timeout_set(obj, param->d);
50
             return EINA_TRUE;
51
          }
52
     }
53
   else if (!strcmp(param->name, "loop"))
54
     {
55
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
56
          {
57
             elm_slideshow_loop_set(obj, param->i);
58
             return EINA_TRUE;
59
          }
60
     }
61
   else if (!strcmp(param->name, "transition"))
62
     {
63
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
64
          {
65
             elm_slideshow_transition_set(obj, param->s);
66
             return EINA_TRUE;
67
          }
68
     }
69
   else if (!strcmp(param->name, "layout"))
70
     {
71
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
72
          {
73
             elm_slideshow_layout_set(obj, param->s);
74
             return EINA_TRUE;
75
          }
76
     }
77

78
   ERR("unknown parameter '%s' of type '%s'",
79
       param->name, edje_external_param_type_str(param->type));
80

81
   return EINA_FALSE;
82
}
83

84
static Eina_Bool
85
external_slideshow_param_get(void *data EINA_UNUSED, const Evas_Object *obj,
86
                             Edje_External_Param *param)
87
{
88
   if (!strcmp(param->name, "timeout"))
89
     {
90
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
91
          {
92
             param->d = elm_slideshow_timeout_get(obj);
93
             return EINA_TRUE;
94
          }
95
     }
96
   else if (!strcmp(param->name, "loop"))
97
     {
98
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
99
          {
100
             param->i = elm_slideshow_loop_get(obj);
101
             return EINA_TRUE;
102
          }
103
     }
104
   else if (!strcmp(param->name, "transition"))
105
     {
106
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
107
          {
108
             param->s = elm_slideshow_transition_get(obj);
109
             return EINA_TRUE;
110
          }
111
     }
112
   else if (!strcmp(param->name, "layout"))
113
     {
114
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
115
          {
116
             param->s = elm_slideshow_layout_get(obj);
117
             return EINA_TRUE;
118
          }
119
     }
120

121
   ERR("unknown parameter '%s' of type '%s'",
122
       param->name, edje_external_param_type_str(param->type));
123

124
   return EINA_FALSE;
125
}
126

127
static void *
128
external_slideshow_params_parse(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const Eina_List *params)
129
{
130
   Elm_Params_Slideshow *mem;
131
   Edje_External_Param *param;
132
   const Eina_List *l;
133

134
   mem = calloc(1, sizeof(Elm_Params_Slideshow));
135
   if (!mem)
136
     return NULL;
137

138
   EINA_LIST_FOREACH(params, l, param)
139
     {
140
        if (!strcmp(param->name, "timeout"))
141
          {
142
             mem->timeout = param->d;
143
             mem->timeout_exists = EINA_TRUE;
144
          }
145
        else if (!strcmp(param->name, "loop"))
146
          {
147
             mem->loop = param->i;
148
             mem->loop_exists = EINA_TRUE;
149
          }
150
        else if (!strcmp(param->name, "transition"))
151
          {
152
             mem->transition = param->s;
153
          }
154
        else if (!strcmp(param->name, "layout"))
155
          {
156
             mem->layout = param->s;
157
          }
158
     }
159

160
   return mem;
161
}
162

163
static Evas_Object *external_slideshow_content_get(void *data EINA_UNUSED,
164
                                                   const Evas_Object *obj EINA_UNUSED,
165
                                                   const char *content EINA_UNUSED)
166
{
167
   ERR("No content.");
168
   return NULL;
169
}
170

171
static void
172
external_slideshow_params_free(void *params EINA_UNUSED)
173
{
174
   return;
175
}
176

177
static Edje_External_Param_Info external_slideshow_params[] = {
178
     DEFINE_EXTERNAL_COMMON_PARAMS,
179
     EDJE_EXTERNAL_PARAM_INFO_DOUBLE("timeout"),
180
     EDJE_EXTERNAL_PARAM_INFO_BOOL("loop"),
181
     EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("transition", "fade", transitions),
182
     EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("layout", "fullscreen", layout),
183
     EDJE_EXTERNAL_PARAM_INFO_SENTINEL
184
};
185

186
DEFINE_EXTERNAL_ICON_ADD(slideshow, "slideshow");
187
DEFINE_EXTERNAL_TYPE_SIMPLE(slideshow, "Slideshow");
188

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

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

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

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