2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://floralicense.org/license/
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.
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"
28 #define MF_UG_SELECTED_ITEM_BRING_UP_COUNT 7
29 #define MF_UG_SELECTED_ITEM_BRING_UP_COUNT_MAX 8
30 /******************************
31 ** Prototype : __mf_ug_genlist_is_file_marked
32 ** Description : Samsung
33 ** Input : Eina_List *source
41 ** 1.Date : 2010/12/10
43 ** Modification : Created function
45 ******************************/
46 static gboolean __mf_ug_genlist_is_file_marked(Eina_List *source, GString *path)
49 ug_mf_retvm_if(source == NULL, false, "source is NULL");
50 ug_mf_retvm_if(path == NULL, false, "path is NULL");
56 EINA_LIST_FOREACH(source, l, data) {
57 char *source_path = strdup(data);
58 if (source_path != NULL) {
59 if (strcmp(source_path, path->str) == 0) {
75 /******************************
76 ** Prototype : __mf_ug_genlist_set_marked_path
77 ** Description : Samsung
78 ** Input : Eina_List **source
86 ** 1.Date : 2010/12/10
88 ** Modification : Created function
90 ******************************/
91 static void __mf_ug_genlist_set_marked_path(Eina_List **source, GString *path)
94 bool file_exist_flag = false;
99 ug_mf_retm_if(source == NULL, "source is NULL");
100 ug_mf_retm_if(path == NULL, "path is NULL");
102 if (NULL == *source || eina_list_count(*source) == 0) {
103 *source = eina_list_append(*source, strdup(path->str));
106 EINA_LIST_FOREACH(*source, l, data) {
107 source_path = (char *)data;
108 if (source_path != NULL) {
109 if (strcmp(source_path, path->str) == 0) {
110 file_exist_flag = true;
115 if (file_exist_flag == true) {
116 *source = eina_list_remove(*source, source_path);
118 *source = eina_list_append(*source, strdup(path->str));
125 /******************************
126 ** Prototype : __mf_ug_genlist_create_checkbox
127 ** Description : Samsung
128 ** Input : Evas_Object *parent
135 ** 1.Date : 2010/12/10
137 ** Modification : Created function
139 ******************************/
140 static Evas_Object *__mf_ug_genlist_create_checkbox(Evas_Object *parent)
143 Evas_Object *ck_box = NULL;
145 ck_box = elm_check_add(parent);
146 evas_object_size_hint_weight_set(ck_box, 1.0, 1.0);
147 evas_object_size_hint_align_set(ck_box, -1.0, 0.5);
148 elm_check_state_set(ck_box, 0);
149 evas_object_show(ck_box);
150 evas_object_repeat_events_set(ck_box, 0);
155 static void __mf_ug_genlist_show_select_info(void *data)
158 ugListItemData *itemData = (ugListItemData *)data;
159 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
161 ugData *ugd = itemData->ug_pData;
162 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
164 int iDirCount = 0, iFileCount = 0;
165 Elm_Object_Item *it = NULL;
167 Evas_Object *pGenlist = ugd->ug_MainWindow.ug_pNaviGenlist;
169 it = elm_genlist_first_item_get(pGenlist);
171 itemData = elm_object_item_data_get(it);
172 if (itemData->ug_bChecked) {
173 if (ecore_file_is_dir(itemData->ug_pItemName->str)) {
180 it = elm_genlist_item_next_get(it);
183 count = iDirCount + iFileCount;
185 Evas_Object *notify_popup = NULL;
186 char lable_file[UG_LABEL_STRING_LENGTH] = { '\0', };
188 /*1 TODO: need to update for multi-language */
190 snprintf(lable_file, sizeof(lable_file), "%d", count);
191 label = g_strconcat(MF_UG_LABEL_SELECTED, "(", lable_file, ")", NULL);
192 notify_popup = mf_ug_navibar_create_notify_popup(itemData->ug_pData, ugd->ug_MainWindow.ug_pNaviLayout, label, false, NULL);
193 ugd->ug_MainWindow.ug_pSelectInfoLayout = notify_popup;
194 UG_SAFE_FREE_CHAR(label);
197 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSelectInfoLayout);
203 /******************************
204 ** Prototype : __mf_ug_genlist_checkbox_cb
205 ** Description : Samsung
206 ** Input : void *data
215 ** 1.Date : 2010/12/10
217 ** Modification : Created function
219 ******************************/
220 static void __mf_ug_genlist_checkbox_cb(void *data, Evas_Object *obj, void *event_info)
223 ugListItemData *itemData = (ugListItemData *)data;
224 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
225 ugData *ugd = (ugData *)itemData->ug_pData;
227 if (itemData->ug_bChecked == false) {
228 itemData->ug_bChecked = true;
230 itemData->ug_bChecked = false;
233 if (itemData->ug_pData->ug_UiGadget.ug_iMarkedMode == MARKED_ON) {
234 __mf_ug_genlist_set_marked_path(&itemData->ug_pData->ug_UiGadget.ug_pMultiSelectFileList, itemData->ug_pItemName);
236 if (itemData->ug_bChecked) {
237 ugd->ug_Status.ug_iCheckedCount++;
239 ugd->ug_Status.ug_iCheckedCount--;
241 if (ugd->ug_MainWindow.ug_pSelectAllCheckBox) {
242 if (ugd->ug_Status.ug_iTotalCount == ugd->ug_Status.ug_iCheckedCount) {
243 ugd->ug_Status.ug_bSelectAllChecked = EINA_TRUE;
245 ugd->ug_Status.ug_bSelectAllChecked = EINA_FALSE;
247 elm_check_state_pointer_set(ugd->ug_MainWindow.ug_pSelectAllCheckBox, &ugd->ug_Status.ug_bSelectAllChecked);
250 __mf_ug_genlist_show_select_info(itemData);
251 mf_ug_ctrl_bar_set_item_disable(itemData->ug_pData);
257 /******************************
258 ** Prototype : __mf_ug_genlist_create_radio_box
259 ** Description : Samsung
260 ** Input : Evas_Object *parent
261 ** ugListItemData *params
268 ** 1.Date : 2010/12/10
270 ** Modification : Created function
272 ******************************/
273 static Evas_Object *__mf_ug_genlist_create_radio_box(Evas_Object *parent, ugListItemData *params)
277 ugListItemData *itemData = (ugListItemData *)params;
278 ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
280 ugData *ugd = (ugData *)(itemData->ug_pData);
281 ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
283 Evas_Object *radio_box = NULL;
284 radio_box = elm_radio_add(parent);
285 elm_radio_state_value_set(radio_box, itemData->ug_iGroupValue);
286 elm_radio_group_add(radio_box, ugd->ug_MainWindow.ug_pRadioGroup);
287 elm_radio_value_set(ugd->ug_MainWindow.ug_pRadioGroup, ugd->ug_Status.ug_iRadioOn);
294 /******************************
295 ** Prototype : __mf_ug_genlist_radio_box_cb
296 ** Description : Samsung
297 ** Input : void *data
306 ** 1.Date : 2010/12/10
308 ** Modification : Created function
310 ******************************/
311 static void __mf_ug_genlist_radio_box_cb(void *data, Evas_Object *obj, void *event_info)
315 ugListItemData *itemData = (ugListItemData *)data;
316 ug_mf_retm_if(itemData == NULL, "ugListItemData is NULL");
318 itemData->ug_bChecked = true;
319 itemData->ug_pData->ug_Status.ug_iRadioOn = itemData->ug_iGroupValue;
320 elm_radio_value_set(itemData->ug_pData->ug_MainWindow.ug_pRadioGroup, itemData->ug_iGroupValue);
321 mf_ug_ctrl_bar_set_item_disable(itemData->ug_pData);
326 /******************************
327 ** Prototype : __mf_ug_genlist_get_gl_label
329 ** Input : const void *data
338 ** 1.Date : 2010/12/10
340 ** Modification : Created function
342 ******************************/
343 static char *__mf_ug_genlist_get_gl_label(void *data, Evas_Object *obj, const char *part)
346 ugListItemData *itemData = (ugListItemData *)data;
347 ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
349 if (strcmp(part, "elm.text") == 0) {
351 if (g_strcmp0(itemData->ug_pItemName->str, PHONE_FOLDER) == 0) {
352 return g_strdup(MF_UG_LABEL_PHONE);
353 } else if (g_strcmp0(itemData->ug_pItemName->str, MEMORY_FOLDER) == 0) {
354 return g_strdup(MF_UG_LABEL_MMC);
356 return strdup(ecore_file_file_get(itemData->ug_pItemName->str));
358 } else if (strcmp(part, "elm.uptitle.text") == 0) {
360 return strdup(("Upper Level"));
368 /******************************
369 ** Prototype : __mf_ug_genlist_get_thumbnail
370 ** Description : Samsung
371 ** Input : void *data
378 ** 1.Date : 2010/12/10
380 ** Modification : Created function
382 ******************************/
383 static void __mf_ug_genlist_get_thumbnail(void *data)
386 ugListItemData *itemData = (ugListItemData *)data;
387 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
389 const char *dir_icon_path = UG_ICON_FOLDER;
390 //const char *dir_create_icon_path = UG_ICON_FOLDER_CREATED;
391 char *icon_path = NULL;
392 int error_code = MYFILE_ERR_NONE;
393 int thumbnail_type = 0;
395 if (itemData->ug_pThumbPath == NULL) {
396 if (ecore_file_is_dir(itemData->ug_pItemName->str)) {
397 itemData->ug_pThumbPath = strdup(dir_icon_path);
398 itemData->ug_bRealThumbFlag = true;
400 thumbnail_type = mf_ug_file_attr_get_file_icon(itemData->ug_pItemName->str, &error_code, &icon_path);
402 itemData->ug_pThumbPath = strdup(icon_path);
403 itemData->ug_bRealThumbFlag = true;
406 } else { /*/must be image/video file */
408 mf_ug_fs_file_type type = UG_FILE_TYPE_NONE;
409 type = mf_ug_file_attr_get_file_type_by_mime(itemData->ug_pItemName->str);
411 if (type == UG_FILE_TYPE_VIDEO) {
412 itemData->ug_pThumbPath = strdup(UG_ICON_VIDEO);
413 } else if (type == UG_FILE_TYPE_IMAGE) {
414 itemData->ug_pThumbPath = strdup(UG_ICON_IMAGE);
416 itemData->ug_pThumbPath = strdup(UG_DEFAULT_ICON);
418 itemData->ug_bRealThumbFlag = false;
419 error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
422 } else if (itemData->ug_pThumbPath && ecore_file_exists(itemData->ug_pThumbPath)) {
423 if (itemData->ug_bRealThumbFlag == false) {
424 error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
426 } else if (!ecore_file_exists(itemData->ug_pThumbPath)) {
428 ug_debug("ug_pThumbPath[%s] is not exist", itemData->ug_pThumbPath);
429 free(itemData->ug_pThumbPath);
430 itemData->ug_pThumbPath = NULL;
431 /*/set default icon */
432 itemData->ug_pThumbPath = strdup(UG_DEFAULT_ICON);
433 itemData->ug_bRealThumbFlag = false;
434 error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
436 #ifdef UG_THUMB_REAL_TIME_UPDATE
437 /*/check if we need to add refresh timer */
438 if (error_code != 0 && itemData->ug_pData->ug_Status.ug_pThumbUpdateTimer == NULL) {
439 itemData->ug_pData->ug_Status.ug_pThumbUpdateTimer = ecore_timer_add(INTERVAL_THUMB_UPDATE, mf_ug_cb_thumb_timer_cb, itemData);
446 /******************************
447 ** Prototype : __mf_ug_genlist_create_thumbnail
448 ** Description : Samsung
449 ** Input : void *data
450 ** Evas_Object *parent
457 ** 1.Date : 2010/12/10
459 ** Modification : Created function
461 ******************************/
462 static Evas_Object *__mf_ug_genlist_create_thumbnail(void *data, Evas_Object *parent)
466 ugListItemData *itemData = (ugListItemData *)data;
467 ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
469 Evas_Object *thumb = NULL;
471 #ifdef USE_IMAGE_OBJECT
472 thumb = evas_object_image_add(evas_object_evas_get(parent));
474 thumb = elm_image_add(parent);
477 ug_debug("thumb is NULL");
480 #ifdef USE_IMAGE_OBJECT
481 int load_err = EVAS_LOAD_ERROR_NONE;
482 evas_object_image_file_set(thumb, itemData->ug_pThumbPath, NULL);
483 load_err = evas_object_image_load_error_get(thumb);
485 if (load_err != EVAS_LOAD_ERROR_NONE) {
486 evas_object_del(thumb);
489 evas_object_image_filled_set(thumb, EINA_TRUE);
492 elm_image_file_set(thumb, itemData->ug_pThumbPath, NULL);
500 /******************************
501 ** Prototype : __mf_ug_genlist_create_mmc_icon
502 ** Description : Samsung
503 ** Input : Evas_Object *parent
510 ** 1.Date : 2010/12/10
512 ** Modification : Created function
514 ******************************/
515 static Evas_Object *__mf_ug_genlist_create_mmc_icon(Evas_Object *parent)
518 Evas_Object *ic_memory = NULL;
519 const char *memory_icon_path = UG_ICON_MEMORY_SUB;
521 ic_memory = elm_image_add(parent);
522 elm_image_file_set(ic_memory, memory_icon_path, NULL);
523 evas_object_show(ic_memory);
530 /******************************
531 ** Prototype : __mf_ug_genlist_add_checkbox
532 ** Description : Samsung
533 ** Input : void *data
534 ** Evas_Object *parent
541 ** 1.Date : 2010/12/10
543 ** Modification : Created function
545 ******************************/
546 static Evas_Object *__mf_ug_genlist_add_checkbox(void *data, Evas_Object *parent)
549 ugListItemData *itemData = (ugListItemData *)data;
550 ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
552 Evas_Object *check_box = __mf_ug_genlist_create_checkbox(parent);
553 evas_object_propagate_events_set(check_box, 0);
555 elm_check_state_set(check_box, itemData->ug_bChecked);
557 itemData->ug_pCheckBox = check_box;
558 evas_object_smart_callback_add(check_box, "changed", __mf_ug_genlist_checkbox_cb, itemData);
566 /******************************
567 ** Prototype : __mf_ug_genlist_add_radio_box
568 ** Description : Samsung
569 ** Input : void *data
570 ** Evas_Object *parent
577 ** 1.Date : 2010/12/10
579 ** Modification : Created function
581 ******************************/
582 static Evas_Object *__mf_ug_genlist_add_radio_box(void *data, Evas_Object *parent)
585 ugListItemData *itemData = (ugListItemData *)data;
586 ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
588 Evas_Object *radio_box = __mf_ug_genlist_create_radio_box(parent, itemData);
590 evas_object_propagate_events_set(radio_box, 0);
591 itemData->ug_pRadioBox = radio_box;
592 evas_object_smart_callback_add(radio_box, "changed", __mf_ug_genlist_radio_box_cb, itemData);
599 static Evas_Object *__mf_ug_genlist_gl_upper_icon_get(void *data, Evas_Object * obj, const char *part)
602 ugListItemData *listItemData = (ugListItemData *)data;
604 ug_mf_retvm_if(listItemData == NULL, NULL, "listItemData is NULL");
605 ug_mf_retvm_if(listItemData->ug_pItemName == NULL, NULL, "m_ItemName is NULL");
606 ug_mf_retvm_if(part == NULL, NULL, "part is NULL");
607 ug_mf_retvm_if(obj == NULL, NULL, "obj is NULL");
609 Evas_Object *thumb = NULL;
610 if (!strcmp(part, "elm.icon")) {
611 thumb = elm_image_add(obj);
612 elm_object_focus_set(thumb, EINA_FALSE);
614 elm_image_file_set(thumb, listItemData->ug_pThumbPath, NULL);
621 static Evas_Object *__mf_ug_genlist_upper_icon_get(void *data, Evas_Object * obj, const char *part)
623 ug_mf_retvm_if(data == NULL, NULL, "data is NULL");
624 ug_mf_retvm_if(obj == NULL, NULL, "obj is NULL");
626 ugData *ugd = (ugData *)data;
628 if (!strcmp(part, "elm.icon.1")) {
629 Evas_Object *btn = elm_button_add(obj);
630 elm_object_text_set(btn, MF_UG_LABEL_HOME);
631 evas_object_smart_callback_add(btn, "clicked", mf_ug_cb_home_button_cb, ugd);
633 } else if (!strcmp(part, "elm.icon.2")) {
634 Evas_Object *btn = elm_button_add(obj);
635 elm_object_text_set(btn, MF_UG_LABEL_UPPER);
636 evas_object_smart_callback_add(btn, "clicked", mf_ug_cb_upper_click_cb, ugd);
642 /******************************
643 ** Prototype : __mf_ug_genlist_get_gl_icon
644 ** Description : Samsung
645 ** Input : const void *data
654 ** 1.Date : 2010/12/10
656 ** Modification : Created function
658 ******************************/
659 static Evas_Object *__mf_ug_genlist_get_gl_icon(void *data, Evas_Object *obj, const char *part)
662 Evas_Object *thumb = NULL, *ic_memory = NULL;
663 Evas_Object *layout = NULL;
664 Evas_Object *selected_box = NULL;
666 mf_ug_storage_type is_in_mmc = 0;
667 ugListItemData *listItemData = (ugListItemData *)data;
668 ug_mf_retv_if(listItemData == NULL, NULL);
669 ugData *ugd = listItemData->ug_pData;
670 ug_mf_retv_if(ugd == NULL, NULL);
672 if (!strcmp(part, "elm.icon")) {
673 __mf_ug_genlist_get_thumbnail(listItemData);
674 thumb = __mf_ug_genlist_create_thumbnail(listItemData, obj);
675 layout = elm_layout_add(obj);
676 elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, UG_GRP_LIST);
677 elm_object_part_content_set(layout, "swallow_thumb", thumb);
679 mf_ug_file_attr_get_store_type_by_full(listItemData->ug_pItemName->str, &is_in_mmc);
680 if (is_in_mmc == MF_UG_MMC) {
681 ic_memory = __mf_ug_genlist_create_mmc_icon(obj);
682 elm_object_part_content_set(layout, "myfile.memory_icon.sub", ic_memory);
686 } else if (!strcmp(part, "elm.icon.1")) {
687 if (ugd->ug_UiGadget.ug_pMultiSelectFileList) {
688 if (__mf_ug_genlist_is_file_marked(ugd->ug_UiGadget.ug_pMultiSelectFileList, listItemData->ug_pItemName)) {
689 listItemData->ug_bChecked = true;
692 if (ecore_file_is_dir(listItemData->ug_pItemName->str)) {
693 if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_ALL_MODE) {
694 selected_box = __mf_ug_genlist_add_checkbox(listItemData, obj);
695 } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE) {
696 selected_box = __mf_ug_genlist_add_radio_box(listItemData, obj);
699 if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE
700 || ugd->ug_UiGadget.ug_iSelectMode == MULTI_ALL_MODE
701 || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE) {
702 selected_box = __mf_ug_genlist_add_checkbox(listItemData, obj);
703 } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE
704 || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE
705 || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
707 selected_box = __mf_ug_genlist_add_radio_box(listItemData, obj);
711 } else if (!strcmp(part, "elm.icon.2")) {
712 __mf_ug_genlist_get_thumbnail(listItemData);
713 thumb = __mf_ug_genlist_create_thumbnail(listItemData, obj);
715 } else if (!strcmp(part, "elm.icon.3")) {
716 #ifdef LIST_PLAY_SUPPORT
717 if (!ecore_file_is_dir(listItemData->ug_pItemName->str)) {
718 Evas_Object *music_icon = NULL;
719 Evas_Object *music_button = NULL;
720 mf_ug_launch_type launch_type = mf_ug_util_get_file_launch_type(listItemData->ug_pItemName->str);
721 ug_error("item name is [%s]", listItemData->ug_pItemName->str);
722 if (launch_type == LAUNCH_TYPE_MUSIC) {
723 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, listItemData->ug_pItemName->str) == 0) {
724 char *play_icon = NULL;
725 char *pause_icon = NULL;
727 music_button = elm_button_add(obj);
728 elm_object_style_set(music_button, "circle/empty");
730 music_icon = elm_image_add(music_button);
731 if (ugd->ug_ListPlay.ug_pPlayFilePath) {
732 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, listItemData->ug_pItemName->str) == 0) {
733 if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING) {
734 pause_icon = strdup(UG_ICON_MUSIC_PAUSE_WHITE);
735 elm_image_file_set(music_icon, pause_icon, NULL);
736 } else if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
737 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
738 elm_image_file_set(music_icon, play_icon, NULL);
740 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
741 elm_image_file_set(music_icon, play_icon, NULL);
744 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
745 elm_image_file_set(music_icon, play_icon, NULL);
748 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
749 elm_image_file_set(music_icon, play_icon, NULL);
751 evas_object_size_hint_aspect_set(music_icon, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
752 elm_object_part_content_set(music_button, "icon", music_icon);
753 evas_object_propagate_events_set(music_button, EINA_FALSE);
754 evas_object_smart_callback_add(music_button, "clicked", (Evas_Smart_Cb)mf_ug_cb_list_play_cb, (void*)listItemData);
755 evas_object_smart_callback_add(music_button, "pressed", mf_ug_cb_play_button_pressed_cb, ugd);
756 evas_object_smart_callback_add(music_button, "unpressed", mf_ug_cb_play_button_unpressed_cb, ugd);
757 listItemData->ug_pPlaybtn = music_button;
774 static Evas_Object *__mf_ug_genlist_get_gl_editfiled_icon(void *data, Evas_Object *obj, const char *part)
776 ugListItemData *listItemData = (ugListItemData *)data;
777 ug_mf_retv_if(listItemData == NULL, NULL);
778 ugData *ugd = listItemData->ug_pData;
779 ug_mf_retv_if(ugd == NULL, NULL);
781 ug_debug("listItemData is [%p]", listItemData);
783 if (!strcmp(part, "elm.icon")) {
784 Evas_Object *button = NULL;
785 button = elm_button_add(obj);
786 evas_object_propagate_events_set(button, EINA_FALSE);
787 elm_object_text_set(button, MF_UG_LABEL_GO_TO_MYFILES);
788 evas_object_smart_callback_add(button, "clicked", mf_ug_cb_goto_myfile_button_cb, ugd);
789 if(listItemData->ug_pItem)
790 elm_genlist_item_select_mode_set(listItemData->ug_pItem, ELM_OBJECT_SELECT_MODE_NONE);
796 /******************************
797 ** Prototype : __mf_ug_genlist_get_gl_state
799 ** Input : const void *data
808 ** 1.Date : 2010/12/10
810 ** Modification : Created function
812 ******************************/
813 static Eina_Bool __mf_ug_genlist_get_gl_state(void *data, Evas_Object *obj, const char *part)
819 /******************************
820 ** Prototype : __mf_ug_genlist_del_gl
822 ** Input : const void *data
830 ** 1.Date : 2010/12/10
832 ** Modification : Created function
834 ******************************/
835 static void __mf_ug_genlist_del_gl(void *data, Evas_Object *obj)
838 ugListItemData *itemData = (ugListItemData *)data;
839 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
840 if (itemData->ug_pItemName && itemData->ug_pItemName->str) {
841 g_string_free(itemData->ug_pItemName, TRUE);
842 itemData->ug_pItemName = NULL;
844 if (itemData->ug_pThumbPath) {
845 free(itemData->ug_pThumbPath);
846 itemData->ug_pThumbPath = NULL;
856 /******************************
857 ** Prototype : mf_ug_genlist_selected_gl
858 ** Description : Samsung
859 ** Input : void *data
868 ** 1.Date : 2010/12/10
870 ** Modification : Created function
872 ******************************/
873 void mf_ug_genlist_selected_gl(void *data, Evas_Object *obj, void *event_info)
876 ugData *ugd = (ugData *)data;
877 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
879 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
882 error_code = mf_ug_util_get_mmc_state(&mmc_card);
884 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
886 ugListItemData *selected = (ugListItemData *)elm_object_item_data_get(item);
887 fprintf(stdout, "selected text %s\n", (char *)selected->ug_pItemName->str);
888 elm_genlist_item_selected_set(item, EINA_FALSE);
889 if (ugd->ug_Status.ug_b_NaviPushFlag)
891 if (!ecore_file_is_dir(selected->ug_pItemName->str)) {
893 if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {
897 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE) {
898 if (elm_radio_value_get(ugd->ug_MainWindow.ug_pRadioGroup) != selected->ug_iGroupValue) {
899 ugd->ug_Status.ug_iRadioOn = selected->ug_iGroupValue;
900 selected->ug_bChecked = true;
901 elm_radio_value_set(ugd->ug_MainWindow.ug_pRadioGroup, selected->ug_iGroupValue);
904 mf_ug_launch_type launch_type = mf_ug_util_get_file_launch_type(selected->ug_pItemName->str);
905 if (launch_type == LAUNCH_TYPE_MUSIC) {
906 if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING || ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
907 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, selected->ug_pItemName->str) == 0) {
908 mf_ug_list_play_destory_playing_file(ugd);
909 //mf_ug_list_disable_play_itc(ugd, true);
910 //mf_ug_list_play_update_item_icon(ugd);
911 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
913 //mf_ug_list_paly_hide_play_icon(ugd);
916 mf_ug_cb_list_play_cb(selected, NULL, NULL);
920 if (selected->ug_bChecked == 0) {
921 selected->ug_bChecked = 1;
923 selected->ug_bChecked = 0;
925 elm_check_state_set(selected->ug_pCheckBox, selected->ug_bChecked);
927 if (selected->ug_bChecked) {
928 ugd->ug_Status.ug_iCheckedCount++;
930 ugd->ug_Status.ug_iCheckedCount--;
932 if (ugd->ug_MainWindow.ug_pSelectAllCheckBox) {
933 if (ugd->ug_Status.ug_iTotalCount == ugd->ug_Status.ug_iCheckedCount) {
934 ugd->ug_Status.ug_bSelectAllChecked = EINA_TRUE;
936 ugd->ug_Status.ug_bSelectAllChecked = EINA_FALSE;
938 elm_check_state_pointer_set(ugd->ug_MainWindow.ug_pSelectAllCheckBox, &ugd->ug_Status.ug_bSelectAllChecked);
940 __mf_ug_genlist_show_select_info(selected);
942 } else if (ecore_file_is_dir(selected->ug_pItemName->str) && strcmp(selected->ug_pItemName->str, "Upper Level")) {
943 if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING || ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
944 mf_ug_list_play_destory_playing_file(ugd);
945 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
947 if (ugd->ug_Status.ug_pPath) {
948 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
949 ugd->ug_Status.ug_pPath = NULL;
951 ugd->ug_Status.ug_pPath = g_string_new(selected->ug_pItemName->str);
952 ugd->ug_Status.ug_b_NaviPushFlag = true;
954 if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
955 ugd->ug_Status.ug_iViewType = mf_ug_view_normal;
956 mf_ug_cb_tab_bar_cb(ugd, selected->ug_pItemName->str);
958 if (pNavi_s->ug_pCurrentPath != NULL) {
959 free(pNavi_s->ug_pCurrentPath);
960 pNavi_s->ug_pCurrentPath = NULL;
962 pNavi_s->ug_pCurrentPath = strdup(selected->ug_pItemName->str);
963 mf_ug_navi_bar_create_default_view(ugd);
967 mf_ug_ctrl_bar_set_item_disable(ugd);
973 static Evas_Object *__mf_ug_genlist_create_editfield(Evas_Object *parent, Evas_Object **pEntry)
975 ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
977 Evas_Object *layout = elm_layout_add(parent);
978 elm_layout_theme_set(layout, "layout", "editfield", "default");
979 Evas_Object *entry = elm_entry_add(parent);
980 elm_object_part_content_set(layout, "elm.swallow.content", entry);
985 static Evas_Object *__mf_ug_genlist_gl_new_folder_icon_get(void *data, Evas_Object * obj, const char *part)
988 ugData *ugd = (ugData *)data;
989 ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
991 if (!strcmp(part, "elm.icon")) {
993 char *fileName = NULL;
994 char *fullpath = (char *)malloc(sizeof(char) * MYFILE_FILE_PATH_LEN_MAX);
995 if (fullpath == NULL) {
998 GString *dest_fullpath;
999 static Elm_Entry_Filter_Limit_Size limit_filter;
1000 Evas_Object *entry = NULL;
1002 Evas_Object *edit_field = __mf_ug_genlist_create_editfield(obj, &entry);
1004 elm_entry_single_line_set(entry, EINA_TRUE);
1005 elm_entry_scrollable_set(entry, EINA_TRUE);
1007 elm_object_signal_emit(edit_field, "elm,state,eraser,show", "elm");
1009 evas_object_size_hint_weight_set(edit_field, 1, 1);
1010 evas_object_size_hint_align_set(edit_field, 1, 0.5);
1011 //evas_object_show(edit_field);
1012 ugd->ug_MainWindow.ug_pEditField = edit_field;
1014 ugd->ug_MainWindow.ug_pEntry = entry;
1016 limit_filter.max_char_count = MYFILE_FILE_NAME_LEN_MAX;
1017 limit_filter.max_byte_count = 0;
1019 memset(fullpath, 0, MYFILE_FILE_PATH_LEN_MAX);
1020 fileName = elm_entry_markup_to_utf8(MF_UG_LABEL_FOLDER);
1021 snprintf(fullpath, (MYFILE_FILE_PATH_LEN_MAX), "%s/%s", (char *)ugd->ug_Status.ug_pPath->str, fileName);
1023 dest_fullpath = g_string_new(fullpath);
1025 elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter);
1026 evas_object_smart_callback_add(entry, "maxlength,reached", mf_ug_cb_reach_max_len_cb, ugd);
1028 if (mf_ug_fm_svc_wrapper_detect_duplication(dest_fullpath)) {
1029 ug_debug("dectetion result is TRUE\ndest_fullpath is %s\n", dest_fullpath->str);
1030 error_code = mf_ug_fm_svc_wrapper_file_auto_rename(ugd, dest_fullpath, FILE_NAME_WITH_BRACKETS, &dest_fullpath);
1031 ug_debug("rename result is %s\n", dest_fullpath->str);
1032 memset(fullpath, 0, strlen(fullpath));
1033 int len = strlen(ugd->ug_Status.ug_pPath->str) + 1;
1034 strncpy(fullpath, dest_fullpath->str + len, MYFILE_FILE_PATH_LEN_MAX);
1035 /*memset(fileName,0,strlen(fileName));*/
1037 UG_SAFE_FREE_CHAR(fileName);
1038 fileName = elm_entry_markup_to_utf8(fullpath);
1041 /*elm_entry_entry_set(entry, ecore_file_file_get(params->m_ItemName->str));*/
1043 elm_object_signal_callback_add(edit_field, "elm,eraser,clicked", "elm", mf_ug_cb_eraser_clicked_cb, entry);
1045 evas_object_show(entry);
1046 elm_object_focus_set(entry, EINA_TRUE);
1048 elm_entry_entry_set(entry, fileName);
1049 elm_entry_cursor_end_set(entry);
1050 UG_SAFE_FREE_CHAR(fullpath);
1051 UG_SAFE_FREE_GSTRING(dest_fullpath);
1052 UG_SAFE_FREE_CHAR(fileName);
1058 Evas_Object *mf_ug_genlist_create_list_new_folder_style(void *data)
1062 ugData *ugd = (ugData *)data;
1063 ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
1065 Evas_Object *genlist = NULL;
1066 Evas_Object *pNaviBar = NULL;
1068 pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
1070 genlist = elm_genlist_add(pNaviBar);
1071 elm_object_focus_set(genlist, EINA_FALSE);
1073 ugd->ug_Status.ug_newfolderitec.item_style = "1icon";
1074 ugd->ug_Status.ug_newfolderitec.func.text_get = NULL;
1075 ugd->ug_Status.ug_newfolderitec.func.content_get = __mf_ug_genlist_gl_new_folder_icon_get;
1076 ugd->ug_Status.ug_newfolderitec.func.state_get = NULL;
1077 ugd->ug_Status.ug_newfolderitec.func.del = NULL;
1079 Elm_Object_Item *it = elm_genlist_item_append(genlist, &ugd->ug_Status.ug_newfolderitec, ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1080 elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_NONE);
1084 /******************************
1085 ** Prototype : __mf_ug_genlist_create_gl
1086 ** Description : Samsung
1087 ** Input : void *data
1094 ** 1.Date : 2010/12/10
1096 ** Modification : Created function
1098 ******************************/
1099 Evas_Object *__mf_ug_genlist_create_gl(void *data)
1103 ugData *ugd = (ugData *)data;
1104 ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
1106 ugNaviBar *pNaviInUse = mf_ug_navi_bar_get_in_use_navi(ugd);
1107 ug_mf_retvm_if(pNaviInUse == NULL, NULL, "pNaviInUse is NULL");
1109 Evas_Object *genlist;
1110 genlist = elm_genlist_add(ugd->ug_MainWindow.ug_pNaviBar);
1111 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1112 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
1114 evas_object_smart_callback_add(genlist, "selected", mf_ug_genlist_selected_gl, ugd);
1116 #ifdef UG_THUMB_REAL_TIME_UPDATE
1117 if (ugd->ug_Status.ug_pThumbUpdateTimer != NULL) {
1118 ecore_timer_del(ugd->ug_Status.ug_pThumbUpdateTimer);
1119 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;
1123 ugd->ug_Status.ug_itc.item_style = "1text.3icon";
1124 ugd->ug_Status.ug_itc.func.text_get = __mf_ug_genlist_get_gl_label;
1125 ugd->ug_Status.ug_itc.func.content_get = __mf_ug_genlist_get_gl_icon;
1126 ugd->ug_Status.ug_itc.func.state_get = __mf_ug_genlist_get_gl_state;
1127 ugd->ug_Status.ug_itc.func.del = __mf_ug_genlist_del_gl;
1129 if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||
1130 ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||
1131 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
1132 ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||
1133 ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE ||
1134 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
1135 ugd->ug_Status.ug_normalitc.item_style = "1text.1icon.2";
1136 ugd->ug_Status.ug_normalitc.func.text_get = __mf_ug_genlist_get_gl_label;
1137 ugd->ug_Status.ug_normalitc.func.content_get = __mf_ug_genlist_get_gl_icon;
1138 ugd->ug_Status.ug_normalitc.func.state_get = __mf_ug_genlist_get_gl_state;
1139 ugd->ug_Status.ug_normalitc.func.del = __mf_ug_genlist_del_gl;
1148 /******************************
1149 ** Prototype : __mf_ug_genlist_init_item_data
1150 ** Description : Samsung
1151 ** Input : void *data
1152 ** ugListItemData **itemData
1160 ** 1.Date : 2010/12/10
1162 ** Modification : Created function
1164 ******************************/
1165 static void __mf_ug_genlist_init_item_data(void *data, ugListItemData **itemData, char *fullname)
1169 ugData *ugd = (ugData *)data;
1170 ugListItemData **ug_ItemData = itemData;
1171 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
1172 ug_mf_retm_if(ug_ItemData == NULL, "ug_ItemData is NULL");
1174 *ug_ItemData = (ugListItemData *)malloc(sizeof(ugListItemData));
1175 if (*ug_ItemData == NULL) {
1176 ug_debug("ug_ItemData malloc failed");
1178 memset(*ug_ItemData, 0, sizeof(ugListItemData));
1180 (*ug_ItemData)->ug_pItemName = g_string_new(fullname);
1182 (*ug_ItemData)->ug_pItemName = NULL;
1184 (*ug_ItemData)->ug_bChecked = false;
1185 (*ug_ItemData)->ug_pRadioBox = NULL;
1186 (*ug_ItemData)->ug_pCheckBox = NULL;
1187 (*ug_ItemData)->ug_pPlaybtn = NULL;
1188 (*ug_ItemData)->ug_iGroupValue = 0;
1189 (*ug_ItemData)->ug_pItem = NULL;
1190 (*ug_ItemData)->ug_pThumbPath = NULL;
1191 (*ug_ItemData)->ug_bRealThumbFlag = false;
1192 (*ug_ItemData)->ug_pData = ugd;
1197 /******************************
1198 ** Prototype : mf_ug_genlist_create_content_list_view
1199 ** Description : Samsung
1200 ** Input : void *data
1207 ** 1.Date : 2010/12/10
1209 ** Modification : Created function
1211 ******************************/
1212 void mf_ug_genlist_upper_style_set(void *data)
1214 ug_mf_retm_if(data == NULL, "data is NULL");
1215 ugData *ugd = (ugData *)data;
1216 ugd->ug_Status.ug_topitc.item_style = "1text.1icon.2";
1217 ugd->ug_Status.ug_topitc.func.text_get = __mf_ug_genlist_get_gl_label;
1218 ugd->ug_Status.ug_topitc.func.content_get = __mf_ug_genlist_gl_upper_icon_get;
1219 ugd->ug_Status.ug_topitc.func.state_get = __mf_ug_genlist_get_gl_state;
1220 ugd->ug_Status.ug_topitc.func.del = __mf_ug_genlist_del_gl;
1223 void mf_ug_genlist_goto_myfile_style_set(void *data)
1225 ug_mf_retm_if(data == NULL, "data is NULL");
1226 ugData *ugd = (ugData *)data;
1227 ugd->ug_Status.ug_editfileditc.item_style = "1icon";
1228 ugd->ug_Status.ug_editfileditc.func.text_get = NULL;
1229 ugd->ug_Status.ug_editfileditc.func.content_get = __mf_ug_genlist_get_gl_editfiled_icon;
1230 ugd->ug_Status.ug_editfileditc.func.state_get = NULL;
1231 ugd->ug_Status.ug_editfileditc.func.del = __mf_ug_genlist_del_gl;
1233 ugd->ug_Status.ug_editfiledBottomSeperatoritc.item_style = "dialogue/separator/11/with_line";
1234 ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.text_get = NULL;
1235 ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.content_get = NULL;
1236 ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.state_get = NULL;
1237 ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.del = NULL;
1239 ugd->ug_Status.ug_editfiledUpperSeperatoritc.item_style = "dialogue/separator/10";
1240 ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.text_get = NULL;
1241 ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.content_get = NULL;
1242 ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.state_get = NULL;
1243 ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.del = NULL;
1247 Evas_Object *mf_navi_bar_upper_create(Evas_Object *parent)
1250 ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
1252 Evas_Object *upper_genlist = NULL;
1253 upper_genlist = elm_genlist_add(parent);
1254 ug_mf_retvm_if(upper_genlist == NULL, NULL, "upper_genlist is NULL");
1255 elm_object_focus_set(upper_genlist, EINA_FALSE);
1256 evas_object_size_hint_weight_set(upper_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1257 evas_object_size_hint_align_set(upper_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
1258 elm_scroller_bounce_set(upper_genlist, EINA_FALSE, EINA_FALSE);
1259 evas_object_show(upper_genlist);
1261 return upper_genlist;
1266 void mf_ug_upper_genlist_item_append(Evas_Object *pGenlist, void *data)
1268 ug_mf_retm_if(data == NULL, "data is NULL");
1269 ug_mf_retm_if(pGenlist == NULL, "pGenlist is NULL");
1270 ugData *ugd = (ugData *)data;
1272 Elm_Object_Item *item = NULL;
1274 ugd->ug_Status.ug_topitc.item_style = "dialogue/bg/2icon";
1275 ugd->ug_Status.ug_topitc.func.text_get = NULL;
1276 ugd->ug_Status.ug_topitc.func.content_get = __mf_ug_genlist_upper_icon_get;
1277 ugd->ug_Status.ug_topitc.func.state_get = NULL;
1278 ugd->ug_Status.ug_topitc.func.del = NULL;
1279 ugd->ug_Status.ug_separtor_no_bottom_line_itc.item_style = "dialogue/seperator.4";
1280 ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.text_get = NULL;
1281 ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.content_get = NULL;
1282 ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.state_get = NULL;
1283 ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.del = NULL;
1285 ugd->ug_Status.ug_separtor_with_bottom_line_itc.item_style = "dialogue/seperator.2";
1286 ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.text_get = NULL;
1287 ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.content_get = NULL;
1288 ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.state_get = NULL;
1289 ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.del = NULL;
1291 // separator with no bottom line
1292 item = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_separtor_no_bottom_line_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1294 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1296 // button for dialogue item (dialogue bg)
1297 elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_topitc, (void *) ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1299 // separator with bottom line
1300 item = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_separtor_with_bottom_line_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1301 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1304 void mf_ug_genlist_goto_myfile_item_append(Evas_Object *pGenlist, void *data)
1306 ug_mf_retm_if(pGenlist == NULL, "pGenlist is NULL");
1307 ug_mf_retm_if(data == NULL, "data is NULL");
1308 ugData *ugd = (ugData *)data;
1310 ugListItemData *ug_ItemData;
1311 Elm_Object_Item *it = NULL;
1313 __mf_ug_genlist_init_item_data(ugd, &ug_ItemData, NULL);
1314 ug_debug("ug_ItemData is [%p]", &ug_ItemData);
1316 //it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfiledUpperSeperatoritc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL,
1318 //elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1320 it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfileditc, ug_ItemData, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1321 ug_ItemData->ug_pItem = it;
1322 //elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1324 //it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfiledBottomSeperatoritc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL,
1326 //elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1329 Elm_Object_Item *mf_ug_genlist_item_append(Evas_Object *parent,
1330 ugFsNodeInfo *pNode,
1333 Elm_Genlist_Item_Class *itc)
1335 ug_mf_retvm_if(parent == NULL, NULL, "pGenlist is NULL");
1336 ug_mf_retvm_if(pNode == NULL, NULL, "pNode is NULL");
1337 ug_mf_retvm_if(data == NULL, NULL, "data is NULL");
1338 ug_mf_retvm_if(itc == NULL, NULL, "itc is NULL");
1340 ugData *ugd = (ugData *)data;
1341 ugListItemData *ug_ItemData = NULL;
1342 Elm_Object_Item *it = NULL;
1343 char *real_name = NULL;
1345 real_name = g_strconcat(pNode->path, "/", pNode->name, NULL);
1346 __mf_ug_genlist_init_item_data(ugd, &ug_ItemData, real_name);
1347 if (ug_ItemData == NULL) {
1348 ug_debug("alloc memory error\n");
1356 if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
1357 if(g_strcmp0(real_name, PHONE_FOLDER) == 0) {
1358 ug_ItemData->ug_pThumbPath = strdup(UG_ICON_ITEM_PHONE);
1359 ug_ItemData->ug_bRealThumbFlag = true;
1361 } else if(g_strcmp0(real_name, MEMORY_FOLDER) == 0) {
1362 ug_ItemData->ug_pThumbPath = strdup(UG_ICON_ITEM_MMC);
1363 ug_ItemData->ug_bRealThumbFlag = true;
1367 ug_ItemData->ug_iGroupValue = groudValue;
1368 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
1369 if (__mf_ug_genlist_is_file_marked(ugd->ug_UiGadget.ug_pMultiSelectFileList, ug_ItemData->ug_pItemName)) {
1370 ug_ItemData->ug_bChecked = true;
1371 ugd->ug_Status.ug_iRadioOn = ug_ItemData->ug_iGroupValue;
1374 it = elm_genlist_item_append(parent, itc, ug_ItemData, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1375 ug_ItemData->ug_pItem = it;
1385 Evas_Object *mf_ug_genlist_create_content_list_view(void *data)
1388 ugData *ugd = (ugData *)data;
1389 ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
1390 ugNaviBar *pNaviInUse = mf_ug_navi_bar_get_in_use_navi(ugd);
1391 ug_mf_retvm_if(pNaviInUse == NULL, NULL, "pNaviInUse is NULL");
1393 Evas_Object *genlist;
1395 Eina_List *dir_list = NULL;
1396 Eina_List *file_list = NULL;
1397 Elm_Object_Item *it = NULL;
1401 ugListItemData *ug_ItemData;
1403 ugd->ug_Status.ug_iRadioOn = 0;
1404 ugd->ug_Status.ug_bNoContentFlag = false;
1406 genlist = __mf_ug_genlist_create_gl(ugd);
1408 ugd->ug_MainWindow.ug_pNaviGenlist = genlist;
1410 GString *fullpath = g_string_new(ugd->ug_Status.ug_pPath->str);
1414 if (ugd->ug_Status.ug_iViewType == mf_ug_view_root && ugd->ug_Status.ug_iMore != UG_MORE_SEARCH) {
1415 mf_ug_util_generate_root_view_file_list(&dir_list, ugd->ug_Status.ug_iMmcFlag);
1416 ugd->ug_UiGadget.ug_pDirList = dir_list;
1417 ugd->ug_UiGadget.ug_pFilterList = NULL;
1418 mf_ug_util_sort_the_file_list(ugd);
1421 error_code = mf_ug_fm_svc_wapper_get_file_list_by_filter(ugd, fullpath, &dir_list, &file_list);
1422 if (error_code == 0) {
1424 if (ugd->ug_UiGadget.ug_pDirList) {
1425 mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pDirList, NODE_TYPE_PNODE);
1426 ugd->ug_UiGadget.ug_pDirList = NULL;
1428 if (ugd->ug_UiGadget.ug_pFilterList) {
1429 mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pFilterList, NODE_TYPE_PNODE);
1430 ugd->ug_UiGadget.ug_pFilterList = NULL;
1433 ugd->ug_UiGadget.ug_pFilterList = file_list;
1434 ugd->ug_UiGadget.ug_pDirList = dir_list;
1435 mf_ug_util_sort_the_file_list(ugd);
1441 /* list option set */
1442 unsigned int dir_list_len = eina_list_count(dir_list);
1443 unsigned int filter_file_list_len = eina_list_count(ugd->ug_UiGadget.ug_pFilterList);
1444 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);
1447 if ((dir_list_len == 0 && filter_file_list_len == 0)) {
1448 ug_debug("=========================================== create the no content view");
1449 Evas_Object *layout;
1450 Evas_Object *nocontent = NULL;
1452 nocontent = elm_layout_add(ugd->ug_MainWindow.ug_pMainLayout);
1453 elm_layout_theme_set(nocontent, "layout", "nocontents", "text");
1454 elm_object_part_text_set(nocontent, "elm.text", MF_UG_LABEL_NO_FILES);
1456 ugd->ug_Status.ug_bNoContentFlag = true;
1458 elm_scroller_bounce_set(genlist, EINA_FALSE, EINA_FALSE);
1460 layout = elm_layout_add(ugd->ug_MainWindow.ug_pMainLayout);
1462 elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, UG_GRP_NO_CONTENT);
1463 elm_object_part_content_set(layout, "myfile.noContent.upper", genlist);
1464 elm_object_part_content_set(layout, "myfile.noContent.content", nocontent);
1465 mf_ug_util_add_dir_watch(fullpath->str, ugd);
1466 g_string_free(fullpath, true);
1470 ugFsNodeInfo *pNode = NULL;
1471 Eina_List *l = NULL;
1473 EINA_LIST_FOREACH(ugd->ug_UiGadget.ug_pDirList, l, pNode) {
1477 if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||
1478 ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||
1479 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
1480 ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||
1481 ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE ||
1482 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
1484 mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);
1486 mf_ug_genlist_item_append(genlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);
1491 EINA_LIST_FOREACH(ugd->ug_UiGadget.ug_pFilterList, l, pNode) {
1493 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
1494 mf_ug_genlist_item_append(genlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);
1496 } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {
1497 mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);
1499 mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_itc);
1502 if ((ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) && ug_ItemData->ug_bChecked) {
1504 if (ugd->ug_Status.ug_bUpperFlag ) {
1505 if (count > MF_UG_SELECTED_ITEM_BRING_UP_COUNT)
1506 elm_genlist_item_top_show(it);
1508 if (count > MF_UG_SELECTED_ITEM_BRING_UP_COUNT_MAX)
1509 elm_genlist_item_top_show(it);
1515 if (fullpath != NULL) {
1516 if ( ugd->ug_Status.ug_iViewType != mf_ug_view_root) {
1517 mf_ug_util_add_dir_watch(fullpath->str, ugd);
1519 g_string_free(fullpath, TRUE);
1525 static char *__get_title_gl_text(void *data, Evas_Object *obj, const char *part)
1528 return g_strdup((char *)data);
1532 static void __del_title_gl(void *data, Evas_Object * obj)
1534 UG_SAFE_FREE_CHAR(data);
1537 Evas_Object *mf_ug_genlist_create_path_info(Evas_Object *parent, Elm_Genlist_Item_Class *itc, char *info)
1539 ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
1541 Evas_Object *genlist = NULL;
1542 Elm_Object_Item *git=NULL;
1544 genlist = elm_genlist_add(parent);
1545 elm_genlist_homogeneous_set(genlist, EINA_TRUE);
1547 itc->item_style = "grouptitle";
1548 itc->func.text_get = __get_title_gl_text;
1549 itc->func.del = __del_title_gl;
1551 git = elm_genlist_item_append(genlist, itc, info, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1552 elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1557 void mf_ug_genlist_item_remove(Evas_Object *parent, const char *path)
1559 ug_debug("path is [%s]", path);
1560 ug_mf_retm_if(parent == NULL, "parent is NULL");
1561 ug_mf_retm_if(path == NULL, "path is NULL");
1563 ugListItemData *itemData = NULL;
1564 Elm_Object_Item *it = NULL;
1566 it = elm_genlist_first_item_get(parent);
1568 itemData = elm_object_item_data_get(it);
1569 if (itemData->ug_pItemName == NULL || itemData->ug_pItemName->str == NULL) {
1572 ug_debug("itemData->m_ItemName->str is [%s]", itemData->ug_pItemName->str);
1573 if (g_strcmp0(path, itemData->ug_pItemName->str) == 0) {
1574 elm_object_item_del(it);
1578 it = elm_genlist_item_next_get(it);