[SR][Nabi-se][Nabi_SEN_SE-32480] Unable to select more then one file for attachment...
[apps/core/preloaded/ug-myfile-efl.git] / src / widget / mf-ug-genlist.c
1 /*
2  * Copyright 2012          Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *  http://floralicense.org/license/
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17
18
19 #include <Eina.h>
20 #include "mf-ug-winset.h"
21 #include "mf-ug-util.h"
22 #include "mf-ug-fm-svc-wrapper.h"
23 #include "mf-ug-fs-util.h"
24 #include "mf-ug-resource.h"
25 #include "mf-ug-cb.h"
26
27
28 #define MF_UG_SELECTED_ITEM_BRING_UP_COUNT      7
29 #define MF_UG_SELECTED_ITEM_BRING_UP_COUNT_MAX  8
30
31 #define MF_UG_LIST_PLAY_TIME_OUT        0.5
32 /******************************
33 ** Prototype    : __mf_ug_genlist_is_file_marked
34 ** Description  : Samsung
35 ** Input        : Eina_List *source
36 **                GString *path
37 ** Output       : None
38 ** Return Value :
39 ** Calls        :
40 ** Called By    :
41 **
42 **  History        :
43 **  1.Date         : 2010/12/10
44 **    Author       : Samsung
45 **    Modification : Created function
46 **
47 ******************************/
48 static gboolean __mf_ug_genlist_is_file_marked(Eina_List *source, GString *path)
49 {
50         UG_TRACE_BEGIN;
51         ug_mf_retvm_if(source == NULL, false, "source is NULL");
52         ug_mf_retvm_if(path == NULL, false, "path is NULL");
53
54         bool flag = false;
55         Eina_List *l = NULL;
56         void *data = NULL;
57
58         EINA_LIST_FOREACH(source, l, data) {
59                 char *source_path = strdup(data);
60                 if (source_path != NULL) {
61                         if (strcmp(source_path, path->str) == 0) {
62                                 flag = true;
63                                 free(source_path);
64                                 source_path = NULL;
65                                 break;
66                         } else {
67                                 free(source_path);
68                                 source_path = NULL;
69                         }
70                 }
71         }
72         UG_TRACE_END;
73         return flag;
74 }
75
76
77 /******************************
78 ** Prototype    : __mf_ug_genlist_set_marked_path
79 ** Description  : Samsung
80 ** Input        : Eina_List **source
81 **                GString *path
82 ** Output       : None
83 ** Return Value :
84 ** Calls        :
85 ** Called By    :
86 **
87 **  History        :
88 **  1.Date         : 2010/12/10
89 **    Author       : Samsung
90 **    Modification : Created function
91 **
92 ******************************/
93 static void __mf_ug_genlist_set_marked_path(Eina_List **source, GString *path)
94 {
95         UG_TRACE_BEGIN;
96         bool file_exist_flag = false;
97         char *source_path;
98         Eina_List *l = NULL;
99         void *data = NULL;
100
101         ug_mf_retm_if(source == NULL, "source is NULL");
102         ug_mf_retm_if(path == NULL, "path is NULL");
103
104         if (NULL == *source || eina_list_count(*source) == 0) {
105                 *source = eina_list_append(*source, strdup(path->str));
106         } else {
107
108                 EINA_LIST_FOREACH(*source, l, data) {
109                         source_path = (char *)data;
110                         if (source_path != NULL) {
111                                 if (strcmp(source_path, path->str) == 0) {
112                                         file_exist_flag = true;
113                                         break;
114                                 }
115                         }
116                 }
117                 if (file_exist_flag == true) {
118                         *source = eina_list_remove(*source, source_path);
119                 } else {
120                         *source = eina_list_append(*source, strdup(path->str));
121                 }
122         }
123         UG_TRACE_END;
124 }
125
126
127 /******************************
128 ** Prototype    : __mf_ug_genlist_create_checkbox
129 ** Description  : Samsung
130 ** Input        : Evas_Object *parent
131 ** Output       : None
132 ** Return Value :
133 ** Calls        :
134 ** Called By    :
135 **
136 **  History        :
137 **  1.Date         : 2010/12/10
138 **    Author       : Samsung
139 **    Modification : Created function
140 **
141 ******************************/
142 static Evas_Object *__mf_ug_genlist_create_checkbox(Evas_Object *parent)
143 {
144         UG_TRACE_BEGIN;
145         Evas_Object *ck_box = NULL;
146
147         ck_box = elm_check_add(parent);
148         evas_object_size_hint_weight_set(ck_box, 1.0, 1.0);
149         evas_object_size_hint_align_set(ck_box, -1.0, 0.5);
150         elm_check_state_set(ck_box, 0);
151         evas_object_show(ck_box);
152         evas_object_repeat_events_set(ck_box, 0);
153         UG_TRACE_END;
154         return ck_box;
155 }
156
157 static void __mf_ug_genlist_show_select_info(void *data)
158 {
159         UG_TRACE_BEGIN;
160         ugListItemData *itemData = (ugListItemData *)data;
161         ug_mf_retm_if(itemData == NULL, "itemData is NULL");
162
163         ugData *ugd = itemData->ug_pData;
164         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
165
166         int iDirCount = 0, iFileCount = 0;
167         Elm_Object_Item *it = NULL;
168
169         Evas_Object *pGenlist = ugd->ug_MainWindow.ug_pNaviGenlist;
170
171         it = elm_genlist_first_item_get(pGenlist);
172         while (it) {
173                 itemData = elm_object_item_data_get(it);
174                 if (itemData->ug_bChecked) {
175                         if (ecore_file_is_dir(itemData->ug_pItemName->str)) {
176                                 iDirCount++;
177                         } else {
178                                 iFileCount++;
179                         }
180                 }
181
182                 it = elm_genlist_item_next_get(it);
183         }
184         int count = 0;
185         count = iDirCount + iFileCount;
186         if (count > 0) {
187                 Evas_Object *notify_popup = NULL;
188                 char lable_file[UG_LABEL_STRING_LENGTH] = { '\0', };
189                 char *label = NULL;
190                 /*1 TODO: need to update for multi-language */
191
192                 snprintf(lable_file, sizeof(lable_file), "%d", count);
193                 label = g_strconcat(MF_UG_LABEL_SELECTED, "(", lable_file, ")", NULL);
194                 notify_popup = mf_ug_navibar_create_notify_popup(itemData->ug_pData, ugd->ug_MainWindow.ug_pNaviLayout, label, false, NULL);
195                 ugd->ug_MainWindow.ug_pSelectInfoLayout = notify_popup;
196                 UG_SAFE_FREE_CHAR(label);
197
198         } else {
199                 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSelectInfoLayout);
200         }
201         UG_TRACE_END;
202
203 }
204
205 /******************************
206 ** Prototype    : __mf_ug_genlist_checkbox_cb
207 ** Description  : Samsung
208 ** Input        : void *data
209 **                Evas_Object *obj
210 **                void *event_info
211 ** Output       : None
212 ** Return Value :
213 ** Calls        :
214 ** Called By    :
215 **
216 **  History        :
217 **  1.Date         : 2010/12/10
218 **    Author       : Samsung
219 **    Modification : Created function
220 **
221 ******************************/
222 static void __mf_ug_genlist_checkbox_cb(void *data, Evas_Object *obj, void *event_info)
223 {
224         UG_TRACE_BEGIN;
225         ugListItemData *itemData = (ugListItemData *)data;
226         ug_mf_retm_if(itemData == NULL, "itemData is NULL");
227         ugData *ugd = (ugData *)itemData->ug_pData;
228
229         if (itemData->ug_bChecked == false) {
230                 itemData->ug_bChecked = true;
231         } else {
232                 itemData->ug_bChecked = false;
233         }
234
235         if (itemData->ug_pData->ug_UiGadget.ug_iMarkedMode == MARKED_ON) {
236                 __mf_ug_genlist_set_marked_path(&itemData->ug_pData->ug_UiGadget.ug_pMultiSelectFileList, itemData->ug_pItemName);
237         }
238         if (itemData->ug_bChecked) {
239                 ugd->ug_Status.ug_iCheckedCount++;
240         } else {
241                 ugd->ug_Status.ug_iCheckedCount--;
242         }
243         if (ugd->ug_MainWindow.ug_pSelectAllCheckBox) {
244                 if (ugd->ug_Status.ug_iTotalCount == ugd->ug_Status.ug_iCheckedCount) {
245                         ugd->ug_Status.ug_bSelectAllChecked = EINA_TRUE;
246                 } else {
247                         ugd->ug_Status.ug_bSelectAllChecked = EINA_FALSE;
248                 }
249                 elm_check_state_pointer_set(ugd->ug_MainWindow.ug_pSelectAllCheckBox, &ugd->ug_Status.ug_bSelectAllChecked);
250         }
251
252         __mf_ug_genlist_show_select_info(itemData);
253         mf_ug_ctrl_bar_set_item_disable(itemData->ug_pData);
254
255         UG_TRACE_END;
256 }
257
258
259 /******************************
260 ** Prototype    : __mf_ug_genlist_create_radio_box
261 ** Description  : Samsung
262 ** Input        : Evas_Object *parent
263 **                ugListItemData *params
264 ** Output       : None
265 ** Return Value :
266 ** Calls        :
267 ** Called By    :
268 **
269 **  History        :
270 **  1.Date         : 2010/12/10
271 **    Author       : Samsung
272 **    Modification : Created function
273 **
274 ******************************/
275 static Evas_Object *__mf_ug_genlist_create_radio_box(Evas_Object *parent, ugListItemData *params)
276 {
277         UG_TRACE_BEGIN;
278
279         ugListItemData *itemData = (ugListItemData *)params;
280         ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
281
282         ugData *ugd = (ugData *)(itemData->ug_pData);
283         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
284
285         Evas_Object *radio_box = NULL;
286         radio_box = elm_radio_add(parent);
287         elm_radio_state_value_set(radio_box, itemData->ug_iGroupValue);
288         elm_radio_group_add(radio_box, ugd->ug_MainWindow.ug_pRadioGroup);
289         elm_radio_value_set(ugd->ug_MainWindow.ug_pRadioGroup, ugd->ug_Status.ug_iRadioOn);
290         UG_TRACE_END;
291         return radio_box;
292 }
293
294
295 static bool __mf_ug_list_play_timer_cb(void *data)
296 {
297         ugListItemData *item_data = (ugListItemData *)data;
298         ugData *ugd = (ugData *)item_data->ug_pData;
299
300
301         if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING || ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
302                 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, item_data->ug_pItemName->str) == 0) {
303                         mf_ug_list_play_destory_playing_file(ugd);
304                         //mf_ug_list_disable_play_itc(ugd, true);
305                         //mf_ug_list_play_update_item_icon(ugd);
306                         UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
307                 } else {
308                         //mf_ug_list_paly_hide_play_icon(ugd);
309                 }
310         }
311         mf_ug_cb_list_play_cb(item_data, NULL, NULL);
312         if (elm_radio_value_get(ugd->ug_MainWindow.ug_pRadioGroup) != item_data->ug_iGroupValue) {
313                 ugd->ug_Status.ug_iRadioOn = item_data->ug_iGroupValue;
314                 item_data->ug_bChecked = true;
315                 elm_radio_value_set(ugd->ug_MainWindow.ug_pRadioGroup, item_data->ug_iGroupValue);
316         }
317
318         item_data->ug_pData->ug_Status.play_timer = NULL;
319         return ECORE_CALLBACK_CANCEL;
320
321 }
322
323 /******************************
324 ** Prototype    : __mf_ug_genlist_radio_box_cb
325 ** Description  : Samsung
326 ** Input        : void *data
327 **                Evas_Object *obj
328 **                void *event_info
329 ** Output       : None
330 ** Return Value :
331 ** Calls        :
332 ** Called By    :
333 **
334 **  History        :
335 **  1.Date         : 2010/12/10
336 **    Author       : Samsung
337 **    Modification : Created function
338 **
339 ******************************/
340 static void __mf_ug_genlist_radio_box_cb(void *data, Evas_Object *obj, void *event_info)
341 {
342
343         UG_TRACE_BEGIN;
344         ugListItemData *itemData = (ugListItemData *)data;
345         ug_mf_retm_if(itemData == NULL, "ugListItemData is NULL");
346         ugData *ugd = (ugData *)itemData->ug_pData;
347         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
348
349         itemData->ug_bChecked = true;
350         itemData->ug_pData->ug_Status.ug_iRadioOn = itemData->ug_iGroupValue;
351         elm_radio_value_set(itemData->ug_pData->ug_MainWindow.ug_pRadioGroup, itemData->ug_iGroupValue);
352         mf_ug_ctrl_bar_set_item_disable(itemData->ug_pData);
353
354
355         mf_ug_launch_type launch_type = mf_ug_util_get_file_launch_type(itemData->ug_pItemName->str);
356         if (launch_type == LAUNCH_TYPE_MUSIC) {
357                 if (ugd->ug_Status.play_timer == NULL) {
358                         ug_error(">>>>>>>>>>>>>> entry list play");
359                         ugd->ug_Status.play_timer = ecore_timer_add(MF_UG_LIST_PLAY_TIME_OUT, (Ecore_Task_Cb)__mf_ug_list_play_timer_cb, itemData);
360                 } else {
361                         ug_error(">>>>>>>>>>>>>> Faild entry list play");
362
363                 }
364         }
365
366         UG_TRACE_END;
367 }
368
369
370 /******************************
371 ** Prototype    : __mf_ug_genlist_get_gl_label
372 ** Description  :
373 ** Input        : const void *data
374 **                Evas_Object *obj
375 **                const char *part
376 ** Output       : None
377 ** Return Value :
378 ** Calls        :
379 ** Called By    :
380 **
381 **  History        :
382 **  1.Date         : 2010/12/10
383 **    Author       : Samsung
384 **    Modification : Created function
385 **
386 ******************************/
387 static char *__mf_ug_genlist_get_gl_label(void *data, Evas_Object *obj, const char *part)
388 {
389         UG_TRACE_BEGIN;
390         ugListItemData *itemData = (ugListItemData *)data;
391         ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
392
393         if (strcmp(part, "elm.text") == 0) {
394                 UG_TRACE_END;
395                 if (g_strcmp0(itemData->ug_pItemName->str, PHONE_FOLDER) == 0) {
396                         return g_strdup(MF_UG_LABEL_PHONE);
397                 } else if (g_strcmp0(itemData->ug_pItemName->str, MEMORY_FOLDER) == 0) {
398                         return g_strdup(MF_UG_LABEL_MMC);
399                 } else {
400                         return strdup(ecore_file_file_get(itemData->ug_pItemName->str));
401                 }
402         } else if (strcmp(part, "elm.uptitle.text") == 0) {
403                 UG_TRACE_END;
404                 return strdup(("Upper Level"));
405         } else {
406                 UG_TRACE_END;
407                 return strdup("");
408         }
409 }
410
411
412 /******************************
413 ** Prototype    : __mf_ug_genlist_get_thumbnail
414 ** Description  : Samsung
415 ** Input        : void *data
416 ** Output       : None
417 ** Return Value :
418 ** Calls        :
419 ** Called By    :
420 **
421 **  History        :
422 **  1.Date         : 2010/12/10
423 **    Author       : Samsung
424 **    Modification : Created function
425 **
426 ******************************/
427 static void __mf_ug_genlist_get_thumbnail(void *data)
428 {
429         UG_TRACE_BEGIN;
430         ugListItemData *itemData = (ugListItemData *)data;
431         ug_mf_retm_if(itemData == NULL, "itemData is NULL");
432
433         const char *dir_icon_path = UG_ICON_FOLDER;
434         //const char *dir_create_icon_path = UG_ICON_FOLDER_CREATED;
435         char *icon_path = NULL;
436         int error_code = MYFILE_ERR_NONE;
437         int thumbnail_type = 0;
438
439         if (itemData->ug_pThumbPath == NULL) {
440                 if (ecore_file_is_dir(itemData->ug_pItemName->str)) {
441                         itemData->ug_pThumbPath = strdup(dir_icon_path);
442                         itemData->ug_bRealThumbFlag = true;
443                 } else {
444                         thumbnail_type = mf_ug_file_attr_get_file_icon(itemData->ug_pItemName->str, &error_code, &icon_path);
445                         if (icon_path) {
446                                 itemData->ug_pThumbPath = strdup(icon_path);
447                                 itemData->ug_bRealThumbFlag = true;
448                                 free(icon_path);
449                                 icon_path = NULL;
450                         } else {        /*/must be image/video file */
451
452                                 mf_ug_fs_file_type type = UG_FILE_TYPE_NONE;
453                                 type = mf_ug_file_attr_get_file_type_by_mime(itemData->ug_pItemName->str);
454
455                                 if (type == UG_FILE_TYPE_VIDEO) {
456                                         itemData->ug_pThumbPath = strdup(UG_ICON_VIDEO);
457                                 } else if (type == UG_FILE_TYPE_IMAGE) {
458                                         itemData->ug_pThumbPath = strdup(UG_ICON_IMAGE);
459                                 } else {
460                                         itemData->ug_pThumbPath = strdup(UG_DEFAULT_ICON);
461                                 }
462                                 itemData->ug_bRealThumbFlag = false;
463                                 error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
464                         }
465                 }
466         } else if (itemData->ug_pThumbPath && ecore_file_exists(itemData->ug_pThumbPath)) {
467                 if (itemData->ug_bRealThumbFlag == false) {
468                         error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
469                 }
470         } else if (!ecore_file_exists(itemData->ug_pThumbPath)) {
471
472                 ug_debug("ug_pThumbPath[%s] is not exist", itemData->ug_pThumbPath);
473                 free(itemData->ug_pThumbPath);
474                 itemData->ug_pThumbPath = NULL;
475                 /*/set default icon */
476                 itemData->ug_pThumbPath = strdup(UG_DEFAULT_ICON);
477                 itemData->ug_bRealThumbFlag = false;
478                 error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
479         }
480 #ifdef  UG_THUMB_REAL_TIME_UPDATE
481         /*/check if we need to add refresh timer */
482         if (error_code != 0 && itemData->ug_pData->ug_Status.ug_pThumbUpdateTimer == NULL) {
483                 itemData->ug_pData->ug_Status.ug_pThumbUpdateTimer = ecore_timer_add(INTERVAL_THUMB_UPDATE, mf_ug_cb_thumb_timer_cb, itemData);
484         }
485 #endif
486         UG_TRACE_END;
487 }
488
489
490 /******************************
491 ** Prototype    : __mf_ug_genlist_create_thumbnail
492 ** Description  : Samsung
493 ** Input        : void *data
494 **                Evas_Object *parent
495 ** Output       : None
496 ** Return Value :
497 ** Calls        :
498 ** Called By    :
499 **
500 **  History        :
501 **  1.Date         : 2010/12/10
502 **    Author       : Samsung
503 **    Modification : Created function
504 **
505 ******************************/
506 static Evas_Object *__mf_ug_genlist_create_thumbnail(void *data, Evas_Object *parent)
507 {
508
509         UG_TRACE_BEGIN;
510         ugListItemData *itemData = (ugListItemData *)data;
511         ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
512
513         Evas_Object *thumb = NULL;
514
515 #ifdef USE_IMAGE_OBJECT
516         thumb = evas_object_image_add(evas_object_evas_get(parent));
517 #else
518         thumb = elm_image_add(parent);
519 #endif
520         if (thumb == NULL) {
521                 ug_debug("thumb is NULL");
522         }
523         if (thumb) {
524 #ifdef USE_IMAGE_OBJECT
525                 int load_err = EVAS_LOAD_ERROR_NONE;
526                 evas_object_image_file_set(thumb, itemData->ug_pThumbPath, NULL);
527                 load_err = evas_object_image_load_error_get(thumb);
528
529                 if (load_err != EVAS_LOAD_ERROR_NONE) {
530                         evas_object_del(thumb);
531                         thumb = NULL;
532                 } else {
533                         evas_object_image_filled_set(thumb, EINA_TRUE);
534                 }
535 #else
536                 elm_image_file_set(thumb, itemData->ug_pThumbPath, NULL);
537 #endif
538         }
539         UG_TRACE_END;
540         return thumb;
541 }
542
543
544 /******************************
545 ** Prototype    : __mf_ug_genlist_create_mmc_icon
546 ** Description  : Samsung
547 ** Input        : Evas_Object *parent
548 ** Output       : None
549 ** Return Value :
550 ** Calls        :
551 ** Called By    :
552 **
553 **  History        :
554 **  1.Date         : 2010/12/10
555 **    Author       : Samsung
556 **    Modification : Created function
557 **
558 ******************************/
559 static Evas_Object *__mf_ug_genlist_create_mmc_icon(Evas_Object *parent)
560 {
561         UG_TRACE_BEGIN;
562         Evas_Object *ic_memory = NULL;
563         const char *memory_icon_path = UG_ICON_MEMORY_SUB;
564
565         ic_memory = elm_image_add(parent);
566         elm_image_file_set(ic_memory, memory_icon_path, NULL);
567         evas_object_show(ic_memory);
568
569         UG_TRACE_END;
570         return ic_memory;
571 }
572
573
574 /******************************
575 ** Prototype    : __mf_ug_genlist_add_checkbox
576 ** Description  : Samsung
577 ** Input        : void *data
578 **                Evas_Object *parent
579 ** Output       : None
580 ** Return Value :
581 ** Calls        :
582 ** Called By    :
583 **
584 **  History        :
585 **  1.Date         : 2010/12/10
586 **    Author       : Samsung
587 **    Modification : Created function
588 **
589 ******************************/
590 static Evas_Object *__mf_ug_genlist_add_checkbox(void *data, Evas_Object *parent)
591 {
592         UG_TRACE_BEGIN;
593         ugListItemData *itemData = (ugListItemData *)data;
594         ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
595
596         Evas_Object *check_box = __mf_ug_genlist_create_checkbox(parent);
597         evas_object_propagate_events_set(check_box, 0);
598
599         elm_check_state_set(check_box, itemData->ug_bChecked);
600
601         itemData->ug_pCheckBox = check_box;
602         evas_object_smart_callback_add(check_box, "changed", __mf_ug_genlist_checkbox_cb, itemData);
603
604         UG_TRACE_END;
605         return check_box;
606 }
607
608
609
610 /******************************
611 ** Prototype    : __mf_ug_genlist_add_radio_box
612 ** Description  : Samsung
613 ** Input        : void *data
614 **                Evas_Object *parent
615 ** Output       : None
616 ** Return Value :
617 ** Calls        :
618 ** Called By    :
619 **
620 **  History        :
621 **  1.Date         : 2010/12/10
622 **    Author       : Samsung
623 **    Modification : Created function
624 **
625 ******************************/
626 static Evas_Object *__mf_ug_genlist_add_radio_box(void *data, Evas_Object *parent)
627 {
628         UG_TRACE_BEGIN;
629         ugListItemData *itemData = (ugListItemData *)data;
630         ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
631
632         Evas_Object *radio_box = __mf_ug_genlist_create_radio_box(parent, itemData);
633
634         evas_object_propagate_events_set(radio_box, 0);
635         itemData->ug_pRadioBox = radio_box;
636         evas_object_smart_callback_add(radio_box, "changed", __mf_ug_genlist_radio_box_cb, itemData);
637
638         UG_TRACE_END;
639         return radio_box;
640 }
641
642
643 static Evas_Object *__mf_ug_genlist_gl_upper_icon_get(void *data, Evas_Object * obj, const char *part)
644 {
645         UG_TRACE_BEGIN;
646         ugListItemData *listItemData = (ugListItemData *)data;
647
648         ug_mf_retvm_if(listItemData == NULL, NULL, "listItemData is NULL");
649         ug_mf_retvm_if(listItemData->ug_pItemName == NULL, NULL, "m_ItemName is NULL");
650         ug_mf_retvm_if(part == NULL, NULL, "part is NULL");
651         ug_mf_retvm_if(obj == NULL, NULL, "obj is NULL");
652
653         Evas_Object *thumb = NULL;
654         if (!strcmp(part, "elm.icon"))  {
655                 thumb = elm_image_add(obj);
656                 elm_object_focus_set(thumb, EINA_FALSE);
657                 if (thumb) {
658                         elm_image_file_set(thumb, listItemData->ug_pThumbPath, NULL);
659                 }
660         }
661         return thumb;
662 }
663
664
665 static Evas_Object *__mf_ug_genlist_upper_icon_get(void *data, Evas_Object * obj, const char *part)
666 {
667         ug_mf_retvm_if(data == NULL, NULL, "data is NULL");
668         ug_mf_retvm_if(obj == NULL, NULL, "obj is NULL");
669
670         ugData *ugd = (ugData *)data;
671
672         if (!strcmp(part, "elm.icon.1"))        {
673                 Evas_Object *btn = elm_button_add(obj);
674                 elm_object_text_set(btn, MF_UG_LABEL_HOME);
675                 evas_object_smart_callback_add(btn, "clicked", mf_ug_cb_home_button_cb, ugd);
676                 return btn;
677         } else if (!strcmp(part, "elm.icon.2")) {
678                 Evas_Object *btn = elm_button_add(obj);
679                 elm_object_text_set(btn, MF_UG_LABEL_UPPER);
680                 evas_object_smart_callback_add(btn, "clicked", mf_ug_cb_upper_click_cb, ugd);
681                 return btn;
682         }
683         return NULL;
684 }
685
686 /******************************
687 ** Prototype    : __mf_ug_genlist_get_gl_icon
688 ** Description  : Samsung
689 ** Input        : const void *data
690 **                Evas_Object *obj
691 **                const char *part
692 ** Output       : None
693 ** Return Value :
694 ** Calls        :
695 ** Called By    :
696 **
697 **  History        :
698 **  1.Date         : 2010/12/10
699 **    Author       : Samsung
700 **    Modification : Created function
701 **
702 ******************************/
703 static Evas_Object *__mf_ug_genlist_get_gl_icon(void *data, Evas_Object *obj, const char *part)
704 {
705         UG_TRACE_BEGIN;
706         Evas_Object *thumb = NULL, *ic_memory = NULL;
707         Evas_Object *layout = NULL;
708         Evas_Object *selected_box = NULL;
709
710         mf_ug_storage_type is_in_mmc = 0;
711         ugListItemData *listItemData = (ugListItemData *)data;
712         ug_mf_retv_if(listItemData == NULL, NULL);
713         ugData *ugd = listItemData->ug_pData;
714         ug_mf_retv_if(ugd == NULL, NULL);
715
716         if (!strcmp(part, "elm.icon")) {
717                 __mf_ug_genlist_get_thumbnail(listItemData);
718                 thumb = __mf_ug_genlist_create_thumbnail(listItemData, obj);
719                 layout = elm_layout_add(obj);
720                 elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, UG_GRP_LIST);
721                 elm_object_part_content_set(layout, "swallow_thumb", thumb);
722
723                 mf_ug_file_attr_get_store_type_by_full(listItemData->ug_pItemName->str, &is_in_mmc);
724                 if (is_in_mmc == MF_UG_MMC) {
725                         ic_memory = __mf_ug_genlist_create_mmc_icon(obj);
726                         elm_object_part_content_set(layout, "myfile.memory_icon.sub", ic_memory);
727                 }
728                 UG_TRACE_END;
729                 return layout;
730         } else if (!strcmp(part, "elm.icon.1")) {
731                 if (ugd->ug_UiGadget.ug_pMultiSelectFileList) {
732                         if (__mf_ug_genlist_is_file_marked(ugd->ug_UiGadget.ug_pMultiSelectFileList, listItemData->ug_pItemName)) {
733                                 listItemData->ug_bChecked = true;
734                         }
735                 }
736                 if (ecore_file_is_dir(listItemData->ug_pItemName->str)) {
737                         if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_ALL_MODE) {
738                                 selected_box = __mf_ug_genlist_add_checkbox(listItemData, obj);
739                         } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE) {
740                                 selected_box = __mf_ug_genlist_add_radio_box(listItemData, obj);
741                         }
742                 } else {
743                         if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE
744                             || ugd->ug_UiGadget.ug_iSelectMode == MULTI_ALL_MODE
745                             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE
746                             || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE) {
747                                 selected_box = __mf_ug_genlist_add_checkbox(listItemData, obj);
748                         } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE
749                                    || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE
750                                    || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
751
752                                 selected_box = __mf_ug_genlist_add_radio_box(listItemData, obj);
753                         }
754                 }
755                 evas_object_propagate_events_set(selected_box, EINA_FALSE);
756                 return selected_box;
757         } else if (!strcmp(part, "elm.icon.2")) {
758                 __mf_ug_genlist_get_thumbnail(listItemData);
759                 thumb = __mf_ug_genlist_create_thumbnail(listItemData, obj);
760                 return thumb;
761         } else if (!strcmp(part, "elm.icon.3")) {
762 #ifdef LIST_PLAY_SUPPORT
763                 if (!ecore_file_is_dir(listItemData->ug_pItemName->str)) {
764                         Evas_Object *music_icon = NULL;
765                         Evas_Object *music_button = NULL;
766                         mf_ug_launch_type launch_type = mf_ug_util_get_file_launch_type(listItemData->ug_pItemName->str);
767                         ug_error("item name is [%s]", listItemData->ug_pItemName->str);
768                         if (launch_type == LAUNCH_TYPE_MUSIC) {
769                                 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, listItemData->ug_pItemName->str) == 0) {
770                                         char *play_icon = NULL;
771                                         char *pause_icon = NULL;
772
773                                         music_button = elm_button_add(obj);
774                                         elm_object_style_set(music_button, "circle/empty");
775
776                                         music_icon = elm_image_add(music_button);
777                                         if (ugd->ug_ListPlay.ug_pPlayFilePath) {
778                                                 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, listItemData->ug_pItemName->str) == 0) {
779                                                         if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING) {
780                                                                 pause_icon = strdup(UG_ICON_MUSIC_PAUSE_WHITE);
781                                                                 elm_image_file_set(music_icon, pause_icon, NULL);
782                                                         } else if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
783                                                                 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
784                                                                 elm_image_file_set(music_icon, play_icon, NULL);
785                                                         } else {
786                                                                 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
787                                                                 elm_image_file_set(music_icon, play_icon, NULL);
788                                                         }
789                                                 } else {
790                                                         play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
791                                                         elm_image_file_set(music_icon, play_icon, NULL);
792                                                 }
793                                         } else {
794                                                 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
795                                                 elm_image_file_set(music_icon, play_icon, NULL);
796                                         }
797                                         evas_object_size_hint_aspect_set(music_icon, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
798                                         elm_object_part_content_set(music_button, "icon", music_icon);
799                                         evas_object_propagate_events_set(music_button, EINA_FALSE);
800                                         evas_object_smart_callback_add(music_button, "clicked", (Evas_Smart_Cb)mf_ug_cb_list_play_cb, (void*)listItemData);
801                                         evas_object_smart_callback_add(music_button, "pressed", mf_ug_cb_play_button_pressed_cb, ugd);
802                                         evas_object_smart_callback_add(music_button, "unpressed", mf_ug_cb_play_button_unpressed_cb, ugd);
803                                         listItemData->ug_pPlaybtn = music_button;
804                                         UG_TRACE_END;
805                                         return music_button;
806                                 }
807                         }
808                 }
809 #endif
810                 UG_TRACE_END;
811
812                 return NULL;
813
814         } else {
815                 UG_TRACE_END;
816                 return NULL;
817         }
818 }
819
820 static Evas_Object *__mf_ug_genlist_get_gl_editfiled_icon(void *data, Evas_Object *obj, const char *part)
821 {
822         ugListItemData *listItemData = (ugListItemData *)data;
823         ug_mf_retv_if(listItemData == NULL, NULL);
824         ugData *ugd = listItemData->ug_pData;
825         ug_mf_retv_if(ugd == NULL, NULL);
826
827         ug_debug("listItemData is [%p]", listItemData);
828
829         if (!strcmp(part, "elm.icon")) {
830                 Evas_Object *button = NULL;
831                 button = elm_button_add(obj);
832                 evas_object_propagate_events_set(button, EINA_FALSE);
833                 elm_object_text_set(button, MF_UG_LABEL_GO_TO_MYFILES);
834                 evas_object_smart_callback_add(button, "clicked", mf_ug_cb_goto_myfile_button_cb, ugd);
835                 if(listItemData->ug_pItem)
836                         elm_genlist_item_select_mode_set(listItemData->ug_pItem, ELM_OBJECT_SELECT_MODE_NONE);
837                 return button;
838         }
839         return NULL;
840 }
841
842 /******************************
843 ** Prototype    : __mf_ug_genlist_get_gl_state
844 ** Description  :
845 ** Input        : const void *data
846 **                Evas_Object *obj
847 **                const char *part
848 ** Output       : None
849 ** Return Value :
850 ** Calls        :
851 ** Called By    :
852 **
853 **  History        :
854 **  1.Date         : 2010/12/10
855 **    Author       : Samsung
856 **    Modification : Created function
857 **
858 ******************************/
859 static Eina_Bool __mf_ug_genlist_get_gl_state(void *data, Evas_Object *obj, const char *part)
860 {
861         return EINA_FALSE;
862 }
863
864
865 /******************************
866 ** Prototype    : __mf_ug_genlist_del_gl
867 ** Description  :
868 ** Input        : const void *data
869 **                Evas_Object *obj
870 ** Output       : None
871 ** Return Value :
872 ** Calls        :
873 ** Called By    :
874 **
875 **  History        :
876 **  1.Date         : 2010/12/10
877 **    Author       : Samsung
878 **    Modification : Created function
879 **
880 ******************************/
881 static void __mf_ug_genlist_del_gl(void *data, Evas_Object *obj)
882 {
883         UG_TRACE_BEGIN;
884         ugListItemData *itemData = (ugListItemData *)data;
885         ug_mf_retm_if(itemData == NULL, "itemData is NULL");
886         if (itemData->ug_pItemName && itemData->ug_pItemName->str) {
887                 g_string_free(itemData->ug_pItemName, TRUE);
888                 itemData->ug_pItemName = NULL;
889         }
890         if (itemData->ug_pThumbPath) {
891                 free(itemData->ug_pThumbPath);
892                 itemData->ug_pThumbPath = NULL;
893         }
894         free(itemData);
895         itemData = NULL;
896         UG_TRACE_END;
897         return;
898 }
899
900
901
902 /******************************
903 ** Prototype    : mf_ug_genlist_selected_gl
904 ** Description  : Samsung
905 ** Input        : void *data
906 **                Evas_Object *obj
907 **                void *event_info
908 ** Output       : None
909 ** Return Value :
910 ** Calls        :
911 ** Called By    :
912 **
913 **  History        :
914 **  1.Date         : 2010/12/10
915 **    Author       : Samsung
916 **    Modification : Created function
917 **
918 ******************************/
919
920 void mf_ug_genlist_selected_gl(void *data, Evas_Object *obj, void *event_info)
921 {
922         UG_TRACE_BEGIN;
923         ugData *ugd = (ugData *)data;
924         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
925
926         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
927         int error_code = 0;
928         int mmc_card = 0;
929         error_code = mf_ug_util_get_mmc_state(&mmc_card);
930
931         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
932         if (item != NULL) {
933                 ugListItemData *selected = (ugListItemData *)elm_object_item_data_get(item);
934                 fprintf(stdout, "selected text %s\n", (char *)selected->ug_pItemName->str);
935                 elm_genlist_item_selected_set(item, EINA_FALSE);
936                 if (ugd->ug_Status.ug_b_NaviPushFlag)
937                         return;
938                 if (!ecore_file_is_dir(selected->ug_pItemName->str)) {
939
940                         if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {
941                                 return;
942                         }
943                         if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE) {
944                                 mf_ug_launch_type launch_type = mf_ug_util_get_file_launch_type(selected->ug_pItemName->str);
945                                 if (launch_type == LAUNCH_TYPE_MUSIC) {
946                                         if (ugd->ug_Status.play_timer == NULL) {
947                                                 ug_error(">>>>>>>>>>>>>> entry list play");
948                                                 ugd->ug_Status.play_timer = ecore_timer_add(MF_UG_LIST_PLAY_TIME_OUT, (Ecore_Task_Cb)__mf_ug_list_play_timer_cb, selected);
949                                         } else {
950                                                 ug_error(">>>>>>>>>>>>>> Faild entry list play");
951
952                                         }
953                                 } else {
954                                         if (elm_radio_value_get(ugd->ug_MainWindow.ug_pRadioGroup) != selected->ug_iGroupValue) {
955                                                 ugd->ug_Status.ug_iRadioOn = selected->ug_iGroupValue;
956                                                 selected->ug_bChecked = true;
957                                                 elm_radio_value_set(ugd->ug_MainWindow.ug_pRadioGroup, selected->ug_iGroupValue);
958                                         }
959                                 }
960
961
962                         } else {
963                                 if (selected->ug_bChecked == 0) {
964                                         selected->ug_bChecked = 1;
965                                 } else {
966                                         selected->ug_bChecked = 0;
967                                 }
968                                 elm_check_state_set(selected->ug_pCheckBox, selected->ug_bChecked);
969
970                                 if (selected->ug_bChecked) {
971                                         ugd->ug_Status.ug_iCheckedCount++;
972                                 } else {
973                                         ugd->ug_Status.ug_iCheckedCount--;
974                                 }
975                                 if (ugd->ug_MainWindow.ug_pSelectAllCheckBox) {
976                                         if (ugd->ug_Status.ug_iTotalCount == ugd->ug_Status.ug_iCheckedCount) {
977                                                 ugd->ug_Status.ug_bSelectAllChecked = EINA_TRUE;
978                                         } else {
979                                                 ugd->ug_Status.ug_bSelectAllChecked = EINA_FALSE;
980                                         }
981                                         elm_check_state_pointer_set(ugd->ug_MainWindow.ug_pSelectAllCheckBox, &ugd->ug_Status.ug_bSelectAllChecked);
982                                 }
983                                 __mf_ug_genlist_show_select_info(selected);
984                         }
985                 } else if (ecore_file_is_dir(selected->ug_pItemName->str) && strcmp(selected->ug_pItemName->str, "Upper Level")) {
986                         if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING || ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
987                                 mf_ug_list_play_destory_playing_file(ugd);
988                                 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
989                         }
990                         if (ugd->ug_Status.ug_pPath) {
991                                 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
992                                 ugd->ug_Status.ug_pPath = NULL;
993                         }
994                         ugd->ug_Status.ug_pPath = g_string_new(selected->ug_pItemName->str);
995                         ugd->ug_Status.ug_b_NaviPushFlag = true;
996
997                         if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
998                                 ugd->ug_Status.ug_iViewType = mf_ug_view_normal;
999                                 mf_ug_cb_tab_bar_cb(ugd, selected->ug_pItemName->str);
1000                         } else {
1001                                 if (pNavi_s->ug_pCurrentPath != NULL) {
1002                                         free(pNavi_s->ug_pCurrentPath);
1003                                         pNavi_s->ug_pCurrentPath = NULL;
1004                                 }
1005                                 pNavi_s->ug_pCurrentPath = strdup(selected->ug_pItemName->str);
1006                                 mf_ug_navi_bar_create_default_view(ugd);
1007                         }
1008                 }
1009
1010                 mf_ug_ctrl_bar_set_item_disable(ugd);
1011         }
1012         UG_TRACE_END;
1013 }
1014
1015
1016 static Evas_Object *__mf_ug_genlist_create_editfield(Evas_Object *parent, Evas_Object **pEntry)
1017 {
1018         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
1019
1020         Evas_Object *layout = elm_layout_add(parent);
1021         elm_layout_theme_set(layout, "layout", "editfield", "default");
1022         Evas_Object *entry = elm_entry_add(parent);
1023         elm_object_part_content_set(layout, "elm.swallow.content", entry);
1024         *pEntry = entry;
1025         return layout;
1026 }
1027
1028 static Evas_Object *__mf_ug_genlist_gl_new_folder_icon_get(void *data, Evas_Object * obj, const char *part)
1029 {
1030         UG_TRACE_BEGIN;
1031         ugData *ugd = (ugData *)data;
1032         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
1033
1034         if (!strcmp(part, "elm.icon")) {
1035                 int error_code = 0;
1036                 char *fileName = NULL;
1037                 char *fullpath = (char *)malloc(sizeof(char) * MYFILE_FILE_PATH_LEN_MAX);
1038                 if (fullpath == NULL) {
1039                         return NULL;
1040                 }
1041                 GString *dest_fullpath;
1042                 static Elm_Entry_Filter_Limit_Size limit_filter;
1043                 Evas_Object *entry = NULL;
1044
1045                 Evas_Object *edit_field = __mf_ug_genlist_create_editfield(obj, &entry);
1046
1047                 elm_entry_single_line_set(entry, EINA_TRUE);
1048                 elm_entry_scrollable_set(entry, EINA_TRUE);
1049
1050                 elm_object_signal_emit(edit_field, "elm,state,eraser,show", "elm");
1051
1052                 evas_object_size_hint_weight_set(edit_field, 1, 1);
1053                 evas_object_size_hint_align_set(edit_field, 1, 0.5);
1054                 //evas_object_show(edit_field);
1055                 ugd->ug_MainWindow.ug_pEditField = edit_field;
1056
1057                 ugd->ug_MainWindow.ug_pEntry = entry;
1058
1059                 limit_filter.max_char_count = MYFILE_FILE_NAME_LEN_MAX;
1060                 limit_filter.max_byte_count = 0;
1061
1062                 memset(fullpath, 0, MYFILE_FILE_PATH_LEN_MAX);
1063                 fileName = elm_entry_markup_to_utf8(MF_UG_LABEL_FOLDER);
1064                 snprintf(fullpath, (MYFILE_FILE_PATH_LEN_MAX), "%s/%s", (char *)ugd->ug_Status.ug_pPath->str, fileName);
1065
1066                 dest_fullpath = g_string_new(fullpath);
1067
1068                 elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter);
1069                 evas_object_smart_callback_add(entry, "maxlength,reached", mf_ug_cb_reach_max_len_cb, ugd);
1070
1071                 if (mf_ug_fm_svc_wrapper_detect_duplication(dest_fullpath)) {
1072                         ug_debug("dectetion result is TRUE\ndest_fullpath is %s\n", dest_fullpath->str);
1073                         error_code = mf_ug_fm_svc_wrapper_file_auto_rename(ugd, dest_fullpath, FILE_NAME_WITH_BRACKETS, &dest_fullpath);
1074                         ug_debug("rename result is %s\n", dest_fullpath->str);
1075                         memset(fullpath, 0, strlen(fullpath));
1076                         int len = strlen(ugd->ug_Status.ug_pPath->str) + 1;
1077                         strncpy(fullpath, dest_fullpath->str + len, MYFILE_FILE_PATH_LEN_MAX);
1078                         /*memset(fileName,0,strlen(fileName));*/
1079
1080                         UG_SAFE_FREE_CHAR(fileName);
1081                         fileName = elm_entry_markup_to_utf8(fullpath);
1082                 }
1083
1084                 /*elm_entry_entry_set(entry, ecore_file_file_get(params->m_ItemName->str));*/
1085
1086                 elm_object_signal_callback_add(edit_field, "elm,eraser,clicked", "elm", mf_ug_cb_eraser_clicked_cb, entry);
1087
1088                 evas_object_show(entry);
1089                 elm_object_focus_set(entry, EINA_TRUE);
1090
1091                 elm_entry_entry_set(entry, fileName);
1092                 elm_entry_cursor_end_set(entry);
1093                 UG_SAFE_FREE_CHAR(fullpath);
1094                 UG_SAFE_FREE_GSTRING(dest_fullpath);
1095                 UG_SAFE_FREE_CHAR(fileName);
1096                 return edit_field;
1097         }
1098         return NULL;
1099 }
1100
1101 Evas_Object *mf_ug_genlist_create_list_new_folder_style(void *data)
1102 {
1103
1104         UG_TRACE_BEGIN;
1105         ugData *ugd = (ugData *)data;
1106         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
1107
1108         Evas_Object *genlist = NULL;
1109         Evas_Object *pNaviBar = NULL;
1110
1111         pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
1112
1113         genlist = elm_genlist_add(pNaviBar);
1114         elm_object_focus_set(genlist, EINA_FALSE);
1115
1116         ugd->ug_Status.ug_newfolderitec.item_style = "1icon";
1117         ugd->ug_Status.ug_newfolderitec.func.text_get = NULL;
1118         ugd->ug_Status.ug_newfolderitec.func.content_get = __mf_ug_genlist_gl_new_folder_icon_get;
1119         ugd->ug_Status.ug_newfolderitec.func.state_get = NULL;
1120         ugd->ug_Status.ug_newfolderitec.func.del = NULL;
1121
1122         Elm_Object_Item *it = elm_genlist_item_append(genlist, &ugd->ug_Status.ug_newfolderitec, ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1123         elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_NONE);
1124         return genlist;
1125 }
1126
1127 /******************************
1128 ** Prototype    : __mf_ug_genlist_create_gl
1129 ** Description  : Samsung
1130 ** Input        : void *data
1131 ** Output       : None
1132 ** Return Value :
1133 ** Calls        :
1134 ** Called By    :
1135 **
1136 **  History        :
1137 **  1.Date         : 2010/12/10
1138 **    Author       : Samsung
1139 **    Modification : Created function
1140 **
1141 ******************************/
1142 Evas_Object *__mf_ug_genlist_create_gl(void *data)
1143 {
1144
1145         UG_TRACE_BEGIN;
1146         ugData *ugd = (ugData *)data;
1147         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
1148
1149         ugNaviBar *pNaviInUse = mf_ug_navi_bar_get_in_use_navi(ugd);
1150         ug_mf_retvm_if(pNaviInUse == NULL, NULL, "pNaviInUse is NULL");
1151
1152         Evas_Object *genlist;
1153         genlist = elm_genlist_add(ugd->ug_MainWindow.ug_pNaviBar);
1154         evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1155         evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
1156
1157         evas_object_smart_callback_add(genlist, "selected", mf_ug_genlist_selected_gl, ugd);
1158
1159 #ifdef  UG_THUMB_REAL_TIME_UPDATE
1160         if (ugd->ug_Status.ug_pThumbUpdateTimer != NULL) {
1161                 ecore_timer_del(ugd->ug_Status.ug_pThumbUpdateTimer);
1162                 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;
1163         }
1164 #endif
1165
1166         ugd->ug_Status.ug_itc.item_style = "1text.3icon";
1167         ugd->ug_Status.ug_itc.func.text_get = __mf_ug_genlist_get_gl_label;
1168         ugd->ug_Status.ug_itc.func.content_get = __mf_ug_genlist_get_gl_icon;
1169         ugd->ug_Status.ug_itc.func.state_get = __mf_ug_genlist_get_gl_state;
1170         ugd->ug_Status.ug_itc.func.del = __mf_ug_genlist_del_gl;
1171
1172         if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||
1173             ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||
1174             ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE ||
1175             ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
1176             ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||
1177             ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE ||
1178             ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
1179                 ugd->ug_Status.ug_normalitc.item_style = "1text.1icon.2";
1180                 ugd->ug_Status.ug_normalitc.func.text_get = __mf_ug_genlist_get_gl_label;
1181                 ugd->ug_Status.ug_normalitc.func.content_get = __mf_ug_genlist_get_gl_icon;
1182                 ugd->ug_Status.ug_normalitc.func.state_get = __mf_ug_genlist_get_gl_state;
1183                 ugd->ug_Status.ug_normalitc.func.del = __mf_ug_genlist_del_gl;
1184         }
1185
1186         UG_TRACE_END;
1187
1188         return genlist;
1189 }
1190
1191
1192 /******************************
1193 ** Prototype    : __mf_ug_genlist_init_item_data
1194 ** Description  : Samsung
1195 ** Input        : void *data
1196 **                ugListItemData **itemData
1197 **                char *fullname
1198 ** Output       : None
1199 ** Return Value :
1200 ** Calls        :
1201 ** Called By    :
1202 **
1203 **  History        :
1204 **  1.Date         : 2010/12/10
1205 **    Author       : Samsung
1206 **    Modification : Created function
1207 **
1208 ******************************/
1209 static void __mf_ug_genlist_init_item_data(void *data, ugListItemData **itemData, char *fullname)
1210 {
1211
1212         UG_TRACE_BEGIN;
1213         ugData *ugd = (ugData *)data;
1214         ugListItemData **ug_ItemData = itemData;
1215         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
1216         ug_mf_retm_if(ug_ItemData == NULL, "ug_ItemData is NULL");
1217
1218         *ug_ItemData = (ugListItemData *)malloc(sizeof(ugListItemData));
1219         if (*ug_ItemData == NULL) {
1220                 ug_debug("ug_ItemData malloc failed");
1221         } else {
1222                 memset(*ug_ItemData, 0, sizeof(ugListItemData));
1223                 if (fullname) {
1224                         (*ug_ItemData)->ug_pItemName = g_string_new(fullname);
1225                 } else {
1226                         (*ug_ItemData)->ug_pItemName = NULL;
1227                 }
1228                 (*ug_ItemData)->ug_bChecked = false;
1229                 (*ug_ItemData)->ug_pRadioBox = NULL;
1230                 (*ug_ItemData)->ug_pCheckBox = NULL;
1231                 (*ug_ItemData)->ug_pPlaybtn = NULL;
1232                 (*ug_ItemData)->ug_iGroupValue = 0;
1233                 (*ug_ItemData)->ug_pItem = NULL;
1234                 (*ug_ItemData)->ug_pThumbPath = NULL;
1235                 (*ug_ItemData)->ug_bRealThumbFlag = false;
1236                 (*ug_ItemData)->ug_pData = ugd;
1237         }
1238         UG_TRACE_END;
1239 }
1240
1241 /******************************
1242 ** Prototype    : mf_ug_genlist_create_content_list_view
1243 ** Description  : Samsung
1244 ** Input        : void *data
1245 ** Output       : None
1246 ** Return Value :
1247 ** Calls        :
1248 ** Called By    :
1249 **
1250 **  History        :
1251 **  1.Date         : 2010/12/10
1252 **    Author       : Samsung
1253 **    Modification : Created function
1254 **
1255 ******************************/
1256 void mf_ug_genlist_upper_style_set(void *data)
1257 {
1258         ug_mf_retm_if(data == NULL, "data is NULL");
1259         ugData *ugd = (ugData *)data;
1260         ugd->ug_Status.ug_topitc.item_style = "1text.1icon.2";
1261         ugd->ug_Status.ug_topitc.func.text_get = __mf_ug_genlist_get_gl_label;
1262         ugd->ug_Status.ug_topitc.func.content_get = __mf_ug_genlist_gl_upper_icon_get;
1263         ugd->ug_Status.ug_topitc.func.state_get = __mf_ug_genlist_get_gl_state;
1264         ugd->ug_Status.ug_topitc.func.del = __mf_ug_genlist_del_gl;
1265 }
1266
1267 void mf_ug_genlist_goto_myfile_style_set(void *data)
1268 {
1269         ug_mf_retm_if(data == NULL, "data is NULL");
1270         ugData *ugd = (ugData *)data;
1271         ugd->ug_Status.ug_editfileditc.item_style = "1icon";
1272         ugd->ug_Status.ug_editfileditc.func.text_get = NULL;
1273         ugd->ug_Status.ug_editfileditc.func.content_get = __mf_ug_genlist_get_gl_editfiled_icon;
1274         ugd->ug_Status.ug_editfileditc.func.state_get = NULL;
1275         ugd->ug_Status.ug_editfileditc.func.del = __mf_ug_genlist_del_gl;
1276
1277         ugd->ug_Status.ug_editfiledBottomSeperatoritc.item_style = "dialogue/separator/11/with_line";
1278         ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.text_get = NULL;
1279         ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.content_get = NULL;
1280         ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.state_get = NULL;
1281         ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.del = NULL;
1282
1283         ugd->ug_Status.ug_editfiledUpperSeperatoritc.item_style = "dialogue/separator/10";
1284         ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.text_get = NULL;
1285         ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.content_get = NULL;
1286         ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.state_get = NULL;
1287         ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.del = NULL;
1288
1289 }
1290
1291 Evas_Object *mf_navi_bar_upper_create(Evas_Object *parent)
1292 {
1293         UG_TRACE_BEGIN;
1294         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
1295
1296         Evas_Object *upper_genlist = NULL;
1297         upper_genlist = elm_genlist_add(parent);
1298         ug_mf_retvm_if(upper_genlist == NULL, NULL, "upper_genlist is NULL");
1299         elm_object_focus_set(upper_genlist, EINA_FALSE);
1300         evas_object_size_hint_weight_set(upper_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1301         evas_object_size_hint_align_set(upper_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
1302         elm_scroller_bounce_set(upper_genlist, EINA_FALSE, EINA_FALSE);
1303         evas_object_show(upper_genlist);
1304         UG_TRACE_END;
1305         return upper_genlist;
1306
1307 }
1308
1309
1310 void mf_ug_upper_genlist_item_append(Evas_Object *pGenlist, void *data)
1311 {
1312         ug_mf_retm_if(data == NULL, "data is NULL");
1313         ug_mf_retm_if(pGenlist == NULL, "pGenlist is NULL");
1314         ugData *ugd = (ugData *)data;
1315
1316         Elm_Object_Item *item = NULL;
1317
1318         ugd->ug_Status.ug_topitc.item_style = "dialogue/bg/2icon";
1319         ugd->ug_Status.ug_topitc.func.text_get = NULL;
1320         ugd->ug_Status.ug_topitc.func.content_get = __mf_ug_genlist_upper_icon_get;
1321         ugd->ug_Status.ug_topitc.func.state_get = NULL;
1322         ugd->ug_Status.ug_topitc.func.del = NULL;
1323         ugd->ug_Status.ug_separtor_no_bottom_line_itc.item_style = "dialogue/seperator.4";
1324         ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.text_get = NULL;
1325         ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.content_get = NULL;
1326         ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.state_get = NULL;
1327         ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.del = NULL;
1328
1329         ugd->ug_Status.ug_separtor_with_bottom_line_itc.item_style = "dialogue/seperator.2";
1330         ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.text_get = NULL;
1331         ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.content_get = NULL;
1332         ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.state_get = NULL;
1333         ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.del = NULL;
1334
1335         // separator with no bottom line
1336         item = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_separtor_no_bottom_line_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1337
1338         elm_genlist_item_select_mode_set(item,  ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1339
1340         // button for dialogue item (dialogue bg)
1341         elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_topitc, (void *) ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1342
1343         // separator with bottom line
1344         item = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_separtor_with_bottom_line_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1345         elm_genlist_item_select_mode_set(item,  ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1346 }
1347
1348 void mf_ug_genlist_goto_myfile_item_append(Evas_Object *pGenlist, void *data)
1349 {
1350         ug_mf_retm_if(pGenlist == NULL, "pGenlist is NULL");
1351         ug_mf_retm_if(data == NULL, "data is NULL");
1352         ugData *ugd = (ugData *)data;
1353
1354         ugListItemData *ug_ItemData;
1355         Elm_Object_Item *it = NULL;
1356
1357         __mf_ug_genlist_init_item_data(ugd, &ug_ItemData, NULL);
1358         ug_debug("ug_ItemData is [%p]", &ug_ItemData);
1359
1360         //it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfiledUpperSeperatoritc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL,
1361         //                           NULL);
1362         //elm_genlist_item_select_mode_set(it,  ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1363
1364         it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfileditc, ug_ItemData, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1365         ug_ItemData->ug_pItem = it;
1366         //elm_genlist_item_select_mode_set(it,  ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1367
1368         //it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfiledBottomSeperatoritc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL,
1369         //                           NULL);
1370         //elm_genlist_item_select_mode_set(it,  ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1371 }
1372
1373 Elm_Object_Item *mf_ug_genlist_item_append(Evas_Object *parent,
1374                                       ugFsNodeInfo *pNode,
1375                                       void *data,
1376                                       int groudValue,
1377                                       Elm_Genlist_Item_Class *itc)
1378 {
1379         ug_mf_retvm_if(parent == NULL, NULL, "pGenlist is NULL");
1380         ug_mf_retvm_if(pNode == NULL, NULL, "pNode is NULL");
1381         ug_mf_retvm_if(data == NULL, NULL, "data is NULL");
1382         ug_mf_retvm_if(itc == NULL, NULL, "itc is NULL");
1383
1384         ugData *ugd = (ugData *)data;
1385         ugListItemData *ug_ItemData = NULL;
1386         Elm_Object_Item *it = NULL;
1387         char *real_name = NULL;
1388
1389         real_name = g_strconcat(pNode->path, "/", pNode->name, NULL);
1390         __mf_ug_genlist_init_item_data(ugd, &ug_ItemData, real_name);
1391         if (ug_ItemData == NULL) {
1392                 ug_debug("alloc memory error\n");
1393                 if (real_name) {
1394                         free(real_name);
1395                         real_name = NULL;
1396                 }
1397                 return NULL;
1398         }
1399
1400         if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
1401                 if(g_strcmp0(real_name, PHONE_FOLDER) == 0) {
1402                         ug_ItemData->ug_pThumbPath = strdup(UG_ICON_ITEM_PHONE);
1403                         ug_ItemData->ug_bRealThumbFlag = true;
1404
1405                 } else if(g_strcmp0(real_name, MEMORY_FOLDER) == 0) {
1406                         ug_ItemData->ug_pThumbPath = strdup(UG_ICON_ITEM_MMC);
1407                         ug_ItemData->ug_bRealThumbFlag = true;
1408                 }
1409         }
1410
1411         ug_ItemData->ug_iGroupValue = groudValue;
1412         if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
1413                 if (__mf_ug_genlist_is_file_marked(ugd->ug_UiGadget.ug_pMultiSelectFileList, ug_ItemData->ug_pItemName)) {
1414                         ug_ItemData->ug_bChecked = true;
1415                         ugd->ug_Status.ug_iRadioOn = ug_ItemData->ug_iGroupValue;
1416                 }
1417         }
1418         it = elm_genlist_item_append(parent, itc, ug_ItemData, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1419         ug_ItemData->ug_pItem = it;
1420
1421         if (real_name) {
1422                 free(real_name);
1423                 real_name = NULL;
1424         }
1425
1426         return  it;
1427 }
1428
1429 Evas_Object *mf_ug_genlist_create_content_list_view(void *data)
1430 {
1431         UG_TRACE_BEGIN;
1432         ugData *ugd = (ugData *)data;
1433         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
1434         ugNaviBar *pNaviInUse = mf_ug_navi_bar_get_in_use_navi(ugd);
1435         ug_mf_retvm_if(pNaviInUse == NULL, NULL, "pNaviInUse is NULL");
1436
1437         Evas_Object *genlist;
1438         int error_code = 0;
1439         Eina_List *dir_list = NULL;
1440         Eina_List *file_list = NULL;
1441         Elm_Object_Item *it = NULL;
1442         int groupValue = 1;
1443         int count = 0;
1444
1445         ugListItemData *ug_ItemData;
1446
1447         ugd->ug_Status.ug_iRadioOn = 0;
1448         ugd->ug_Status.ug_bNoContentFlag = false;
1449
1450
1451         GString *fullpath = g_string_new(ugd->ug_Status.ug_pPath->str);
1452
1453
1454
1455         if (ugd->ug_Status.ug_iViewType == mf_ug_view_root && ugd->ug_Status.ug_iMore != UG_MORE_SEARCH) {
1456                 mf_ug_util_generate_root_view_file_list(&dir_list, ugd->ug_Status.ug_iMmcFlag);
1457                 ugd->ug_UiGadget.ug_pDirList = dir_list;
1458                 ugd->ug_UiGadget.ug_pFilterList = NULL;
1459                 mf_ug_util_sort_the_file_list(ugd);
1460
1461         } else {
1462                 error_code = mf_ug_fm_svc_wapper_get_file_list_by_filter(ugd, fullpath, &dir_list, &file_list);
1463                 if (error_code == 0) {
1464
1465                         if (ugd->ug_UiGadget.ug_pDirList) {
1466                                 mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pDirList, NODE_TYPE_PNODE);
1467                                 ugd->ug_UiGadget.ug_pDirList = NULL;
1468                         }
1469                         if (ugd->ug_UiGadget.ug_pFilterList) {
1470                                 mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pFilterList, NODE_TYPE_PNODE);
1471                                 ugd->ug_UiGadget.ug_pFilterList = NULL;
1472                         }
1473
1474                         ugd->ug_UiGadget.ug_pFilterList = file_list;
1475                         ugd->ug_UiGadget.ug_pDirList = dir_list;
1476                         mf_ug_util_sort_the_file_list(ugd);
1477
1478                 }
1479
1480         }
1481
1482         /*      list option set */
1483         unsigned int dir_list_len = eina_list_count(dir_list);
1484         unsigned int filter_file_list_len = eina_list_count(ugd->ug_UiGadget.ug_pFilterList);
1485         ug_debug("error_code is [%d]dir_list_len is [%d]file_list_len is [%d]\n", error_code, dir_list_len, filter_file_list_len);
1486
1487
1488         if ((dir_list_len == 0 && filter_file_list_len == 0)) {
1489                 ug_debug("===========================================  create the no content view");
1490                 Evas_Object *nocontent = NULL;
1491
1492                 nocontent = elm_layout_add(ugd->ug_MainWindow.ug_pMainLayout);
1493                 elm_layout_theme_set(nocontent, "layout", "nocontents", "text");
1494                 elm_object_part_text_set(nocontent, "elm.text", MF_UG_LABEL_NO_FILES);
1495
1496                 ugd->ug_Status.ug_bNoContentFlag = true;
1497
1498
1499                 mf_ug_util_add_dir_watch(fullpath->str, ugd);
1500                 g_string_free(fullpath, true);
1501                 fullpath = NULL;
1502                 return nocontent;
1503         }
1504         
1505         genlist = __mf_ug_genlist_create_gl(ugd);
1506
1507         ugd->ug_MainWindow.ug_pNaviGenlist = genlist;
1508         ugFsNodeInfo *pNode = NULL;
1509         Eina_List *l = NULL;
1510
1511         EINA_LIST_FOREACH(ugd->ug_UiGadget.ug_pDirList, l, pNode) {
1512                 count++;
1513
1514
1515                 if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||
1516                     ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||
1517                     ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE ||
1518                     ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
1519                     ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||
1520                     ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE ||
1521                     ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
1522
1523                         mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);
1524                 } else {
1525                         mf_ug_genlist_item_append(genlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);
1526                         groupValue++;
1527                 }
1528         }
1529
1530         EINA_LIST_FOREACH(ugd->ug_UiGadget.ug_pFilterList, l, pNode) {
1531                 count++;
1532                 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
1533                         mf_ug_genlist_item_append(genlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);
1534                         groupValue++;
1535                 } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {
1536                         mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);
1537                 } else {
1538                         mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_itc);
1539                 }
1540 #if 0
1541                 if ((ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) && ug_ItemData->ug_bChecked) {
1542
1543                         if (ugd->ug_Status.ug_bUpperFlag ) {
1544                                 if (count > MF_UG_SELECTED_ITEM_BRING_UP_COUNT)
1545                                         elm_genlist_item_top_show(it);
1546                         } else {
1547                                 if (count > MF_UG_SELECTED_ITEM_BRING_UP_COUNT_MAX)
1548                                         elm_genlist_item_top_show(it);
1549                         }
1550                 }
1551 #endif
1552         }
1553
1554         if (fullpath != NULL) {
1555                 if ( ugd->ug_Status.ug_iViewType != mf_ug_view_root) {
1556                         mf_ug_util_add_dir_watch(fullpath->str, ugd);
1557                 }
1558                 g_string_free(fullpath, TRUE);
1559         }
1560         UG_TRACE_END;
1561         return genlist;
1562 }
1563
1564 static char *__get_title_gl_text(void *data, Evas_Object *obj, const char *part)
1565 {
1566         if (data)
1567                 return g_strdup((char *)data);
1568         else
1569                 return NULL;
1570 }
1571 static void __del_title_gl(void *data, Evas_Object * obj)
1572 {
1573         UG_SAFE_FREE_CHAR(data);
1574 }
1575
1576 Evas_Object *mf_ug_genlist_create_path_info(Evas_Object *parent, Elm_Genlist_Item_Class *itc, char *info)
1577 {
1578         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
1579
1580         Evas_Object *genlist = NULL;
1581         Elm_Object_Item *git=NULL;
1582
1583         genlist = elm_genlist_add(parent);
1584         elm_genlist_homogeneous_set(genlist, EINA_TRUE);
1585
1586         itc->item_style = "grouptitle";
1587         itc->func.text_get = __get_title_gl_text;
1588         itc->func.del = __del_title_gl;
1589
1590         git = elm_genlist_item_append(genlist, itc, info, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1591         elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1592
1593         return genlist;
1594 }
1595
1596 void mf_ug_genlist_item_remove(Evas_Object *parent, const char *path)
1597 {
1598         ug_debug("path is [%s]", path);
1599         ug_mf_retm_if(parent == NULL, "parent is NULL");
1600         ug_mf_retm_if(path == NULL, "path is NULL");
1601
1602         ugListItemData *itemData = NULL;
1603         Elm_Object_Item *it = NULL;
1604
1605         it = elm_genlist_first_item_get(parent);
1606         while (it) {
1607                 itemData = elm_object_item_data_get(it);
1608                 if (itemData->ug_pItemName == NULL || itemData->ug_pItemName->str == NULL) {
1609                         continue;
1610                 }
1611                 ug_debug("itemData->m_ItemName->str is [%s]", itemData->ug_pItemName->str);
1612                 if (g_strcmp0(path, itemData->ug_pItemName->str) == 0) {
1613                         elm_object_item_del(it);
1614                         break;
1615                 }
1616
1617                 it = elm_genlist_item_next_get(it);
1618         }
1619
1620 }
1621