[SR][Request] Update the Flora license
[apps/home/ug-myfile-efl.git] / src / widget / mf-ug-navi-bar.c
1 /*
2  * Copyright 2012          Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.1 (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, 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
18
19
20 #include "mf-ug-winset.h"
21 #include "mf-ug-cb.h"
22 #include "mf-ug-fm-svc-wrapper.h"
23 #include "mf-ug-util.h"
24 #include "mf-ug-fs-util.h"
25 #include "mf-ug-resource.h"
26
27
28 /******************************
29 ** Prototype    : __mf_ug_navi_bar_create_group_radio_box
30 ** Description  : Samsung
31 ** Input        : void *data
32 ** Output       : None
33 ** Return Value :
34 ** Calls        :
35 ** Called By    :
36 **
37 **  History        :
38 **  1.Date         : 2010/12/10
39 **    Author       : Samsung
40 **    Modification : Created function
41 **
42 ******************************/
43 static void __mf_ug_navi_bar_create_group_radio_box(void *data)
44 {
45         UG_TRACE_BEGIN;
46         ugData *ugd = (ugData *)data;
47         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
48
49         Evas_Object *group_radio = NULL;
50
51         if (ugd->ug_MainWindow.ug_pRadioGroup != NULL) {
52                 evas_object_del(ugd->ug_MainWindow.ug_pRadioGroup);
53                 ugd->ug_MainWindow.ug_pRadioGroup = NULL;
54         }
55
56         group_radio = elm_radio_add(ugd->ug_MainWindow.ug_pMainLayout);
57         ug_mf_retm_if(group_radio == NULL, "ugd is NULL");
58
59         elm_radio_value_set(group_radio, 0);
60         evas_object_hide(group_radio);
61         /*/Internal/invisible Radio Objects used to group the radio buttons in the list. */
62         ugd->ug_MainWindow.ug_pRadioGroup = group_radio;
63         UG_TRACE_END;
64 }
65
66
67 /******************************
68 ** Prototype    : __mf_ug_navi_bar_push_content
69 ** Description  : Samsung
70 ** Input        : ugData *data
71 **                Evas_Object *NaviContent
72 ** Output       : None
73 ** Return Value :
74 ** Calls        :
75 ** Called By    :
76 **
77 **  History        :
78 **  1.Date         : 2010/12/10
79 **    Author       : Samsung
80 **    Modification : Created function
81 **
82 ******************************/
83 static void __mf_ug_navi_bar_push_content(void *data, Evas_Object *NaviContent)
84 {
85         UG_TRACE_BEGIN;
86         ug_mf_retm_if(data == NULL, "pNavi_s is NULL");
87         ugData *ugd = (ugData *)data;
88         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
89
90         Evas_Object *NaviBar = ugd->ug_MainWindow.ug_pNaviBar;
91         char *title = NULL;
92
93         ugd->ug_MainWindow.ug_pPreNaviItem = ugd->ug_MainWindow.ug_pNaviItem;
94
95         if (pNavi_s) {
96                 if(!g_strcmp0(pNavi_s->ug_pNaviTitle, "Ringtones")) {
97                         if (pNavi_s->ug_pNaviTitle) {
98                                 g_free(pNavi_s->ug_pNaviTitle);
99                                 pNavi_s->ug_pNaviTitle = NULL;
100                         }
101                         pNavi_s->ug_pNaviTitle = g_strdup(MF_UG_LABEL_RINGTONES);
102                 } else if(!g_strcmp0(pNavi_s->ug_pNaviTitle, "Alarms")) {
103                         if (pNavi_s->ug_pNaviTitle) {
104                                 g_free(pNavi_s->ug_pNaviTitle);
105                                 pNavi_s->ug_pNaviTitle = NULL;
106                         }
107                         pNavi_s->ug_pNaviTitle = g_strdup(MF_UG_LABEL_ALARM);
108                 } else if (!g_strcmp0(pNavi_s->ug_pNaviTitle, "Alerts")) {
109                 }
110                 title = pNavi_s->ug_pNaviTitle;
111         }
112         ug_debug("title=%s", title);
113
114         ugd->ug_MainWindow.ug_pNaviItem = elm_naviframe_item_push(NaviBar, title, NULL, NULL, NaviContent, NULL);
115
116         UG_TRACE_END;
117 }
118
119
120 static Eina_Bool __mf_widget_notify_popup_timer_cb(void *data)
121 {
122         ugData *ugd = (ugData *)data;
123         ug_mf_retvm_if(ugd == NULL, EINA_FALSE, "ugd is null");
124
125         elm_object_part_content_unset(ugd->ug_MainWindow.ug_pNaviLayout,
126                                             "sel_contents");
127
128         UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSelectInfoLayout);
129         ugd->ug_Status.pPopupTimer = NULL;
130         return false;
131 }
132
133 Evas_Object *mf_ug_navibar_create_notify_popup(void *data,
134                                     Evas_Object *parent,
135                                     char *label,
136                                     bool time_out,
137                                     void func(void *data, Evas_Object *obj, void *event_info))
138 {
139         UG_TRACE_BEGIN;
140         ug_mf_retvm_if(data == NULL, NULL, "data is NULL");
141         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
142         ug_mf_retvm_if(label == NULL, NULL, "label is NULL");
143         ugData *ugd = (ugData *)data;
144
145
146         Evas_Object *countlabel = NULL;
147         if (ugd->ug_MainWindow.ug_pSelectInfoLayout && ugd->ug_Status.pPopupTimer) {
148                 elm_object_part_text_set(ugd->ug_MainWindow.ug_pSelectInfoLayout, "elm.text", label);
149                 countlabel = ugd->ug_MainWindow.ug_pSelectInfoLayout;
150         } else {
151                 elm_object_part_content_unset(ugd->ug_MainWindow.ug_pNaviLayout,
152                                                     "sel_contents");
153                 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSelectInfoLayout);
154                 countlabel = elm_layout_add(parent);
155                 evas_object_size_hint_weight_set(countlabel,
156                                                  EVAS_HINT_EXPAND,
157                                                  EVAS_HINT_EXPAND);
158                 evas_object_size_hint_align_set(countlabel,
159                                                 EVAS_HINT_FILL,
160                                                 EVAS_HINT_FILL);
161                 elm_layout_theme_set(countlabel, "standard", "selectioninfo", "center_text");
162                 elm_object_part_text_set(countlabel, "elm.text", label);
163                 elm_object_part_content_set(parent,
164                                             "sel_contents",
165                                             countlabel);
166                 elm_object_signal_emit(countlabel, "show,selection,info", "elm");
167         }
168
169         UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.pPopupTimer);
170         if (time_out) {
171                 ugd->ug_Status.pPopupTimer = ecore_timer_add(3, __mf_widget_notify_popup_timer_cb, ugd);
172         }
173
174         evas_object_show(countlabel);
175         UG_TRACE_END;
176         return countlabel;
177
178
179 }
180
181 /******************************
182 ** Prototype    : mf_ug_navi_bar_create_navi_bar
183 ** Description  :
184 ** Input        : Evas_Object* parent
185 ** Output       : None
186 ** Return Value :
187 ** Calls        :
188 ** Called By    :
189 **
190 **  History        :
191 **  1.Date         : 2010/12/10
192 **    Author       : Samsung
193 **    Modification : Created function
194 **
195 ******************************/
196 Evas_Object *mf_ug_navi_bar_create_navi_bar(Evas_Object *parent)
197 {
198         UG_TRACE_BEGIN;
199         Evas_Object *navi_bar = NULL;
200         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
201
202         navi_bar = elm_naviframe_add(parent);
203         ug_mf_retvm_if(navi_bar == NULL, NULL, "Failed elm_navigationbar_add");
204         elm_naviframe_prev_btn_auto_pushed_set(navi_bar, EINA_FALSE);
205
206         evas_object_show(navi_bar);
207
208         UG_TRACE_END;
209         return navi_bar;
210 }
211
212
213 /******************************
214 ** Prototype    : mf_ug_navi_bar_set_new_content
215 ** Description  : Samsung
216 ** Input        : Evas_Object *pLayout
217 **                Evas_Object *NaviContent
218 ** Output       : None
219 ** Return Value :
220 ** Calls        :
221 ** Called By    :
222 **
223 **  History        :
224 **  1.Date         : 2010/12/10
225 **    Author       : Samsung
226 **    Modification : Created function
227 **
228 ******************************/
229 void mf_ug_navi_bar_set_new_content(Evas_Object *pLayout, Evas_Object *NaviContent)
230 {
231         UG_TRACE_BEGIN;
232         Evas_Object *unUsed = elm_object_part_content_unset(pLayout, "part1");
233         evas_object_del(unUsed);
234         elm_object_part_content_set(pLayout, "part1", NaviContent);
235         UG_TRACE_END;
236 }
237
238 Evas_Object *mf_ug_navi_bar_create_box(Evas_Object * parent)
239 {
240         UG_TRACE_BEGIN;
241         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
242
243         Evas_Object *box = NULL;
244         box = elm_box_add(parent);
245         ug_mf_retvm_if(box == NULL, NULL, "box is NULL");
246         elm_object_focus_set(box, EINA_FALSE);
247         evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
248         evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
249         elm_box_clear(box);
250         evas_object_show(box);
251         UG_TRACE_END;
252         return box;
253
254 }
255
256 Evas_Object *mf_ug_navi_bar_create_layout(Evas_Object *parent, const char *edj, const char *grp_name)
257 {
258         UG_TRACE_BEGIN;
259         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
260         ug_mf_retvm_if(edj == NULL, NULL, "edj is NULL");
261         ug_mf_retvm_if(grp_name == NULL, NULL, "grp_name is NULL");
262
263         Evas_Object *layout = NULL;
264
265         layout = elm_layout_add(parent);
266         ug_mf_retvm_if(layout == NULL, NULL, "layout is NULL");
267         elm_object_focus_set(layout, EINA_FALSE);
268         elm_layout_file_set(layout, edj, grp_name);
269         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
270         evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
271         evas_object_show(layout);
272         UG_TRACE_END;
273         return layout;
274
275 }
276
277 /******************************
278 ** Prototype    : mf_ug_navi_bar_create_default_view
279 ** Description  : Samsung
280 ** Input        : void *data
281 ** Output       : None
282 ** Return Value :
283 ** Calls        :
284 ** Called By    :
285 **
286 **  History        :
287 **  1.Date         : 2010/12/10
288 **    Author       : Samsung
289 **    Modification : Created function
290 **
291 ******************************/
292 Evas_Object *__mf_ug_navi_bar_pathinfo_create(Evas_Object *parent, const char *content)
293 {
294         UG_TRACE_BEGIN;
295         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
296         ug_mf_retvm_if(content == NULL, NULL, "content is NULL");
297
298         Evas_Object *layout = NULL;
299
300         layout = elm_layout_add(parent);
301         elm_object_focus_set(layout, EINA_FALSE);
302         elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, UG_GRP_PATH_INFO);
303         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
304         evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
305
306         elm_object_part_text_set(layout, "info", content);
307         evas_object_show(layout);
308         UG_TRACE_END;
309         return layout;
310 }
311
312
313 void mf_ug_navi_bar_title_set(void *data)
314 {
315         UG_TRACE_BEGIN;
316         ugData *ugd = (ugData *)data;
317         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
318         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE
319             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE
320             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
321                 elm_object_part_text_set(ugd->ug_MainWindow.ug_pNaviBar, "elm.text.title", MF_UG_LABEL_IMPORT);
322         } else if (ugd->ug_Status.ug_iViewType != mf_ug_view_root && !(ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true)) {
323                 Evas_Object *home_btn = elm_button_add(ugd->ug_MainWindow.ug_pNaviBar);
324                 elm_object_style_set(home_btn, "naviframe/title_icon");
325                 Evas_Object *home_ic = elm_image_add(ugd->ug_MainWindow.ug_pNaviBar);
326                 elm_image_file_set(home_ic, UG_TITLE_ICON_HOME, NULL);
327                 elm_image_resizable_set(home_ic, EINA_TRUE, EINA_TRUE);
328                 elm_object_content_set(home_btn, home_ic);
329                 evas_object_smart_callback_add(home_btn, "clicked", mf_ug_cb_home_button_cb, ugd);
330                 evas_object_smart_callback_add(home_btn, "pressed", mf_ug_cb_home_button_pressed_cb, home_ic);
331                 evas_object_smart_callback_add(home_btn, "unpressed", mf_ug_cb_home_button_unpressed_cb, home_ic);
332                 evas_object_show(home_btn);
333                 elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, TITLE_LEFT_BTN, home_btn);
334
335                 Evas_Object *up_btn = elm_button_add(ugd->ug_MainWindow.ug_pNaviBar);
336                 elm_object_style_set(up_btn, "naviframe/title_icon");
337                 Evas_Object *up_ic = elm_image_add(ugd->ug_MainWindow.ug_pNaviBar);
338                 elm_image_file_set(up_ic, UG_TITLE_ICON_UPPER, NULL);
339                 elm_image_resizable_set(up_ic, EINA_TRUE, EINA_TRUE);
340                 elm_object_content_set(up_btn, up_ic);
341                 evas_object_smart_callback_add(up_btn, "clicked", mf_ug_cb_upper_click_cb, ugd);
342                 evas_object_smart_callback_add(up_btn, "pressed", mf_ug_cb_upper_button_pressed_cb, up_ic);
343                 evas_object_smart_callback_add(up_btn, "unpressed", mf_ug_cb_upper_button_unpressed_cb, up_ic);
344                 evas_object_show(up_btn);
345
346                 elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, TITLE_RIGHT_BTN, up_btn);
347         }
348         elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);
349 }
350
351 Eina_Bool mf_ug_navi_search_idler_cb(void *data)
352 {
353         UG_TRACE_BEGIN;
354         ug_mf_retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "data is NULL");
355         ugData *ugd = (ugData *)data;
356
357         mf_ug_search_view_enter_search_routine(ugd, NULL, NULL);
358         ugd->ug_Status.search_idler = NULL;
359
360         return ECORE_CALLBACK_CANCEL;
361 }
362 Evas_Object *mf_ug_navi_bar_create_button(Evas_Object *parent, char *style,
363                                    char *caption, Evas_Object *icon,
364                                    void (*func) (void *, Evas_Object *, void *),
365                                    void *data)
366 {
367         if (!parent)
368                 return NULL;
369
370         Evas_Object *btn;
371
372         btn = elm_button_add(parent);
373
374         if (style)
375                 elm_object_style_set(btn, style);
376
377         if (caption) {
378                 elm_object_text_set(btn, caption);
379         }
380
381         if (icon)
382                 elm_object_content_set(btn, icon);
383
384         elm_object_focus_allow_set(btn, EINA_FALSE);
385         evas_object_propagate_events_set(btn, EINA_FALSE);
386
387         evas_object_smart_callback_add(btn, "clicked", func, (void *)data);
388
389         return btn;
390 }
391
392 Evas_Object *__mf_ug_navi_bar_backbutton_create(Evas_Object *parent)
393 {
394         UG_TRACE_BEGIN;
395         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
396
397         Evas_Object *btn = NULL;
398         btn = elm_button_add(parent);
399         elm_object_style_set(btn, "naviframe/end_btn/default");
400         evas_object_show(btn);
401         return btn;
402
403 }
404
405 void mf_ug_navi_add_back_button(void *data)
406 {
407         UG_TRACE_BEGIN;
408         ug_mf_retm_if(data == NULL, "data is NULL");
409         ugData *ugd = (ugData *)data;
410
411         Evas_Object *pBackButton = NULL;
412
413         pBackButton = __mf_ug_navi_bar_backbutton_create(ugd->ug_MainWindow.ug_pNaviBar);
414         if (pBackButton) {
415                 elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "prev_btn", pBackButton);
416                 evas_object_smart_callback_add(pBackButton, "clicked", mf_ug_cb_back_button_cb, ugd);
417         }
418 }
419
420 void mf_ug_navi_bar_set_ctrl_button(void *data)
421 {
422         UG_TRACE_BEGIN;
423         ug_mf_retm_if(data == NULL, "data is NULL");
424         ugData *ugd = (ugData *)data;
425         Elm_Object_Item *navi_it = ugd->ug_MainWindow.ug_pNaviItem;//ap->mf_MainWindow.pNaviItem;
426         Evas_Object *pNavi = ugd->ug_MainWindow.ug_pNaviBar;
427         Evas_Object *bt_1 = NULL;
428         Evas_Object *bt_2 = NULL;
429         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE
430             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE
431             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
432                 bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_IMPORT, NULL, mf_ug_cb_add_button_cb, ugd);
433         } else if (ugd->ug_Status.ug_iViewType != mf_ug_view_root) {
434                 if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE) {
435                         bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_EXPORT, NULL, mf_ug_cb_add_button_cb, ugd);
436                         bt_2 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_EDIT, MF_UG_LABEL_CREATE, NULL, mf_ug_cb_more_cb, ugd);
437                 } else if (ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {
438                         bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_SAVE_HERE, NULL, mf_ug_cb_add_button_cb, ugd);
439                         bt_2 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_EDIT, MF_UG_LABEL_CREATE, NULL, mf_ug_cb_more_cb, ugd);
440                 } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
441                         bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_SET, NULL, mf_ug_cb_add_button_cb, ugd);
442                 }
443                 else if (!(ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE)) {
444                         bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_ATTACH, NULL, mf_ug_cb_add_button_cb, ugd);
445
446                 }
447         }
448         if (bt_1) {
449                 elm_object_item_part_content_set(navi_it, NAVI_BOTTOM_BUTTON_1_PART, bt_1);
450         }
451         if (bt_2) {
452                 elm_object_item_part_content_set(navi_it, NAVI_MORE_BUTTON_PART, bt_2);
453         }
454         mf_ug_navi_add_back_button(ugd);
455
456 }
457 void mf_ug_navi_bar_create_default_view(void *data)
458 {
459         UG_TRACE_BEGIN;
460         ugData *ugd = (ugData *)data;
461         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
462
463         GString *title = NULL;
464         Evas_Object *pNaviLayout = NULL;
465         Evas_Object *newContent = NULL;
466         Evas_Object *box = NULL;
467         Evas_Object *top_layout = NULL;
468         Evas_Object *upper_genlist = NULL;
469         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
470         ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed");
471
472
473         /*if the muisc is playing, destory the play */
474         if (0 != ugd->ug_ListPlay.ug_Player) {
475                 mf_ug_list_play_destory_playing_file(ugd);
476                 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
477         }
478
479         box = mf_ug_navi_bar_create_box(ugd->ug_MainWindow.ug_pNaviBar);
480         pNaviLayout = mf_ug_navi_bar_create_layout(box, UG_EDJ_NAVIGATIONBAR, UG_GRP_NAVI_VIEW);
481         ugd->ug_MainWindow.ug_pNaviLayout = pNaviLayout;
482
483         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE
484             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE
485             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
486                 newContent = __mf_ug_genlist_create_gl(ugd);
487                 ugd->ug_MainWindow.ug_pNaviGenlist = newContent;
488
489         } else {
490                 if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true) {
491                         top_layout = mf_ug_navi_bar_create_box(box);
492                         evas_object_size_hint_min_set(top_layout, MF_UG_UPPER_WIDTH, MF_UG_UPPER_HEIGHT);
493                         upper_genlist = mf_navi_bar_upper_create(top_layout);
494                         elm_object_scroll_freeze_push(upper_genlist);
495                         elm_genlist_scroller_policy_set(upper_genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
496                         mf_ug_genlist_goto_myfile_style_set(ugd);
497                         mf_ug_genlist_goto_myfile_item_append(upper_genlist, ugd);
498                         ugd->ug_Status.ug_bUpperFlag = true;
499                         elm_box_pack_end(top_layout, upper_genlist);
500                 } else if (ugd->ug_Status.ug_iViewType != mf_ug_view_root){
501                         Evas_Object *pathinfo_layout = NULL;
502                         char *pathinfo = NULL;
503                         char *info = NULL;
504
505                         top_layout = mf_ug_navi_bar_create_box(box);
506                         evas_object_size_hint_weight_set(top_layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
507                         evas_object_size_hint_align_set(top_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
508                         elm_box_clear(top_layout);
509                         //evas_object_size_hint_min_set(top_layout, MF_UG_UPPER_WIDTH, MF_UG_UPPER_HEIGHT);
510
511                         pathinfo = mf_ug_fm_svc_wapper_path_info_get(ugd->ug_Status.ug_pPath->str);
512                         info = mf_ug_fm_svc_path_info_translate(pathinfo, MF_UG_PATH_INFO_MAX_LENGTH_PORTRAIT);
513
514                         //Evas_Object *genlist = mf_ug_genlist_create_path_info(top_layout, &ugd->ug_Status.ug_pathinfoitec, info);
515
516                         pathinfo_layout = __mf_ug_navi_bar_pathinfo_create(top_layout, info);
517
518                         elm_box_pack_end(top_layout, pathinfo_layout);
519                         ugd->ug_Status.ug_bUpperFlag = true;
520                 }
521
522                 if (top_layout) {
523                         elm_box_pack_start(box, top_layout);
524                 } else {
525                         ugd->ug_Status.ug_bUpperFlag = true;
526                 }
527                 /*set content */
528                 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
529                         __mf_ug_navi_bar_create_group_radio_box(ugd);
530                 }
531                 newContent = mf_ug_genlist_create_content_list_view(ugd);
532                 ugd->ug_MainWindow.ug_pNaviGenlist = newContent;
533                 /*set title segment or title */
534                 if (mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath) || ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
535                         title = g_string_new(MF_UG_LABEL_MYFILES);
536                 } else {
537                         title = mf_ug_fm_svc_wapper_get_file_name(ugd->ug_Status.ug_pPath);
538                 }
539
540                 if (title != NULL) {
541                         pNavi_s->ug_pNaviTitle = g_strdup(title->str);
542                         g_string_free(title, TRUE);
543                         title = NULL;
544                 }
545         }
546
547         /*navigation view integration */
548         evas_object_show(newContent);
549         elm_object_part_content_set(pNaviLayout, "part1", newContent);
550         elm_box_pack_end(box, pNaviLayout);
551         ugd->ug_MainWindow.ug_pNaviBox = box;
552         __mf_ug_navi_bar_push_content(ugd, box);
553
554         /*add control bar for navigation bar */
555         //mf_ug_ctrl_bar_set(ugd, pNavi_s);
556         mf_ug_navi_bar_set_ctrl_button(ugd);
557
558         mf_ug_navi_bar_title_set(ugd);
559         mf_ug_navi_bar_remove_previous_contents(ugd);
560
561         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE
562             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE
563             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
564                 ug_ecore_idler_del(ugd->ug_Status.search_idler);
565                 ugd->ug_Status.search_idler = ecore_idler_add(mf_ug_navi_search_idler_cb, ugd);
566         }
567         UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.play_timer);
568         UG_TRACE_END;
569 }
570
571 void mf_ug_navi_bar_create_new_folder_view(void *data)
572 {
573
574         UG_TRACE_BEGIN;
575         ugData *ugd = (ugData *)data;
576         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
577
578         Evas_Object *newContent = NULL;
579
580         Evas_Object *pNaviBar = NULL;
581         GString *title = NULL;
582
583         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
584         ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");
585
586         pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
587
588         /*set content*/
589         newContent = mf_ug_genlist_create_list_new_folder_style(ugd);
590         /*set title segment or title*/
591         title = g_string_new(MF_UG_LABEL_CREATE);
592
593         if (title != NULL) {
594                 pNavi_s->ug_pNaviTitle = g_strdup(title->str);
595                 g_string_free(title, TRUE);
596                 title = NULL;
597         }
598         /*navigation view integration*/
599         __mf_ug_navi_bar_push_content(ugd, newContent);
600
601         Evas_Object *l_bt = NULL;
602         Evas_Object *r_bt = NULL;
603
604         l_bt = elm_button_add(pNaviBar);
605         elm_object_focus_set(l_bt, EINA_FALSE);
606         elm_object_style_set(l_bt, "naviframe/title/default");
607         elm_object_text_set(l_bt, MF_UG_LABEL_SAVE);
608         evas_object_smart_callback_add(l_bt, "clicked", mf_ug_cb_save_cb, ugd);
609         evas_object_show(l_bt);
610         elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_toolbar_button1", l_bt);
611
612         r_bt = elm_button_add(pNaviBar);
613         elm_object_focus_set(r_bt, EINA_FALSE);
614         elm_object_style_set(r_bt, "naviframe/end_btn/default");
615         evas_object_smart_callback_add(r_bt, "clicked", mf_ug_cb_cancel_new_folder_cb, ugd);
616         evas_object_show(r_bt);
617         elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_prev_btn", r_bt);
618         elm_object_item_signal_emit(ugd->ug_MainWindow.ug_pNaviItem, "elm,state,sip,shown", "");
619
620         elm_object_focus_set(ugd->ug_MainWindow.ug_pEntry, EINA_TRUE);
621         UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.play_timer);
622         //mf_ug_navi_bar_set_ctrl_button(ugd);
623
624 }
625
626 /******************************
627 ** Prototype    : mf_ug_navi_bar_get_in_use_navi
628 ** Description  : Samsung
629 ** Input        : void* data
630 ** Output       : None
631 ** Return Value :
632 ** Calls        :
633 ** Called By    :
634 **
635 **  History        :
636 **  1.Date         : 2010/12/10
637 **    Author       : Samsung
638 **    Modification : Created function
639 **
640 ******************************/
641 ugNaviBar *mf_ug_navi_bar_get_in_use_navi(void *data)
642 {
643         UG_TRACE_BEGIN;
644         ugData *ugd = (ugData *)data;
645         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
646
647         Eina_List *pNaviList = ugd->ug_MainWindow.ug_pNaviBarList;
648         ug_mf_retvm_if(pNaviList == NULL, NULL, "pNavi_sList is NULL");
649
650         ugNaviBar *ret = NULL;
651         Eina_List *l = NULL;
652         void *item;
653
654         EINA_LIST_FOREACH(pNaviList, l, item) {
655                 ret = (ugNaviBar *)item;
656                 if (ret->ug_bNaviFlagInUse == TRUE) {
657                         break;
658                 } else {
659                         ret = NULL;
660                 }
661         }
662         UG_TRACE_END;
663         return ret;
664 }
665
666
667 /******************************
668 ** Prototype    : mf_ug_navi_bar_reset_navi_object
669 ** Description  : Samsung
670 ** Input        : ugNaviBar *pNavi_s
671 ** Output       : None
672 ** Return Value :
673 ** Calls        :
674 ** Called By    :
675 **
676 **  History        :
677 **  1.Date         : 2010/12/10
678 **    Author       : Samsung
679 **    Modification : Created function
680 **
681 ******************************/
682 void mf_ug_navi_bar_reset_navi_object(ugNaviBar *pNavi_s)
683 {
684         UG_TRACE_BEGIN;
685         ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");
686
687         pNavi_s->ug_pNaviTitle = NULL;
688         if (pNavi_s->ug_pCurrentPath != NULL) {
689                 free(pNavi_s->ug_pCurrentPath);
690                 pNavi_s->ug_pCurrentPath = NULL;
691         }
692         if (pNavi_s->ug_pNaviLabel != NULL)
693                 free(pNavi_s->ug_pNaviLabel);
694         pNavi_s->ug_pNaviLabel = NULL;
695         UG_TRACE_END;
696 }
697
698 /******************************
699 ** Prototype    : mf_ug_navi_bar_get_navi_struct_by_label
700 ** Description  : Samsung
701 ** Input        : void* data
702 **                const char* pNaviLabel
703 ** Output       : None
704 ** Return Value :
705 ** Calls        :
706 ** Called By    :
707 **
708 **  History        :
709 **  1.Date         : 2010/12/10
710 **    Author       : Samsung
711 **    Modification : Created function
712 **
713 ******************************/
714 ugNaviBar *mf_ug_navi_bar_get_navi_struct_by_label(void *data, const char *pNaviLabel)
715 {
716         UG_TRACE_BEGIN;
717         ugData *ugd = (ugData *)data;
718         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
719         ug_mf_retvm_if(pNaviLabel == NULL, NULL, "pNaviLabel is NULL");
720
721         Eina_List *l = NULL;
722         void *item = NULL;
723
724         ugNaviBar *ret = NULL;
725         EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) {
726                 if (g_strcmp0(((ugNaviBar *)item)->ug_pNaviLabel, pNaviLabel) == 0) {
727                         ret = (ugNaviBar *)item;
728                         break;
729                 }
730         }
731         UG_TRACE_END;
732         return ret;
733 }
734
735
736 /******************************
737 ** Prototype    : mf_ug_navi_bar_remove_navi_list_item_by_label
738 ** Description  : Samsung
739 ** Input        : void *data
740 **                const char* pNaviLabel
741 ** Output       : None
742 ** Return Value :
743 ** Calls        :
744 ** Called By    :
745 **
746 **  History        :
747 **  1.Date         : 2010/12/10
748 **    Author       : Samsung
749 **    Modification : Created function
750 **
751 ******************************/
752 void mf_ug_navi_bar_remove_navi_list_item_by_label(void *data, const char *pNaviLabel)
753 {
754         UG_TRACE_BEGIN;
755         ugData *ugd = (ugData *)data;
756         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
757         ug_mf_retm_if(pNaviLabel == NULL, "pNaviLabel is NULL");
758
759         bool bInUseFlag = FALSE;
760
761         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_navi_struct_by_label(ugd, pNaviLabel);
762
763         if (pNavi_s == NULL) {
764                 return;
765         }
766         Eina_List *plistNaviMMC = eina_list_data_find_list(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_s);
767         ugd->ug_MainWindow.ug_pNaviBarList = eina_list_remove_list(ugd->ug_MainWindow.ug_pNaviBarList, plistNaviMMC);
768
769         if (pNavi_s->ug_bNaviFlagInUse == TRUE) {
770                 bInUseFlag = TRUE;
771         }
772
773         mf_ug_navi_bar_reset_navi_object(pNavi_s);
774
775         if (bInUseFlag == TRUE) {
776                 pNavi_s = (ugNaviBar *)eina_list_nth(ugd->ug_MainWindow.ug_pNaviBarList, 0);
777                 pNavi_s->ug_bNaviFlagInUse = TRUE;
778         }
779         UG_TRACE_END;
780 }
781
782
783 /******************************
784 ** Prototype    : mf_ug_navi_bar_refresh_navibar_recovered_view
785 ** Description  : Samsung
786 ** Input        : void *data
787 **                ugNaviBar* pNaviStruct
788 ** Output       : None
789 ** Return Value :
790 ** Calls        :
791 ** Called By    :
792 **
793 **  History        :
794 **  1.Date         : 2010/12/10
795 **    Author       : Samsung
796 **    Modification : Created function
797 **
798 ******************************/
799 void mf_ug_navi_bar_refresh_navibar_recovered_view(void *data, ugNaviBar *pNaviStruct)
800 {
801         UG_TRACE_BEGIN;
802         ugData *ugd = (ugData *)data;
803         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
804         ug_mf_retm_if(pNaviStruct == NULL, "pNaviStruct is NULL");
805
806         if (ugd->ug_Status.ug_pPath != NULL) {
807                 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
808                 ugd->ug_Status.ug_pPath = NULL;
809         }
810         ugd->ug_Status.ug_pPath = g_string_new(pNaviStruct->ug_pCurrentPath);
811         mf_ug_navi_bar_create_default_view(ugd);
812
813         UG_TRACE_END;
814 }
815
816 void mf_ug_navi_bar_transition_finished_cb(void *data, Evas_Object *obj, void *event_info)
817 {
818         UG_TRACE_BEGIN;
819         ug_mf_retm_if(data == NULL, "data is NULL");
820         ug_mf_retm_if(obj == NULL, "obj is NULL");
821         ugData *ugd = (ugData *)data;
822         Elm_Object_Item *it = ugd->ug_MainWindow.ug_pPreNaviItem;
823         UG_SAFE_DEL_NAVI_ITEM(it);
824         ugd->ug_MainWindow.ug_pPreNaviItem = NULL;
825         mf_ug_navi_bar_set_blocking(data, false);
826         evas_object_smart_callback_del(obj, "transition,finished", mf_ug_navi_bar_transition_finished_cb);
827         UG_TRACE_END;
828 }
829
830 void mf_ug_navi_bar_remove_previous_contents(void *data)
831 {
832         UG_TRACE_BEGIN;
833
834         ug_mf_retm_if(data == NULL, "data is NULL");
835         ugData *ugd = (ugData *)data;
836         Evas_Object *pNaviBar = NULL;
837         if (ugd->ug_MainWindow.ug_pNaviBar) {
838                 pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
839                 mf_ug_navi_bar_set_blocking(data, true);
840                 evas_object_smart_callback_add(pNaviBar, "transition,finished", mf_ug_navi_bar_transition_finished_cb, ugd);
841         }
842         UG_TRACE_END;
843 }
844
845 void mf_ug_navi_bar_del_item_directly(void *data)
846 {
847         UG_TRACE_BEGIN;
848         ug_mf_retm_if(data == NULL, "data is NULL");
849         ugData *ugd = (ugData *)data;
850
851         if (ugd->ug_Status.ug_b_NaviPushFlag) {
852                 ugNaviBar *pNavi_s_previous = NULL;
853                 pNavi_s_previous = mf_ug_navi_bar_get_in_use_navi(ugd) ;
854                 if(pNavi_s_previous && ugd->ug_MainWindow.ug_pPreNaviItem)
855                 {
856                         UG_SAFE_DEL_NAVI_ITEM(ugd->ug_MainWindow.ug_pPreNaviItem);
857                         mf_ug_navi_bar_set_blocking(ugd, false);
858                         evas_object_smart_callback_del(ugd->ug_MainWindow.ug_pNaviBar, "transition,finished", mf_ug_navi_bar_transition_finished_cb);
859                }
860         }
861         UG_TRACE_END;
862 }
863
864
865 void mf_ug_navi_bar_set_blocking(void *data, bool bblock_during_transition)
866 {
867         ug_mf_retm_if(data == NULL, "data is NULL");
868         ugData *ugd = (ugData *)data;
869
870         ugd->ug_Status.ug_bCancelDisableFlag = bblock_during_transition;
871         ugd->ug_Status.ug_b_NaviPushFlag = bblock_during_transition;
872         return;
873 }
874
875 ugNaviBar *ug_mf_navi_bar_get_navi_from_navilist(Eina_List *navilist, const char *label)
876 {
877
878         UG_TRACE_BEGIN;
879         ug_mf_retvm_if(navilist == NULL, NULL, "navilist is NULL");
880         ug_mf_retvm_if(label == NULL, NULL, "label is NULL");
881
882         void *data = NULL;
883         ugNaviBar *pNavi = NULL;
884         Eina_List *l = NULL;
885         EINA_LIST_FOREACH(navilist, l, data) {
886                 if (data) {
887                         pNavi = (ugNaviBar *)data;
888                         if (pNavi && pNavi->ug_pNaviLabel && g_strcmp0(label, pNavi->ug_pNaviLabel) == 0)
889                                 return pNavi;
890                         else
891                                 continue;
892                 }
893         }
894         return NULL;
895 }
896
897 void mf_ug_navi_bar_button_set_disable(void *data, bool disable)
898 {
899         UG_TRACE_BEGIN;
900         ugData *ugd = (ugData *)data;
901         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
902
903         Evas_Object *btn = NULL;
904         Elm_Object_Item *navi_it = ugd->ug_MainWindow.ug_pNaviItem;
905
906         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
907         ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed");
908
909         const char *disable_labe = NULL;
910         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE
911             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE
912             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
913                 disable_labe = MF_UG_LABEL_IMPORT;
914         } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
915                 disable_labe = MF_UG_LABEL_SET;
916         }
917         else {
918                 disable_labe = MF_UG_LABEL_ATTACH;
919         }
920         btn = elm_object_item_part_content_get(navi_it, NAVI_BOTTOM_BUTTON_1_PART);
921         const char *button_label = elm_object_text_get(btn);
922         if (g_strcmp0(button_label, disable_labe) == 0)
923                 elm_object_disabled_set(btn, disable);
924 }
925