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