merge with master
[apps/core/preloaded/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                 } 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 || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
319                 elm_object_part_text_set(ugd->ug_MainWindow.ug_pNaviBar, "elm.text.title", MF_UG_LABEL_IMPORT);
320         } else if (ugd->ug_Status.ug_iViewType != mf_ug_view_root && !(ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true)) {
321                 Evas_Object *home_btn = elm_button_add(ugd->ug_MainWindow.ug_pNaviBar);
322                 elm_object_style_set(home_btn, "naviframe/title_icon");
323                 Evas_Object *home_ic = elm_image_add(ugd->ug_MainWindow.ug_pNaviBar);
324                 elm_image_file_set(home_ic, UG_TITLE_ICON_HOME, NULL);
325                 elm_image_resizable_set(home_ic, EINA_TRUE, EINA_TRUE);
326                 elm_object_content_set(home_btn, home_ic);
327                 evas_object_smart_callback_add(home_btn, "clicked", mf_ug_cb_home_button_cb, ugd);
328                 evas_object_smart_callback_add(home_btn, "pressed", mf_ug_cb_home_button_pressed_cb, home_ic);
329                 evas_object_smart_callback_add(home_btn, "unpressed", mf_ug_cb_home_button_unpressed_cb, home_ic);
330                 evas_object_show(home_btn);
331                 elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, TITLE_LEFT_BTN, home_btn);
332
333                 Evas_Object *up_btn = elm_button_add(ugd->ug_MainWindow.ug_pNaviBar);
334                 elm_object_style_set(up_btn, "naviframe/title_icon");
335                 Evas_Object *up_ic = elm_image_add(ugd->ug_MainWindow.ug_pNaviBar);
336                 elm_image_file_set(up_ic, UG_TITLE_ICON_UPPER, NULL);
337                 elm_image_resizable_set(up_ic, EINA_TRUE, EINA_TRUE);
338                 elm_object_content_set(up_btn, up_ic);
339                 evas_object_smart_callback_add(up_btn, "clicked", mf_ug_cb_upper_click_cb, ugd);
340                 evas_object_smart_callback_add(up_btn, "pressed", mf_ug_cb_upper_button_pressed_cb, up_ic);
341                 evas_object_smart_callback_add(up_btn, "unpressed", mf_ug_cb_upper_button_unpressed_cb, up_ic);
342                 evas_object_show(up_btn);
343
344                 elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, TITLE_RIGHT_BTN, up_btn);
345         }
346         elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);
347 }
348
349 Eina_Bool mf_ug_navi_search_idler_cb(void *data)
350 {
351         UG_TRACE_BEGIN;
352         ug_mf_retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "data is NULL");
353         ugData *ugd = (ugData *)data;
354
355         mf_ug_search_view_enter_search_routine(ugd, NULL, NULL);
356         ugd->ug_Status.search_idler = NULL;
357
358         return ECORE_CALLBACK_CANCEL;
359 }
360 Evas_Object *mf_ug_navi_bar_create_button(Evas_Object *parent, char *style,
361                                    char *caption, Evas_Object *icon,
362                                    void (*func) (void *, Evas_Object *, void *),
363                                    void *data)
364 {
365         if (!parent)
366                 return NULL;
367
368         Evas_Object *btn;
369
370         btn = elm_button_add(parent);
371
372         if (style)
373                 elm_object_style_set(btn, style);
374
375         if (caption) {
376                 elm_object_text_set(btn, caption);
377         }
378
379         if (icon)
380                 elm_object_content_set(btn, icon);
381
382         elm_object_focus_allow_set(btn, EINA_FALSE);
383         evas_object_propagate_events_set(btn, EINA_FALSE);
384
385         evas_object_smart_callback_add(btn, "clicked", func, (void *)data);
386
387         return btn;
388 }
389
390 Evas_Object *__mf_ug_navi_bar_backbutton_create(Evas_Object *parent)
391 {
392         UG_TRACE_BEGIN;
393         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
394
395         Evas_Object *btn = NULL;
396         btn = elm_button_add(parent);
397         elm_object_style_set(btn, "naviframe/end_btn/default");
398         evas_object_show(btn);
399         return btn;
400
401 }
402
403 void mf_ug_navi_add_back_button(void *data)
404 {
405         UG_TRACE_BEGIN;
406         ug_mf_retm_if(data == NULL, "data is NULL");
407         ugData *ugd = (ugData *)data;
408
409         Evas_Object *pBackButton = NULL;
410
411         pBackButton = __mf_ug_navi_bar_backbutton_create(ugd->ug_MainWindow.ug_pNaviBar);
412         if (pBackButton) {
413                 elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "prev_btn", pBackButton);
414                 evas_object_smart_callback_add(pBackButton, "clicked", mf_ug_cb_back_button_cb, ugd);
415         }
416 }
417
418 void mf_ug_navi_bar_set_ctrl_button(void *data)
419 {
420         UG_TRACE_BEGIN;
421         ug_mf_retm_if(data == NULL, "data is NULL");
422         ugData *ugd = (ugData *)data;
423         Elm_Object_Item *navi_it = ugd->ug_MainWindow.ug_pNaviItem;//ap->mf_MainWindow.pNaviItem;
424         Evas_Object *pNavi = ugd->ug_MainWindow.ug_pNaviBar;
425         Evas_Object *bt_1 = NULL;
426         Evas_Object *bt_2 = NULL;
427         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
428                 bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_IMPORT, NULL, mf_ug_cb_add_button_cb, ugd);
429         } else if (ugd->ug_Status.ug_iViewType != mf_ug_view_root) {
430                 if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE) {
431                         bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_EXPORT, NULL, mf_ug_cb_add_button_cb, ugd);
432                         bt_2 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_EDIT, MF_UG_LABEL_CREATE, NULL, mf_ug_cb_more_cb, ugd);
433                 } else if (ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {
434                         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);
435                         bt_2 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_EDIT, MF_UG_LABEL_CREATE, NULL, mf_ug_cb_more_cb, ugd);
436                 } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
437                         bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_SET, NULL, mf_ug_cb_add_button_cb, ugd);
438                 }
439                 else if (!(ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE)) {
440                         bt_1 = mf_ug_navi_bar_create_button(pNavi, NAVI_BUTTON_STYLE, MF_UG_LABEL_ATTACH, NULL, mf_ug_cb_add_button_cb, ugd);
441
442                 }
443         }
444         if (bt_1) {
445                 elm_object_item_part_content_set(navi_it, NAVI_BOTTOM_BUTTON_1_PART, bt_1);
446         }
447         if (bt_2) {
448                 elm_object_item_part_content_set(navi_it, NAVI_MORE_BUTTON_PART, bt_2);
449         }
450         mf_ug_navi_add_back_button(ugd);
451
452 }
453 void mf_ug_navi_bar_create_default_view(void *data)
454 {
455         UG_TRACE_BEGIN;
456         ugData *ugd = (ugData *)data;
457         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
458
459         GString *title = NULL;
460         Evas_Object *pNaviLayout = NULL;
461         Evas_Object *newContent = NULL;
462         Evas_Object *box = NULL;
463         Evas_Object *top_layout = NULL;
464         Evas_Object *upper_genlist = NULL;
465         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
466         ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed");
467
468
469         /*if the muisc is playing, destory the play */
470         if (0 != ugd->ug_ListPlay.ug_Player) {
471                 mf_ug_list_play_destory_playing_file(ugd);
472                 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
473         }
474
475         box = mf_ug_navi_bar_create_box(ugd->ug_MainWindow.ug_pNaviBar);
476         pNaviLayout = mf_ug_navi_bar_create_layout(box, UG_EDJ_NAVIGATIONBAR, UG_GRP_NAVI_VIEW);
477         ugd->ug_MainWindow.ug_pNaviLayout = pNaviLayout;
478
479         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
480                 newContent = __mf_ug_genlist_create_gl(ugd);
481                 ugd->ug_MainWindow.ug_pNaviGenlist = newContent;
482
483         } else {
484                 if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true) {
485                         top_layout = mf_ug_navi_bar_create_box(box);
486                         evas_object_size_hint_min_set(top_layout, MF_UG_UPPER_WIDTH, MF_UG_UPPER_HEIGHT);
487                         upper_genlist = mf_navi_bar_upper_create(top_layout);
488                         elm_object_scroll_freeze_push(upper_genlist);
489                         mf_ug_genlist_goto_myfile_style_set(ugd);
490                         mf_ug_genlist_goto_myfile_item_append(upper_genlist, ugd);
491                         ugd->ug_Status.ug_bUpperFlag = true;
492                         elm_box_pack_end(top_layout, upper_genlist);
493                 } else if (ugd->ug_Status.ug_iViewType != mf_ug_view_root){
494                         Evas_Object *pathinfo_layout = NULL;
495                         char *pathinfo = NULL;
496                         char *info = NULL;
497
498                         top_layout = mf_ug_navi_bar_create_box(box);
499                         evas_object_size_hint_weight_set(top_layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
500                         evas_object_size_hint_align_set(top_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
501                         elm_box_clear(top_layout);
502                         //evas_object_size_hint_min_set(top_layout, MF_UG_UPPER_WIDTH, MF_UG_UPPER_HEIGHT);
503
504                         pathinfo = mf_ug_fm_svc_wapper_path_info_get(ugd->ug_Status.ug_pPath->str);
505                         info = mf_ug_fm_svc_path_info_translate(pathinfo, MF_UG_PATH_INFO_MAX_LENGTH_PORTRAIT);
506
507                         //Evas_Object *genlist = mf_ug_genlist_create_path_info(top_layout, &ugd->ug_Status.ug_pathinfoitec, info);
508
509                         pathinfo_layout = __mf_ug_navi_bar_pathinfo_create(top_layout, info);
510
511                         elm_box_pack_end(top_layout, pathinfo_layout);
512                         ugd->ug_Status.ug_bUpperFlag = true;
513                 }
514
515                 if (top_layout) {
516                         elm_box_pack_start(box, top_layout);
517                 } else {
518                         ugd->ug_Status.ug_bUpperFlag = true;
519                 }
520                 /*set content */
521                 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
522                         __mf_ug_navi_bar_create_group_radio_box(ugd);
523                 }
524                 newContent = mf_ug_genlist_create_content_list_view(ugd);
525                 ugd->ug_MainWindow.ug_pNaviGenlist = newContent;
526                 /*set title segment or title */
527                 if (mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath) || ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
528                         title = g_string_new(MF_UG_LABEL_MYFILES);
529                 } else {
530                         title = mf_ug_fm_svc_wapper_get_file_name(ugd->ug_Status.ug_pPath);
531                 }
532
533                 if (title != NULL) {
534                         pNavi_s->ug_pNaviTitle = g_strdup(title->str);
535                         g_string_free(title, TRUE);
536                         title = NULL;
537                 }
538         }
539
540         /*navigation view integration */
541         evas_object_show(newContent);
542         elm_object_part_content_set(pNaviLayout, "part1", newContent);
543         elm_box_pack_end(box, pNaviLayout);
544         ugd->ug_MainWindow.ug_pNaviBox = box;
545         __mf_ug_navi_bar_push_content(ugd, box);
546
547         /*add control bar for navigation bar */
548         //mf_ug_ctrl_bar_set(ugd, pNavi_s);
549         mf_ug_navi_bar_set_ctrl_button(ugd);
550
551         mf_ug_navi_bar_title_set(ugd);
552         mf_ug_navi_bar_remove_previous_contents(ugd);
553
554         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
555                 ug_ecore_idler_del(ugd->ug_Status.search_idler);
556                 ugd->ug_Status.search_idler = ecore_idler_add(mf_ug_navi_search_idler_cb, ugd);
557         }
558         UG_TRACE_END;
559 }
560
561 void mf_ug_navi_bar_create_new_folder_view(void *data)
562 {
563
564         UG_TRACE_BEGIN;
565         ugData *ugd = (ugData *)data;
566         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
567
568         Evas_Object *newContent = NULL;
569
570         Evas_Object *pNaviBar = NULL;
571         GString *title = NULL;
572
573         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
574         ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");
575
576         pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
577
578         /*set content*/
579         newContent = mf_ug_genlist_create_list_new_folder_style(ugd);
580         /*set title segment or title*/
581         title = g_string_new(MF_UG_LABEL_CREATE);
582
583         if (title != NULL) {
584                 pNavi_s->ug_pNaviTitle = g_strdup(title->str);
585                 g_string_free(title, TRUE);
586                 title = NULL;
587         }
588         /*navigation view integration*/
589         __mf_ug_navi_bar_push_content(ugd, newContent);
590
591         Evas_Object *l_bt = NULL;
592         Evas_Object *r_bt = NULL;
593
594         l_bt = elm_button_add(pNaviBar);
595         elm_object_focus_set(l_bt, EINA_FALSE);
596         elm_object_style_set(l_bt, "naviframe/title/default");
597         elm_object_text_set(l_bt, MF_UG_LABEL_SAVE);
598         evas_object_smart_callback_add(l_bt, "clicked", mf_ug_cb_save_cb, ugd);
599         evas_object_show(l_bt);
600         elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_toolbar_button1", l_bt);
601
602         r_bt = elm_button_add(pNaviBar);
603         elm_object_focus_set(r_bt, EINA_FALSE);
604         elm_object_style_set(r_bt, "naviframe/end_btn/default");
605         evas_object_smart_callback_add(r_bt, "clicked", mf_ug_cb_cancel_new_folder_cb, ugd);
606         evas_object_show(r_bt);
607         elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_prev_btn", r_bt);
608         elm_object_item_signal_emit(ugd->ug_MainWindow.ug_pNaviItem, "elm,state,sip,shown", "");
609
610         elm_object_focus_set(ugd->ug_MainWindow.ug_pEntry, EINA_TRUE);
611         //mf_ug_navi_bar_set_ctrl_button(ugd);
612
613 }
614
615 /******************************
616 ** Prototype    : mf_ug_navi_bar_get_in_use_navi
617 ** Description  : Samsung
618 ** Input        : void* data
619 ** Output       : None
620 ** Return Value :
621 ** Calls        :
622 ** Called By    :
623 **
624 **  History        :
625 **  1.Date         : 2010/12/10
626 **    Author       : Samsung
627 **    Modification : Created function
628 **
629 ******************************/
630 ugNaviBar *mf_ug_navi_bar_get_in_use_navi(void *data)
631 {
632         UG_TRACE_BEGIN;
633         ugData *ugd = (ugData *)data;
634         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
635
636         Eina_List *pNaviList = ugd->ug_MainWindow.ug_pNaviBarList;
637         ug_mf_retvm_if(pNaviList == NULL, NULL, "pNavi_sList is NULL");
638
639         ugNaviBar *ret = NULL;
640         Eina_List *l = NULL;
641         void *item;
642
643         EINA_LIST_FOREACH(pNaviList, l, item) {
644                 ret = (ugNaviBar *)item;
645                 if (ret->ug_bNaviFlagInUse == TRUE) {
646                         break;
647                 } else {
648                         ret = NULL;
649                 }
650         }
651         UG_TRACE_END;
652         return ret;
653 }
654
655
656 /******************************
657 ** Prototype    : mf_ug_navi_bar_reset_navi_object
658 ** Description  : Samsung
659 ** Input        : ugNaviBar *pNavi_s
660 ** Output       : None
661 ** Return Value :
662 ** Calls        :
663 ** Called By    :
664 **
665 **  History        :
666 **  1.Date         : 2010/12/10
667 **    Author       : Samsung
668 **    Modification : Created function
669 **
670 ******************************/
671 void mf_ug_navi_bar_reset_navi_object(ugNaviBar *pNavi_s)
672 {
673         UG_TRACE_BEGIN;
674         ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");
675
676         pNavi_s->ug_pNaviTitle = NULL;
677         if (pNavi_s->ug_pCurrentPath != NULL) {
678                 free(pNavi_s->ug_pCurrentPath);
679                 pNavi_s->ug_pCurrentPath = NULL;
680         }
681         if (pNavi_s->ug_pNaviLabel != NULL)
682                 free(pNavi_s->ug_pNaviLabel);
683         pNavi_s->ug_pNaviLabel = NULL;
684         UG_TRACE_END;
685 }
686
687 /******************************
688 ** Prototype    : mf_ug_navi_bar_get_navi_struct_by_label
689 ** Description  : Samsung
690 ** Input        : void* data
691 **                const char* pNaviLabel
692 ** Output       : None
693 ** Return Value :
694 ** Calls        :
695 ** Called By    :
696 **
697 **  History        :
698 **  1.Date         : 2010/12/10
699 **    Author       : Samsung
700 **    Modification : Created function
701 **
702 ******************************/
703 ugNaviBar *mf_ug_navi_bar_get_navi_struct_by_label(void *data, const char *pNaviLabel)
704 {
705         UG_TRACE_BEGIN;
706         ugData *ugd = (ugData *)data;
707         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
708         ug_mf_retvm_if(pNaviLabel == NULL, NULL, "pNaviLabel is NULL");
709
710         Eina_List *l = NULL;
711         void *item = NULL;
712
713         ugNaviBar *ret = NULL;
714         EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) {
715                 if (g_strcmp0(((ugNaviBar *)item)->ug_pNaviLabel, pNaviLabel) == 0) {
716                         ret = (ugNaviBar *)item;
717                         break;
718                 }
719         }
720         UG_TRACE_END;
721         return ret;
722 }
723
724
725 /******************************
726 ** Prototype    : mf_ug_navi_bar_remove_navi_list_item_by_label
727 ** Description  : Samsung
728 ** Input        : void *data
729 **                const char* pNaviLabel
730 ** Output       : None
731 ** Return Value :
732 ** Calls        :
733 ** Called By    :
734 **
735 **  History        :
736 **  1.Date         : 2010/12/10
737 **    Author       : Samsung
738 **    Modification : Created function
739 **
740 ******************************/
741 void mf_ug_navi_bar_remove_navi_list_item_by_label(void *data, const char *pNaviLabel)
742 {
743         UG_TRACE_BEGIN;
744         ugData *ugd = (ugData *)data;
745         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
746         ug_mf_retm_if(pNaviLabel == NULL, "pNaviLabel is NULL");
747
748         bool bInUseFlag = FALSE;
749
750         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_navi_struct_by_label(ugd, pNaviLabel);
751
752         if (pNavi_s == NULL) {
753                 return;
754         }
755         Eina_List *plistNaviMMC = eina_list_data_find_list(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_s);
756         ugd->ug_MainWindow.ug_pNaviBarList = eina_list_remove_list(ugd->ug_MainWindow.ug_pNaviBarList, plistNaviMMC);
757
758         if (pNavi_s->ug_bNaviFlagInUse == TRUE) {
759                 bInUseFlag = TRUE;
760         }
761
762         mf_ug_navi_bar_reset_navi_object(pNavi_s);
763
764         if (bInUseFlag == TRUE) {
765                 pNavi_s = (ugNaviBar *)eina_list_nth(ugd->ug_MainWindow.ug_pNaviBarList, 0);
766                 pNavi_s->ug_bNaviFlagInUse = TRUE;
767         }
768         UG_TRACE_END;
769 }
770
771
772 /******************************
773 ** Prototype    : mf_ug_navi_bar_refresh_navibar_recovered_view
774 ** Description  : Samsung
775 ** Input        : void *data
776 **                ugNaviBar* pNaviStruct
777 ** Output       : None
778 ** Return Value :
779 ** Calls        :
780 ** Called By    :
781 **
782 **  History        :
783 **  1.Date         : 2010/12/10
784 **    Author       : Samsung
785 **    Modification : Created function
786 **
787 ******************************/
788 void mf_ug_navi_bar_refresh_navibar_recovered_view(void *data, ugNaviBar *pNaviStruct)
789 {
790         UG_TRACE_BEGIN;
791         ugData *ugd = (ugData *)data;
792         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
793         ug_mf_retm_if(pNaviStruct == NULL, "pNaviStruct is NULL");
794
795         if (ugd->ug_Status.ug_pPath != NULL) {
796                 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
797                 ugd->ug_Status.ug_pPath = NULL;
798         }
799         ugd->ug_Status.ug_pPath = g_string_new(pNaviStruct->ug_pCurrentPath);
800         mf_ug_navi_bar_create_default_view(ugd);
801
802         UG_TRACE_END;
803 }
804
805 void mf_ug_navi_bar_transition_finished_cb(void *data, Evas_Object *obj, void *event_info)
806 {
807         UG_TRACE_BEGIN;
808         ug_mf_retm_if(data == NULL, "data is NULL");
809         ug_mf_retm_if(obj == NULL, "obj is NULL");
810         ugData *ugd = (ugData *)data;
811         Elm_Object_Item *it = ugd->ug_MainWindow.ug_pPreNaviItem;
812         UG_SAFE_DEL_NAVI_ITEM(it);
813         ugd->ug_MainWindow.ug_pPreNaviItem = NULL;
814         mf_ug_navi_bar_set_blocking(data, false);
815         evas_object_smart_callback_del(obj, "transition,finished", mf_ug_navi_bar_transition_finished_cb);
816         UG_TRACE_END;
817 }
818
819 void mf_ug_navi_bar_remove_previous_contents(void *data)
820 {
821         UG_TRACE_BEGIN;
822
823         ug_mf_retm_if(data == NULL, "data is NULL");
824         ugData *ugd = (ugData *)data;
825         Evas_Object *pNaviBar = NULL;
826         if (ugd->ug_MainWindow.ug_pNaviBar) {
827                 pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
828                 mf_ug_navi_bar_set_blocking(data, true);
829                 evas_object_smart_callback_add(pNaviBar, "transition,finished", mf_ug_navi_bar_transition_finished_cb, ugd);
830         }
831         UG_TRACE_END;
832 }
833
834 void mf_ug_navi_bar_del_item_directly(void *data)
835 {
836         UG_TRACE_BEGIN;
837         ug_mf_retm_if(data == NULL, "data is NULL");
838         ugData *ugd = (ugData *)data;
839
840         if (ugd->ug_Status.ug_b_NaviPushFlag) {
841                 ugNaviBar *pNavi_s_previous = NULL;
842                 pNavi_s_previous = mf_ug_navi_bar_get_in_use_navi(ugd) ;
843                 if(pNavi_s_previous && ugd->ug_MainWindow.ug_pPreNaviItem)
844                 {
845                         UG_SAFE_DEL_NAVI_ITEM(ugd->ug_MainWindow.ug_pPreNaviItem);
846                         mf_ug_navi_bar_set_blocking(ugd, false);
847                         evas_object_smart_callback_del(ugd->ug_MainWindow.ug_pNaviBar, "transition,finished", mf_ug_navi_bar_transition_finished_cb);
848                }
849         }
850         UG_TRACE_END;
851 }
852
853
854 void mf_ug_navi_bar_set_blocking(void *data, bool bblock_during_transition)
855 {
856         ug_mf_retm_if(data == NULL, "data is NULL");
857         ugData *ugd = (ugData *)data;
858
859         ugd->ug_Status.ug_bCancelDisableFlag = bblock_during_transition;
860         ugd->ug_Status.ug_b_NaviPushFlag = bblock_during_transition;
861         return;
862 }
863
864 ugNaviBar *ug_mf_navi_bar_get_navi_from_navilist(Eina_List *navilist, const char *label)
865 {
866
867         UG_TRACE_BEGIN;
868         ug_mf_retvm_if(navilist == NULL, NULL, "navilist is NULL");
869         ug_mf_retvm_if(label == NULL, NULL, "label is NULL");
870
871         void *data = NULL;
872         ugNaviBar *pNavi = NULL;
873         Eina_List *l = NULL;
874         EINA_LIST_FOREACH(navilist, l, data) {
875                 if (data) {
876                         pNavi = (ugNaviBar *)data;
877                         if (pNavi && pNavi->ug_pNaviLabel && g_strcmp0(label, pNavi->ug_pNaviLabel) == 0)
878                                 return pNavi;
879                         else
880                                 continue;
881                 }
882         }
883         return NULL;
884 }
885
886 void mf_ug_navi_bar_button_set_disable(void *data, bool disable)
887 {
888         UG_TRACE_BEGIN;
889         ugData *ugd = (ugData *)data;
890         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
891
892         Evas_Object *btn = NULL;
893         Elm_Object_Item *navi_it = ugd->ug_MainWindow.ug_pNaviItem;
894
895         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
896         ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed");
897
898         const char *disable_labe = NULL;
899         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
900                 disable_labe = MF_UG_LABEL_IMPORT;
901         } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
902                 disable_labe = MF_UG_LABEL_SET;
903         }
904         else {
905                 disable_labe = MF_UG_LABEL_ATTACH;
906         }
907         btn = elm_object_item_part_content_get(navi_it, NAVI_BOTTOM_BUTTON_1_PART);
908         const char *button_label = elm_object_text_get(btn);
909         if (g_strcmp0(button_label, disable_labe) == 0)
910                 elm_object_disabled_set(btn, disable);
911 }
912