fix to use evas_object_color_set
[profile/tv/apps/native/air_mediahub.git] / src / util / util.c
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <stdbool.h>
18 #include <Elementary.h>
19 #include <app_debug.h>
20
21 #include "util/util.h"
22
23 void util_set_alpha_color(Evas_Object *obj, int alpha)
24 {
25         int r, g, b, a;
26
27         evas_object_color_get(obj, &r, &g, &b, &a);
28
29         /* evas should use premultiplied alpha */
30         r = r * alpha / 255;
31         g = g * alpha / 255;
32         b = b * alpha / 255;
33
34         evas_object_color_set(obj, r, g, b, alpha);
35 }
36
37 Evas_Object *util_add_box(Evas_Object *base)
38 {
39         Evas_Object *box;
40
41         if (!base)
42                 return NULL;
43
44         box = elm_box_add(base);
45         if (!box) {
46                 _ERR("failed to create box object");
47                 return NULL;
48         }
49
50         evas_object_size_hint_align_set(box, 0.0, EVAS_HINT_FILL);
51         evas_object_size_hint_weight_set(box, 0.0, EVAS_HINT_EXPAND);
52         elm_box_horizontal_set(box, EINA_TRUE);
53
54         return box;
55 }
56
57 Evas_Object *util_add_gengrid(Evas_Object *base,
58                         int item_size_x, int item_size_y)
59 {
60         Evas_Object *grid;
61
62         if (!base)
63                 return NULL;
64
65         grid = elm_gengrid_add(base);
66         if (!grid) {
67                 _ERR("failed to create gengrid object");
68                 return NULL;
69         }
70
71         evas_object_size_hint_weight_set(grid,
72                         EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
73         evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
74
75         elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_ALWAYS);
76         elm_gengrid_multi_select_set(grid, EINA_FALSE);
77
78         elm_gengrid_horizontal_set(grid, EINA_TRUE);
79
80         elm_gengrid_align_set(grid, 0.0, 0.0);
81
82         elm_gengrid_item_size_set(grid,
83                         elm_config_scale_get() * item_size_x,
84                         elm_config_scale_get() * item_size_y);
85
86         elm_scroller_policy_set(grid, ELM_SCROLLER_POLICY_OFF,
87                         ELM_SCROLLER_POLICY_OFF);
88
89         return grid;
90 }
91
92 Evas_Object *util_add_genlist(Evas_Object *base)
93 {
94         Evas_Object *list;
95
96         list = elm_genlist_add(base);
97         if (!list) {
98                 _ERR("failed to adding genlist");
99                 return NULL;
100         }
101
102         evas_object_size_hint_weight_set(list,
103                         EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
104
105         elm_genlist_homogeneous_set(list, EINA_TRUE);
106         elm_genlist_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
107         elm_genlist_multi_select_set(list, EINA_FALSE);
108
109         return list;
110 }
111
112 Evas_Object *util_add_image(Evas_Object *base, const char *file)
113 {
114         Evas_Object *image;
115
116         if (!base || !file)
117                 return NULL;
118
119         image = elm_image_add(base);
120         if (!image) {
121                 _ERR("failed to create image object");
122                 return NULL;
123         }
124
125         elm_image_file_set(image, file, NULL);
126         elm_image_aspect_fixed_set(image, EINA_FALSE);
127
128         return image;
129 }
130
131 Evas_Object *util_add_scroller(Evas_Object *base)
132 {
133         Evas_Object *scr;
134
135         if (!base)
136                 return NULL;
137
138         scr = elm_scroller_add(base);
139         if (!scr) {
140                 _ERR("failed to create scroller object");
141                 return NULL;
142         }
143
144         elm_scroller_policy_set(scr, ELM_SCROLLER_POLICY_OFF,
145                         ELM_SCROLLER_POLICY_OFF);
146
147         return scr;
148 }
149
150 void util_time_string(char *str, int size, unsigned int ms, bool full)
151 {
152         int sec;
153         int h, m, s;
154
155         sec = ms / 1000;
156
157         h = sec / 3600;
158         m = (sec % 3600) / 60;
159         s = sec % 60;
160
161         if (full) {
162                 snprintf(str, size, "%02d:%02d:%02d", h, m, s);
163         } else {
164                 if (h)
165                         snprintf(str, size, "%d:%02d:%02d", h, m, s);
166                 else
167                         snprintf(str, size, "%d:%02d", m, s);
168         }
169 }
170
171 void util_up_string(char *str)
172 {
173         while (*str) {
174                 *str = toupper(*str);
175                 str++;
176         }
177 }
178
179 int util_get_media_index(Eina_List *list, void *data)
180 {
181         Eina_List *l;
182         int index;
183         void *obj;
184
185         index = 0;
186         EINA_LIST_FOREACH(list, l, obj) {
187                 if (data == obj)
188                         return index;
189
190                 index++;
191         }
192
193         return -1;
194 }
195
196 app_media *util_find_media_info(Eina_List *list, const char *id)
197 {
198         Eina_List *l;
199         app_media *am;
200         app_media_info *info;
201
202         EINA_LIST_FOREACH(list, l, am) {
203                 info = app_media_get_info(am);
204                 if (!info)
205                         continue;
206
207                 if (!strcmp(info->media_id, id))
208                         return am;
209         }
210
211         return NULL;
212 }