summaryrefslogtreecommitdiff
path: root/src/widget/mf-ug-genlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/widget/mf-ug-genlist.c')
-rw-r--r--src/widget/mf-ug-genlist.c1580
1 files changed, 1580 insertions, 0 deletions
diff --git a/src/widget/mf-ug-genlist.c b/src/widget/mf-ug-genlist.c
new file mode 100644
index 0000000..909ca06
--- /dev/null
+++ b/src/widget/mf-ug-genlist.c
@@ -0,0 +1,1580 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+#include <Eina.h>
+#include "mf-ug-winset.h"
+#include "mf-ug-util.h"
+#include "mf-ug-fm-svc-wrapper.h"
+#include "mf-ug-fs-util.h"
+#include "mf-ug-resource.h"
+#include "mf-ug-cb.h"
+
+
+#define MF_UG_SELECTED_ITEM_BRING_UP_COUNT 7
+#define MF_UG_SELECTED_ITEM_BRING_UP_COUNT_MAX 8
+/******************************
+** Prototype : __mf_ug_genlist_is_file_marked
+** Description : Samsung
+** Input : Eina_List *source
+** GString *path
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static gboolean __mf_ug_genlist_is_file_marked(Eina_List *source, GString *path)
+{
+ UG_TRACE_BEGIN;
+ ug_mf_retvm_if(source == NULL, false, "source is NULL");
+ ug_mf_retvm_if(path == NULL, false, "path is NULL");
+
+ bool flag = false;
+ Eina_List *l = NULL;
+ void *data = NULL;
+
+ EINA_LIST_FOREACH(source, l, data) {
+ char *source_path = strdup(data);
+ if (source_path != NULL) {
+ if (strcmp(source_path, path->str) == 0) {
+ flag = true;
+ free(source_path);
+ source_path = NULL;
+ break;
+ } else {
+ free(source_path);
+ source_path = NULL;
+ }
+ }
+ }
+ UG_TRACE_END;
+ return flag;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_set_marked_path
+** Description : Samsung
+** Input : Eina_List **source
+** GString *path
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static void __mf_ug_genlist_set_marked_path(Eina_List **source, GString *path)
+{
+ UG_TRACE_BEGIN;
+ bool file_exist_flag = false;
+ char *source_path;
+ Eina_List *l = NULL;
+ void *data = NULL;
+
+ ug_mf_retm_if(source == NULL, "source is NULL");
+ ug_mf_retm_if(path == NULL, "path is NULL");
+
+ if (NULL == *source || eina_list_count(*source) == 0) {
+ *source = eina_list_append(*source, strdup(path->str));
+ } else {
+
+ EINA_LIST_FOREACH(*source, l, data) {
+ source_path = (char *)data;
+ if (source_path != NULL) {
+ if (strcmp(source_path, path->str) == 0) {
+ file_exist_flag = true;
+ break;
+ }
+ }
+ }
+ if (file_exist_flag == true) {
+ *source = eina_list_remove(*source, source_path);
+ } else {
+ *source = eina_list_append(*source, strdup(path->str));
+ }
+ }
+ UG_TRACE_END;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_create_checkbox
+** Description : Samsung
+** Input : Evas_Object *parent
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static Evas_Object *__mf_ug_genlist_create_checkbox(Evas_Object *parent)
+{
+ UG_TRACE_BEGIN;
+ Evas_Object *ck_box = NULL;
+
+ ck_box = elm_check_add(parent);
+ evas_object_size_hint_weight_set(ck_box, 1.0, 1.0);
+ evas_object_size_hint_align_set(ck_box, -1.0, 0.5);
+ elm_check_state_set(ck_box, 0);
+ evas_object_show(ck_box);
+ evas_object_repeat_events_set(ck_box, 0);
+ UG_TRACE_END;
+ return ck_box;
+}
+
+static void __mf_ug_genlist_show_select_info(void *data)
+{
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retm_if(itemData == NULL, "itemData is NULL");
+
+ ugData *ugd = itemData->ug_pData;
+ ug_mf_retm_if(ugd == NULL, "ugd is NULL");
+
+ int iDirCount = 0, iFileCount = 0;
+ Elm_Object_Item *it = NULL;
+
+ Evas_Object *pGenlist = ugd->ug_MainWindow.ug_pContent;
+
+ it = elm_genlist_first_item_get(pGenlist);
+ while (it) {
+ itemData = elm_object_item_data_get(it);
+ if (itemData->ug_bChecked) {
+ if (ecore_file_is_dir(itemData->ug_pItemName->str)) {
+ iDirCount++;
+ } else {
+ iFileCount++;
+ }
+ }
+
+ it = elm_genlist_item_next_get(it);
+ }
+ int count = 0;
+ count = iDirCount + iFileCount;
+ if (count > 0) {
+ Evas_Object *notify_popup = NULL;
+ char lable_file[UG_LABEL_STRING_LENGTH] = { '\0', };
+ char *label = NULL;
+ /*1 TODO: need to update for multi-language */
+
+ snprintf(lable_file, sizeof(lable_file), "%d", count);
+ label = g_strconcat(MF_UG_LABEL_SELECTED, "(", lable_file, ")", NULL);
+ notify_popup = mf_ug_navibar_create_notify_popup(itemData->ug_pData, ugd->ug_MainWindow.ug_pNaviLayout, label, false, NULL);
+ ugd->ug_MainWindow.ug_pSelectInfoLayout = notify_popup;
+ UG_SAFE_FREE_CHAR(label);
+
+ } else {
+ UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSelectInfoLayout);
+ }
+ UG_TRACE_END;
+
+}
+
+/******************************
+** Prototype : __mf_ug_genlist_checkbox_cb
+** Description : Samsung
+** Input : void *data
+** Evas_Object *obj
+** void *event_info
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static void __mf_ug_genlist_checkbox_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retm_if(itemData == NULL, "itemData is NULL");
+ ugData *ugd = (ugData *)itemData->ug_pData;
+
+ if (itemData->ug_bChecked == false) {
+ itemData->ug_bChecked = true;
+ } else {
+ itemData->ug_bChecked = false;
+ }
+
+ if (itemData->ug_pData->ug_UiGadget.ug_iMarkedMode == MARKED_ON) {
+ __mf_ug_genlist_set_marked_path(&itemData->ug_pData->ug_UiGadget.ug_pMultiSelectFileList, itemData->ug_pItemName);
+ }
+ if (itemData->ug_bChecked) {
+ ugd->ug_Status.ug_iCheckedCount++;
+ } else {
+ ugd->ug_Status.ug_iCheckedCount--;
+ }
+ if (ugd->ug_MainWindow.ug_pSelectAllCheckBox) {
+ if (ugd->ug_Status.ug_iTotalCount == ugd->ug_Status.ug_iCheckedCount) {
+ ugd->ug_Status.ug_bSelectAllChecked = EINA_TRUE;
+ } else {
+ ugd->ug_Status.ug_bSelectAllChecked = EINA_FALSE;
+ }
+ elm_check_state_pointer_set(ugd->ug_MainWindow.ug_pSelectAllCheckBox, &ugd->ug_Status.ug_bSelectAllChecked);
+ }
+
+ __mf_ug_genlist_show_select_info(itemData);
+ mf_ug_ctrl_bar_set_item_disable(itemData->ug_pData);
+
+ UG_TRACE_END;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_create_radio_box
+** Description : Samsung
+** Input : Evas_Object *parent
+** ugListItemData *params
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static Evas_Object *__mf_ug_genlist_create_radio_box(Evas_Object *parent, ugListItemData *params)
+{
+ UG_TRACE_BEGIN;
+
+ ugListItemData *itemData = (ugListItemData *)params;
+ ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
+
+ ugData *ugd = (ugData *)(itemData->ug_pData);
+ ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
+
+ Evas_Object *radio_box = NULL;
+ radio_box = elm_radio_add(parent);
+ elm_radio_state_value_set(radio_box, itemData->ug_iGroupValue);
+ elm_radio_group_add(radio_box, ugd->ug_MainWindow.ug_pRadioGroup);
+ elm_radio_value_set(ugd->ug_MainWindow.ug_pRadioGroup, ugd->ug_Status.ug_iRadioOn);
+ UG_TRACE_END;
+ return radio_box;
+}
+
+
+
+/******************************
+** Prototype : __mf_ug_genlist_radio_box_cb
+** Description : Samsung
+** Input : void *data
+** Evas_Object *obj
+** void *event_info
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static void __mf_ug_genlist_radio_box_cb(void *data, Evas_Object *obj, void *event_info)
+{
+
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retm_if(itemData == NULL, "ugListItemData is NULL");
+
+ itemData->ug_bChecked = true;
+ itemData->ug_pData->ug_Status.ug_iRadioOn = itemData->ug_iGroupValue;
+ elm_radio_value_set(itemData->ug_pData->ug_MainWindow.ug_pRadioGroup, itemData->ug_iGroupValue);
+ mf_ug_ctrl_bar_set_item_disable(itemData->ug_pData);
+ UG_TRACE_END;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_get_gl_label
+** Description :
+** Input : const void *data
+** Evas_Object *obj
+** const char *part
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static char *__mf_ug_genlist_get_gl_label(void *data, Evas_Object *obj, const char *part)
+{
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
+
+ if (strcmp(part, "elm.text") == 0) {
+ UG_TRACE_END;
+ if (g_strcmp0(itemData->ug_pItemName->str, PHONE_FOLDER) == 0) {
+ return g_strdup(MF_UG_LABEL_PHONE);
+ } else if (g_strcmp0(itemData->ug_pItemName->str, MEMORY_FOLDER) == 0) {
+ return g_strdup(MF_UG_LABEL_MMC);
+ } else {
+ return strdup(ecore_file_file_get(itemData->ug_pItemName->str));
+ }
+ } else if (strcmp(part, "elm.uptitle.text") == 0) {
+ UG_TRACE_END;
+ return strdup(("Upper Level"));
+ } else {
+ UG_TRACE_END;
+ return strdup("");
+ }
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_get_thumbnail
+** Description : Samsung
+** Input : void *data
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static void __mf_ug_genlist_get_thumbnail(void *data)
+{
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retm_if(itemData == NULL, "itemData is NULL");
+
+ const char *dir_icon_path = UG_ICON_FOLDER;
+ //const char *dir_create_icon_path = UG_ICON_FOLDER_CREATED;
+ char *icon_path = NULL;
+ int error_code = MYFILE_ERR_NONE;
+ int thumbnail_type = 0;
+
+ if (itemData->ug_pThumbPath == NULL) {
+ if (ecore_file_is_dir(itemData->ug_pItemName->str)) {
+ itemData->ug_pThumbPath = strdup(dir_icon_path);
+ itemData->ug_bRealThumbFlag = true;
+ } else {
+ thumbnail_type = mf_ug_file_attr_get_file_icon(itemData->ug_pItemName->str, &error_code, &icon_path);
+ if (icon_path) {
+ itemData->ug_pThumbPath = strdup(icon_path);
+ itemData->ug_bRealThumbFlag = true;
+ free(icon_path);
+ icon_path = NULL;
+ } else { /*/must be image/video file */
+
+ mf_ug_fs_file_type type = UG_FILE_TYPE_NONE;
+ type = mf_ug_file_attr_get_file_type_by_mime(itemData->ug_pItemName->str);
+
+ if (type == UG_FILE_TYPE_VIDEO) {
+ itemData->ug_pThumbPath = strdup(UG_ICON_VIDEO);
+ } else if (type == UG_FILE_TYPE_IMAGE) {
+ itemData->ug_pThumbPath = strdup(UG_ICON_IMAGE);
+ } else {
+ itemData->ug_pThumbPath = strdup(UG_DEFAULT_ICON);
+ }
+ itemData->ug_bRealThumbFlag = false;
+ error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
+ }
+ }
+ } else if (itemData->ug_pThumbPath && ecore_file_exists(itemData->ug_pThumbPath)) {
+ if (itemData->ug_bRealThumbFlag == false) {
+ error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
+ }
+ } else if (!ecore_file_exists(itemData->ug_pThumbPath)) {
+
+ ug_debug("ug_pThumbPath[%s] is not exist", itemData->ug_pThumbPath);
+ free(itemData->ug_pThumbPath);
+ itemData->ug_pThumbPath = NULL;
+ /*/set default icon */
+ itemData->ug_pThumbPath = strdup(UG_DEFAULT_ICON);
+ itemData->ug_bRealThumbFlag = false;
+ error_code = MYFILE_ERR_GET_THUMBNAIL_FAILED;
+ }
+#ifdef UG_THUMB_REAL_TIME_UPDATE
+ /*/check if we need to add refresh timer */
+ if (error_code != 0 && itemData->ug_pData->ug_Status.ug_pThumbUpdateTimer == NULL) {
+ itemData->ug_pData->ug_Status.ug_pThumbUpdateTimer = ecore_timer_add(INTERVAL_THUMB_UPDATE, mf_ug_cb_thumb_timer_cb, itemData);
+ }
+#endif
+ UG_TRACE_END;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_create_thumbnail
+** Description : Samsung
+** Input : void *data
+** Evas_Object *parent
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static Evas_Object *__mf_ug_genlist_create_thumbnail(void *data, Evas_Object *parent)
+{
+
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
+
+ Evas_Object *thumb = NULL;
+
+#ifdef USE_IMAGE_OBJECT
+ thumb = evas_object_image_add(evas_object_evas_get(parent));
+#else
+ thumb = elm_image_add(parent);
+#endif
+ if (thumb == NULL) {
+ ug_debug("thumb is NULL");
+ }
+ if (thumb) {
+#ifdef USE_IMAGE_OBJECT
+ int load_err = EVAS_LOAD_ERROR_NONE;
+ evas_object_image_file_set(thumb, itemData->ug_pThumbPath, NULL);
+ load_err = evas_object_image_load_error_get(thumb);
+
+ if (load_err != EVAS_LOAD_ERROR_NONE) {
+ evas_object_del(thumb);
+ thumb = NULL;
+ } else {
+ evas_object_image_filled_set(thumb, EINA_TRUE);
+ }
+#else
+ elm_image_file_set(thumb, itemData->ug_pThumbPath, NULL);
+#endif
+ }
+ UG_TRACE_END;
+ return thumb;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_create_mmc_icon
+** Description : Samsung
+** Input : Evas_Object *parent
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static Evas_Object *__mf_ug_genlist_create_mmc_icon(Evas_Object *parent)
+{
+ UG_TRACE_BEGIN;
+ Evas_Object *ic_memory = NULL;
+ const char *memory_icon_path = UG_ICON_MEMORY_SUB;
+
+ ic_memory = elm_image_add(parent);
+ elm_image_file_set(ic_memory, memory_icon_path, NULL);
+ evas_object_show(ic_memory);
+
+ UG_TRACE_END;
+ return ic_memory;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_add_checkbox
+** Description : Samsung
+** Input : void *data
+** Evas_Object *parent
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static Evas_Object *__mf_ug_genlist_add_checkbox(void *data, Evas_Object *parent)
+{
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
+
+ Evas_Object *check_box = __mf_ug_genlist_create_checkbox(parent);
+ evas_object_propagate_events_set(check_box, 0);
+
+ elm_check_state_set(check_box, itemData->ug_bChecked);
+
+ itemData->ug_pCheckBox = check_box;
+ evas_object_smart_callback_add(check_box, "changed", __mf_ug_genlist_checkbox_cb, itemData);
+
+ UG_TRACE_END;
+ return check_box;
+}
+
+
+
+/******************************
+** Prototype : __mf_ug_genlist_add_radio_box
+** Description : Samsung
+** Input : void *data
+** Evas_Object *parent
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static Evas_Object *__mf_ug_genlist_add_radio_box(void *data, Evas_Object *parent)
+{
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retvm_if(itemData == NULL, NULL, "itemData is NULL");
+
+ Evas_Object *radio_box = __mf_ug_genlist_create_radio_box(parent, itemData);
+
+ evas_object_propagate_events_set(radio_box, 0);
+ itemData->ug_pRadioBox = radio_box;
+ evas_object_smart_callback_add(radio_box, "changed", __mf_ug_genlist_radio_box_cb, itemData);
+
+ UG_TRACE_END;
+ return radio_box;
+}
+
+
+static Evas_Object *__mf_ug_genlist_gl_upper_icon_get(void *data, Evas_Object * obj, const char *part)
+{
+ UG_TRACE_BEGIN;
+ ugListItemData *listItemData = (ugListItemData *)data;
+
+ ug_mf_retvm_if(listItemData == NULL, NULL, "listItemData is NULL");
+ ug_mf_retvm_if(listItemData->ug_pItemName == NULL, NULL, "m_ItemName is NULL");
+ ug_mf_retvm_if(part == NULL, NULL, "part is NULL");
+ ug_mf_retvm_if(obj == NULL, NULL, "obj is NULL");
+
+ Evas_Object *thumb = NULL;
+ if (!strcmp(part, "elm.icon")) {
+ thumb = elm_image_add(obj);
+ elm_object_focus_set(thumb, EINA_FALSE);
+ if (thumb) {
+ elm_image_file_set(thumb, listItemData->ug_pThumbPath, NULL);
+ }
+ }
+ return thumb;
+}
+
+
+static Evas_Object *__mf_ug_genlist_upper_icon_get(void *data, Evas_Object * obj, const char *part)
+{
+ ug_mf_retvm_if(data == NULL, NULL, "data is NULL");
+ ug_mf_retvm_if(obj == NULL, NULL, "obj is NULL");
+
+ ugData *ugd = (ugData *)data;
+
+ if (!strcmp(part, "elm.icon.1")) {
+ Evas_Object *btn = elm_button_add(obj);
+ elm_object_text_set(btn, MF_UG_LABEL_HOME);
+ evas_object_smart_callback_add(btn, "clicked", mf_ug_cb_home_button_cb, ugd);
+ return btn;
+ } else if (!strcmp(part, "elm.icon.2")) {
+ Evas_Object *btn = elm_button_add(obj);
+ elm_object_text_set(btn, MF_UG_LABEL_UPPER);
+ evas_object_smart_callback_add(btn, "clicked", mf_ug_cb_upper_click_cb, ugd);
+ return btn;
+ }
+ return NULL;
+}
+
+/******************************
+** Prototype : __mf_ug_genlist_get_gl_icon
+** Description : Samsung
+** Input : const void *data
+** Evas_Object *obj
+** const char *part
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static Evas_Object *__mf_ug_genlist_get_gl_icon(void *data, Evas_Object *obj, const char *part)
+{
+ UG_TRACE_BEGIN;
+ Evas_Object *thumb = NULL, *ic_memory = NULL;
+ Evas_Object *layout = NULL;
+ Evas_Object *selected_box = NULL;
+
+ mf_ug_storage_type is_in_mmc = 0;
+ ugListItemData *listItemData = (ugListItemData *)data;
+ ug_mf_retv_if(listItemData == NULL, NULL);
+ ugData *ugd = listItemData->ug_pData;
+ ug_mf_retv_if(ugd == NULL, NULL);
+
+ if (!strcmp(part, "elm.icon")) {
+ __mf_ug_genlist_get_thumbnail(listItemData);
+ thumb = __mf_ug_genlist_create_thumbnail(listItemData, obj);
+ layout = elm_layout_add(obj);
+ elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, UG_GRP_LIST);
+ elm_object_part_content_set(layout, "swallow_thumb", thumb);
+
+ mf_ug_file_attr_get_store_type_by_full(listItemData->ug_pItemName->str, &is_in_mmc);
+ if (is_in_mmc == MF_UG_MMC) {
+ ic_memory = __mf_ug_genlist_create_mmc_icon(obj);
+ elm_object_part_content_set(layout, "myfile.memory_icon.sub", ic_memory);
+ }
+ UG_TRACE_END;
+ return layout;
+ } else if (!strcmp(part, "elm.icon.1")) {
+ if (ugd->ug_UiGadget.ug_pMultiSelectFileList) {
+ if (__mf_ug_genlist_is_file_marked(ugd->ug_UiGadget.ug_pMultiSelectFileList, listItemData->ug_pItemName)) {
+ listItemData->ug_bChecked = true;
+ }
+ }
+ if (ecore_file_is_dir(listItemData->ug_pItemName->str)) {
+ if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_ALL_MODE) {
+ selected_box = __mf_ug_genlist_add_checkbox(listItemData, obj);
+ } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE) {
+ selected_box = __mf_ug_genlist_add_radio_box(listItemData, obj);
+ }
+ } else {
+ if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE
+ || ugd->ug_UiGadget.ug_iSelectMode == MULTI_ALL_MODE
+ || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE) {
+ selected_box = __mf_ug_genlist_add_checkbox(listItemData, obj);
+ } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE
+ || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE
+ || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
+
+ selected_box = __mf_ug_genlist_add_radio_box(listItemData, obj);
+ }
+ }
+ return selected_box;
+ } else if (!strcmp(part, "elm.icon.2")) {
+ __mf_ug_genlist_get_thumbnail(listItemData);
+ thumb = __mf_ug_genlist_create_thumbnail(listItemData, obj);
+ return thumb;
+ } else if (!strcmp(part, "elm.icon.3")) {
+#ifdef LIST_PLAY_SUPPORT
+ if (!ecore_file_is_dir(listItemData->ug_pItemName->str)) {
+ Evas_Object *music_icon = NULL;
+ Evas_Object *music_button = NULL;
+ mf_ug_launch_type launch_type = mf_ug_util_get_file_launch_type(listItemData->ug_pItemName->str);
+ ug_error("item name is [%s]", listItemData->ug_pItemName->str);
+ if (launch_type == LAUNCH_TYPE_MUSIC) {
+ if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, listItemData->ug_pItemName->str) == 0) {
+ char *play_icon = NULL;
+ char *pause_icon = NULL;
+
+ music_button = elm_button_add(obj);
+ elm_object_style_set(music_button, "circle/empty");
+
+ music_icon = elm_image_add(music_button);
+ if (ugd->ug_ListPlay.ug_pPlayFilePath) {
+ if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, listItemData->ug_pItemName->str) == 0) {
+ if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING) {
+ pause_icon = strdup(UG_ICON_MUSIC_PAUSE_WHITE);
+ elm_image_file_set(music_icon, pause_icon, NULL);
+ } else if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
+ play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
+ elm_image_file_set(music_icon, play_icon, NULL);
+ } else {
+ play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
+ elm_image_file_set(music_icon, play_icon, NULL);
+ }
+ } else {
+ play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
+ elm_image_file_set(music_icon, play_icon, NULL);
+ }
+ } else {
+ play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
+ elm_image_file_set(music_icon, play_icon, NULL);
+ }
+ evas_object_size_hint_aspect_set(music_icon, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
+ elm_object_part_content_set(music_button, "icon", music_icon);
+ evas_object_propagate_events_set(music_button, EINA_FALSE);
+ evas_object_smart_callback_add(music_button, "clicked", (Evas_Smart_Cb)mf_ug_cb_list_play_cb, (void*)listItemData);
+ evas_object_smart_callback_add(music_button, "pressed", mf_ug_cb_play_button_pressed_cb, ugd);
+ evas_object_smart_callback_add(music_button, "unpressed", mf_ug_cb_play_button_unpressed_cb, ugd);
+ listItemData->ug_pPlaybtn = music_button;
+ UG_TRACE_END;
+ return music_button;
+ }
+ }
+ }
+#endif
+ UG_TRACE_END;
+
+ return NULL;
+
+ } else {
+ UG_TRACE_END;
+ return NULL;
+ }
+}
+
+static Evas_Object *__mf_ug_genlist_get_gl_editfiled_icon(void *data, Evas_Object *obj, const char *part)
+{
+ ugListItemData *listItemData = (ugListItemData *)data;
+ ug_mf_retv_if(listItemData == NULL, NULL);
+ ugData *ugd = listItemData->ug_pData;
+ ug_mf_retv_if(ugd == NULL, NULL);
+
+ ug_debug("listItemData is [%p]", listItemData);
+
+ if (!strcmp(part, "elm.icon")) {
+ Evas_Object *button = NULL;
+ button = elm_button_add(obj);
+ evas_object_propagate_events_set(button, EINA_FALSE);
+ elm_object_text_set(button, MF_UG_LABEL_GO_TO_MYFILES);
+ evas_object_smart_callback_add(button, "clicked", mf_ug_cb_goto_myfile_button_cb, ugd);
+ if(listItemData->ug_pItem)
+ elm_genlist_item_select_mode_set(listItemData->ug_pItem, ELM_OBJECT_SELECT_MODE_NONE);
+ return button;
+ }
+ return NULL;
+}
+
+/******************************
+** Prototype : __mf_ug_genlist_get_gl_state
+** Description :
+** Input : const void *data
+** Evas_Object *obj
+** const char *part
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static Eina_Bool __mf_ug_genlist_get_gl_state(void *data, Evas_Object *obj, const char *part)
+{
+ return EINA_FALSE;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_del_gl
+** Description :
+** Input : const void *data
+** Evas_Object *obj
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static void __mf_ug_genlist_del_gl(void *data, Evas_Object *obj)
+{
+ UG_TRACE_BEGIN;
+ ugListItemData *itemData = (ugListItemData *)data;
+ ug_mf_retm_if(itemData == NULL, "itemData is NULL");
+ if (itemData->ug_pItemName && itemData->ug_pItemName->str) {
+ g_string_free(itemData->ug_pItemName, TRUE);
+ itemData->ug_pItemName = NULL;
+ }
+ if (itemData->ug_pThumbPath) {
+ free(itemData->ug_pThumbPath);
+ itemData->ug_pThumbPath = NULL;
+ }
+ free(itemData);
+ itemData = NULL;
+ UG_TRACE_END;
+ return;
+}
+
+
+
+/******************************
+** Prototype : __mf_ug_genlist_selected_gl
+** Description : Samsung
+** Input : void *data
+** Evas_Object *obj
+** void *event_info
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static void __mf_ug_genlist_selected_gl(void *data, Evas_Object *obj, void *event_info)
+{
+ UG_TRACE_BEGIN;
+ ugData *ugd = (ugData *)data;
+ ug_mf_retm_if(ugd == NULL, "ugd is NULL");
+
+ Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+ int error_code = 0;
+ int mmc_card = 0;
+ error_code = mf_ug_util_get_mmc_state(&mmc_card);
+
+ ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
+ if (item != NULL) {
+ ugListItemData *selected = (ugListItemData *)elm_object_item_data_get(item);
+ fprintf(stdout, "selected text %s\n", (char *)selected->ug_pItemName->str);
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ if (ugd->ug_Status.ug_b_NaviPushFlag)
+ return;
+ if (!ecore_file_is_dir(selected->ug_pItemName->str)) {
+
+ if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE) {
+ return;
+ }
+
+ if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE) {
+ if (elm_radio_value_get(ugd->ug_MainWindow.ug_pRadioGroup) != selected->ug_iGroupValue) {
+ ugd->ug_Status.ug_iRadioOn = selected->ug_iGroupValue;
+ selected->ug_bChecked = true;
+ elm_radio_value_set(ugd->ug_MainWindow.ug_pRadioGroup, selected->ug_iGroupValue);
+ }
+
+ mf_ug_launch_type launch_type = mf_ug_util_get_file_launch_type(selected->ug_pItemName->str);
+ if (launch_type == LAUNCH_TYPE_MUSIC) {
+ if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING || ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
+ if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, selected->ug_pItemName->str) == 0) {
+ mf_ug_list_play_destory_playing_file(ugd);
+ //mf_ug_list_disable_play_itc(ugd, true);
+ //mf_ug_list_play_update_item_icon(ugd);
+ UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
+ } else {
+ //mf_ug_list_paly_hide_play_icon(ugd);
+ }
+ }
+ mf_ug_cb_list_play_cb(selected, NULL, NULL);
+ }
+
+ } else {
+ if (selected->ug_bChecked == 0) {
+ selected->ug_bChecked = 1;
+ } else {
+ selected->ug_bChecked = 0;
+ }
+ elm_check_state_set(selected->ug_pCheckBox, selected->ug_bChecked);
+
+ if (selected->ug_bChecked) {
+ ugd->ug_Status.ug_iCheckedCount++;
+ } else {
+ ugd->ug_Status.ug_iCheckedCount--;
+ }
+ if (ugd->ug_MainWindow.ug_pSelectAllCheckBox) {
+ if (ugd->ug_Status.ug_iTotalCount == ugd->ug_Status.ug_iCheckedCount) {
+ ugd->ug_Status.ug_bSelectAllChecked = EINA_TRUE;
+ } else {
+ ugd->ug_Status.ug_bSelectAllChecked = EINA_FALSE;
+ }
+ elm_check_state_pointer_set(ugd->ug_MainWindow.ug_pSelectAllCheckBox, &ugd->ug_Status.ug_bSelectAllChecked);
+ }
+ __mf_ug_genlist_show_select_info(selected);
+ }
+ } else if (ecore_file_is_dir(selected->ug_pItemName->str) && strcmp(selected->ug_pItemName->str, "Upper Level")) {
+ if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING || ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
+ mf_ug_list_play_destory_playing_file(ugd);
+ UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
+ }
+ if (ugd->ug_Status.ug_pPath) {
+ g_string_free(ugd->ug_Status.ug_pPath, TRUE);
+ ugd->ug_Status.ug_pPath = NULL;
+ }
+ ugd->ug_Status.ug_pPath = g_string_new(selected->ug_pItemName->str);
+ ugd->ug_Status.ug_b_NaviPushFlag = true;
+
+ if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
+ ugd->ug_Status.ug_iViewType = mf_ug_view_normal;
+ mf_ug_cb_tab_bar_cb(ugd, selected->ug_pItemName->str);
+ } else {
+ if (pNavi_s->ug_pCurrentPath != NULL) {
+ free(pNavi_s->ug_pCurrentPath);
+ pNavi_s->ug_pCurrentPath = NULL;
+ }
+ pNavi_s->ug_pCurrentPath = strdup(selected->ug_pItemName->str);
+ mf_ug_navi_bar_create_default_view(ugd);
+ }
+ }
+
+ mf_ug_ctrl_bar_set_item_disable(ugd);
+ }
+ UG_TRACE_END;
+}
+
+
+static Evas_Object *__mf_ug_genlist_create_editfield(Evas_Object *parent, Evas_Object **pEntry)
+{
+ ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
+
+ Evas_Object *layout = elm_layout_add(parent);
+ elm_layout_theme_set(layout, "layout", "editfield", "default");
+ Evas_Object *entry = elm_entry_add(parent);
+ elm_object_part_content_set(layout, "elm.swallow.content", entry);
+ *pEntry = entry;
+ return layout;
+}
+
+static Evas_Object *__mf_ug_genlist_gl_new_folder_icon_get(void *data, Evas_Object * obj, const char *part)
+{
+ UG_TRACE_BEGIN;
+ ugData *ugd = (ugData *)data;
+ ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
+
+ if (!strcmp(part, "elm.icon")) {
+ int error_code = 0;
+ char *fileName = NULL;
+ char *fullpath = (char *)malloc(sizeof(char) * MYFILE_FILE_PATH_LEN_MAX);
+ if (fullpath == NULL) {
+ return NULL;
+ }
+ GString *dest_fullpath;
+ static Elm_Entry_Filter_Limit_Size limit_filter;
+ Evas_Object *entry = NULL;
+
+ Evas_Object *edit_field = __mf_ug_genlist_create_editfield(obj, &entry);
+
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+
+ elm_object_signal_emit(edit_field, "elm,state,eraser,show", "elm");
+
+ evas_object_size_hint_weight_set(edit_field, 1, 1);
+ evas_object_size_hint_align_set(edit_field, 1, 0.5);
+ //evas_object_show(edit_field);
+ ugd->ug_MainWindow.ug_pEditField = edit_field;
+
+ ugd->ug_MainWindow.ug_pEntry = entry;
+
+ limit_filter.max_char_count = MYFILE_FILE_NAME_LEN_MAX;
+ limit_filter.max_byte_count = 0;
+
+ memset(fullpath, 0, MYFILE_FILE_PATH_LEN_MAX);
+ fileName = elm_entry_markup_to_utf8(MF_UG_LABEL_FOLDER);
+ snprintf(fullpath, (MYFILE_FILE_PATH_LEN_MAX), "%s/%s", (char *)ugd->ug_Status.ug_pPath->str, fileName);
+
+ dest_fullpath = g_string_new(fullpath);
+
+ elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter);
+ evas_object_smart_callback_add(entry, "maxlength,reached", mf_ug_cb_reach_max_len_cb, ugd);
+
+ if (mf_ug_fm_svc_wrapper_detect_duplication(dest_fullpath)) {
+ ug_debug("dectetion result is TRUE\ndest_fullpath is %s\n", dest_fullpath->str);
+ error_code = mf_ug_fm_svc_wrapper_file_auto_rename(ugd, dest_fullpath, FILE_NAME_WITH_BRACKETS, &dest_fullpath);
+ ug_debug("rename result is %s\n", dest_fullpath->str);
+ memset(fullpath, 0, strlen(fullpath));
+ int len = strlen(ugd->ug_Status.ug_pPath->str) + 1;
+ strncpy(fullpath, dest_fullpath->str + len, MYFILE_FILE_PATH_LEN_MAX);
+ /*memset(fileName,0,strlen(fileName));*/
+
+ UG_SAFE_FREE_CHAR(fileName);
+ fileName = elm_entry_markup_to_utf8(fullpath);
+ }
+
+ /*elm_entry_entry_set(entry, ecore_file_file_get(params->m_ItemName->str));*/
+
+ elm_object_signal_callback_add(edit_field, "elm,eraser,clicked", "elm", mf_ug_cb_eraser_clicked_cb, entry);
+
+ evas_object_show(entry);
+ elm_object_focus_set(entry, EINA_TRUE);
+
+ elm_entry_entry_set(entry, fileName);
+ elm_entry_cursor_end_set(entry);
+ UG_SAFE_FREE_CHAR(fullpath);
+ UG_SAFE_FREE_GSTRING(dest_fullpath);
+ UG_SAFE_FREE_CHAR(fileName);
+ return edit_field;
+ }
+ return NULL;
+}
+
+Evas_Object *mf_ug_genlist_create_list_new_folder_style(void *data)
+{
+
+ UG_TRACE_BEGIN;
+ ugData *ugd = (ugData *)data;
+ ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
+
+ Evas_Object *genlist = NULL;
+ Evas_Object *pNaviBar = NULL;
+
+ pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
+
+ genlist = elm_genlist_add(pNaviBar);
+ elm_object_focus_set(genlist, EINA_FALSE);
+
+ ugd->ug_Status.ug_newfolderitec.item_style = "1icon";
+ ugd->ug_Status.ug_newfolderitec.func.text_get = NULL;
+ ugd->ug_Status.ug_newfolderitec.func.content_get = __mf_ug_genlist_gl_new_folder_icon_get;
+ ugd->ug_Status.ug_newfolderitec.func.state_get = NULL;
+ ugd->ug_Status.ug_newfolderitec.func.del = NULL;
+
+ Elm_Object_Item *it = elm_genlist_item_append(genlist, &ugd->ug_Status.ug_newfolderitec, ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_NONE);
+ return genlist;
+}
+
+/******************************
+** Prototype : __mf_ug_genlist_create_gl
+** Description : Samsung
+** Input : void *data
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+Evas_Object *__mf_ug_genlist_create_gl(void *data)
+{
+
+ UG_TRACE_BEGIN;
+ ugData *ugd = (ugData *)data;
+ ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
+
+ ugNaviBar *pNaviInUse = mf_ug_navi_bar_get_in_use_navi(ugd);
+ ug_mf_retvm_if(pNaviInUse == NULL, NULL, "pNaviInUse is NULL");
+
+ Evas_Object *genlist;
+ genlist = elm_genlist_add(ugd->ug_MainWindow.ug_pNaviBar);
+ evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ evas_object_smart_callback_add(genlist, "selected", __mf_ug_genlist_selected_gl, ugd);
+
+#ifdef UG_THUMB_REAL_TIME_UPDATE
+ if (ugd->ug_Status.ug_pThumbUpdateTimer != NULL) {
+ ecore_timer_del(ugd->ug_Status.ug_pThumbUpdateTimer);
+ ugd->ug_Status.ug_pThumbUpdateTimer = NULL;
+ }
+#endif
+
+ ugd->ug_Status.ug_itc.item_style = "1text.3icon";
+ ugd->ug_Status.ug_itc.func.text_get = __mf_ug_genlist_get_gl_label;
+ ugd->ug_Status.ug_itc.func.content_get = __mf_ug_genlist_get_gl_icon;
+ ugd->ug_Status.ug_itc.func.state_get = __mf_ug_genlist_get_gl_state;
+ ugd->ug_Status.ug_itc.func.del = __mf_ug_genlist_del_gl;
+
+ if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||
+ ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||
+ ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
+ ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||
+ ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
+ ugd->ug_Status.ug_normalitc.item_style = "1text.1icon.2";
+ ugd->ug_Status.ug_normalitc.func.text_get = __mf_ug_genlist_get_gl_label;
+ ugd->ug_Status.ug_normalitc.func.content_get = __mf_ug_genlist_get_gl_icon;
+ ugd->ug_Status.ug_normalitc.func.state_get = __mf_ug_genlist_get_gl_state;
+ ugd->ug_Status.ug_normalitc.func.del = __mf_ug_genlist_del_gl;
+ }
+
+ UG_TRACE_END;
+
+ return genlist;
+}
+
+
+/******************************
+** Prototype : __mf_ug_genlist_init_item_data
+** Description : Samsung
+** Input : void *data
+** ugListItemData **itemData
+** char *fullname
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+static void __mf_ug_genlist_init_item_data(void *data, ugListItemData **itemData, char *fullname)
+{
+
+ UG_TRACE_BEGIN;
+ ugData *ugd = (ugData *)data;
+ ugListItemData **ug_ItemData = itemData;
+ ug_mf_retm_if(ugd == NULL, "ugd is NULL");
+ ug_mf_retm_if(ug_ItemData == NULL, "ug_ItemData is NULL");
+
+ *ug_ItemData = (ugListItemData *)malloc(sizeof(ugListItemData));
+ if (*ug_ItemData == NULL) {
+ ug_debug("ug_ItemData malloc failed");
+ } else {
+ memset(*ug_ItemData, 0, sizeof(ugListItemData));
+ if (fullname) {
+ (*ug_ItemData)->ug_pItemName = g_string_new(fullname);
+ } else {
+ (*ug_ItemData)->ug_pItemName = NULL;
+ }
+ (*ug_ItemData)->ug_bChecked = false;
+ (*ug_ItemData)->ug_pRadioBox = NULL;
+ (*ug_ItemData)->ug_pCheckBox = NULL;
+ (*ug_ItemData)->ug_pPlaybtn = NULL;
+ (*ug_ItemData)->ug_iGroupValue = 0;
+ (*ug_ItemData)->ug_pItem = NULL;
+ (*ug_ItemData)->ug_pThumbPath = NULL;
+ (*ug_ItemData)->ug_bRealThumbFlag = false;
+ (*ug_ItemData)->ug_pData = ugd;
+ }
+ UG_TRACE_END;
+}
+
+/******************************
+** Prototype : mf_ug_genlist_create_content_list_view
+** Description : Samsung
+** Input : void *data
+** Output : None
+** Return Value :
+** Calls :
+** Called By :
+**
+** History :
+** 1.Date : 2010/12/10
+** Author : Samsung
+** Modification : Created function
+**
+******************************/
+void mf_ug_genlist_upper_style_set(void *data)
+{
+ ug_mf_retm_if(data == NULL, "data is NULL");
+ ugData *ugd = (ugData *)data;
+ ugd->ug_Status.ug_topitc.item_style = "1text.1icon.2";
+ ugd->ug_Status.ug_topitc.func.text_get = __mf_ug_genlist_get_gl_label;
+ ugd->ug_Status.ug_topitc.func.content_get = __mf_ug_genlist_gl_upper_icon_get;
+ ugd->ug_Status.ug_topitc.func.state_get = __mf_ug_genlist_get_gl_state;
+ ugd->ug_Status.ug_topitc.func.del = __mf_ug_genlist_del_gl;
+}
+
+void mf_ug_genlist_goto_myfile_style_set(void *data)
+{
+ ug_mf_retm_if(data == NULL, "data is NULL");
+ ugData *ugd = (ugData *)data;
+ ugd->ug_Status.ug_editfileditc.item_style = "1icon";
+ ugd->ug_Status.ug_editfileditc.func.text_get = NULL;
+ ugd->ug_Status.ug_editfileditc.func.content_get = __mf_ug_genlist_get_gl_editfiled_icon;
+ ugd->ug_Status.ug_editfileditc.func.state_get = NULL;
+ ugd->ug_Status.ug_editfileditc.func.del = __mf_ug_genlist_del_gl;
+
+ ugd->ug_Status.ug_editfiledBottomSeperatoritc.item_style = "dialogue/separator/11/with_line";
+ ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.text_get = NULL;
+ ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.content_get = NULL;
+ ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.state_get = NULL;
+ ugd->ug_Status.ug_editfiledBottomSeperatoritc.func.del = NULL;
+
+ ugd->ug_Status.ug_editfiledUpperSeperatoritc.item_style = "dialogue/separator/10";
+ ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.text_get = NULL;
+ ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.content_get = NULL;
+ ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.state_get = NULL;
+ ugd->ug_Status.ug_editfiledUpperSeperatoritc.func.del = NULL;
+
+}
+
+Evas_Object *mf_navi_bar_upper_create(Evas_Object *parent)
+{
+ UG_TRACE_BEGIN;
+ ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
+
+ Evas_Object *upper_genlist = NULL;
+ upper_genlist = elm_genlist_add(parent);
+ ug_mf_retvm_if(upper_genlist == NULL, NULL, "upper_genlist is NULL");
+ elm_object_focus_set(upper_genlist, EINA_FALSE);
+ evas_object_size_hint_weight_set(upper_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(upper_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_scroller_bounce_set(upper_genlist, EINA_FALSE, EINA_FALSE);
+ evas_object_show(upper_genlist);
+ UG_TRACE_END;
+ return upper_genlist;
+
+}
+
+
+void mf_ug_upper_genlist_item_append(Evas_Object *pGenlist, void *data)
+{
+ ug_mf_retm_if(data == NULL, "data is NULL");
+ ug_mf_retm_if(pGenlist == NULL, "pGenlist is NULL");
+ ugData *ugd = (ugData *)data;
+
+ Elm_Object_Item *item = NULL;
+
+ ugd->ug_Status.ug_topitc.item_style = "dialogue/bg/2icon";
+ ugd->ug_Status.ug_topitc.func.text_get = NULL;
+ ugd->ug_Status.ug_topitc.func.content_get = __mf_ug_genlist_upper_icon_get;
+ ugd->ug_Status.ug_topitc.func.state_get = NULL;
+ ugd->ug_Status.ug_topitc.func.del = NULL;
+ ugd->ug_Status.ug_separtor_no_bottom_line_itc.item_style = "dialogue/seperator.4";
+ ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.text_get = NULL;
+ ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.content_get = NULL;
+ ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.state_get = NULL;
+ ugd->ug_Status.ug_separtor_no_bottom_line_itc.func.del = NULL;
+
+ ugd->ug_Status.ug_separtor_with_bottom_line_itc.item_style = "dialogue/seperator.2";
+ ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.text_get = NULL;
+ ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.content_get = NULL;
+ ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.state_get = NULL;
+ ugd->ug_Status.ug_separtor_with_bottom_line_itc.func.del = NULL;
+
+ // separator with no bottom line
+ item = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_separtor_no_bottom_line_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ // button for dialogue item (dialogue bg)
+ elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_topitc, (void *) ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ // separator with bottom line
+ item = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_separtor_with_bottom_line_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+void mf_ug_genlist_goto_myfile_item_append(Evas_Object *pGenlist, void *data)
+{
+ ug_mf_retm_if(pGenlist == NULL, "pGenlist is NULL");
+ ug_mf_retm_if(data == NULL, "data is NULL");
+ ugData *ugd = (ugData *)data;
+
+ ugListItemData *ug_ItemData;
+ Elm_Object_Item *it = NULL;
+
+ __mf_ug_genlist_init_item_data(ugd, &ug_ItemData, NULL);
+ ug_debug("ug_ItemData is [%p]", &ug_ItemData);
+
+ //it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfiledUpperSeperatoritc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ // NULL);
+ //elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfileditc, ug_ItemData, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ ug_ItemData->ug_pItem = it;
+ //elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ //it = elm_genlist_item_append(pGenlist, &ugd->ug_Status.ug_editfiledBottomSeperatoritc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL,
+ // NULL);
+ //elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+Elm_Object_Item *mf_ug_genlist_item_append(Evas_Object *parent,
+ ugFsNodeInfo *pNode,
+ void *data,
+ int groudValue,
+ Elm_Genlist_Item_Class *itc)
+{
+ ug_mf_retvm_if(parent == NULL, NULL, "pGenlist is NULL");
+ ug_mf_retvm_if(pNode == NULL, NULL, "pNode is NULL");
+ ug_mf_retvm_if(data == NULL, NULL, "data is NULL");
+ ug_mf_retvm_if(itc == NULL, NULL, "itc is NULL");
+
+ ugData *ugd = (ugData *)data;
+ ugListItemData *ug_ItemData = NULL;
+ Elm_Object_Item *it = NULL;
+ char *real_name = NULL;
+
+ real_name = g_strconcat(pNode->path, "/", pNode->name, NULL);
+ __mf_ug_genlist_init_item_data(ugd, &ug_ItemData, real_name);
+ if (ug_ItemData == NULL) {
+ ug_debug("alloc memory error\n");
+ if (real_name) {
+ free(real_name);
+ real_name = NULL;
+ }
+ return NULL;
+ }
+
+ if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
+ if(g_strcmp0(real_name, PHONE_FOLDER) == 0) {
+ ug_ItemData->ug_pThumbPath = strdup(UG_ICON_ITEM_PHONE);
+ ug_ItemData->ug_bRealThumbFlag = true;
+
+ } else if(g_strcmp0(real_name, MEMORY_FOLDER) == 0) {
+ ug_ItemData->ug_pThumbPath = strdup(UG_ICON_ITEM_MMC);
+ ug_ItemData->ug_bRealThumbFlag = true;
+ }
+ }
+
+ ug_ItemData->ug_iGroupValue = groudValue;
+ if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
+ if (__mf_ug_genlist_is_file_marked(ugd->ug_UiGadget.ug_pMultiSelectFileList, ug_ItemData->ug_pItemName)) {
+ ug_ItemData->ug_bChecked = true;
+ ugd->ug_Status.ug_iRadioOn = ug_ItemData->ug_iGroupValue;
+ }
+ }
+ it = elm_genlist_item_append(parent, itc, ug_ItemData, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ ug_ItemData->ug_pItem = it;
+
+ if (real_name) {
+ free(real_name);
+ real_name = NULL;
+ }
+
+ return it;
+}
+
+Evas_Object *mf_ug_genlist_create_content_list_view(void *data)
+{
+ UG_TRACE_BEGIN;
+ ugData *ugd = (ugData *)data;
+ ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
+ ugNaviBar *pNaviInUse = mf_ug_navi_bar_get_in_use_navi(ugd);
+ ug_mf_retvm_if(pNaviInUse == NULL, NULL, "pNaviInUse is NULL");
+
+ Evas_Object *genlist;
+ int error_code = 0;
+ Eina_List *dir_list = NULL;
+ Eina_List *file_list = NULL;
+ Elm_Object_Item *it = NULL;
+ int groupValue = 1;
+ int count = 0;
+
+ ugListItemData *ug_ItemData;
+
+ ugd->ug_Status.ug_iRadioOn = 0;
+ ugd->ug_Status.ug_bNoContentFlag = false;
+
+ genlist = __mf_ug_genlist_create_gl(ugd);
+
+ ugd->ug_MainWindow.ug_pContent = genlist;
+
+ GString *fullpath = g_string_new(ugd->ug_Status.ug_pPath->str);
+
+
+
+ if (ugd->ug_Status.ug_iViewType == mf_ug_view_root && ugd->ug_Status.ug_iMore != UG_MORE_SEARCH) {
+ mf_ug_util_generate_root_view_file_list(&dir_list, ugd->ug_Status.ug_iMmcFlag);
+ ugd->ug_UiGadget.ug_pDirList = dir_list;
+ ugd->ug_UiGadget.ug_pFilterList = NULL;
+ mf_ug_util_sort_the_file_list(ugd);
+
+ } else {
+ error_code = mf_ug_fm_svc_wapper_get_file_list_by_filter(ugd, fullpath, &dir_list, &file_list);
+ if (error_code == 0) {
+
+ if (ugd->ug_UiGadget.ug_pDirList) {
+ mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pDirList, NODE_TYPE_PNODE);
+ ugd->ug_UiGadget.ug_pDirList = NULL;
+ }
+ if (ugd->ug_UiGadget.ug_pFilterList) {
+ mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pFilterList, NODE_TYPE_PNODE);
+ ugd->ug_UiGadget.ug_pFilterList = NULL;
+ }
+
+ ugd->ug_UiGadget.ug_pFilterList = file_list;
+ ugd->ug_UiGadget.ug_pDirList = dir_list;
+ mf_ug_util_sort_the_file_list(ugd);
+
+ }
+
+ }
+
+ /* list option set */
+ unsigned int dir_list_len = eina_list_count(dir_list);
+ unsigned int filter_file_list_len = eina_list_count(ugd->ug_UiGadget.ug_pFilterList);
+ 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);
+
+
+ if ((dir_list_len == 0 && filter_file_list_len == 0)) {
+ ug_debug("=========================================== create the no content view");
+ Evas_Object *layout;
+ Evas_Object *nocontent = NULL;
+
+ nocontent = elm_layout_add(ugd->ug_MainWindow.ug_pMainLayout);
+ elm_layout_theme_set(nocontent, "layout", "nocontents", "text");
+ elm_object_part_text_set(nocontent, "elm.text", MF_UG_LABEL_NO_FILES);
+
+ ugd->ug_Status.ug_bNoContentFlag = true;
+
+ elm_scroller_bounce_set(genlist, EINA_FALSE, EINA_FALSE);
+
+ layout = elm_layout_add(ugd->ug_MainWindow.ug_pMainLayout);
+
+ elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, UG_GRP_NO_CONTENT);
+ elm_object_part_content_set(layout, "myfile.noContent.upper", genlist);
+ elm_object_part_content_set(layout, "myfile.noContent.content", nocontent);
+ mf_ug_util_add_dir_watch(fullpath->str, ugd);
+ g_string_free(fullpath, true);
+ fullpath = NULL;
+ return layout;
+ }
+ ugFsNodeInfo *pNode = NULL;
+ Eina_List *l = NULL;
+
+ EINA_LIST_FOREACH(ugd->ug_UiGadget.ug_pDirList, l, pNode) {
+ count++;
+
+
+if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||
+ ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||
+ ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
+ ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||
+ ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
+
+ mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);
+ } else {
+ mf_ug_genlist_item_append(genlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);
+ groupValue++;
+ }
+ }
+
+ EINA_LIST_FOREACH(ugd->ug_UiGadget.ug_pFilterList, l, pNode) {
+ count++;
+ if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
+ mf_ug_genlist_item_append(genlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);
+ groupValue++;
+ } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE) {
+ mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);
+ } else {
+ mf_ug_genlist_item_append(genlist, pNode, ugd, 0, &ugd->ug_Status.ug_itc);
+ }
+#if 0
+ if ((ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) && ug_ItemData->ug_bChecked) {
+
+ if (ugd->ug_Status.ug_bUpperFlag ) {
+ if (count > MF_UG_SELECTED_ITEM_BRING_UP_COUNT)
+ elm_genlist_item_top_show(it);
+ } else {
+ if (count > MF_UG_SELECTED_ITEM_BRING_UP_COUNT_MAX)
+ elm_genlist_item_top_show(it);
+ }
+ }
+#endif
+ }
+
+ if (fullpath != NULL) {
+ if ( ugd->ug_Status.ug_iViewType != mf_ug_view_root) {
+ mf_ug_util_add_dir_watch(fullpath->str, ugd);
+ }
+ g_string_free(fullpath, TRUE);
+ }
+ UG_TRACE_END;
+ return genlist;
+}
+
+static char *__get_title_gl_text(void *data, Evas_Object *obj, const char *part)
+{
+ if (data)
+ return g_strdup((char *)data);
+ else
+ return NULL;
+}
+static void __del_title_gl(void *data, Evas_Object * obj)
+{
+ UG_SAFE_FREE_CHAR(data);
+}
+
+Evas_Object *mf_ug_genlist_create_path_info(Evas_Object *parent, Elm_Genlist_Item_Class *itc, char *info)
+{
+ ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
+
+ Evas_Object *genlist = NULL;
+ Elm_Object_Item *git=NULL;
+
+ genlist = elm_genlist_add(parent);
+ elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+
+ itc->item_style = "grouptitle";
+ itc->func.text_get = __get_title_gl_text;
+ itc->func.del = __del_title_gl;
+
+ git = elm_genlist_item_append(genlist, itc, info, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ return genlist;
+}
+
+void mf_ug_genlist_item_remove(Evas_Object *parent, const char *path)
+{
+ ug_debug("path is [%s]", path);
+ ug_mf_retm_if(parent == NULL, "parent is NULL");
+ ug_mf_retm_if(path == NULL, "path is NULL");
+
+ ugListItemData *itemData = NULL;
+ Elm_Object_Item *it = NULL;
+
+ it = elm_genlist_first_item_get(parent);
+ while (it) {
+ itemData = elm_object_item_data_get(it);
+ if (itemData->ug_pItemName == NULL || itemData->ug_pItemName->str == NULL) {
+ continue;
+ }
+ ug_debug("itemData->m_ItemName->str is [%s]", itemData->ug_pItemName->str);
+ if (g_strcmp0(path, itemData->ug_pItemName->str) == 0) {
+ elm_object_item_del(it);
+ break;
+ }
+
+ it = elm_genlist_item_next_get(it);
+ }
+
+}
+