Tizen 2.1 base
[apps/native/ug-bluetooth-efl.git] / src / ui / bt-widget.c
1 /*
2  * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Flora License, Version 1.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://floralicense.org/license/
9  *
10  * Unless required by applicable law or agreed to in writing,
11  * software 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 "bt-debug.h"
18 #include "bt-widget.h"
19 #include "bt-main-ug.h"
20 #include "bt-type-define.h"
21
22 Evas_Object *_bt_create_naviframe(Evas_Object *parent)
23 {
24         FN_START;
25
26         Evas_Object *nf;
27
28         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
29
30         nf = elm_naviframe_add(parent);
31         elm_object_part_content_set(parent, "elm.swallow.content", nf);
32         evas_object_show(nf);
33
34         FN_END;
35
36         return nf;
37 }
38
39 Evas_Object *_bt_create_icon(Evas_Object *parent, char *img)
40 {
41         FN_START;
42
43         Evas_Object *ic;
44         char buf[BT_IMG_PATH_MAX] = { 0, };
45
46         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
47         retvm_if(img == NULL, NULL, "Invalid argument: img is NULL\n");
48
49         if (strlen(img) >= BT_IMG_PATH_MAX) {
50                 BT_DBG("image path is wrong [%s]", img);
51         }
52
53         ic = elm_image_add(parent);
54         snprintf(buf, BT_IMG_PATH_MAX, "%s", img);
55         elm_image_file_set(ic, buf, NULL);
56         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL,
57                                          1, 1);
58         elm_image_resizable_set(ic, 1, 1);
59
60         evas_object_show(ic);
61
62         FN_END;
63
64         return ic;
65 }
66
67 Evas_Object *_bt_create_button(Evas_Object *parent, char *style, char *text,
68                                char *icon_path, Evas_Smart_Cb func, void *data)
69 {
70         FN_START;
71
72         Evas_Object *btn = NULL;
73         Evas_Object *icon = NULL;
74
75         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
76         btn = elm_button_add(parent);
77
78         if (style)
79                 elm_object_style_set(btn, style);
80
81         if (icon_path) {
82                 icon = elm_image_add(btn);
83                 elm_image_file_set(icon, icon_path, NULL);
84                 elm_object_part_content_set(btn, "elm.icon", icon);
85         }
86
87         if (text)
88                 elm_object_text_set(btn, text);
89
90         if (func)
91                 evas_object_smart_callback_add(btn, "clicked", func, data);
92
93         evas_object_show(btn);
94
95         FN_END;
96
97         return btn;
98 }
99
100 Evas_Object *_bt_modify_button(Evas_Object *btn, char *style, char *text,
101                                char *icon_path)
102 {
103         FN_START;
104
105         Evas_Object *icon = NULL;
106
107         retvm_if(btn == NULL, NULL, "Invalid argument: parent is NULL\n");
108
109         if (style)
110                 elm_object_style_set(btn, style);
111
112         if (icon_path) {
113                 icon = elm_image_add(btn);
114                 elm_image_file_set(icon, icon_path, NULL);
115                 elm_object_part_content_set(btn, "elm.icon", icon);
116         } else {
117                 elm_object_part_content_set(btn, "elm.icon", NULL);
118         }
119
120         if (text)
121                 elm_object_text_set(btn, text);
122
123         evas_object_show(btn);
124
125         FN_END;
126
127         return btn;
128 }
129
130 Evas_Object *_bt_create_progressbar(Evas_Object *parent, const char *style)
131 {
132         FN_START;
133
134         Evas_Object *progress_bar = NULL;
135
136         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
137
138         progress_bar = elm_progressbar_add(parent);
139
140         if (style)
141                 elm_object_style_set(progress_bar, style);
142         else
143                 elm_object_style_set(progress_bar, "list_process");
144
145         evas_object_show(progress_bar);
146         elm_progressbar_pulse(progress_bar, EINA_TRUE);
147
148         FN_END;
149
150         return progress_bar;
151 }
152
153 Evas_Object *_bt_create_genlist(Evas_Object *parent)
154 {
155         FN_START;
156
157         Evas_Object *genlist = NULL;
158
159         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
160
161         genlist = elm_genlist_add(parent);
162         evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
163                                          EVAS_HINT_EXPAND);
164         evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL,
165                                         EVAS_HINT_FILL);
166         evas_object_show(genlist);
167
168         FN_END;
169         return genlist;
170 }
171
172 Evas_Object *_bt_create_separator(Evas_Object *parent, const char *style)
173 {
174         FN_START;
175
176         Evas_Object *separator = NULL;
177
178         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
179
180         separator = elm_separator_add(parent);
181         elm_separator_horizontal_set(separator, EINA_TRUE);
182         elm_object_style_set(separator, style);
183         evas_object_show(separator);
184
185         FN_END;
186         return separator;
187 }
188
189 Evas_Object *_bt_create_box(Evas_Object *parent)
190 {
191         FN_START;
192
193         Evas_Object *box = NULL;
194
195         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
196
197         box = elm_box_add(parent);
198         evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0);
199         evas_object_size_hint_align_set(box, 0.0, 0.0);
200         evas_object_show(box);
201
202         FN_END;
203         return box;
204 }
205
206 Evas_Object *_bt_create_controlbar(Evas_Object *parent, char *style)
207 {
208         FN_START;
209
210         Evas_Object *toolbar = NULL;
211
212         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
213
214         toolbar = elm_toolbar_add(parent);
215         elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
216
217         if (style)
218                 elm_object_style_set(toolbar, style);
219
220         evas_object_show(toolbar);
221
222         FN_END;
223
224         return toolbar;
225 }
226
227 Evas_Object *_bt_create_scroller(Evas_Object *parent, Evas_Object *ly)
228 {
229         FN_START;
230
231         Evas_Object *scroller;
232
233         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
234
235         scroller = elm_scroller_add(parent);
236
237         elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
238         elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF,
239                                 ELM_SCROLLER_POLICY_AUTO);
240
241         if (ly != NULL)
242                 elm_object_content_set(scroller, ly);
243
244         evas_object_show(scroller);
245
246         FN_END;
247
248         return scroller;
249 }
250
251
252 Evas_Object *_bt_create_bg(Evas_Object *parent, char *style)
253 {
254         FN_START;
255
256         Evas_Object *bg;
257
258         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
259
260         bg = elm_bg_add(parent);
261
262         evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
263                                 EVAS_HINT_EXPAND);
264
265         if (style)
266                 elm_object_style_set(bg, style);
267
268         elm_win_resize_object_add(parent, bg);
269
270         evas_object_show(bg);
271
272         FN_END;
273
274         return bg;
275 }
276
277 Evas_Object *_bt_create_layout(Evas_Object *parent, char *edj, char *content)
278 {
279         FN_START;
280
281         Evas_Object *layout;
282
283         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
284
285         layout = elm_layout_add(parent);
286
287         if (edj != NULL && content != NULL)
288                 elm_layout_file_set(layout, edj, content);
289         else {
290                 elm_layout_theme_set(layout, "layout", "application",
291                                      "default");
292                 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
293                                                  EVAS_HINT_EXPAND);
294         }
295
296         evas_object_show(layout);
297
298         FN_END;
299
300         return layout;
301 }
302
303 Evas_Object *_bt_create_conformant(Evas_Object *parent, Evas_Object *content)
304 {
305         FN_START;
306
307         Evas_Object *conform = NULL;
308
309         elm_win_conformant_set(parent, 1);
310         conform = elm_conformant_add(parent);
311         elm_object_style_set(conform, "internal_layout");
312         evas_object_show(conform);
313
314         if (content)
315                 elm_object_content_set(conform, content);
316
317         FN_END;
318
319         return conform;
320 }
321
322 Evas_Object *_bt_create_popup(Evas_Object *parent, char *title, char *text,
323                               void *cb, void *cb_data, int timer_val)
324 {
325         FN_START;
326         retvm_if(parent == NULL, NULL, "Invalid argument: parent is NULL\n");
327
328         Evas_Object *popup = NULL;
329
330         popup = elm_popup_add(parent);
331         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
332                                          EVAS_HINT_EXPAND);
333
334         if (title != NULL)
335                 elm_object_part_text_set(popup, "title,text", title);
336
337         if (text != NULL)
338                 elm_object_text_set(popup, text);
339
340         if (cb != NULL)
341                 evas_object_smart_callback_add(popup, "block,clicked",
342                                                (Evas_Smart_Cb) cb, cb_data);
343
344         if (timer_val != 0)
345                 elm_popup_timeout_set(popup, (double)timer_val);
346
347         evas_object_show(popup);
348
349         FN_END;
350         return popup;
351 }
352
353 Evas_Object *_bt_create_selectioninfo(Evas_Object *parent, char *text,
354                                         int rotation, void *cb,
355                                         void *cb_data,int timeout)
356 {
357         FN_START;
358
359         Evas_Object *selectioninfo = NULL;
360         Evas_Object *layout = NULL;
361
362         retv_if(parent == NULL, NULL);
363         retv_if(text == NULL, NULL);
364
365         /* Add notify */
366         selectioninfo = elm_notify_add(parent);
367         retv_if(selectioninfo == NULL, NULL);
368         evas_object_size_hint_weight_set(selectioninfo,
369                                          EVAS_HINT_EXPAND,
370                                          EVAS_HINT_EXPAND);
371
372         /* selectioninfo layout add */
373         layout = elm_layout_add(selectioninfo);
374         retv_if(layout == NULL, NULL);
375
376         if (rotation == BT_ROTATE_LANDSCAPE ||
377              rotation == BT_ROTATE_LANDSCAPE_UPSIDEDOWN) {
378                 elm_layout_theme_set(layout,
379                                      "standard", "selectioninfo",
380                                      "horizontal/bottom_64");
381         } else {
382                 elm_layout_theme_set(layout,
383                                      "standard", "selectioninfo",
384                                      "vertical/bottom_64");
385         }
386
387         /* selectioninfo layout content set to notify */
388         elm_object_content_set(selectioninfo, layout);
389
390
391         /* callback add */
392         if (cb != NULL)
393                 evas_object_event_callback_add(selectioninfo,
394                                                EVAS_CALLBACK_HIDE,
395                                                cb,
396                                                cb_data);
397
398         /* text set and timeout set */
399         edje_object_part_text_set(_EDJ(layout), "elm.text", text);
400         elm_notify_timeout_set(selectioninfo, timeout);
401         evas_object_show(selectioninfo);
402
403         FN_END;
404
405         return selectioninfo;
406 }
407
408 void _bt_rotate_selectioninfo(Evas_Object *selectioninfo, int rotation)
409 {
410         FN_START;
411
412         Evas_Object *layout = NULL;
413         const char *text = NULL;
414
415         ret_if(selectioninfo == NULL);
416
417         layout = elm_object_content_get(selectioninfo);
418         ret_if(layout == NULL);
419
420         text = edje_object_part_text_get(_EDJ(layout), "elm.text");
421         ret_if(text == NULL);
422
423         BT_DBG("rotation: %d", rotation);
424         BT_DBG("text: %s", text);
425
426         if (rotation == BT_ROTATE_LANDSCAPE ||
427              rotation == BT_ROTATE_LANDSCAPE_UPSIDEDOWN) {
428                 elm_layout_theme_set(layout,
429                                      "standard", "selectioninfo",
430                                      "horizontal/bottom_12");
431         } else {
432                 elm_layout_theme_set(layout,
433                                      "standard", "selectioninfo",
434                                      "vertical/bottom_12");
435         }
436
437         edje_object_part_text_set(_EDJ(layout), "elm.text", text);
438 }