c325b4d89c562b375bfb5ebef1907b106fafa12f
[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 Evas_Object *util_add_box(Evas_Object *base)
24 {
25         Evas_Object *box;
26
27         if (!base)
28                 return NULL;
29
30         box = elm_box_add(base);
31         if (!box) {
32                 _ERR("failed to create box object");
33                 return NULL;
34         }
35
36         evas_object_size_hint_align_set(box, 0.0, EVAS_HINT_FILL);
37         evas_object_size_hint_weight_set(box, 0.0, EVAS_HINT_EXPAND);
38         elm_box_horizontal_set(box, EINA_TRUE);
39
40         return box;
41 }
42
43 Evas_Object *util_add_gengrid(Evas_Object *base,
44                         int item_size_x, int item_size_y)
45 {
46         Evas_Object *grid;
47
48         if (!base)
49                 return NULL;
50
51         grid = elm_gengrid_add(base);
52         if (!grid) {
53                 _ERR("failed to create gengrid object");
54                 return NULL;
55         }
56
57         evas_object_size_hint_weight_set(grid,
58                         EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
59         evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
60
61         elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_ALWAYS);
62         elm_gengrid_multi_select_set(grid, EINA_FALSE);
63
64         elm_gengrid_horizontal_set(grid, EINA_TRUE);
65
66         elm_gengrid_align_set(grid, 0.0, 0.0);
67
68         elm_gengrid_item_size_set(grid,
69                         elm_config_scale_get() * item_size_x,
70                         elm_config_scale_get() * item_size_y);
71
72         elm_scroller_policy_set(grid, ELM_SCROLLER_POLICY_OFF,
73                         ELM_SCROLLER_POLICY_OFF);
74
75         return grid;
76 }
77
78 Evas_Object *util_add_genlist(Evas_Object *base)
79 {
80         Evas_Object *list;
81
82         list = elm_genlist_add(base);
83         if (!list) {
84                 _ERR("failed to adding genlist");
85                 return NULL;
86         }
87
88         evas_object_size_hint_weight_set(list,
89                         EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
90
91         elm_genlist_homogeneous_set(list, EINA_TRUE);
92         elm_genlist_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
93         elm_genlist_multi_select_set(list, EINA_FALSE);
94
95         return list;
96 }
97
98 Evas_Object *util_add_image(Evas_Object *base, const char *file)
99 {
100         Evas_Object *image;
101
102         if (!base || !file)
103                 return NULL;
104
105         image = elm_image_add(base);
106         if (!image) {
107                 _ERR("failed to create image object");
108                 return NULL;
109         }
110
111         elm_image_file_set(image, file, NULL);
112         elm_image_aspect_fixed_set(image, EINA_FALSE);
113
114         return image;
115 }
116
117 Evas_Object *util_add_scroller(Evas_Object *base)
118 {
119         Evas_Object *scr;
120
121         if (!base)
122                 return NULL;
123
124         scr = elm_scroller_add(base);
125         if (!scr) {
126                 _ERR("failed to create scroller object");
127                 return NULL;
128         }
129
130         elm_scroller_policy_set(scr, ELM_SCROLLER_POLICY_OFF,
131                         ELM_SCROLLER_POLICY_OFF);
132
133         return scr;
134 }
135
136 void util_time_string(char *str, int size, unsigned int ms, bool full)
137 {
138         int sec;
139         int h, m, s;
140
141         sec = ms / 1000;
142
143         h = sec / 3600;
144         m = (sec % 3600) / 60;
145         s = sec % 60;
146
147         if (full) {
148                 snprintf(str, size, "%02d:%02d:%02d", h, m, s);
149         } else {
150                 if (h)
151                         snprintf(str, size, "%d:%02d:%02d", h, m, s);
152                 else
153                         snprintf(str, size, "%d:%02d", m, s);
154         }
155 }
156
157 void util_up_string(char *str)
158 {
159         while (*str) {
160                 *str = toupper(*str);
161                 str++;
162         }
163 }
164
165 int util_get_media_index(Eina_List *list, void *data)
166 {
167         Eina_List *l;
168         int index;
169         void *obj;
170
171         index = 0;
172         EINA_LIST_FOREACH(list, l, obj) {
173                 if (data == obj)
174                         return index;
175
176                 index++;
177         }
178
179         return -1;
180 }
181
182 app_media *util_find_media_info(Eina_List *list, const char *id)
183 {
184         Eina_List *l;
185         app_media *am;
186         app_media_info *info;
187
188         EINA_LIST_FOREACH(list, l, am) {
189                 info = app_media_get_info(am);
190                 if (!info)
191                         continue;
192
193                 if (!strcmp(info->media_id, id))
194                         return am;
195         }
196
197         return NULL;
198 }