[SR][Nabi-se][Nabi_SEN_SE-32480] Unable to select more then one file for attachment...
[apps/core/preloaded/ug-myfile-efl.git] / src / common / mf-ug-cb.c
1 /*\r
2  * Copyright 2012          Samsung Electronics Co., Ltd\r
3  *\r
4  * Licensed under the Flora License, Version 1.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *  http://floralicense.org/license/\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 \r
18 #include <stdio.h>\r
19 #include <Elementary.h>\r
20 #include <vconf.h>\r
21 #include <vconf-keys.h>\r
22 #include <pthread.h>\r
23 #include <power.h>\r
24 \r
25 #include "mf-ug-main.h"\r
26 #include "mf-ug-util.h"\r
27 #include "mf-ug-inotify-handle.h"\r
28 #include "mf-ug-winset.h"\r
29 #include "mf-ug-fs-util.h"\r
30 #include "mf-ug-fm-svc-wrapper.h"\r
31 #include "mf-ug-resource.h"\r
32 #include "mf-ug-list-play.h"\r
33 \r
34 #define UG_MAX_LEN_VIB_DURATION                 0.5\r
35 #ifdef UG_OPERATION_SELECT_MODE\r
36 #define RESULT_KEY              "http://tizen.org/appcontrol/data/selected"\r
37 #endif\r
38 /******************************\r
39 ** Prototype    : mf_ug_cb_back_button_cb\r
40 ** Description  :\r
41 ** Input        : void *data\r
42 **                Evas_Object *obj\r
43 **                void *event_info\r
44 ** Output       : None\r
45 ** Return Value :\r
46 ** Calls        :\r
47 ** Called By    :\r
48 **\r
49 **  History        :\r
50 **  1.Date         : 2010/12/10\r
51 **    Author       : Samsung\r
52 **    Modification : Created function\r
53 **\r
54 ******************************/\r
55 \r
56 void mf_ug_cb_back_button_cb(void *data, Evas_Object *obj, void *event_info)\r
57 {\r
58         UG_TRACE_BEGIN;\r
59         ugData *ugd = (ugData *)data;\r
60         ug_mf_retm_if(ugd == NULL, "ugData is NULL");\r
61 \r
62         if (ugd->ug_Status.ug_bCancelDisableFlag) {\r
63                 return;\r
64         }\r
65         if (0 != ugd->ug_ListPlay.ug_Player) {\r
66                 mf_ug_list_play_destory_playing_file(ugd);\r
67                 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);\r
68         }\r
69         if (ugd->ug_Status.ug_iMore == UG_MORE_SEARCH) {\r
70 \r
71                 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
72                 ug_mf_retm_if(pNavi_s == NULL, "get navi failed");\r
73                 Evas_Object *playout = ugd->ug_MainWindow.ug_pNaviLayout;\r
74                 ug_mf_retm_if(playout == NULL, "get conformant failed");\r
75                 Evas_Object *newContent = NULL;\r
76 \r
77                 newContent = mf_ug_genlist_create_content_list_view(ugd);\r
78 \r
79                 Evas_Object *unUsed = elm_object_part_content_unset(playout, "part1");\r
80                 evas_object_del(unUsed);\r
81 \r
82                 elm_object_part_content_set(playout, "part1", newContent);\r
83                 ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;\r
84         } else {\r
85                 if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == false) {\r
86                         Eina_List *l = NULL;\r
87                         void *item = NULL;\r
88                         ugNaviBar *pNavi_s = NULL;\r
89                         ugNaviBar *pNavi_toshow = NULL;\r
90                         GString *title = NULL;\r
91 \r
92                         if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING || ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {\r
93                                 mf_ug_list_play_destory_playing_file(ugd);\r
94                                 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);\r
95                         }\r
96 \r
97                         EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) {\r
98                                 pNavi_s = (ugNaviBar *)item;\r
99                                 if (pNavi_s == NULL)\r
100                                         return;\r
101                                 if (g_strcmp0(pNavi_s->ug_pNaviLabel, MF_UG_LABEL_PHONE) == 0) {\r
102                                         if (pNavi_s->ug_pCurrentPath != NULL) {\r
103                                                 free(pNavi_s->ug_pCurrentPath);\r
104                                                 pNavi_s->ug_pCurrentPath = NULL;\r
105                                         }\r
106                                         pNavi_s->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pEntryPath);\r
107                                         pNavi_s->ug_bNaviFlagInUse = true;\r
108                                         pNavi_toshow = pNavi_s;\r
109                                 } else {\r
110                                         if (pNavi_s->ug_pCurrentPath != NULL) {\r
111                                                 free(pNavi_s->ug_pCurrentPath);\r
112                                                 pNavi_s->ug_pCurrentPath = NULL;\r
113                                         }\r
114                                         pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER);\r
115                                         pNavi_s->ug_bNaviFlagInUse = false;\r
116                                 }\r
117 \r
118                         }\r
119 \r
120                         if (pNavi_toshow == NULL) {\r
121                                 ug_debug("pNavi_toshow is NULL");\r
122                                 return;\r
123                         }\r
124 \r
125                         if (ugd->ug_Status.ug_pPath) {\r
126                                 g_string_free(ugd->ug_Status.ug_pPath, TRUE);\r
127                                 ugd->ug_Status.ug_pPath = NULL;\r
128                         }\r
129 \r
130                         ugd->ug_Status.ug_bInSettingView = true;\r
131 \r
132                         if (ugd->ug_Status.ug_pPath) {\r
133                                 g_string_free(ugd->ug_Status.ug_pPath, TRUE);\r
134                                 ugd->ug_Status.ug_pPath = NULL;\r
135                         }\r
136 \r
137                         pNavi_toshow->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pEntryPath);\r
138                         ugd->ug_Status.ug_pPath = g_string_new(pNavi_toshow->ug_pCurrentPath);\r
139                         title = mf_ug_fm_svc_wapper_get_file_name(ugd->ug_Status.ug_pPath);\r
140 \r
141                         if (title != NULL) {\r
142                                 pNavi_toshow->ug_pNaviTitle = g_strdup(title->str);\r
143                                 g_string_free(title, TRUE);\r
144                                 title = NULL;\r
145                         }\r
146                         ugd->ug_Status.ug_iViewType = mf_ug_view_normal;\r
147                         mf_ug_navi_bar_create_default_view(ugd);\r
148                         mf_ug_ctrl_bar_set_item_disable(ugd);\r
149 \r
150                         elm_object_item_text_set(ugd->ug_MainWindow.ug_pNaviItem, pNavi_toshow->ug_pNaviTitle);\r
151                         elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);\r
152 \r
153                         //mf_ug_player_vol_set(ugd->ug_Status.ug_pPath->str);\r
154                 } else {\r
155                         ug_destroy_me(ugd->ug);\r
156                 }\r
157 \r
158         }\r
159         UG_TRACE_END;\r
160 \r
161 }\r
162 \r
163 /******************************\r
164 ** Prototype    : mf_ug_cb_add_button_cb\r
165 ** Description  :\r
166 ** Input        : void *data\r
167 **                Evas_Object *obj\r
168 **                void *event_info\r
169 ** Output       : None\r
170 ** Return Value :\r
171 ** Calls        :\r
172 ** Called By    :\r
173 **\r
174 **  History        :\r
175 **  1.Date         : 2010/12/10\r
176 **    Author       : Samsung\r
177 **    Modification : Created function\r
178 **\r
179 ******************************/\r
180 \r
181 void mf_ug_cb_add_button_cb(void *data, Evas_Object *obj, void *event_info)\r
182 {\r
183         UG_TRACE_BEGIN;\r
184         ugData *ugd = (ugData *)data;\r
185         ug_mf_retm_if(ugd == NULL, "ugData is NULL");\r
186 \r
187         service_h service;\r
188 \r
189         char *result = NULL;\r
190 \r
191         if (ugd->ug_Status.ug_b_NaviPushFlag) {\r
192                 UG_TRACE_END;\r
193                 return;\r
194         }\r
195 \r
196         if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {\r
197                 result = g_strdup(ugd->ug_Status.ug_pPath->str);\r
198         } else {\r
199                 result = mf_ug_util_get_send_result(ugd);\r
200         }\r
201         if (ugd->ug_Status.ug_bRingtoneSet) {\r
202                 ug_error("result is [%s]", result);\r
203                 int ret = MYFILE_ERR_NONE;\r
204                 ret = mf_ug_file_attr_is_drm_file(result);\r
205                 ug_error("ret is [%d]", ret);\r
206                 if (ret == MYFILE_ERR_NONE) {\r
207                         ret = mf_ug_fs_oper_drm_is_valid(result, DRM_PERMISSION_TYPE_PLAY);\r
208                         ug_error("ret is [%d]", ret);\r
209                         if (ret == true) {\r
210                                 ret = mf_ug_fs_oper_drm_is_action_allowed(result, DRM_HAS_VALID_SETAS_STATUS, DRM_SETAS_RINGTONE);\r
211                                 ug_error("ret is [%d]", ret);\r
212                         }\r
213                         if (ret == false) {\r
214                                 mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_DRM_UNABLE_SET, NULL, NULL, NULL, NULL, NULL);\r
215                                 return;\r
216                         }\r
217                 }\r
218         }\r
219         if (result) {\r
220                 int ret = 0;\r
221                 ret = service_create(&service);\r
222                 if (ret == SERVICE_ERROR_NONE) {\r
223 #ifdef UG_OPERATION_SELECT_MODE\r
224                         if (ugd->ug_UiGadget.ug_bOperationSelectFlag) {\r
225                                 service_add_extra_data(service, RESULT_KEY, result);\r
226                         } else {\r
227                                 service_add_extra_data(service, "result", result);\r
228                         }\r
229 #else\r
230                         service_add_extra_data(service, "result", result);\r
231 #endif\r
232                         ug_send_result(ugd->ug, service);\r
233                         service_destroy(service);\r
234                 }\r
235                 ug_debug("result is [%s]", result);\r
236                 UG_SAFE_FREE_CHAR(result);\r
237         }\r
238 \r
239         if (0 != ugd->ug_ListPlay.ug_Player) {\r
240                 mf_ug_list_play_destory_playing_file(ugd);\r
241                 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);\r
242         }\r
243         ug_destroy_me(ugd->ug);\r
244         UG_TRACE_END;\r
245 }\r
246 \r
247 void mf_ug_cb_list_by_response_cb(void *data)\r
248 {\r
249         ugData *ugd = (ugData *)data;\r
250         assert(ugd);\r
251 \r
252         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
253         ug_mf_retm_if(pNavi_s == NULL, "get navi failed");\r
254         Evas_Object *playout = ugd->ug_MainWindow.ug_pNaviLayout;\r
255         ug_mf_retm_if(playout == NULL, "get conformant failed");\r
256         Evas_Object *newContent = NULL;\r
257 \r
258         newContent = mf_ug_genlist_create_content_list_view(ugd);\r
259 \r
260         Evas_Object *unUsed = elm_object_part_content_unset(playout, "part1");\r
261         evas_object_del(unUsed);\r
262 \r
263         elm_object_part_content_set(playout, "part1", newContent);\r
264 \r
265 }\r
266 \r
267 \r
268 void mf_ug_cb_list_by_button_callback(void *data, Evas_Object * obj, void *event_info)\r
269 {\r
270         assert(data);\r
271         assert(obj);\r
272         ugData *ugd = (ugData *)data;\r
273 \r
274         Evas_Object *btn = (Evas_Object *)obj;\r
275         const char *label = elm_object_text_get(btn);\r
276         int iListBySortType = 0;\r
277 \r
278         if (g_strcmp0(label, MF_UG_LABEL_ASCENDING) == 0 ) {\r
279                 switch(ugd->ug_Status.ug_iSelectedSortType) {\r
280                         case 0:\r
281                                 iListBySortType = MF_UG_SORT_BY_NAME_Z2A;\r
282                                 break;\r
283                         case 1:\r
284                                 iListBySortType = MF_UG_SORT_BY_DATE_R2O;\r
285                                 break;\r
286 \r
287                         case 2:\r
288                                 iListBySortType = MF_UG_SORT_BY_SIZE_L2S;\r
289                                 break;\r
290                         case 3:\r
291                                 iListBySortType = MF_UG_SORT_BY_TYPE_Z2A;\r
292                                 break;\r
293                         default:\r
294                                 iListBySortType = MF_UG_SORT_BY_DATE_R2O;\r
295                                 break;\r
296                 }\r
297         } else if(g_strcmp0(label, MF_UG_LABEL_DESCENDING) == 0 ) {\r
298                 switch(ugd->ug_Status.ug_iSelectedSortType) {\r
299                         case 0:\r
300                                 iListBySortType = MF_UG_SORT_BY_NAME_A2Z;\r
301                                 break;\r
302                         case 1:\r
303                                 iListBySortType = MF_UG_SORT_BY_DATE_O2R;\r
304                                 break;\r
305 \r
306                         case 2:\r
307                                 iListBySortType = MF_UG_SORT_BY_SIZE_S2L;\r
308                                 break;\r
309                         case 3:\r
310                                 iListBySortType = MF_UG_SORT_BY_TYPE_A2Z;\r
311                                 break;\r
312                         default:\r
313                                 iListBySortType = MF_UG_SORT_BY_DATE_O2R;\r
314                                 break;\r
315                 }\r
316 \r
317         }\r
318         ugd->ug_Status.ug_iSortType = iListBySortType;\r
319         mf_ug_cb_list_by_response_cb(ugd);\r
320 }\r
321 \r
322 \r
323 void mf_ug_cb_popup_deleted_cb(void *data, Evas_Object * obj, void *event_info)\r
324 {\r
325         ugData *ugd = (ugData *)data;\r
326         assert(ugd);\r
327 \r
328         mf_ug_cb_list_by_button_callback(data, obj, event_info);\r
329 \r
330         if (ugd->ug_MainWindow.ug_pNormalPopup != NULL) {\r
331                 evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);\r
332         }\r
333         ugd->ug_MainWindow.ug_pNormalPopup = NULL;\r
334 \r
335 }\r
336 \r
337 void mf_ug_cb_sort_by_cb(void *data, Evas_Object *obj, void *event_info)\r
338 {\r
339         UG_TRACE_BEGIN;\r
340         ugData *ugd = (ugData *)data;\r
341         ug_mf_retm_if(ugd == NULL, "ugData is NULL");\r
342 \r
343         if (ugd->ug_Status.ug_b_NaviPushFlag) {\r
344                 UG_TRACE_END;\r
345                 return;\r
346         }\r
347         ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_LIST_BY, MF_UG_LABEL_LIST_BY,\r
348                            NULL, NULL, NULL, NULL, mf_ug_cb_popup_deleted_cb, ugd);\r
349         UG_TRACE_END;\r
350 }\r
351 \r
352 void mf_ug_cb_goto_myfile_button_cb(void *data, Evas_Object *obj, void *event_info)\r
353 {\r
354         UG_TRACE_BEGIN;\r
355         ugData *ugd = (ugData *)data;\r
356         ug_mf_retm_if(ugd == NULL, "ugData is NULL");\r
357 \r
358         if (ugd->ug_Status.ug_bCancelDisableFlag) {\r
359                 ug_debug("ug_Status.ug_bCancelDisableFlag is true");\r
360                 return;\r
361         }\r
362         ugNaviBar *item = NULL;\r
363         Eina_List *l = NULL;\r
364 \r
365         ugNaviBar *pNavi_s = NULL;//ug_mf_navi_bar_get_navi_from_navilist(ugd->ug_MainWindow.ug_pNaviBarList, MF_UG_LABEL_PHONE);\r
366         ugNaviBar *pNavi_toshow = NULL;\r
367 \r
368         EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) {\r
369                 pNavi_s = (ugNaviBar *)item;\r
370                 if (pNavi_s == NULL)\r
371                         return;\r
372                 if (g_strcmp0(pNavi_s->ug_pNaviLabel, MF_UG_LABEL_PHONE) == 0) {\r
373                         if (pNavi_s->ug_pCurrentPath != NULL) {\r
374                                 free(pNavi_s->ug_pCurrentPath);\r
375                                 pNavi_s->ug_pCurrentPath = NULL;\r
376                         }\r
377                         pNavi_s->ug_pCurrentPath = strdup(PHONE_FOLDER);\r
378                         pNavi_s->ug_bNaviFlagInUse = true;\r
379                         pNavi_toshow = pNavi_s;\r
380                 } else {\r
381                         if (pNavi_s->ug_pCurrentPath != NULL) {\r
382                                 free(pNavi_s->ug_pCurrentPath);\r
383                                 pNavi_s->ug_pCurrentPath = NULL;\r
384                         }\r
385                         pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER);\r
386                         pNavi_s->ug_bNaviFlagInUse = false;\r
387                 }\r
388 \r
389         }\r
390 \r
391 \r
392         if (0 != ugd->ug_ListPlay.ug_Player) {\r
393                 mf_ug_list_play_destory_playing_file(ugd);\r
394                 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);\r
395         }\r
396 \r
397         if (ugd->ug_Status.ug_pPath) {\r
398                 g_string_free(ugd->ug_Status.ug_pPath, TRUE);\r
399                 ugd->ug_Status.ug_pPath = NULL;\r
400         }\r
401         ugd->ug_Status.ug_pPath = g_string_new(SOUNDS_FOLDER);\r
402         UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);\r
403         pNavi_s->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pPath->str);\r
404 \r
405         ugd->ug_Status.ug_bInSettingView = false;\r
406 \r
407         mf_ug_navi_bar_create_default_view(ugd);\r
408         ugd->ug_Status.ug_bCancelDisableFlag = true;\r
409         mf_ug_ctrl_bar_set_item_disable(ugd);\r
410         //mf_ug_player_vol_set(ugd->ug_Status.ug_pPath->str);\r
411 }\r
412 \r
413 \r
414 /******************************\r
415 ** Prototype    : _ug_popup_exit\r
416 ** Description  : Samsung\r
417 ** Input        : void *data\r
418 ** Output       : None\r
419 ** Return Value :\r
420 ** Calls        :\r
421 ** Called By    :\r
422 **\r
423 **  History        :\r
424 **  1.Date         : 2010/12/10\r
425 **    Author       : Samsung\r
426 **    Modification : Created function\r
427 **\r
428 ******************************/\r
429 \r
430 void mf_ug_cb_mass_storage_popup_cb(void *data)\r
431 {\r
432         UG_TRACE_BEGIN;\r
433         ugData *ugd = (ugData *)data;\r
434         ug_mf_retm_if(ugd == NULL, "ugData is NULL");\r
435 \r
436         mf_ug_cb_back_button_cb(ugd, NULL, NULL);\r
437 \r
438         if (ugd->ug_MainWindow.ug_pNormalPopup) {\r
439                 evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);\r
440                 ugd->ug_MainWindow.ug_pNormalPopup = NULL;\r
441         }\r
442         UG_TRACE_END;\r
443 }\r
444 \r
445 void mf_ug_cb_upper_button_pressed_cb(void *data, Evas_Object * obj, void *event_info)\r
446 {\r
447         UG_TRACE_BEGIN;\r
448         ug_mf_retm_if(data == NULL, "data is NULL");\r
449 \r
450         Evas_Object *upper_ic = (Evas_Object *)data;\r
451         elm_image_file_set(upper_ic, UG_TITLE_ICON_UPPER_PRESS, NULL);\r
452 }\r
453 \r
454 void mf_ug_cb_upper_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info)\r
455 {\r
456         UG_TRACE_BEGIN;\r
457         ug_mf_retm_if(data == NULL, "data is NULL");\r
458 \r
459         Evas_Object *upper_ic = (Evas_Object *)data;\r
460         elm_image_file_set(upper_ic, UG_TITLE_ICON_UPPER, NULL);\r
461 }\r
462 \r
463 \r
464 /******************************\r
465 ** Prototype    : mf_ug_cb_upper_click_cb\r
466 ** Description  : Samsung\r
467 ** Input        : void *data\r
468 **                Evas_Object * obj\r
469 **                void *event_info\r
470 ** Output       : None\r
471 ** Return Value :\r
472 ** Calls        :\r
473 ** Called By    :\r
474 **\r
475 **  History        :\r
476 **  1.Date         : 2010/12/10\r
477 **    Author       : Samsung\r
478 **    Modification : Created function\r
479 **\r
480 ******************************/\r
481 void mf_ug_cb_upper_click_cb(void *data, Evas_Object * obj, void *event_info)\r
482 {\r
483         UG_TRACE_BEGIN;\r
484         ug_mf_retm_if(data == NULL, "data is NULL");\r
485         ugData *ugd = (ugData *)data;\r
486         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
487         ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");\r
488 \r
489         if (ugd->ug_Status.ug_b_NaviPushFlag) {\r
490                 UG_TRACE_END;\r
491                 return;\r
492         }\r
493 \r
494         if (mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath)) {\r
495                 ugd->ug_Status.ug_iViewType = mf_ug_view_root;\r
496         }\r
497 \r
498         if (ugd->ug_Status.ug_pPath != NULL && pNavi_s->ug_pCurrentPath != NULL) {\r
499                 if (g_strcmp0(pNavi_s->ug_pCurrentPath, MF_UG_LABEL_PHONE) == 0\r
500                     || g_strcmp0(pNavi_s->ug_pCurrentPath, MF_UG_LABEL_MMC) == 0) {\r
501                         mf_ug_navi_bar_create_default_view(ugd);\r
502                         return;\r
503                 }\r
504                 GString *new_path = NULL;\r
505                 char *file_dir = ecore_file_dir_get(pNavi_s->ug_pCurrentPath);\r
506                 if (file_dir && ugd->ug_Status.ug_iViewType != mf_ug_view_root) {\r
507                         new_path = g_string_new(file_dir);\r
508                         UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);\r
509                         ugd->ug_Status.ug_pPath = new_path;\r
510                         UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);\r
511                         pNavi_s->ug_pCurrentPath = strdup(new_path->str);\r
512                         free(file_dir);\r
513                         file_dir = NULL;\r
514                 } else {\r
515                         ug_debug("file_dir is NULL");\r
516                 }\r
517         } else {\r
518                 ugd->ug_Status.ug_pPath = g_string_new(MF_UG_LABEL_PHONE);\r
519                 pNavi_s->ug_pCurrentPath = strdup(MF_UG_LABEL_PHONE);\r
520         }\r
521         mf_ug_navi_bar_create_default_view(ugd);\r
522         mf_ug_ctrl_bar_set_item_disable(ugd);\r
523         UG_TRACE_END;\r
524 }\r
525 \r
526 void mf_ug_cb_home_button_pressed_cb(void *data, Evas_Object * obj, void *event_info)\r
527 {\r
528         UG_TRACE_BEGIN;\r
529         ug_mf_retm_if(data == NULL, "data is NULL");\r
530 \r
531         Evas_Object *home_ic = (Evas_Object *)data;\r
532         elm_image_file_set(home_ic, UG_TITLE_ICON_HOME_PRESS, NULL);\r
533 }\r
534 \r
535 void mf_ug_cb_home_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info)\r
536 {\r
537         UG_TRACE_BEGIN;\r
538         ug_mf_retm_if(data == NULL, "data is NULL");\r
539 \r
540         Evas_Object *home_ic = (Evas_Object *)data;\r
541         elm_image_file_set(home_ic, UG_TITLE_ICON_HOME, NULL);\r
542 }\r
543 \r
544 void mf_ug_cb_home_button_cb(void *data, Evas_Object * obj, void *event_info)\r
545 {\r
546         UG_TRACE_BEGIN;\r
547         ug_mf_retm_if(data == NULL, "data is NULL");\r
548         ugData *ugd = (ugData *)data;\r
549         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
550         ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");\r
551 \r
552         if (ugd->ug_Status.ug_b_NaviPushFlag) {\r
553                 UG_TRACE_END;\r
554                 return;\r
555         }\r
556 \r
557         int storage = MF_UG_PHONE;\r
558         ugd->ug_Status.ug_iViewType = mf_ug_view_root;\r
559 \r
560         storage = mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str);\r
561         switch (storage) {\r
562                 case MF_UG_PHONE:\r
563                         UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);\r
564                         ugd->ug_Status.ug_pPath = g_string_new(PHONE_FOLDER);\r
565                         UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);\r
566                         pNavi_s->ug_pCurrentPath = g_strdup(PHONE_FOLDER);\r
567                         mf_ug_util_set_current_state(ugd, STATE_PHONE);\r
568                         break;\r
569                 case MF_UG_MMC:\r
570                         UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);\r
571                         ugd->ug_Status.ug_pPath = g_string_new(MEMORY_FOLDER);\r
572                         UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);\r
573                         pNavi_s->ug_pCurrentPath = g_strdup(MEMORY_FOLDER);\r
574                         mf_ug_util_set_current_state(ugd, STATE_MEMORY);\r
575                         break;\r
576                 default:\r
577                         return;\r
578         }\r
579 \r
580         mf_ug_navi_bar_create_default_view(ugd);\r
581         mf_ug_ctrl_bar_set_item_disable(ugd);\r
582         UG_TRACE_END;\r
583 }\r
584 \r
585 /******************************\r
586 ** Prototype    : tab_callback\r
587 ** Description  :\r
588 ** Input        : void *data\r
589 **                Evas_Object *obj\r
590 **                void *event_info\r
591 ** Output       : None\r
592 ** Return Value :\r
593 ** Calls        :\r
594 ** Called By    :\r
595 **\r
596 **  History        :\r
597 **  1.Date         : 2010/12/10\r
598 **    Author       : Samsung\r
599 **    Modification : Created function\r
600 **\r
601 ******************************/\r
602 void mf_ug_cb_tab_bar_cb(void *data, const char *path)\r
603 {\r
604         UG_TRACE_BEGIN;\r
605         ugData *ugd = (ugData *)data;\r
606         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
607 \r
608 \r
609         const char *label = NULL;\r
610         Evas_Object *newContent = NULL;\r
611         Evas_Object *pNaviBar = NULL;\r
612         ugNaviBar *pNavi_s_toshow = NULL;\r
613         ugNaviBar *pNavi_s_inuse = NULL;\r
614 \r
615         //mf_ug_navi_bar_del_item_directly(ugd);\r
616 #if 0\r
617         Elm_Object_Item *it = NULL;\r
618         it = (Elm_Object_Item *)event_info;\r
619         label = elm_object_item_text_get(it);\r
620 #endif\r
621         if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true) {\r
622                 return;\r
623         }\r
624 \r
625         int optStorage = 0;\r
626         optStorage = mf_ug_fm_svc_wapper_get_location(path);\r
627         switch (optStorage) {\r
628         case MF_UG_PHONE:\r
629                 label = MF_UG_LABEL_PHONE;\r
630                 break;\r
631         case MF_UG_MMC:\r
632                 label = MF_UG_LABEL_MMC;\r
633                 break;\r
634         default:\r
635                 break;\r
636         }\r
637 \r
638 \r
639         if (label != NULL) {\r
640                 char *rootpath = NULL;\r
641 \r
642                 /*0. set the previous navi to be out of use */\r
643                 pNavi_s_inuse = mf_ug_navi_bar_get_in_use_navi(ugd);\r
644 \r
645                 if (pNavi_s_inuse == NULL || pNavi_s_inuse->ug_pNaviLabel == NULL) {\r
646                         UG_TRACE_END;\r
647                         return;\r
648                 }\r
649 \r
650                 pNavi_s_inuse->ug_bNaviFlagInUse = FALSE;\r
651 \r
652                 if (0 != ugd->ug_ListPlay.ug_Player) {\r
653                         mf_ug_list_play_destory_playing_file(ugd);\r
654                         UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);\r
655                 }\r
656 \r
657                 /*if the muisc is playing, destory the play */\r
658 \r
659                 /*1. get navi bar pointer by the label */\r
660                 pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;\r
661                 pNavi_s_toshow = ug_mf_navi_bar_get_navi_from_navilist(ugd->ug_MainWindow.ug_pNaviBarList, label);\r
662 \r
663                 ug_debug("label is %s", label);\r
664                 /*2. create navi bar if not created, otherwise get it by pNaviBar */\r
665                 if (pNavi_s_toshow == NULL) {\r
666                         /*2.0   get root path by storage label */\r
667                         rootpath = mf_ug_fm_svc_wapper_get_root_path_by_tab_label(label);\r
668                         if (rootpath == NULL) {\r
669                                 UG_TRACE_END;\r
670                                 return;\r
671                         }\r
672                         /*2.1   create the navi for the tab */\r
673                         pNavi_s_toshow = calloc(1, sizeof(ugNaviBar));\r
674                         if (pNavi_s_toshow == NULL) {\r
675                                 ug_debug("pNavi_s_toshow is NULL");\r
676                                 free(rootpath);\r
677                                 rootpath = NULL;\r
678                                 return;\r
679                         }\r
680 \r
681                         pNavi_s_toshow->ug_bNaviFlagInUse = TRUE;\r
682                         /*2.2   set path as root path of the storage */\r
683                         pNavi_s_toshow->ug_pCurrentPath = g_strdup(rootpath);\r
684                         pNavi_s_toshow->ug_pNaviLabel = strdup(label);\r
685                         free(rootpath);\r
686                         rootpath = NULL;\r
687                         /*2.3   insert phone navi into the navi_list */\r
688                         ugd->ug_MainWindow.ug_pNaviBarList = eina_list_append(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_s_toshow);\r
689 \r
690                 } else {\r
691                         /*/2.1   get the navi of the tab */\r
692                         pNavi_s_toshow = mf_ug_navi_bar_get_navi_struct_by_label(ugd, label);\r
693 \r
694                         pNavi_s_toshow->ug_bNaviFlagInUse = TRUE;\r
695                 }\r
696                         /*/2.2   set related status value. */\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(pNavi_s_toshow->ug_pCurrentPath);\r
702                 ugd->ug_Status.ug_iViewType = mf_ug_view_normal;\r
703                 mf_ug_navi_bar_create_default_view(ugd);\r
704 \r
705                 mf_ug_ctrl_bar_set_item_disable(ugd);\r
706         } else {\r
707                 ug_debug("Invalid argument: label is NULL\n");\r
708         }\r
709         UG_TRACE_END;\r
710 }\r
711 \r
712 \r
713 void mf_ug_cb_ctrl_bar_button_cb(void *data, Evas_Object *obj, void *event_info)\r
714 {\r
715 \r
716         UG_TRACE_BEGIN;\r
717         ugData *ugd = (ugData *)data;\r
718         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
719         ug_mf_retm_if(event_info == NULL, "event_info is NULL");\r
720         const char *label = NULL;\r
721 \r
722         if (ugd->ug_Status.ug_b_NaviPushFlag)\r
723                 return;\r
724         label = elm_object_item_text_get((Elm_Object_Item *)event_info);\r
725         ug_mf_retm_if(label == NULL, "label is NULL");\r
726 \r
727         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
728         if (g_strcmp0(label, MF_UG_LABEL_RINGTONES) == 0) {\r
729                 if (g_strcmp0(ugd->ug_Status.ug_pPath->str, UG_RINGTION_PATH) != 0) {\r
730                         UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);\r
731                         ugd->ug_Status.ug_pPath = g_string_new(UG_RINGTION_PATH);\r
732                         UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);\r
733                         pNavi_s->ug_pCurrentPath = g_strdup(UG_RINGTION_PATH);\r
734                         mf_ug_util_set_current_state(ugd, STATE_PHONE);\r
735                         ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_MUSIC;\r
736                         mf_ug_navi_bar_create_default_view(ugd);\r
737                 }\r
738         } else if (g_strcmp0(label, MF_UG_LABEL_OTHER_MUSIC) == 0) {\r
739                 if (g_strcmp0(ugd->ug_Status.ug_pPath->str, UG_MUSIC_PATH) != 0) {\r
740                         UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);\r
741                         ugd->ug_Status.ug_pPath = g_string_new(UG_MUSIC_PATH);\r
742                         UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);\r
743                         pNavi_s->ug_pCurrentPath = g_strdup(UG_MUSIC_PATH);\r
744                         mf_ug_util_set_current_state(ugd, STATE_PHONE);\r
745                         ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_RINGTONE;\r
746                         mf_ug_navi_bar_create_default_view(ugd);\r
747                 }\r
748         }\r
749         UG_TRACE_END;\r
750 }\r
751 \r
752 /******************************\r
753 ** Prototype    : mf_ug_cb_list_play_cb\r
754 ** Description  : Samsung\r
755 ** Input        : ugListItemData *data\r
756 **                Evas_Object *obj\r
757 **                void *event_info\r
758 ** Output       : None\r
759 ** Return Value :\r
760 ** Calls        :\r
761 ** Called By    :\r
762 **\r
763 **  History        :\r
764 **  1.Date         : 2010/12/10\r
765 **    Author       : Samsung\r
766 **    Modification : Created function\r
767 **\r
768 ******************************/\r
769 void mf_ug_cb_list_play_cb(ugListItemData *data, Evas_Object *obj, void *event_info)\r
770 {\r
771         UG_TRACE_BEGIN;\r
772         ugListItemData *itemData = data;\r
773         ugData *ugd = NULL;\r
774         ug_mf_retm_if(itemData == NULL, "itemData is NULL");\r
775         ug_mf_retm_if(itemData->ug_pData == NULL, "ug_pData is NULL");\r
776 \r
777         ugd = itemData->ug_pData;\r
778 \r
779         if (itemData->ug_pData->ug_Status.ug_b_NaviPushFlag)\r
780                 return;\r
781 \r
782         mf_ug_list_play_play_music_item(itemData);\r
783 \r
784         UG_TRACE_END;\r
785 }\r
786 \r
787 /******************************\r
788 ** Prototype    : mf_ug_cb_select_info_show_cb\r
789 ** Description  : Samsung\r
790 ** Input        : void *data\r
791 **                Evas *e\r
792 **                Evas_Object *obj\r
793 **                void *event_info\r
794 ** Output       : None\r
795 ** Return Value :\r
796 ** Calls        :\r
797 ** Called By    :\r
798 **\r
799 **  History        :\r
800 **  1.Date         : 2010/12/10\r
801 **    Author       : Samsung\r
802 **    Modification : Created function\r
803 **\r
804 ******************************/\r
805 void mf_ug_cb_select_info_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
806 {\r
807         UG_TRACE_BEGIN;\r
808         ugData *ugd = (ugData *)data;\r
809         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
810         edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,show,default", "elm");\r
811         UG_TRACE_END;\r
812         return;\r
813 }\r
814 \r
815 /******************************\r
816 ** Prototype    : mf_ug_cb_select_info_hide_cb\r
817 ** Description  : Samsung\r
818 ** Input        : void *data\r
819 **                Evas *e\r
820 **                Evas_Object *obj\r
821 **                void *event_info\r
822 ** Output       : None\r
823 ** Return Value :\r
824 ** Calls        :\r
825 ** Called By    :\r
826 **\r
827 **  History        :\r
828 **  1.Date         : 2010/12/10\r
829 **    Author       : Samsung\r
830 **    Modification : Created function\r
831 **\r
832 ******************************/\r
833 void mf_ug_cb_select_info_hide_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
834 {\r
835         UG_TRACE_BEGIN;\r
836         ugData *ugd = (ugData *)data;\r
837         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
838         edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,hide,default", "elm");\r
839         UG_TRACE_END;\r
840         return;\r
841 }\r
842 \r
843 /******************************\r
844 ** Prototype    : mf_ug_cb_select_info_timeout_cb\r
845 ** Description  : Samsung\r
846 ** Input        : void *data\r
847 **                Evas_Object *obj\r
848 **                void *event_info\r
849 ** Output       : None\r
850 ** Return Value :\r
851 ** Calls        :\r
852 ** Called By    :\r
853 **\r
854 **  History        :\r
855 **  1.Date         : 2010/12/10\r
856 **    Author       : Samsung\r
857 **    Modification : Created function\r
858 **\r
859 ******************************/\r
860 void mf_ug_cb_select_info_timeout_cb(void *data, Evas_Object *obj, void *event_info)\r
861 {\r
862         UG_TRACE_BEGIN;\r
863         ugData *ugd = (ugData *)data;\r
864         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
865         edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,hide,default", "elm");\r
866         UG_TRACE_END;\r
867         return;\r
868 }\r
869 \r
870 \r
871 /******************************\r
872 ** Prototype    : mf_ug_cb_mmc_changed_cb\r
873 ** Description  : Samsung\r
874 ** Input        : keynode_t *key\r
875 **                void* data\r
876 ** Output       : None\r
877 ** Return Value :\r
878 ** Calls        :\r
879 ** Called By    :\r
880 **\r
881 **  History        :\r
882 **  1.Date         : 2010/12/10\r
883 **    Author       : Samsung\r
884 **    Modification : Created function\r
885 **\r
886 ******************************/\r
887 static void __mf_ug_cb_mmc_remove_view_operation(void *data)\r
888 {\r
889         UG_TRACE_BEGIN;\r
890         ugData *ugd = (ugData *)data;\r
891         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
892 \r
893         Evas_Object *parent = NULL;\r
894         const char *labelStorage = NULL;\r
895         parent = ugd->ug_MainWindow.ug_pNaviGenlist;\r
896         labelStorage = MEMORY_FOLDER;\r
897 \r
898         mf_ug_genlist_item_remove(parent, labelStorage);\r
899 \r
900 }\r
901 \r
902 void mf_ug_cb_mmc_changed_cb(keynode_t *key, void *data)\r
903 {\r
904         UG_TRACE_BEGIN;\r
905         ugData *ugd = (ugData *)data;\r
906         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
907         ug_mf_retm_if(ugd->ug_Status.ug_pPath == NULL || ugd->ug_Status.ug_pPath->str == NULL, "ugd->ug_Status.ug_pPath is NULL");\r
908 \r
909         int optStorage = MF_UG_NONE;\r
910         char *labelStorage = NULL;\r
911 \r
912         if (VCONF_TYPE_INT == vconf_keynode_get_type(key)\r
913             && VCONFKEY_SYSMAN_MMC_MOUNTED == vconf_keynode_get_int(key)) {\r
914                 if (ugd->ug_Status.ug_bInSettingView && ugd->ug_Status.ug_bSettingEntry) {\r
915                         ugd->ug_Status.ug_iMmcFlag = MMC_ON;\r
916                         return;\r
917                 }\r
918                 ugd->ug_Status.ug_iMmcFlag = MMC_ON;\r
919 \r
920                 mf_ug_util_storage_insert_action(ugd, MF_UG_LABEL_MMC);\r
921         } else {\r
922                 ugNaviBar *pNaviInUseStruct = NULL;\r
923 \r
924                 if (VCONFKEY_SYSMAN_MMC_REMOVED == vconf_keynode_get_int(key)\r
925                     || VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED == vconf_keynode_get_int(key)) {\r
926                         ug_debug("mmc removed");\r
927                         if (ugd->ug_Status.ug_bInSettingView && ugd->ug_Status.ug_bSettingEntry) {\r
928                                 ugd->ug_Status.ug_iMmcFlag = MMC_OFF;\r
929                                 return;\r
930                         }\r
931                         optStorage = MF_UG_MMC;\r
932                         ugd->ug_Status.ug_iMmcFlag = MMC_OFF;\r
933                 }\r
934 \r
935                 if (optStorage == MF_UG_NONE) {\r
936                         ug_debug("get removed storage failed");\r
937                         return;\r
938                 }\r
939 \r
940                 labelStorage = MF_UG_LABEL_MMC;\r
941 \r
942                 if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {\r
943                         if (mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str) != optStorage) {\r
944                                 mf_ug_navi_bar_remove_navi_list_item_by_label(ugd, labelStorage);\r
945                                 __mf_ug_cb_mmc_remove_view_operation(ugd);\r
946                         } else {\r
947                                 if (0 != ugd->ug_ListPlay.ug_Player) {\r
948                                         mf_ug_list_play_destory_playing_file(ugd);\r
949                                         UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);\r
950                                 }\r
951 \r
952                                 mf_ug_navi_bar_remove_navi_list_item_by_label(ugd, labelStorage);\r
953                                 pNaviInUseStruct = mf_ug_navi_bar_get_in_use_navi(ugd);\r
954                                 mf_ug_navi_bar_refresh_navibar_recovered_view(ugd, pNaviInUseStruct);\r
955                         }\r
956 \r
957                 } else {\r
958                         if (mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str) == optStorage) {\r
959                                 if (0 != ugd->ug_ListPlay.ug_Player) {\r
960                                         mf_ug_list_play_destory_playing_file(ugd);\r
961                                         UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);\r
962                                 }\r
963 \r
964                                 mf_ug_navi_bar_remove_navi_list_item_by_label(ugd, labelStorage);\r
965                                 pNaviInUseStruct = mf_ug_navi_bar_get_in_use_navi(ugd);\r
966                                 ug_debug("label is [%s]pNaviInUseStruct->ug_pCurrentPath is [%s]", pNaviInUseStruct->ug_pNaviLabel, pNaviInUseStruct->ug_pCurrentPath);\r
967                                 mf_ug_navi_bar_refresh_navibar_recovered_view(ugd, pNaviInUseStruct);\r
968                         }\r
969                 }\r
970 \r
971         }\r
972 \r
973         mf_ug_navi_bar_title_set(ugd);\r
974 \r
975         UG_TRACE_END;\r
976         return;\r
977 }\r
978 \r
979 /******************************\r
980 ** Prototype    : mf_ug_cb_dir_update_cb\r
981 ** Description  : Samsung\r
982 ** Input        : mf_ug_inotify_event event\r
983 **                char *name\r
984 **                void *data\r
985 ** Output       : None\r
986 ** Return Value :\r
987 ** Calls        :\r
988 ** Called By    :\r
989 **\r
990 **  History        :\r
991 **  1.Date         : 2010/12/10\r
992 **    Author       : Samsung\r
993 **    Modification : Created function\r
994 **\r
995 ******************************/\r
996 void mf_ug_cb_dir_update_cb(mf_ug_inotify_event event, char *name, void *data)\r
997 {\r
998         UG_TRACE_BEGIN;\r
999         ugData *ugd = (ugData *)data;\r
1000         ug_mf_retm_if(ugd == NULL, "ugData is NULL");\r
1001 \r
1002         ug_debug("event : %d, name : %s", event, name);\r
1003 \r
1004         ug_dir_event_t buffer;\r
1005 \r
1006         buffer.event = event;\r
1007         buffer.name = strdup(name);\r
1008 \r
1009         ecore_pipe_write(ugd->ug_UiGadget.ug_pInotifyPipe, &buffer, sizeof(buffer));\r
1010         UG_TRACE_END;\r
1011 \r
1012         return;\r
1013 }\r
1014 \r
1015 /******************************\r
1016 ** Prototype    : mf_ug_cb_dir_pipe_cb\r
1017 ** Description  : Samsung\r
1018 ** Input        : void *data\r
1019 **                void *buffer\r
1020 **                unsigned int nbyte\r
1021 ** Output       : None\r
1022 ** Return Value :\r
1023 ** Calls        :\r
1024 ** Called By    :\r
1025 **\r
1026 **  History        :\r
1027 **  1.Date         : 2010/12/10\r
1028 **    Author       : Samsung\r
1029 **    Modification : Created function\r
1030 **\r
1031 ******************************/\r
1032 static GString *__mf_ug_cb_dir_pipe_get_parent(GString *path)\r
1033 {\r
1034 \r
1035         ug_mf_retvm_if(path == NULL, NULL, "path is NULL");\r
1036         ug_mf_retvm_if(path->str == NULL, NULL, "path->str is NULL");\r
1037 \r
1038         if (ecore_file_exists(path->str)) {\r
1039                 return path;\r
1040         } else if (mf_ug_fm_svc_wapper_is_root_path(path)) {\r
1041                 return path;\r
1042         } else {\r
1043                 GString *parent = mf_ug_fm_svc_wrapper_get_file_parent_path(path);\r
1044                 UG_SAFE_FREE_GSTRING(path);\r
1045                 __mf_ug_cb_dir_pipe_get_parent(parent);\r
1046         }\r
1047         return path;\r
1048 }\r
1049 \r
1050 void mf_ug_cb_dir_pipe_cb(void *data, void *buffer, unsigned int nbyte)\r
1051 {\r
1052         UG_TRACE_BEGIN;\r
1053         ugData *ugd = (ugData *)data;\r
1054         ug_mf_retm_if(ugd == NULL, "ugd is NULL");\r
1055 \r
1056 \r
1057         if (ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_INIT) {\r
1058                 return;\r
1059         }\r
1060         if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {\r
1061                 return;\r
1062         }\r
1063 \r
1064         if (g_strcmp0(ugd->ug_Status.monitor_path, ugd->ug_Status.ug_pPath->str)) {\r
1065                 return;\r
1066         }\r
1067         if (buffer) {\r
1068                 ug_dir_event_t *msg = (ug_dir_event_t *) buffer;\r
1069                 ug_debug("event : %d, name : %s", msg->event, msg->name);\r
1070 \r
1071                 Evas_Object *newContent = NULL;\r
1072                 ugListItemData *itemData = NULL;\r
1073                 Elm_Object_Item *it = NULL;\r
1074                 GString *parent = NULL;\r
1075                 char *path = NULL;\r
1076                 int count = 0;\r
1077 \r
1078                 switch (msg->event) {\r
1079                 case UG_MF_INOTI_CREATE:\r
1080                 case UG_MF_INOTI_MOVE_IN:\r
1081                         /*/1 TODO:  add new item to list */\r
1082                         if(msg->name) {\r
1083                                 path = g_strconcat(ugd->ug_Status.ug_pPath->str, "/", msg->name, NULL);\r
1084                                 int file_type = 0;\r
1085                                 if (mf_ug_file_attr_is_dir(path)) {\r
1086                                         file_type = UG_FILE_TYPE_DIR;\r
1087                                 } else {\r
1088                                         file_type = UG_FILE_TYPE_FILE;\r
1089                                 }\r
1090                                 ugFsNodeInfo *pNode = mf_ug_util_generate_pnode(path, file_type);\r
1091                                 if (ugd->ug_MainWindow.ug_pNaviGenlist == NULL) {\r
1092 \r
1093                                         Evas_Object *genlist = NULL;\r
1094                                         genlist = elm_genlist_add(ugd->ug_MainWindow.ug_pNaviBar);\r
1095                                         evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
1096                                         evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
1097 \r
1098                                         ugd->ug_MainWindow.ug_pNaviGenlist = genlist;\r
1099                                         evas_object_smart_callback_add(genlist, "selected", mf_ug_genlist_selected_gl, ugd);\r
1100 \r
1101                                         evas_object_del(elm_object_part_content_unset(ugd->ug_MainWindow.ug_pNaviLayout, "part1"));\r
1102 \r
1103                                         elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "part1", newContent);\r
1104                                         elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "part1", genlist);\r
1105                                 }\r
1106                                 if (file_type == UG_FILE_TYPE_DIR) {\r
1107                                         if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||\r
1108                                             ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||\r
1109                                             ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||\r
1110                                             ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE ||\r
1111                                             ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||\r
1112                                             ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE ||\r
1113                                             ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {\r
1114 \r
1115                                                 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);\r
1116                                         } else {\r
1117                                                 int groupValue = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);\r
1118                                                 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);\r
1119                                         }\r
1120                                 } else {\r
1121                                         if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {\r
1122                                                 int groupValue = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);\r
1123                                                 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);\r
1124                                         } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {\r
1125                                                 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);\r
1126                                         } else {\r
1127                                                 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_itc);\r
1128                                         }\r
1129 \r
1130                                 }\r
1131 \r
1132                                 if (pNode != NULL) {\r
1133                                         UG_SAFE_FREE_CHAR(pNode->ext);\r
1134                                         free(pNode);\r
1135                                         pNode = NULL;\r
1136                                 }\r
1137                         }\r
1138                         break;\r
1139                 case UG_MF_INOTI_DELETE:\r
1140                 case UG_MF_INOTI_MOVE_OUT:\r
1141                         /*/1 TODO:  remove item from list */\r
1142                         path = g_strconcat(ugd->ug_Status.ug_pPath->str, "/", msg->name, NULL);\r
1143                         it = elm_genlist_first_item_get(ugd->ug_MainWindow.ug_pNaviGenlist);\r
1144                         while (it) {\r
1145                                 itemData = elm_object_item_data_get(it);\r
1146                                 if (itemData->ug_pItemName == NULL || itemData->ug_pItemName->str == NULL) {\r
1147                                         ug_debug();\r
1148                                         continue;\r
1149                                 }\r
1150                                 if (g_strcmp0(path, itemData->ug_pItemName->str) == 0) {\r
1151                                         elm_object_item_del(it);\r
1152                                         break;\r
1153                                 }\r
1154 \r
1155                                 it = elm_genlist_item_next_get(it);\r
1156                         }\r
1157                         count = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);\r
1158                         ugd->ug_Status.ug_bNoContentFlag = !count;\r
1159 \r
1160                         break;\r
1161                 case UG_MF_INOTI_MODIFY:\r
1162                         /*/1 TODO:  update item in list */\r
1163                         ugd->ug_MainWindow.ug_pNaviGenlist = newContent = mf_ug_genlist_create_content_list_view(ugd);\r
1164                         mf_ug_navi_bar_set_new_content(ugd->ug_MainWindow.ug_pNaviLayout, newContent);\r
1165                         break;\r
1166                 case UG_MF_INOTI_DELETE_SELF:\r
1167                 case UG_MF_INOTI_MOVE_SELF:\r
1168                         /*/1 TODO:  watching directory is removed, change current directory. */\r
1169                 {\r
1170                         GString *current = NULL;\r
1171                         current = g_string_new(ugd->ug_Status.ug_pPath->str);\r
1172                         parent = __mf_ug_cb_dir_pipe_get_parent(current);\r
1173 \r
1174                         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);\r
1175 \r
1176 \r
1177                         g_string_free(ugd->ug_Status.ug_pPath, TRUE);\r
1178                         ugd->ug_Status.ug_pPath = NULL;\r
1179                         ugd->ug_Status.ug_pPath = parent;\r
1180 \r
1181                         if (pNavi_s->ug_pCurrentPath != NULL) {\r
1182                                 free(pNavi_s->ug_pCurrentPath);\r
1183                                 pNavi_s->ug_pCurrentPath = NULL;\r
1184                         }\r
1185                         pNavi_s->ug_pCurrentPath = g_strdup(parent->str);\r
1186 \r
1187 \r
1188 \r
1189                         mf_ug_navi_bar_create_default_view(ugd);\r
1190                 }\r
1191                         break;\r
1192                 default:\r
1193                         ug_mf_error("Unknown event");\r
1194                         break;\r
1195                 }\r
1196                 mf_ug_ctrl_bar_set_item_disable(ugd);\r
1197                 if (msg->name) {\r
1198                         free(msg->name);\r
1199                         msg->name = NULL;\r
1200                 }\r
1201         }\r
1202         UG_TRACE_END;\r
1203 }\r
1204 \r
1205 \r
1206 #ifdef  UG_THUMB_REAL_TIME_UPDATE\r
1207 Eina_Bool mf_ug_cb_thumb_timer_cb(void *data)\r
1208 {\r
1209         ugListItemData *itemData = (ugListItemData *)data;\r
1210         ug_mf_retvm_if(itemData == NULL, EINA_FALSE, "input params is NULL");\r
1211         ugData *ugd = (ugData *)itemData->ug_pData;\r
1212         ug_mf_retvm_if(ugd == NULL, EINA_FALSE, "ugd is NULL");\r
1213 \r
1214         bool allright_flag = true;\r
1215         Evas_Object *pContent = NULL;\r
1216 \r
1217         if (ugd->ug_Status.ug_pThumbUpdateTimer == NULL) {\r
1218                 return EINA_FALSE;\r
1219         }\r
1220 \r
1221         /****read the realized part of the list****/\r
1222         if (itemData->ug_pItem) {\r
1223                 pContent = elm_object_item_widget_get(itemData->ug_pItem);\r
1224                 if (pContent == NULL) {\r
1225                         ugd->ug_Status.ug_pThumbUpdateTimer = NULL;\r
1226                         return EINA_FALSE;\r
1227                 }\r
1228         } else {\r
1229                 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;\r
1230                 return EINA_FALSE;\r
1231         }\r
1232         Eina_List *realized_list = elm_genlist_realized_items_get(pContent);\r
1233         Eina_List *list = NULL;\r
1234         Elm_Object_Item *it;\r
1235         ugListItemData *item_data = NULL;\r
1236 \r
1237         if (realized_list == NULL) {\r
1238                 allright_flag = false;\r
1239         }\r
1240 \r
1241         EINA_LIST_FOREACH(realized_list, list, it) {\r
1242                 item_data = (ugListItemData *)elm_object_item_data_get(it);\r
1243                 if (item_data == NULL)\r
1244                         continue;\r
1245 \r
1246                 if (item_data->ug_bRealThumbFlag == false) {\r
1247                         ug_debug("Update item: %s", item_data->ug_pItemName->str);\r
1248                         if (ecore_file_is_dir(item_data->ug_pItemName->str) == true) {\r
1249                                 item_data->ug_pThumbPath = strdup(UG_ICON_FOLDER);\r
1250                                 item_data->ug_bRealThumbFlag = true;\r
1251                                 elm_object_item_data_set(it, item_data);\r
1252                                 elm_genlist_item_update(it);\r
1253 \r
1254                         } else if (ecore_file_exists(item_data->ug_pItemName->str)) {\r
1255                                 char *new_thumb = NULL;\r
1256                                 int thumbnail_type = 0;\r
1257                                 thumbnail_type = mf_ug_file_attr_get_file_icon(item_data->ug_pItemName->str, NULL, &new_thumb);\r
1258                                 if (new_thumb) {\r
1259                                         if (thumbnail_type == MF_UG_THUMBNAIL_TYPE_DEFAULT) {\r
1260                                                 if (item_data->ug_pThumbPath && g_strcmp0(new_thumb, item_data->ug_pThumbPath) == 0) {\r
1261                                                         allright_flag = FALSE;\r
1262                                                 } else {\r
1263                                                         if (item_data->ug_pThumbPath) {\r
1264                                                                 free(item_data->ug_pThumbPath);\r
1265                                                                 item_data->ug_pThumbPath = NULL;\r
1266                                                         }\r
1267                                                         item_data->ug_pThumbPath = strdup(new_thumb);\r
1268                                                         item_data->ug_bRealThumbFlag = TRUE;\r
1269                                                         elm_object_item_data_set(it, item_data);\r
1270                                                         elm_genlist_item_update(it);\r
1271                                                         free(new_thumb);\r
1272                                                         new_thumb = NULL;\r
1273                                                 }\r
1274 \r
1275                                         } else {\r
1276                                                 if (item_data->ug_pThumbPath) {\r
1277                                                         free(item_data->ug_pThumbPath);\r
1278                                                         item_data->ug_pThumbPath = NULL;\r
1279                                                 }\r
1280                                                 item_data->ug_pThumbPath = strdup(new_thumb);\r
1281                                                 item_data->ug_bRealThumbFlag = TRUE;\r
1282                                                 elm_object_item_data_set(it, item_data);\r
1283                                                 elm_genlist_item_update(it);\r
1284                                                 free(new_thumb);\r
1285                                                 new_thumb = NULL;\r
1286                                         }\r
1287                                 } else {\r
1288                                         allright_flag = false;\r
1289                                 }\r
1290                         }\r
1291                 }\r
1292         }\r
1293 \r
1294         if (allright_flag == false) {\r
1295                 return EINA_TRUE;\r
1296         } else {\r
1297                 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;\r
1298                 return EINA_FALSE;\r
1299         }\r
1300 }\r
1301 #endif\r
1302 \r
1303 void mf_ug_cb_create_new_folder(void *data, Evas_Object * obj, void *event_info)\r
1304 {\r
1305         UG_TRACE_BEGIN;\r
1306         ug_mf_retm_if(data == NULL, "data is NULL");\r
1307 \r
1308         ugData *ugd = (ugData *)data;\r
1309         UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pContextPopup);\r
1310 \r
1311         if (ugd->ug_Status.ug_b_NaviPushFlag) {\r
1312                 UG_TRACE_END;\r
1313                 return;\r
1314         }\r
1315 \r
1316         if (ugd->ug_Status.ug_iMore == UG_MORE_CREATE_FOLDER)\r
1317                 return;\r
1318 \r
1319         int ret = 0;\r
1320         ugd->ug_Status.ug_iMore = UG_MORE_CREATE_FOLDER;\r
1321 \r
1322         ret = mf_ug_util_check_disk_space(ugd);\r
1323         if (ret == MYFILE_ERR_NO_FREE_SPACE) {\r
1324                 ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;\r
1325                 return;\r
1326         }\r
1327 #ifdef  UG_THUMB_REAL_TIME_UPDATE\r
1328         if (ugd->ug_Status.ug_pThumbUpdateTimer != NULL) {\r
1329                 ecore_timer_del(ugd->ug_Status.ug_pThumbUpdateTimer);\r
1330                 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;\r
1331         }\r
1332 #endif\r
1333         ugd->ug_MainWindow.ug_pNewFolderPopup = mf_ug_popup_create_new_folder_popup(ugd, MF_UG_LABEL_CREATE);\r
1334 \r
1335 }\r
1336 \r
1337 void mf_ug_cb_warning_popup_cb(void *data, Evas_Object * obj, void *event_info)\r
1338 {\r
1339         UG_TRACE_BEGIN;\r
1340         ug_mf_retm_if(data == NULL, "data is NULL");\r
1341         ugData *ugd = (ugData *)data;\r
1342 \r
1343         Evas_Object *btn = (Evas_Object *)obj;\r
1344         const char *label = elm_object_text_get(btn);\r
1345 \r
1346         if (g_strcmp0(label, MF_UG_LABEL_OK) == 0 ) {\r
1347                 evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);\r
1348                 ugd->ug_MainWindow.ug_pNormalPopup = NULL;\r
1349         }\r
1350 }\r
1351 \r
1352 void mf_ug_cb_reach_max_len_cb(void *data, Evas_Object * obj, void *event_info)\r
1353 {\r
1354         UG_TRACE_BEGIN;\r
1355         ug_mf_retm_if(data == NULL, "data is NULL");\r
1356         ugData *ugd = (ugData *)data;\r
1357         mf_ug_popup_indicator_popup(MF_UG_LABEL_MAX_CHARACTER_REACHED);\r
1358 \r
1359         UG_TRACE_END;\r
1360 }\r
1361 \r
1362 void mf_ug_cb_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)\r
1363 {\r
1364         elm_entry_entry_set(data, "");\r
1365 }\r
1366 \r
1367 void mf_ug_cb_cancel_new_folder_cb(void *data, Evas_Object * obj, void *event_info)\r
1368 {\r
1369         UG_TRACE_BEGIN;\r
1370         ug_mf_retm_if(data == NULL, "data is NULL");\r
1371         ugData *ugd = (ugData *)data;\r
1372 \r
1373         ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;\r
1374         ecore_imf_context_input_panel_hide(elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry));\r
1375         evas_object_del(ugd->ug_MainWindow.ug_pEntry);\r
1376 \r
1377         UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNewFolderPopup);\r
1378 }\r
1379 \r
1380 static int __mf_cb_imk_cancel_cb(void *data)\r
1381 {\r
1382         UG_TRACE_BEGIN;\r
1383         ug_mf_retvm_if(data == NULL, false, "data is NULL");\r
1384         ugData *ugd = (ugData *)data;\r
1385 \r
1386         mf_ug_cb_cancel_new_folder_cb(ugd, NULL, NULL);\r
1387         ugd->ug_Status.popup_del_idler = NULL;\r
1388         return 0;\r
1389 }\r
1390 \r
1391 \r
1392 static void __mf_ug_cb_illegal_char_popup_cb(void *data, Evas_Object * obj, void *event_info)\r
1393 {\r
1394         UG_TRACE_BEGIN;\r
1395         ug_mf_retm_if(data == NULL, "data is NULL");\r
1396         ugData *ugd = (ugData *)data;\r
1397 \r
1398         Evas_Object *btn = (Evas_Object *)obj;\r
1399         const char *label = elm_object_text_get(btn);\r
1400 \r
1401         if (g_strcmp0(label, MF_UG_LABEL_YES) == 0 ) {\r
1402                 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNormalPopup);\r
1403 \r
1404                 Evas_Object *entry = ugd->ug_MainWindow.ug_pEntry;\r
1405                 if (entry != NULL)\r
1406                         elm_object_focus_set(entry, EINA_TRUE);\r
1407 \r
1408         } else if (g_strcmp0(label, MF_UG_LABEL_NO) == 0 ) {\r
1409                 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNormalPopup);\r
1410                 ugd->ug_Status.popup_del_idler = ecore_idler_add((Ecore_Task_Cb) __mf_cb_imk_cancel_cb, ugd);\r
1411         }\r
1412 \r
1413 }\r
1414 \r
1415 static int __mf_ug_cb_ime_mkdir_cb(void *data, char *fileName)\r
1416 {\r
1417         UG_TRACE_BEGIN;\r
1418         ugData *ugd = (ugData *)data;\r
1419 \r
1420         ug_mf_retvm_if(ugd == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL");\r
1421         ug_mf_retvm_if(fileName == NULL, MYFILE_ERR_SRC_ARG_INVALID, "data is NULL");\r
1422         ug_mf_retvm_if(ugd->ug_Status.ug_pPath == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL");\r
1423         ug_mf_retvm_if(ugd->ug_Status.ug_pPath->str == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL");\r
1424 \r
1425 \r
1426         int ret = 0;\r
1427         const char *message = NULL;\r
1428         const char *left_label = NULL;\r
1429         const char *right_label = NULL;\r
1430 \r
1431         left_label = MF_UG_LABEL_YES;\r
1432         right_label = MF_UG_LABEL_NO;\r
1433         if (strlen(fileName)) {\r
1434 \r
1435                 GString *fullpathdir = g_string_new(ugd->ug_Status.ug_pPath->str);\r
1436 \r
1437                 if (fullpathdir == NULL) {\r
1438                         mf_ug_util_operation_alloc_failed(ugd);\r
1439                         return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;\r
1440                 }\r
1441                 GString *fullpathname = g_string_new(fileName);\r
1442 \r
1443                 if (fullpathname == NULL) {\r
1444                         g_string_free(fullpathdir, TRUE);\r
1445                         fullpathdir = NULL;\r
1446                         mf_ug_util_operation_alloc_failed(ugd);\r
1447                         return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;\r
1448                 }\r
1449                 /*check the space */\r
1450                 gchar *test_space = g_strdup(fileName);\r
1451                 if (test_space == NULL) {\r
1452                         g_string_free(fullpathdir, TRUE);\r
1453                         fullpathdir = NULL;\r
1454                         g_string_free(fullpathname, TRUE);\r
1455                         fullpathname = NULL;\r
1456                         mf_ug_util_operation_alloc_failed(ugd);\r
1457                         return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;\r
1458                 }\r
1459                 if (strlen(g_strchug(test_space)) == 0) {\r
1460                         message = MF_UG_LABEL_NAME_INVALID;     /*TODO */\r
1461                         ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,\r
1462                                            left_label, right_label, NULL,\r
1463                                            __mf_ug_cb_illegal_char_popup_cb, ugd);\r
1464 \r
1465                         g_string_free(fullpathdir, TRUE);\r
1466                         fullpathdir = NULL;\r
1467                         g_string_free(fullpathname, TRUE);\r
1468                         fullpathname = NULL;\r
1469                         g_free(test_space);\r
1470                         test_space = NULL;\r
1471                         return MYFILE_ERR_DIR_CREATE_FAIL;\r
1472                 }\r
1473 \r
1474                 g_free(test_space);\r
1475                 test_space = NULL;\r
1476 \r
1477                 /*check if input name is valid */\r
1478                 if (mf_ug_file_attr_is_valid_name(fullpathname->str) == MYFILE_ERR_INVALID_FILE_NAME) {\r
1479 \r
1480                         message = MF_UG_LABEL_ILLEGAL_CHAR;\r
1481                         ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,\r
1482                                            left_label, right_label, NULL,\r
1483                                            __mf_ug_cb_illegal_char_popup_cb, ugd);\r
1484                         g_string_free(fullpathdir, TRUE);\r
1485                         fullpathdir = NULL;\r
1486                         g_string_free(fullpathname, TRUE);\r
1487                         fullpathname = NULL;\r
1488 \r
1489                         return MYFILE_ERR_DIR_CREATE_FAIL;\r
1490                 }\r
1491 \r
1492                 GString *fullpath = NULL;\r
1493                 char *temp_fullpath = g_strconcat(fullpathdir->str, "/", fullpathname->str, NULL);\r
1494                 if (temp_fullpath) {\r
1495                         fullpath = g_string_new(temp_fullpath);\r
1496 \r
1497                         free(temp_fullpath);\r
1498                         temp_fullpath = NULL;\r
1499                         if (fullpath == NULL) {\r
1500                                 g_string_free(fullpathdir, TRUE);\r
1501                                 fullpathdir = NULL;\r
1502                                 g_string_free(fullpathname, TRUE);\r
1503                                 fullpathname = NULL;\r
1504                                 mf_ug_util_operation_alloc_failed(ugd);\r
1505                                 return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;\r
1506                         }\r
1507                 } else {\r
1508                         g_string_free(fullpathdir, TRUE);\r
1509                         fullpathdir = NULL;\r
1510                         g_string_free(fullpathname, TRUE);\r
1511                         fullpathname = NULL;\r
1512                         return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;\r
1513                 }\r
1514 \r
1515                 /*check whether DIR name is override(DIR name has no extention) */\r
1516                 /*check whether path length is override */\r
1517                 if ((strlen(fullpathdir->str) + strlen(fullpathname->str)) > MYFILE_FILE_PATH_LEN_MAX) {\r
1518 \r
1519                         message = MF_UG_LABEL_PATH_REACH_MAX_LEN;\r
1520                         ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,\r
1521                                            left_label, right_label, NULL,\r
1522                                            __mf_ug_cb_illegal_char_popup_cb, ugd);\r
1523                         g_string_free(fullpathdir, TRUE);\r
1524                         fullpathdir = NULL;\r
1525                         g_string_free(fullpathname, TRUE);\r
1526                         fullpathname = NULL;\r
1527                         ret = MYFILE_ERR_DIR_CREATE_FAIL;\r
1528                 }\r
1529                 /*check if duplicated name */\r
1530                 else if (mf_ug_file_attr_is_duplicated_name(ugd->ug_Status.ug_pPath->str, fileName) == MYFILE_ERR_DUPLICATED_NAME) {\r
1531                         message = MF_UG_LABEL_DUP_NAME;\r
1532                         ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,\r
1533                                            left_label, right_label, NULL,\r
1534                                            __mf_ug_cb_illegal_char_popup_cb, ugd);\r
1535 \r
1536                         g_string_free(fullpathdir, TRUE);\r
1537                         fullpathdir = NULL;\r
1538                         g_string_free(fullpathname, TRUE);\r
1539                         fullpathname = NULL;\r
1540                         ret = MYFILE_ERR_DIR_CREATE_FAIL;\r
1541                 }\r
1542                 /*check if DIR name is all spaces */\r
1543                 else {\r
1544                         ret = mf_ug_fm_svc_wrapper_create_service(ugd, fullpath);\r
1545                         /*check whether operate on read only area */\r
1546                         if (errno == EROFS) {\r
1547                                 message = MF_UG_LABEL_OPER_READ_ONLY;\r
1548                                 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, message, NULL, NULL, NULL, NULL, NULL);\r
1549                                 ret = MYFILE_ERR_DIR_CREATE_FAIL;\r
1550                         } else if (ret) {\r
1551                                 message = MF_UG_LABEL_CREATE_DIR_FAILED;\r
1552                                 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, message, NULL, NULL, NULL, NULL, NULL);\r
1553                         }\r
1554 \r
1555                         g_string_free(fullpathdir, TRUE);\r
1556                         fullpathdir = NULL;\r
1557                         g_string_free(fullpathname, TRUE);\r
1558                         fullpathname = NULL;\r
1559                         g_string_free(fullpath, TRUE);\r
1560                         fullpath = NULL;\r
1561 \r
1562                 }\r
1563         } else {\r
1564                 message = MF_UG_LABEL_EMPTY_FOLDER_NAME;\r
1565 \r
1566                 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,\r
1567                                    left_label, right_label, NULL,\r
1568                                    __mf_ug_cb_illegal_char_popup_cb, ugd);\r
1569                 ret = MYFILE_ERR_DIR_CREATE_FAIL;\r
1570         }\r
1571         return ret;\r
1572 }\r
1573 \r
1574 \r
1575 void mf_ug_cb_save_cb(void *data, Evas_Object *obj, void *event_info)\r
1576 {\r
1577         UG_TRACE_BEGIN;\r
1578         ug_mf_retm_if(data == NULL, "data is NULL");\r
1579         ugData *ugd = (ugData *)data;\r
1580 \r
1581         if (ugd->ug_Status.ug_b_NaviPushFlag) {\r
1582                 UG_TRACE_END;\r
1583                 return;\r
1584         }\r
1585 \r
1586         int ret = 0;\r
1587         const char *message = NULL;\r
1588         const char *left_label = NULL;\r
1589         const char *right_label = NULL;\r
1590 \r
1591         if (ugd->ug_Status.ug_iMore == UG_MORE_CREATE_FOLDER) {\r
1592                 const char *entry_data = NULL;\r
1593                 char *name = NULL;\r
1594 \r
1595                 /*hide IMF*/\r
1596                 if (ugd->ug_MainWindow.ug_pEntry != NULL) {\r
1597                         Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry);\r
1598                         if (imf_context != NULL)\r
1599                                 ecore_imf_context_hide(imf_context);\r
1600                 }\r
1601 \r
1602                 entry_data = elm_entry_entry_get(ugd->ug_MainWindow.ug_pEntry);\r
1603 \r
1604                 if (entry_data) {\r
1605                         name = elm_entry_markup_to_utf8(entry_data);\r
1606                 } else {\r
1607                         message = MF_UG_LABEL_GET_NAME_FAILED;\r
1608                         left_label = MF_UG_LABEL_YES;\r
1609                         right_label = MF_UG_LABEL_NO;\r
1610                         ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,\r
1611                                            left_label, right_label, NULL,\r
1612                                            __mf_ug_cb_illegal_char_popup_cb, ugd);\r
1613                         return;\r
1614                 }\r
1615 \r
1616                 if (name == NULL)\r
1617                         return;\r
1618 \r
1619                 ret = __mf_ug_cb_ime_mkdir_cb(ugd, name);\r
1620                 if (ret == 0) {\r
1621                         ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;\r
1622                         ecore_imf_context_input_panel_hide(elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry));\r
1623                         evas_object_del(ugd->ug_MainWindow.ug_pEntry);\r
1624                         UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNewFolderPopup);\r
1625                         mf_ug_navi_bar_create_default_view(ugd);\r
1626                 }\r
1627 \r
1628                 if (name != NULL) {\r
1629                         free(name);\r
1630                         name = NULL;\r
1631                 }\r
1632         }\r
1633 }\r
1634 \r
1635 void mf_ug_cb_lcd_state_changed_cb(power_state_e state, void *user_data)\r
1636 {\r
1637         UG_TRACE_BEGIN;\r
1638 \r
1639         ug_mf_retm_if(user_data == NULL, "user_data is NULL");\r
1640         ugData *ugd = (ugData *)user_data;\r
1641 \r
1642         if(state == POWER_STATE_SCREEN_OFF){\r
1643                 if (0 != ugd->ug_ListPlay.ug_Player) {\r
1644                         ug_debug("destory the playing file");\r
1645                         mf_ug_list_play_destory_playing_file(ugd);\r
1646                         mf_ug_list_disable_play_itc(ugd, true);\r
1647                         UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);\r
1648                 }\r
1649         }\r
1650         UG_TRACE_END;\r
1651 }\r
1652 \r
1653 \r
1654 Eina_Bool mf_ug_cb_popup_del_idler_cb(void *data)\r
1655 {\r
1656         UG_TRACE_BEGIN;\r
1657         ug_mf_retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "data is NULL");\r
1658         ugData *ugd = (ugData *)data;\r
1659 \r
1660         UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSearchPopup);\r
1661         ugd->ug_Status.popup_del_idler = NULL;\r
1662 \r
1663         return ECORE_CALLBACK_CANCEL;\r
1664 }\r
1665 \r
1666 void mf_ug_cb_entry_button_pressed_cb(void *data, Evas_Object * obj, void *event_info)\r
1667 {\r
1668         UG_TRACE_BEGIN;\r
1669         ug_mf_retm_if(data == NULL, "data is NULL");\r
1670 \r
1671         Evas_Object *home_button_ic = (Evas_Object *)data;\r
1672         elm_image_file_set(home_button_ic, UG_ICON_ENTRY_FOLDER_PRESS, NULL);\r
1673 }\r
1674 \r
1675 void mf_ug_cb_entry_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info)\r
1676 {\r
1677         UG_TRACE_BEGIN;\r
1678         ug_mf_retm_if(data == NULL, "data is NULL");\r
1679 \r
1680         Evas_Object *home_button_ic = (Evas_Object *)data;\r
1681         elm_image_file_set(home_button_ic, UG_ICON_ENTRY_FOLDER, NULL);\r
1682 }\r
1683 \r
1684 void mf_ug_cb_play_button_pressed_cb(void *data, Evas_Object * obj, void *event_info)\r
1685 {\r
1686         UG_TRACE_BEGIN;\r
1687         ug_mf_retm_if(data == NULL, "data is NULL");\r
1688         ugData *ugd = (ugData *)data;\r
1689 \r
1690         const char *play_icon = NULL;\r
1691 \r
1692         Evas_Object *music_icon = elm_object_part_content_get(obj, "icon");\r
1693         if(ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_PLAYING) {\r
1694                 play_icon = UG_ICON_MUSIC_PLAY_WHITE_PRESS;\r
1695         } else {\r
1696                 play_icon = UG_ICON_MUSIC_PAUSE_WHITE_PRESS;\r
1697         }\r
1698 \r
1699         elm_image_file_set(music_icon, play_icon, NULL);\r
1700 }\r
1701 \r
1702 void mf_ug_cb_play_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info)\r
1703 {\r
1704         UG_TRACE_BEGIN;\r
1705         ug_mf_retm_if(data == NULL, "data is NULL");\r
1706         ugData *ugd = (ugData *)data;\r
1707 \r
1708         const char *play_icon = NULL;\r
1709 \r
1710         Evas_Object *music_icon = elm_object_part_content_get(obj, "icon");\r
1711         if(ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_PLAYING) {\r
1712                 play_icon = UG_ICON_MUSIC_PLAY_WHITE;\r
1713         } else {\r
1714                 play_icon = UG_ICON_MUSIC_PAUSE_WHITE;\r
1715         }\r
1716 \r
1717         elm_image_file_set(music_icon, play_icon, NULL);\r
1718 }\r
1719 \r
1720 void mf_ug_cb_more_cb(void *data, Evas_Object * obj, void *event_info)\r
1721 {\r
1722         UG_TRACE_BEGIN;\r
1723         ug_mf_retm_if(data == NULL, "data is NULL");\r
1724         ugData *ugd = (ugData *)data;\r
1725 \r
1726         mf_ug_context_popup_create_more(ugd, obj);\r
1727 }\r
1728 \r
1729 \r