cancel bug fix
[apps/home/ug-myfile-efl.git] / src / widget / mf-ug-navi-bar.c
1 /*\r
2  * myfile\r
3  *\r
4  * Copyright 2012  Samsung Electronics Co., Ltd\r
5  *\r
6  * Licensed under the Flora License, Version 1.0 (the "License");\r
7  * you may not use this file except in compliance with the License.\r
8  * You may obtain a copy of the License at\r
9  *\r
10  * http://www.tizenopensource.org/license\r
11  *\r
12  * Unless required by applicable law or agreed to in writing, software\r
13  * distributed under the License is distributed on an "AS IS" BASIS,\r
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
15  * See the License for the specific language governing permissions and\r
16  * limitations under the License.\r
17  *\r
18  */\r
19 \r
20 \r
21 \r
22 #include "mf-ug-winset.h"\r
23 #include "mf-ug-cb.h"\r
24 #include "mf-ug-fm-svc-wrapper.h"\r
25 #include "mf-ug-util.h"\r
26 #include "mf-ug-fs-util.h"\r
27 #include "mf-ug-resource.h"\r
28 \r
29 \r
30 /******************************\r
31 ** Prototype    : __mf_ug_navi_bar_create_group_radio_box\r
32 ** Description  : Samsung\r
33 ** Input        : void *data\r
34 ** Output       : None\r
35 ** Return Value :\r
36 ** Calls        :\r
37 ** Called By    :\r
38 **\r
39 **  History        :\r
40 **  1.Date         : 2010/12/10\r
41 **    Author       : Samsung\r
42 **    Modification : Created function\r
43 **\r
44 ******************************/\r
45 static void __mf_ug_navi_bar_create_group_radio_box(void *data)\r
46 {\r
47         UG_TRACE_BEGIN;\r
48         ugData *ugd = (ugData *)data;\r
49         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
50 \r
51         Evas_Object *group_radio = NULL;\r
52 \r
53         if (ugd->ug_MainWindow.ug_pRadioGroup != NULL) {\r
54                 evas_object_del(ugd->ug_MainWindow.ug_pRadioGroup);\r
55                 ugd->ug_MainWindow.ug_pRadioGroup = NULL;\r
56         }\r
57 \r
58         group_radio = elm_radio_add(ugd->ug_MainWindow.ug_pMainLayout);\r
59         ug_mf_retm_if(group_radio == NULL, "ugd is NULL");\r
60 \r
61         elm_radio_value_set(group_radio, 0);\r
62         evas_object_hide(group_radio);\r
63         /*/Internal/invisible Radio Objects used to group the radio buttons in the list. */\r
64         ugd->ug_MainWindow.ug_pRadioGroup = group_radio;\r
65         UG_TRACE_END;\r
66 }\r
67 \r
68 \r
69 /******************************\r
70 ** Prototype    : __mf_ug_navi_bar_push_content\r
71 ** Description  : Samsung\r
72 ** Input        : ugData *data\r
73 **                Evas_Object *NaviContent\r
74 ** Output       : None\r
75 ** Return Value :\r
76 ** Calls        :\r
77 ** Called By    :\r
78 **\r
79 **  History        :\r
80 **  1.Date         : 2010/12/10\r
81 **    Author       : Samsung\r
82 **    Modification : Created function\r
83 **\r
84 ******************************/\r
85 static void __mf_ug_navi_bar_push_content(void *data, Evas_Object *NaviContent)\r
86 {\r
87         UG_TRACE_BEGIN;\r
88         ug_mf_retm_if(data == NULL, "pNavi_s is NULL");\r
89         ugData *ugd = (ugData *)data;\r
90         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
91 \r
92         Evas_Object *NaviBar = ugd->ug_MainWindow.ug_pNaviBar;\r
93         char *title = pNavi_s->ug_pNaviTitle;\r
94 \r
95         ugd->ug_MainWindow.ug_pPreNaviItem = ugd->ug_MainWindow.ug_pNaviItem;\r
96 \r
97         ugd->ug_MainWindow.ug_pNaviItem = elm_naviframe_item_push(NaviBar, title, NULL, NULL, NaviContent, MF_UG_NAVI_STYLE_ENABLE);\r
98 \r
99         UG_TRACE_END;\r
100 }\r
101 \r
102 static Evas_Object *__mf_ug_navi_bar_create_select_info(void *data, Evas_Object *parent)\r
103 {\r
104 \r
105         UG_TRACE_BEGIN;\r
106         ugData *ugd = (ugData *)data;\r
107         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");\r
108         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");\r
109 \r
110         Evas_Object *pSelectInfo = NULL;\r
111         pSelectInfo = elm_notify_add(parent);\r
112         elm_notify_orient_set(pSelectInfo, ELM_NOTIFY_ORIENT_BOTTOM);\r
113 \r
114         evas_object_smart_callback_add(pSelectInfo, "selectioninfo,timeout", mf_ug_cb_select_info_timeout_cb, ugd);\r
115         evas_object_event_callback_add(pSelectInfo, EVAS_CALLBACK_SHOW, mf_ug_cb_select_info_show_cb, ugd);\r
116         evas_object_event_callback_add(pSelectInfo, EVAS_CALLBACK_HIDE, mf_ug_cb_select_info_hide_cb, ugd);\r
117         UG_TRACE_END;\r
118 \r
119         return pSelectInfo;\r
120 }\r
121 \r
122 static Evas_Object *__mf_ug_navi_bar_create_select_info_layout(Evas_Object *parent, Evas_Object *select_info)\r
123 {\r
124         UG_TRACE_BEGIN;\r
125         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");\r
126         ug_mf_retvm_if(select_info == NULL, NULL, "select_info is NULL");\r
127 \r
128         Evas_Object *pSelectInfoLayout = NULL;\r
129 \r
130         pSelectInfoLayout = elm_layout_add(parent);\r
131         //elm_layout_theme_set(pSelectInfoLayout, "standard", "selectioninfo", "bottom_86");\r
132         elm_object_content_set(select_info, pSelectInfoLayout);\r
133 \r
134         UG_TRACE_END;\r
135         return pSelectInfoLayout;\r
136 }\r
137 \r
138 void mf_ug_navi_bar_set_select_info_label(void *data, int dir_count, int file_count)\r
139 {\r
140         UG_TRACE_BEGIN;\r
141         ugData *ugd = (ugData *)data;\r
142         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
143 \r
144         ug_debug("dir count is [%d], file count is [%d]", dir_count, file_count);\r
145 \r
146         if (ugd->ug_MainWindow.ug_pLabel) {\r
147                 if (ugd->ug_MainWindow.ug_pSelectInfoLayout) {\r
148                         evas_object_del(ugd->ug_MainWindow.ug_pSelectInfoLayout);\r
149                         ugd->ug_MainWindow.ug_pSelectInfoLayout = NULL;\r
150                 }\r
151                 if (ugd->ug_MainWindow.ug_pLabel) {\r
152                         evas_object_del(ugd->ug_MainWindow.ug_pLabel);\r
153                         ugd->ug_MainWindow.ug_pLabel = NULL;\r
154                 }\r
155         }\r
156 \r
157         if (!ugd->ug_MainWindow.ug_pLabel) {\r
158                 /*Note: selectioninfo is kind of popup, so, do not swallow it to part of layout\r
159                    //And it should be attached on main layout because it calculate the position of itself by layout size (elm_layout_theme_set())\r
160                    //Evas_Object *countlabel = elm_selectioninfo_add(ugd->ug_MainWindow.ug_pMainLayout);\r
161                  */\r
162 \r
163                 ugd->ug_MainWindow.ug_pLabel = __mf_ug_navi_bar_create_select_info(ugd, ugd->ug_MainWindow.ug_pMainLayout);\r
164 \r
165                 ugd->ug_MainWindow.ug_pSelectInfoLayout =\r
166                         __mf_ug_navi_bar_create_select_info_layout(ugd->ug_MainWindow.ug_pMainLayout, ugd->ug_MainWindow.ug_pLabel);\r
167                 elm_layout_theme_set(ugd->ug_MainWindow.ug_pSelectInfoLayout, "standard", "selectioninfo", "vertical/bottom_64");\r
168 \r
169         }\r
170 \r
171         if (dir_count + file_count > 0) {\r
172                 char lable_dir[UG_LABEL_STRING_LENGTH] = { '\0', };\r
173                 char lable_file[UG_LABEL_STRING_LENGTH] = { '\0', };\r
174                 char *select_lable = NULL;\r
175                 /*1 TODO: need to update for multi-language */\r
176 \r
177                 snprintf(lable_file, sizeof(lable_file), "%d", (dir_count+file_count));\r
178                 select_lable = g_strconcat("Selected (", lable_file, ")", NULL);\r
179 \r
180                 elm_object_part_text_set(ugd->ug_MainWindow.ug_pSelectInfoLayout, "elm.text", select_lable);\r
181                 edje_object_part_text_set(_EDJ(ugd->ug_MainWindow.ug_pSelectInfoLayout), "elm.text", select_lable);\r
182                 elm_notify_timeout_set(ugd->ug_MainWindow.ug_pLabel, 3);\r
183                 evas_object_show(ugd->ug_MainWindow.ug_pLabel);\r
184         } else {\r
185                 evas_object_hide(ugd->ug_MainWindow.ug_pLabel);\r
186         }\r
187         UG_TRACE_END;\r
188 \r
189         return;\r
190 }\r
191 \r
192 /******************************\r
193 ** Prototype    : mf_ug_navi_bar_create_navi_bar\r
194 ** Description  :\r
195 ** Input        : Evas_Object* parent\r
196 ** Output       : None\r
197 ** Return Value :\r
198 ** Calls        :\r
199 ** Called By    :\r
200 **\r
201 **  History        :\r
202 **  1.Date         : 2010/12/10\r
203 **    Author       : Samsung\r
204 **    Modification : Created function\r
205 **\r
206 ******************************/\r
207 Evas_Object *mf_ug_navi_bar_create_navi_bar(Evas_Object *parent)\r
208 {\r
209         UG_TRACE_BEGIN;\r
210         Evas_Object *navi_bar = NULL;\r
211         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");\r
212 \r
213         navi_bar = elm_naviframe_add(parent);\r
214         ug_mf_retvm_if(navi_bar == NULL, NULL, "Failed elm_navigationbar_add");\r
215         elm_naviframe_prev_btn_auto_pushed_set(navi_bar, EINA_FALSE);\r
216 \r
217         evas_object_show(navi_bar);\r
218 \r
219         UG_TRACE_END;\r
220         return navi_bar;\r
221 }\r
222 \r
223 \r
224 /******************************\r
225 ** Prototype    : mf_ug_navi_bar_set_new_content\r
226 ** Description  : Samsung\r
227 ** Input        : Evas_Object *pLayout\r
228 **                Evas_Object *NaviContent\r
229 ** Output       : None\r
230 ** Return Value :\r
231 ** Calls        :\r
232 ** Called By    :\r
233 **\r
234 **  History        :\r
235 **  1.Date         : 2010/12/10\r
236 **    Author       : Samsung\r
237 **    Modification : Created function\r
238 **\r
239 ******************************/\r
240 void mf_ug_navi_bar_set_new_content(Evas_Object *pLayout, Evas_Object *NaviContent)\r
241 {\r
242         UG_TRACE_BEGIN;\r
243         Evas_Object *unUsed = elm_object_part_content_unset(pLayout, "part1");\r
244         evas_object_del(unUsed);\r
245         elm_object_part_content_set(pLayout, "part1", NaviContent);\r
246         UG_TRACE_END;\r
247 }\r
248 \r
249 Evas_Object *mf_ug_navi_bar_create_box(Evas_Object * parent)\r
250 {\r
251         UG_TRACE_BEGIN;\r
252         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");\r
253 \r
254         Evas_Object *box = NULL;\r
255         box = elm_box_add(parent);\r
256         ug_mf_retvm_if(box == NULL, NULL, "box is NULL");\r
257         elm_object_focus_set(box, EINA_FALSE);\r
258         evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_FILL);\r
259         evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
260         elm_box_clear(box);\r
261         evas_object_show(box);\r
262         UG_TRACE_END;\r
263         return box;\r
264 \r
265 }\r
266 \r
267 Evas_Object *mf_ug_navi_bar_create_layout(Evas_Object *parent, const char *edj, const char *grp_name)\r
268 {\r
269         UG_TRACE_BEGIN;\r
270         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");\r
271         ug_mf_retvm_if(edj == NULL, NULL, "edj is NULL");\r
272         ug_mf_retvm_if(grp_name == NULL, NULL, "grp_name is NULL");\r
273 \r
274         Evas_Object *layout = NULL;\r
275 \r
276         layout = elm_layout_add(parent);\r
277         ug_mf_retvm_if(layout == NULL, NULL, "layout is NULL");\r
278         elm_object_focus_set(layout, EINA_FALSE);\r
279         elm_layout_file_set(layout, edj, grp_name);\r
280         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
281         evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
282         evas_object_show(layout);\r
283         UG_TRACE_END;\r
284         return layout;\r
285 \r
286 }\r
287 \r
288 /******************************\r
289 ** Prototype    : mf_ug_navi_bar_create_default_view\r
290 ** Description  : Samsung\r
291 ** Input        : void *data\r
292 ** Output       : None\r
293 ** Return Value :\r
294 ** Calls        :\r
295 ** Called By    :\r
296 **\r
297 **  History        :\r
298 **  1.Date         : 2010/12/10\r
299 **    Author       : Samsung\r
300 **    Modification : Created function\r
301 **\r
302 ******************************/\r
303 Evas_Object *__mf_ug_navi_bar_pathinfo_create(Evas_Object *parent, const char *content)\r
304 {\r
305         UG_TRACE_BEGIN;\r
306         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");\r
307         ug_mf_retvm_if(content == NULL, NULL, "content is NULL");\r
308 \r
309         Evas_Object *layout = NULL;\r
310 \r
311         layout = elm_layout_add(parent);\r
312         elm_object_focus_set(layout, EINA_FALSE);\r
313         elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, UG_GRP_PATH_INFO);\r
314         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
315         evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
316 \r
317         elm_object_part_text_set(layout, "info", content);\r
318         evas_object_show(layout);\r
319         UG_TRACE_END;\r
320         return layout;\r
321 }\r
322 \r
323 void mf_ug_navi_bar_title_set(void *data)\r
324 {\r
325         UG_TRACE_BEGIN;\r
326         ugData *ugd = (ugData *)data;\r
327         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
328 \r
329         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE) {\r
330                 ug_debug();\r
331                 elm_object_part_text_set(ugd->ug_MainWindow.ug_pNaviBar, "elm.text.title", MF_UG_LABEL_IMPORT);\r
332                 elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);\r
333                 mf_ug_search_view_enter_search_routine(ugd, NULL, NULL);\r
334         } else if ((ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true)) {\r
335                 ug_debug();\r
336                 elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);\r
337         } else if (!mf_ug_fm_svc_wapper_is_root_path(ugd)) {\r
338                 ug_debug();\r
339                 Evas_Object *home_btn = elm_button_add(ugd->ug_MainWindow.ug_pNaviBar);\r
340                 elm_object_style_set(home_btn, "naviframe/title/default");\r
341                 elm_object_text_set(home_btn, MF_UG_LABEL_HOME);\r
342                 evas_object_smart_callback_add(home_btn, "clicked", mf_ug_cb_home_button_cb, ugd);\r
343                 evas_object_show(home_btn);\r
344                 elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_left_btn", home_btn);\r
345 \r
346                 Evas_Object *up_btn = elm_button_add(ugd->ug_MainWindow.ug_pNaviBar);\r
347                 elm_object_style_set(up_btn, "naviframe/title/default");\r
348                 elm_object_text_set(up_btn, MF_UG_LABEL_UPPER);\r
349                 evas_object_smart_callback_add(up_btn, "clicked", mf_ug_cb_upper_click_cb, ugd);\r
350                 evas_object_show(up_btn);\r
351                 elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_right_btn", up_btn);\r
352                 elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);\r
353         } else if (ugd->ug_Status.ug_iMmcFlag == MMC_OFF && mf_ug_fm_svc_wapper_is_root_path(ugd)) {\r
354                 ug_debug();\r
355                 elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);\r
356         } else {\r
357                 ug_debug();\r
358                 elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_FALSE);\r
359         }\r
360 }\r
361 \r
362 \r
363 void mf_ug_navi_bar_create_default_view(void *data)\r
364 {\r
365         UG_TRACE_BEGIN;\r
366         ugData *ugd = (ugData *)data;\r
367         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
368 \r
369         GString *title = NULL;\r
370         Evas_Object *pNaviLayout = NULL;\r
371         Evas_Object *newContent = NULL;\r
372         Evas_Object *box = NULL;\r
373         Evas_Object *top_layout = NULL;\r
374         Evas_Object *upper_genlist = NULL;\r
375         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
376         ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed");\r
377 \r
378 \r
379         /*if the muisc is playing, destory the play */\r
380         if (0 != ugd->ug_ListPlay.ug_Player) {\r
381                 mf_ug_list_play_destory_playing_file(ugd);\r
382         }\r
383 \r
384         box = mf_ug_navi_bar_create_box(ugd->ug_MainWindow.ug_pNaviBar);\r
385         pNaviLayout = mf_ug_navi_bar_create_layout(box, UG_EDJ_NAVIGATIONBAR, UG_GRP_NAVI_VIEW);\r
386         ugd->ug_MainWindow.ug_pNaviLayout = pNaviLayout;\r
387 \r
388         if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE) {\r
389                 newContent = __mf_ug_genlist_create_gl(ugd);\r
390                 ugd->ug_MainWindow.ug_pContent = newContent;\r
391 \r
392         } else {\r
393                 if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true) {\r
394                         top_layout = mf_ug_navi_bar_create_box(box);\r
395                         evas_object_size_hint_min_set(top_layout, MF_UG_UPPER_WIDTH, MF_UG_UPPER_HEIGHT);\r
396                         upper_genlist = mf_navi_bar_upper_create(top_layout);\r
397                         mf_ug_genlist_goto_myfile_style_set(ugd);\r
398                         mf_ug_genlist_goto_myfile_item_append(upper_genlist, ugd);\r
399                         ugd->ug_Status.ug_bUpperFlag = true;\r
400                         elm_box_pack_end(top_layout, upper_genlist);\r
401                 } else if (!mf_ug_fm_svc_wapper_is_root_path(ugd)){\r
402                         Evas_Object *pathinfo_layout = NULL;\r
403                         Evas_Object *upper_layout = NULL;\r
404                         char *pathinfo = NULL;\r
405                         char *info = NULL;\r
406 \r
407                         top_layout = mf_ug_navi_bar_create_box(box);\r
408                         evas_object_size_hint_weight_set(top_layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);\r
409                         evas_object_size_hint_align_set(top_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
410                         elm_box_clear(top_layout);\r
411                         //evas_object_size_hint_min_set(top_layout, MF_UG_UPPER_WIDTH, MF_UG_UPPER_HEIGHT);\r
412 \r
413                         pathinfo = mf_ug_fm_svc_wapper_path_info_get(ugd->ug_Status.ug_pPath->str);\r
414                         info = mf_ug_fm_svc_path_info_translate(pathinfo, MF_UG_PATH_INFO_MAX_LENGTH_PORTRAIT);\r
415 \r
416                         //Evas_Object *genlist = mf_ug_genlist_create_path_info(top_layout, &ugd->ug_Status.ug_pathinfoitec, info);\r
417 \r
418                         pathinfo_layout = __mf_ug_navi_bar_pathinfo_create(top_layout, info);\r
419 \r
420                         elm_box_pack_end(top_layout, pathinfo_layout);\r
421                         ugd->ug_Status.ug_bUpperFlag = true;\r
422                 }\r
423 \r
424                 if (top_layout) {\r
425                         elm_box_pack_start(box, top_layout);\r
426                 } else {\r
427                         ugd->ug_Status.ug_bUpperFlag = true;\r
428                 }\r
429                 /*set content */\r
430                 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {\r
431                         __mf_ug_navi_bar_create_group_radio_box(ugd);\r
432                 }\r
433                 newContent = mf_ug_genlist_create_content_list_view(ugd);\r
434                 ugd->ug_MainWindow.ug_pContent = newContent;\r
435                 /*set title segment or title */\r
436                 if (mf_ug_fm_svc_wapper_is_root_path(ugd)) {\r
437                         title = g_string_new(MF_UG_LABEL_MYFILES);\r
438                 } else {\r
439                         title = mf_ug_fm_svc_wapper_get_file_name(ugd->ug_Status.ug_pPath);\r
440                 }\r
441 \r
442                 if (title != NULL) {\r
443                         pNavi_s->ug_pNaviTitle = g_strdup(title->str);\r
444                         g_string_free(title, TRUE);\r
445                         title = NULL;\r
446                 }\r
447         }\r
448 \r
449         /*navigation view integration */\r
450         evas_object_show(newContent);\r
451         elm_object_part_content_set(pNaviLayout, "part1", newContent);\r
452         elm_box_pack_end(box, pNaviLayout);\r
453         ugd->ug_MainWindow.ug_pNaviBox = box;\r
454         __mf_ug_navi_bar_push_content(ugd, box);\r
455 \r
456         /*add control bar for navigation bar */\r
457         mf_ug_ctrl_bar_set(ugd, pNavi_s);\r
458 \r
459         mf_ug_navi_bar_title_set(ugd);\r
460         mf_ug_navi_bar_remove_previous_contents(ugd);\r
461         UG_TRACE_END;\r
462 }\r
463 \r
464 \r
465 void mf_ug_navi_bar_create_new_folder_view(void *data)\r
466 {\r
467 \r
468         UG_TRACE_BEGIN;\r
469         ugData *ugd = (ugData *)data;\r
470         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
471 \r
472         Evas_Object *newContent = NULL;\r
473 \r
474         Evas_Object *pNaviBar = NULL;\r
475         GString *title = NULL;\r
476 \r
477         mf_ug_navi_bar_set_navi_to_main(ugd);\r
478 \r
479         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
480         ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");\r
481 \r
482         pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;\r
483 \r
484         /*set content*/\r
485         newContent = mf_ug_genlist_create_list_new_folder_style(ugd);\r
486         /*set title segment or title*/\r
487         title = g_string_new(MF_UG_LABEL_CREATE);\r
488 \r
489         if (title != NULL) {\r
490                 pNavi_s->ug_pNaviTitle = g_strdup(title->str);\r
491                 g_string_free(title, TRUE);\r
492                 title = NULL;\r
493         }\r
494         /*navigation view integration*/\r
495         __mf_ug_navi_bar_push_content(ugd, newContent);\r
496 \r
497         Evas_Object *l_bt = NULL;\r
498         Evas_Object *r_bt = NULL;\r
499         r_bt = elm_button_add(pNaviBar);\r
500         elm_object_focus_set(r_bt, EINA_FALSE);\r
501         elm_object_style_set(r_bt, "naviframe/title/default");\r
502         elm_object_text_set(r_bt, MF_UG_LABEL_CANCEL);\r
503         evas_object_smart_callback_add(r_bt, "clicked", mf_ug_cb_cancel_new_folder_cb, ugd);\r
504         elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_right_btn", r_bt);\r
505 \r
506         l_bt = elm_button_add(pNaviBar);\r
507         elm_object_focus_set(l_bt, EINA_FALSE);\r
508         elm_object_style_set(l_bt, "naviframe/title/default");\r
509         elm_object_text_set(l_bt, MF_UG_LABEL_SAVE);\r
510         evas_object_smart_callback_add(l_bt, "clicked", mf_ug_cb_save_cb, ugd);\r
511         elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_left_btn", l_bt);\r
512 \r
513 \r
514 \r
515 }\r
516 \r
517 /******************************\r
518 ** Prototype    : mf_ug_navi_bar_get_in_use_navi\r
519 ** Description  : Samsung\r
520 ** Input        : void* data\r
521 ** Output       : None\r
522 ** Return Value :\r
523 ** Calls        :\r
524 ** Called By    :\r
525 **\r
526 **  History        :\r
527 **  1.Date         : 2010/12/10\r
528 **    Author       : Samsung\r
529 **    Modification : Created function\r
530 **\r
531 ******************************/\r
532 ugNaviBar *mf_ug_navi_bar_get_in_use_navi(void *data)\r
533 {\r
534         UG_TRACE_BEGIN;\r
535         ugData *ugd = (ugData *)data;\r
536         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");\r
537 \r
538         Eina_List *pNaviList = ugd->ug_MainWindow.ug_pNaviBarList;\r
539         ug_mf_retvm_if(pNaviList == NULL, NULL, "pNavi_sList is NULL");\r
540 \r
541         ugNaviBar *ret = NULL;\r
542         Eina_List *l = NULL;\r
543         void *item;\r
544 \r
545         EINA_LIST_FOREACH(pNaviList, l, item) {\r
546                 ret = (ugNaviBar *)item;\r
547                 if (ret->ug_bNaviFlagInUse == TRUE) {\r
548                         break;\r
549                 } else {\r
550                         ret = NULL;\r
551                 }\r
552         }\r
553         UG_TRACE_END;\r
554         return ret;\r
555 }\r
556 \r
557 \r
558 /******************************\r
559 ** Prototype    : mf_ug_navi_bar_reset_navi_object\r
560 ** Description  : Samsung\r
561 ** Input        : ugNaviBar *pNavi_s\r
562 ** Output       : None\r
563 ** Return Value :\r
564 ** Calls        :\r
565 ** Called By    :\r
566 **\r
567 **  History        :\r
568 **  1.Date         : 2010/12/10\r
569 **    Author       : Samsung\r
570 **    Modification : Created function\r
571 **\r
572 ******************************/\r
573 void mf_ug_navi_bar_reset_navi_object(ugNaviBar *pNavi_s)\r
574 {\r
575         UG_TRACE_BEGIN;\r
576         ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");\r
577 \r
578         pNavi_s->ug_pNaviTitle = NULL;\r
579         if (pNavi_s->ug_pCurrentPath != NULL) {\r
580                 free(pNavi_s->ug_pCurrentPath);\r
581                 pNavi_s->ug_pCurrentPath = NULL;\r
582         }\r
583         if (pNavi_s->ug_pNaviLabel != NULL)\r
584                 free(pNavi_s->ug_pNaviLabel);\r
585         pNavi_s->ug_pNaviLabel = NULL;\r
586         UG_TRACE_END;\r
587 }\r
588 \r
589 /******************************\r
590 ** Prototype    : mf_ug_navi_bar_get_navi_struct_by_label\r
591 ** Description  : Samsung\r
592 ** Input        : void* data\r
593 **                const char* pNaviLabel\r
594 ** Output       : None\r
595 ** Return Value :\r
596 ** Calls        :\r
597 ** Called By    :\r
598 **\r
599 **  History        :\r
600 **  1.Date         : 2010/12/10\r
601 **    Author       : Samsung\r
602 **    Modification : Created function\r
603 **\r
604 ******************************/\r
605 ugNaviBar *mf_ug_navi_bar_get_navi_struct_by_label(void *data, const char *pNaviLabel)\r
606 {\r
607         UG_TRACE_BEGIN;\r
608         ugData *ugd = (ugData *)data;\r
609         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");\r
610         ug_mf_retvm_if(pNaviLabel == NULL, NULL, "pNaviLabel is NULL");\r
611 \r
612         Eina_List *l = NULL;\r
613         void *item = NULL;\r
614 \r
615         ugNaviBar *ret = NULL;\r
616         EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) {\r
617                 if (g_strcmp0(((ugNaviBar *)item)->ug_pNaviLabel, pNaviLabel) == 0) {\r
618                         ret = (ugNaviBar *)item;\r
619                         break;\r
620                 }\r
621         }\r
622         UG_TRACE_END;\r
623         return ret;\r
624 }\r
625 \r
626 \r
627 /******************************\r
628 ** Prototype    : mf_ug_navi_bar_remove_navi_list_item_by_label\r
629 ** Description  : Samsung\r
630 ** Input        : void *data\r
631 **                const char* pNaviLabel\r
632 ** Output       : None\r
633 ** Return Value :\r
634 ** Calls        :\r
635 ** Called By    :\r
636 **\r
637 **  History        :\r
638 **  1.Date         : 2010/12/10\r
639 **    Author       : Samsung\r
640 **    Modification : Created function\r
641 **\r
642 ******************************/\r
643 void mf_ug_navi_bar_remove_navi_list_item_by_label(void *data, const char *pNaviLabel)\r
644 {\r
645         UG_TRACE_BEGIN;\r
646         ugData *ugd = (ugData *)data;\r
647         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
648         ug_mf_retm_if(pNaviLabel == NULL, "pNaviLabel is NULL");\r
649 \r
650         bool bInUseFlag = FALSE;\r
651 \r
652         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_navi_struct_by_label(ugd, pNaviLabel);\r
653 \r
654         if (pNavi_s == NULL) {\r
655                 return;\r
656         }\r
657         Eina_List *plistNaviMMC = eina_list_data_find_list(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_s);\r
658         ugd->ug_MainWindow.ug_pNaviBarList = eina_list_remove_list(ugd->ug_MainWindow.ug_pNaviBarList, plistNaviMMC);\r
659 \r
660         if (pNavi_s->ug_bNaviFlagInUse == TRUE) {\r
661                 bInUseFlag = TRUE;\r
662         }\r
663 \r
664         mf_ug_navi_bar_reset_navi_object(pNavi_s);\r
665 \r
666         if (bInUseFlag == TRUE) {\r
667                 pNavi_s = (ugNaviBar *)eina_list_nth(ugd->ug_MainWindow.ug_pNaviBarList, 0);\r
668                 pNavi_s->ug_bNaviFlagInUse = TRUE;\r
669         }\r
670         UG_TRACE_END;\r
671 }\r
672 \r
673 \r
674 /******************************\r
675 ** Prototype    : mf_ug_navi_bar_refresh_navibar_recovered_view\r
676 ** Description  : Samsung\r
677 ** Input        : void *data\r
678 **                ugNaviBar* pNaviStruct\r
679 ** Output       : None\r
680 ** Return Value :\r
681 ** Calls        :\r
682 ** Called By    :\r
683 **\r
684 **  History        :\r
685 **  1.Date         : 2010/12/10\r
686 **    Author       : Samsung\r
687 **    Modification : Created function\r
688 **\r
689 ******************************/\r
690 void mf_ug_navi_bar_refresh_navibar_recovered_view(void *data, ugNaviBar *pNaviStruct)\r
691 {\r
692         UG_TRACE_BEGIN;\r
693         ugData *ugd = (ugData *)data;\r
694         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
695         ug_mf_retm_if(pNaviStruct == NULL, "pNaviStruct is NULL");\r
696 \r
697         if (ugd->ug_Status.ug_pPath != NULL) {\r
698                 g_string_free(ugd->ug_Status.ug_pPath, TRUE);\r
699                 ugd->ug_Status.ug_pPath = NULL;\r
700         }\r
701         ugd->ug_Status.ug_pPath = g_string_new(pNaviStruct->ug_pCurrentPath);\r
702         Evas_Object *newContent = mf_ug_genlist_create_content_list_view(ugd);\r
703 \r
704         ugd->ug_MainWindow.ug_pContent = newContent;\r
705         mf_ug_navi_bar_set_new_content(ugd->ug_MainWindow.ug_pNaviLayout, newContent);\r
706         UG_TRACE_END;\r
707 }\r
708 \r
709 void mf_ug_navi_bar_transition_finished_cb(void *data, Evas_Object *obj, void *event_info)\r
710 {\r
711         UG_TRACE_BEGIN;\r
712         ug_mf_retm_if(data == NULL, "data is NULL");\r
713         ug_mf_retm_if(obj == NULL, "obj is NULL");\r
714         ugData *ugd = (ugData *)data;\r
715         Elm_Object_Item *it = ugd->ug_MainWindow.ug_pPreNaviItem;\r
716         UG_SAFE_DEL_NAVI_ITEM(it);\r
717         ugd->ug_MainWindow.ug_pPreNaviItem = NULL;\r
718         mf_ug_navi_bar_set_blocking(data, false);\r
719         evas_object_smart_callback_del(obj, "transition,finished", mf_ug_navi_bar_transition_finished_cb);\r
720         UG_TRACE_END;\r
721 }\r
722 \r
723 void mf_ug_navi_bar_remove_previous_contents(void *data)\r
724 {\r
725         UG_TRACE_BEGIN;\r
726 \r
727         ug_mf_retm_if(data == NULL, "data is NULL");\r
728         ugData *ugd = (ugData *)data;\r
729         Evas_Object *pNaviBar = NULL;\r
730         if (ugd->ug_MainWindow.ug_pNaviBar) {\r
731                 pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;\r
732                 mf_ug_navi_bar_set_blocking(data, true);\r
733                 evas_object_smart_callback_add(pNaviBar, "transition,finished", mf_ug_navi_bar_transition_finished_cb, ugd);\r
734         }\r
735         UG_TRACE_END;\r
736 }\r
737 \r
738 void mf_ug_navi_bar_del_item_directly(void *data)\r
739 {\r
740         UG_TRACE_BEGIN;\r
741         ug_mf_retm_if(data == NULL, "data is NULL");\r
742         ugData *ugd = (ugData *)data;\r
743 \r
744         if (ugd->ug_Status.ug_b_NaviPushFlag) {\r
745                 ugNaviBar *pNavi_s_previous = NULL;\r
746                 pNavi_s_previous = mf_ug_navi_bar_get_in_use_navi(ugd) ;\r
747                 if(pNavi_s_previous && ugd->ug_MainWindow.ug_pPreNaviItem)\r
748                 {\r
749                         UG_SAFE_DEL_NAVI_ITEM(ugd->ug_MainWindow.ug_pPreNaviItem);\r
750                         mf_ug_navi_bar_set_blocking(ugd, false);\r
751                         evas_object_smart_callback_del(ugd->ug_MainWindow.ug_pNaviBar, "transition,finished", mf_ug_navi_bar_transition_finished_cb);\r
752                }\r
753         }\r
754         UG_TRACE_END;\r
755 }\r
756 \r
757 \r
758 void mf_ug_navi_bar_set_blocking(void *data, bool bblock_during_transition)\r
759 {\r
760         ug_mf_retm_if(data == NULL, "data is NULL");\r
761         ugData *ugd = (ugData *)data;\r
762 \r
763         ugd->ug_Status.ug_bCancelDisableFlag = bblock_during_transition;\r
764         ugd->ug_Status.ug_b_NaviPushFlag = bblock_during_transition;\r
765         return;\r
766 }\r
767 \r
768 ugNaviBar *ug_mf_navi_bar_get_navi_from_navilist(Eina_List *navilist, const char *label)\r
769 {\r
770 \r
771         UG_TRACE_BEGIN;\r
772         ug_mf_retvm_if(navilist == NULL, NULL, "navilist is NULL");\r
773         ug_mf_retvm_if(label == NULL, NULL, "label is NULL");\r
774 \r
775         void *data = NULL;\r
776         ugNaviBar *pNavi = NULL;\r
777         Eina_List *l = NULL;\r
778         EINA_LIST_FOREACH(navilist, l, data) {\r
779                 if (data) {\r
780                         pNavi = (ugNaviBar *)data;\r
781                         if (pNavi && pNavi->ug_pNaviLabel && g_strcmp0(label, pNavi->ug_pNaviLabel) == 0)\r
782                                 return pNavi;\r
783                         else\r
784                                 continue;\r
785                 }\r
786         }\r
787         return NULL;\r
788 }\r
789 \r
790 void mf_ug_navi_bar_set_navi_to_main(void *data)\r
791 {\r
792         UG_TRACE_BEGIN;\r
793         ug_mf_retm_if(data == NULL, "data is NULL");\r
794         ugData *ugd = (ugData *)data;\r
795 \r
796         if (ugd->ug_Status.ug_iMmcFlag != MMC_OFF) {\r
797                 elm_object_part_content_unset(ugd->ug_MainWindow.ug_pTabLayout, "elm.swallow.content");\r
798                 evas_object_hide(ugd->ug_MainWindow.ug_pTabBar);\r
799                 elm_object_part_content_unset(ugd->ug_MainWindow.ug_pTabLayout, "elm.swallow.tabbar");\r
800                 evas_object_hide(ugd->ug_MainWindow.ug_pTabLayout);\r
801                 elm_object_part_content_unset(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content");\r
802                 elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content", ugd->ug_MainWindow.ug_pNaviBar);\r
803                 evas_object_show(ugd->ug_MainWindow.ug_pMainLayout);\r
804         }\r
805         UG_TRACE_END;\r
806 }\r
807 \r
808 void mf_ug_navi_bar_reset_tab_to_main(void *data)\r
809 {\r
810         UG_TRACE_BEGIN;\r
811         ug_mf_retm_if(data == NULL, "data is NULL");\r
812         ugData *ugd = (ugData *)data;\r
813         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
814 \r
815         if (ugd->ug_Status.ug_iMmcFlag != MMC_OFF) {\r
816                 if (mf_ug_fm_svc_wapper_is_root_path(ugd)) {\r
817                         Evas_Object *pOldContent = NULL;\r
818                         pOldContent = elm_object_part_content_unset(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content");\r
819                         elm_object_part_content_set(ugd->ug_MainWindow.ug_pTabLayout, "elm.swallow.content", pOldContent);\r
820                         elm_object_part_content_set(ugd->ug_MainWindow.ug_pTabLayout, "elm.swallow.tabbar", ugd->ug_MainWindow.ug_pTabBar);\r
821                         elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content", ugd->ug_MainWindow.ug_pTabLayout);\r
822                         evas_object_show(ugd->ug_MainWindow.ug_pTabLayout);\r
823                         evas_object_show(ugd->ug_MainWindow.ug_pTabBar);\r
824                         mf_ug_tab_bar_set_selected_item(mf_ug_tab_bar_get_item_by_label(ugd->ug_MainWindow.ug_pTabBar, pNavi_s->ug_pNaviLabel));\r
825                 }\r
826         } else {\r
827                 elm_object_part_content_unset(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content");\r
828                 elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content", ugd->ug_MainWindow.ug_pNaviBar);\r
829                 elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);\r
830         }\r
831         UG_TRACE_END;\r
832 }\r
833 \r