diff options
Diffstat (limited to 'src/common/mf-ug-cb.c')
-rw-r--r-- | src/common/mf-ug-cb.c | 1701 |
1 files changed, 1701 insertions, 0 deletions
diff --git a/src/common/mf-ug-cb.c b/src/common/mf-ug-cb.c new file mode 100644 index 0000000..f7ad1a5 --- /dev/null +++ b/src/common/mf-ug-cb.c @@ -0,0 +1,1701 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.1 (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 <stdio.h> +#include <Elementary.h> +#include <vconf.h> +#include <vconf-keys.h> +#include <pthread.h> +#include <power.h> + +#include "mf-ug-main.h" +#include "mf-ug-util.h" +#include "mf-ug-inotify-handle.h" +#include "mf-ug-winset.h" +#include "mf-ug-fs-util.h" +#include "mf-ug-fm-svc-wrapper.h" +#include "mf-ug-resource.h" +#include "mf-ug-list-play.h" + +#define UG_MAX_LEN_VIB_DURATION 0.5 +#ifdef UG_OPERATION_SELECT_MODE +#define RESULT_KEY "http://tizen.org/appcontrol/data/selected" +#endif +/****************************** +** Prototype : mf_ug_cb_back_button_cb +** Description : +** 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 +** +******************************/ + +void mf_ug_cb_back_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugData is NULL"); + + if (ugd->ug_Status.ug_bCancelDisableFlag) { + return; + } + if (0 != ugd->ug_ListPlay.ug_Player) { + mf_ug_list_play_destory_playing_file(ugd); + UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath); + } + if (ugd->ug_Status.ug_iMore == UG_MORE_SEARCH) { + + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + ug_mf_retm_if(pNavi_s == NULL, "get navi failed"); + Evas_Object *playout = ugd->ug_MainWindow.ug_pNaviLayout; + ug_mf_retm_if(playout == NULL, "get conformant failed"); + Evas_Object *newContent = NULL; + + newContent = mf_ug_genlist_create_content_list_view(ugd); + + Evas_Object *unUsed = elm_object_part_content_unset(playout, "part1"); + evas_object_del(unUsed); + + elm_object_part_content_set(playout, "part1", newContent); + ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT; + } else { + if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == false) { + Eina_List *l = NULL; + void *item = NULL; + ugNaviBar *pNavi_s = NULL; + ugNaviBar *pNavi_toshow = NULL; + GString *title = NULL; + + 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); + } + + EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) { + pNavi_s = (ugNaviBar *)item; + if (pNavi_s == NULL) + return; + if (g_strcmp0(pNavi_s->ug_pNaviLabel, MF_UG_LABEL_PHONE) == 0) { + if (pNavi_s->ug_pCurrentPath != NULL) { + free(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = NULL; + } + pNavi_s->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pEntryPath); + pNavi_s->ug_bNaviFlagInUse = true; + pNavi_toshow = pNavi_s; + } else { + if (pNavi_s->ug_pCurrentPath != NULL) { + free(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = NULL; + } + pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER); + pNavi_s->ug_bNaviFlagInUse = false; + } + + } + + if (pNavi_toshow == NULL) { + ug_debug("pNavi_toshow is NULL"); + return; + } + + 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_bInSettingView = true; + + if (ugd->ug_Status.ug_pPath) { + g_string_free(ugd->ug_Status.ug_pPath, TRUE); + ugd->ug_Status.ug_pPath = NULL; + } + + pNavi_toshow->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pEntryPath); + ugd->ug_Status.ug_pPath = g_string_new(pNavi_toshow->ug_pCurrentPath); + title = mf_ug_fm_svc_wapper_get_file_name(ugd->ug_Status.ug_pPath); + + if (title != NULL) { + pNavi_toshow->ug_pNaviTitle = g_strdup(title->str); + g_string_free(title, TRUE); + title = NULL; + } + ugd->ug_Status.ug_iViewType = mf_ug_view_normal; + mf_ug_navi_bar_create_default_view(ugd); + mf_ug_ctrl_bar_set_item_disable(ugd); + + elm_object_item_text_set(ugd->ug_MainWindow.ug_pNaviItem, pNavi_toshow->ug_pNaviTitle); + elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE); + + } else { + ug_destroy_me(ugd->ug); + } + + } + UG_TRACE_END; + +} + +/****************************** +** Prototype : mf_ug_cb_add_button_cb +** Description : +** 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 +** +******************************/ + +void mf_ug_cb_add_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugData is NULL"); + + service_h service; + + char *result = NULL; + + if (ugd->ug_Status.ug_b_NaviPushFlag) { + UG_TRACE_END; + return; + } + + if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) { + result = g_strdup(ugd->ug_Status.ug_pPath->str); + } else { + result = mf_ug_util_get_send_result(ugd); + } + if (ugd->ug_Status.ug_bRingtoneSet) { + ug_error("result is [%s]", result); + int ret = MYFILE_ERR_NONE; + ret = mf_ug_file_attr_is_drm_file(result); + ug_error("ret is [%d]", ret); + if (ret == MYFILE_ERR_NONE) { + ret = mf_ug_fs_oper_drm_is_valid(result, DRM_PERMISSION_TYPE_PLAY); + ug_error("ret is [%d]", ret); + if (ret == true) { + ret = mf_ug_fs_oper_drm_is_action_allowed(result, DRM_HAS_VALID_SETAS_STATUS, DRM_SETAS_RINGTONE); + ug_error("ret is [%d]", ret); + } + if (ret == false) { + mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_DRM_UNABLE_SET, NULL, NULL, NULL, NULL, NULL); + return; + } + } + } + if (result) { + int ret = 0; + ret = service_create(&service); + if (ret == SERVICE_ERROR_NONE) { +#ifdef UG_OPERATION_SELECT_MODE + if (ugd->ug_UiGadget.ug_bOperationSelectFlag) { + service_add_extra_data(service, RESULT_KEY, result); + } else { + service_add_extra_data(service, "result", result); + } +#else + service_add_extra_data(service, "result", result); +#endif + ug_send_result(ugd->ug, service); + service_destroy(service); + } + ug_debug("result is [%s]", result); + UG_SAFE_FREE_CHAR(result); + } + + if (0 != ugd->ug_ListPlay.ug_Player) { + mf_ug_list_play_destory_playing_file(ugd); + UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath); + } + ug_destroy_me(ugd->ug); + UG_TRACE_END; +} + +void mf_ug_cb_list_by_response_cb(void *data) +{ + ugData *ugd = (ugData *)data; + assert(ugd); + + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + ug_mf_retm_if(pNavi_s == NULL, "get navi failed"); + Evas_Object *playout = ugd->ug_MainWindow.ug_pNaviLayout; + ug_mf_retm_if(playout == NULL, "get conformant failed"); + Evas_Object *newContent = NULL; + + newContent = mf_ug_genlist_create_content_list_view(ugd); + + Evas_Object *unUsed = elm_object_part_content_unset(playout, "part1"); + evas_object_del(unUsed); + + elm_object_part_content_set(playout, "part1", newContent); + +} + + +void mf_ug_cb_list_by_button_callback(void *data, Evas_Object * obj, void *event_info) +{ + assert(data); + assert(obj); + ugData *ugd = (ugData *)data; + + Evas_Object *btn = (Evas_Object *)obj; + const char *label = elm_object_text_get(btn); + int iListBySortType = 0; + + if (g_strcmp0(label, MF_UG_LABEL_ASCENDING) == 0 ) { + switch(ugd->ug_Status.ug_iSelectedSortType) { + case 0: + iListBySortType = MF_UG_SORT_BY_NAME_Z2A; + break; + case 1: + iListBySortType = MF_UG_SORT_BY_DATE_R2O; + break; + + case 2: + iListBySortType = MF_UG_SORT_BY_SIZE_L2S; + break; + case 3: + iListBySortType = MF_UG_SORT_BY_TYPE_Z2A; + break; + default: + iListBySortType = MF_UG_SORT_BY_DATE_R2O; + break; + } + } else if(g_strcmp0(label, MF_UG_LABEL_DESCENDING) == 0 ) { + switch(ugd->ug_Status.ug_iSelectedSortType) { + case 0: + iListBySortType = MF_UG_SORT_BY_NAME_A2Z; + break; + case 1: + iListBySortType = MF_UG_SORT_BY_DATE_O2R; + break; + + case 2: + iListBySortType = MF_UG_SORT_BY_SIZE_S2L; + break; + case 3: + iListBySortType = MF_UG_SORT_BY_TYPE_A2Z; + break; + default: + iListBySortType = MF_UG_SORT_BY_DATE_O2R; + break; + } + + } + ugd->ug_Status.ug_iSortType = iListBySortType; + mf_ug_cb_list_by_response_cb(ugd); +} + + +void mf_ug_cb_popup_deleted_cb(void *data, Evas_Object * obj, void *event_info) +{ + ugData *ugd = (ugData *)data; + assert(ugd); + + mf_ug_cb_list_by_button_callback(data, obj, event_info); + + if (ugd->ug_MainWindow.ug_pNormalPopup != NULL) { + evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup); + } + ugd->ug_MainWindow.ug_pNormalPopup = NULL; + +} + +void mf_ug_cb_sort_by_cb(void *data, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugData is NULL"); + + if (ugd->ug_Status.ug_b_NaviPushFlag) { + UG_TRACE_END; + return; + } + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_LIST_BY, MF_UG_LABEL_LIST_BY, + NULL, NULL, NULL, NULL, mf_ug_cb_popup_deleted_cb, ugd); + UG_TRACE_END; +} + +void mf_ug_cb_goto_myfile_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugData is NULL"); + + if (ugd->ug_Status.ug_bCancelDisableFlag) { + ug_debug("ug_Status.ug_bCancelDisableFlag is true"); + return; + } + ugNaviBar *item = NULL; + Eina_List *l = NULL; + + ugNaviBar *pNavi_s = NULL; + ugNaviBar *pNavi_toshow = NULL; + + EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) { + pNavi_s = (ugNaviBar *)item; + if (pNavi_s == NULL) + return; + if (g_strcmp0(pNavi_s->ug_pNaviLabel, MF_UG_LABEL_PHONE) == 0) { + if (pNavi_s->ug_pCurrentPath != NULL) { + free(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = NULL; + } + pNavi_s->ug_pCurrentPath = strdup(PHONE_FOLDER); + pNavi_s->ug_bNaviFlagInUse = true; + pNavi_toshow = pNavi_s; + } else { + if (pNavi_s->ug_pCurrentPath != NULL) { + free(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = NULL; + } + pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER); + pNavi_s->ug_bNaviFlagInUse = false; + } + + } + + + if (0 != ugd->ug_ListPlay.ug_Player) { + 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(SOUNDS_FOLDER); + UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pPath->str); + + ugd->ug_Status.ug_bInSettingView = false; + + mf_ug_navi_bar_create_default_view(ugd); + ugd->ug_Status.ug_bCancelDisableFlag = true; + mf_ug_ctrl_bar_set_item_disable(ugd); +} + + +/****************************** +** Prototype : _ug_popup_exit +** 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_cb_mass_storage_popup_cb(void *data) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugData is NULL"); + + mf_ug_cb_back_button_cb(ugd, NULL, NULL); + + if (ugd->ug_MainWindow.ug_pNormalPopup) { + evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup); + ugd->ug_MainWindow.ug_pNormalPopup = NULL; + } + UG_TRACE_END; +} + +void mf_ug_cb_upper_button_pressed_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + + Evas_Object *upper_ic = (Evas_Object *)data; + elm_image_file_set(upper_ic, UG_TITLE_ICON_UPPER_PRESS, NULL); +} + +void mf_ug_cb_upper_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + + Evas_Object *upper_ic = (Evas_Object *)data; + elm_image_file_set(upper_ic, UG_TITLE_ICON_UPPER, NULL); +} + + +/****************************** +** Prototype : mf_ug_cb_upper_click_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 +** +******************************/ +void mf_ug_cb_upper_click_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL"); + + if (ugd->ug_Status.ug_b_NaviPushFlag) { + UG_TRACE_END; + return; + } + + if (ugd->ug_Status.ug_pPath != NULL && pNavi_s->ug_pCurrentPath != NULL) { + if (g_strcmp0(pNavi_s->ug_pCurrentPath, MF_UG_LABEL_PHONE) == 0 + || g_strcmp0(pNavi_s->ug_pCurrentPath, MF_UG_LABEL_MMC) == 0) { + mf_ug_navi_bar_create_default_view(ugd); + return; + } + GString *new_path = NULL; + char *file_dir = ecore_file_dir_get(pNavi_s->ug_pCurrentPath); + if (file_dir) { + new_path = g_string_new(file_dir); + UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath); + ugd->ug_Status.ug_pPath = new_path; + UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = strdup(new_path->str); + free(file_dir); + file_dir = NULL; + } else { + ug_debug("file_dir is NULL"); + } + } else { + ugd->ug_Status.ug_pPath = g_string_new(MF_UG_LABEL_PHONE); + pNavi_s->ug_pCurrentPath = strdup(MF_UG_LABEL_PHONE); + } + mf_ug_navi_bar_create_default_view(ugd); + mf_ug_ctrl_bar_set_item_disable(ugd); + UG_TRACE_END; +} + +void mf_ug_cb_home_button_pressed_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + + Evas_Object *home_ic = (Evas_Object *)data; + elm_image_file_set(home_ic, UG_TITLE_ICON_HOME_PRESS, NULL); +} + +void mf_ug_cb_home_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + + Evas_Object *home_ic = (Evas_Object *)data; + elm_image_file_set(home_ic, UG_TITLE_ICON_HOME, NULL); +} + +void mf_ug_cb_home_button_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL"); + + if (ugd->ug_Status.ug_b_NaviPushFlag) { + UG_TRACE_END; + return; + } + + int storage = MF_UG_PHONE; + + storage = mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str); + switch (storage) { + case MF_UG_PHONE: + UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath); + ugd->ug_Status.ug_pPath = g_string_new(PHONE_FOLDER); + UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = g_strdup(PHONE_FOLDER); + mf_ug_util_set_current_state(ugd, STATE_PHONE); + break; + case MF_UG_MMC: + UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath); + ugd->ug_Status.ug_pPath = g_string_new(MEMORY_FOLDER); + UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = g_strdup(MEMORY_FOLDER); + mf_ug_util_set_current_state(ugd, STATE_MEMORY); + break; + default: + return; + } + + mf_ug_navi_bar_create_default_view(ugd); + mf_ug_ctrl_bar_set_item_disable(ugd); + UG_TRACE_END; +} + +/****************************** +** Prototype : tab_callback +** Description : +** 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 +** +******************************/ +void mf_ug_cb_tab_bar_cb(void *data, const char *path) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + + + const char *label = NULL; + Evas_Object *newContent = NULL; + Evas_Object *pNaviBar = NULL; + ugNaviBar *pNavi_s_toshow = NULL; + ugNaviBar *pNavi_s_inuse = NULL; + + if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true) { + return; + } + + int optStorage = 0; + optStorage = mf_ug_fm_svc_wapper_get_location(path); + switch (optStorage) { + case MF_UG_PHONE: + label = MF_UG_LABEL_PHONE; + break; + case MF_UG_MMC: + label = MF_UG_LABEL_MMC; + break; + default: + break; + } + + + if (label != NULL) { + char *rootpath = NULL; + + /*0. set the previous navi to be out of use */ + pNavi_s_inuse = mf_ug_navi_bar_get_in_use_navi(ugd); + + if (pNavi_s_inuse == NULL || pNavi_s_inuse->ug_pNaviLabel == NULL) { + UG_TRACE_END; + return; + } + + pNavi_s_inuse->ug_bNaviFlagInUse = FALSE; + + if (0 != ugd->ug_ListPlay.ug_Player) { + mf_ug_list_play_destory_playing_file(ugd); + UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath); + } + + /*if the muisc is playing, destory the play */ + + /*1. get navi bar pointer by the label */ + pNaviBar = ugd->ug_MainWindow.ug_pNaviBar; + pNavi_s_toshow = ug_mf_navi_bar_get_navi_from_navilist(ugd->ug_MainWindow.ug_pNaviBarList, label); + + ug_debug("label is %s", label); + /*2. create navi bar if not created, otherwise get it by pNaviBar */ + if (pNavi_s_toshow == NULL) { + /*2.0 get root path by storage label */ + rootpath = mf_ug_fm_svc_wapper_get_root_path_by_tab_label(label); + if (rootpath == NULL) { + UG_TRACE_END; + return; + } + /*2.1 create the navi for the tab */ + pNavi_s_toshow = calloc(1, sizeof(ugNaviBar)); + if (pNavi_s_toshow == NULL) { + ug_debug("pNavi_s_toshow is NULL"); + free(rootpath); + rootpath = NULL; + return; + } + + pNavi_s_toshow->ug_bNaviFlagInUse = TRUE; + /*2.2 set path as root path of the storage */ + pNavi_s_toshow->ug_pCurrentPath = g_strdup(rootpath); + pNavi_s_toshow->ug_pNaviLabel = strdup(label); + free(rootpath); + rootpath = NULL; + /*2.3 insert phone navi into the navi_list */ + ugd->ug_MainWindow.ug_pNaviBarList = eina_list_append(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_s_toshow); + + } else { + /*/2.1 get the navi of the tab */ + pNavi_s_toshow = mf_ug_navi_bar_get_navi_struct_by_label(ugd, label); + + pNavi_s_toshow->ug_bNaviFlagInUse = TRUE; + } + /*/2.2 set related status value. */ + if (ugd->ug_Status.ug_pPath != NULL) { + g_string_free(ugd->ug_Status.ug_pPath, TRUE); + ugd->ug_Status.ug_pPath = NULL; + } + ugd->ug_Status.ug_pPath = g_string_new(pNavi_s_toshow->ug_pCurrentPath); + ugd->ug_Status.ug_iViewType = mf_ug_view_normal; + mf_ug_navi_bar_create_default_view(ugd); + + mf_ug_ctrl_bar_set_item_disable(ugd); + } else { + ug_debug("Invalid argument: label is NULL\n"); + } + UG_TRACE_END; +} + + +void mf_ug_cb_ctrl_bar_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + ug_mf_retm_if(event_info == NULL, "event_info is NULL"); + const char *label = NULL; + + if (ugd->ug_Status.ug_b_NaviPushFlag) + return; + label = elm_object_item_text_get((Elm_Object_Item *)event_info); + ug_mf_retm_if(label == NULL, "label is NULL"); + + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + if (g_strcmp0(label, MF_UG_LABEL_RINGTONES) == 0) { + if (g_strcmp0(ugd->ug_Status.ug_pPath->str, UG_RINGTION_PATH) != 0) { + UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath); + ugd->ug_Status.ug_pPath = g_string_new(UG_RINGTION_PATH); + UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = g_strdup(UG_RINGTION_PATH); + mf_ug_util_set_current_state(ugd, STATE_PHONE); + ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_MUSIC; + mf_ug_navi_bar_create_default_view(ugd); + } + } else if (g_strcmp0(label, MF_UG_LABEL_OTHER_MUSIC) == 0) { + if (g_strcmp0(ugd->ug_Status.ug_pPath->str, UG_MUSIC_PATH) != 0) { + UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath); + ugd->ug_Status.ug_pPath = g_string_new(UG_MUSIC_PATH); + UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = g_strdup(UG_MUSIC_PATH); + mf_ug_util_set_current_state(ugd, STATE_PHONE); + ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_RINGTONE; + mf_ug_navi_bar_create_default_view(ugd); + } + } + UG_TRACE_END; +} + +/****************************** +** Prototype : mf_ug_cb_list_play_cb +** Description : Samsung +** Input : ugListItemData *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 +** +******************************/ +void mf_ug_cb_list_play_cb(ugListItemData *data, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ugListItemData *itemData = data; + ugData *ugd = NULL; + ug_mf_retm_if(itemData == NULL, "itemData is NULL"); + ug_mf_retm_if(itemData->ug_pData == NULL, "ug_pData is NULL"); + + ugd = itemData->ug_pData; + + if (itemData->ug_pData->ug_Status.ug_b_NaviPushFlag) + return; + + mf_ug_list_play_play_music_item(itemData); + + UG_TRACE_END; +} + +/****************************** +** Prototype : mf_ug_cb_select_info_show_cb +** Description : Samsung +** Input : void *data +** Evas *e +** Evas_Object *obj +** void *event_info +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +void mf_ug_cb_select_info_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,show,default", "elm"); + UG_TRACE_END; + return; +} + +/****************************** +** Prototype : mf_ug_cb_select_info_hide_cb +** Description : Samsung +** Input : void *data +** Evas *e +** Evas_Object *obj +** void *event_info +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +void mf_ug_cb_select_info_hide_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,hide,default", "elm"); + UG_TRACE_END; + return; +} + +/****************************** +** Prototype : mf_ug_cb_select_info_timeout_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 +** +******************************/ +void mf_ug_cb_select_info_timeout_cb(void *data, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,hide,default", "elm"); + UG_TRACE_END; + return; +} + + +/****************************** +** Prototype : mf_ug_cb_mmc_changed_cb +** Description : Samsung +** Input : keynode_t *key +** void* data +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +static void __mf_ug_cb_mmc_remove_view_operation(void *data) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + + Evas_Object *parent = NULL; + const char *labelStorage = NULL; + parent = ugd->ug_MainWindow.ug_pNaviGenlist; + labelStorage = MEMORY_FOLDER; + + mf_ug_genlist_item_remove(parent, labelStorage); + +} + +void mf_ug_cb_mmc_changed_cb(keynode_t *key, void *data) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + ug_mf_retm_if(ugd->ug_Status.ug_pPath == NULL || ugd->ug_Status.ug_pPath->str == NULL, "ugd->ug_Status.ug_pPath is NULL"); + + int optStorage = MF_UG_NONE; + char *labelStorage = NULL; + + if (VCONF_TYPE_INT == vconf_keynode_get_type(key) + && VCONFKEY_SYSMAN_MMC_MOUNTED == vconf_keynode_get_int(key)) { + if (ugd->ug_Status.ug_bInSettingView && ugd->ug_Status.ug_bSettingEntry) { + ugd->ug_Status.ug_iMmcFlag = MMC_ON; + return; + } + ugd->ug_Status.ug_iMmcFlag = MMC_ON; + + mf_ug_util_storage_insert_action(ugd, MF_UG_LABEL_MMC); + } else { + ugNaviBar *pNaviInUseStruct = NULL; + + if (VCONFKEY_SYSMAN_MMC_REMOVED == vconf_keynode_get_int(key) + || VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED == vconf_keynode_get_int(key)) { + ug_debug("mmc removed"); + if (ugd->ug_Status.ug_bInSettingView && ugd->ug_Status.ug_bSettingEntry) { + ugd->ug_Status.ug_iMmcFlag = MMC_OFF; + return; + } + optStorage = MF_UG_MMC; + ugd->ug_Status.ug_iMmcFlag = MMC_OFF; + } + + if (optStorage == MF_UG_NONE) { + ug_debug("get removed storage failed"); + return; + } + + labelStorage = MF_UG_LABEL_MMC; + if (mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str) == optStorage) { + if (0 != ugd->ug_ListPlay.ug_Player) { + mf_ug_list_play_destory_playing_file(ugd); + UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath); + } + + mf_ug_navi_bar_remove_navi_list_item_by_label(ugd, labelStorage); + pNaviInUseStruct = mf_ug_navi_bar_get_in_use_navi(ugd); + ug_debug("label is [%s]pNaviInUseStruct->ug_pCurrentPath is [%s]", pNaviInUseStruct->ug_pNaviLabel, pNaviInUseStruct->ug_pCurrentPath); + mf_ug_navi_bar_refresh_navibar_recovered_view(ugd, pNaviInUseStruct); + } + } + + if(mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath)) + { + elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_FALSE); + mf_ug_callback_tab_click(ugd); + } + else + { + mf_ug_navi_bar_title_set(ugd); + } + + UG_TRACE_END; + return; +} + +/****************************** +** Prototype : mf_ug_cb_dir_update_cb +** Description : Samsung +** Input : mf_ug_inotify_event event +** char *name +** void *data +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +void mf_ug_cb_dir_update_cb(mf_ug_inotify_event event, char *name, void *data) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugData is NULL"); + + ug_debug("event : %d, name : %s", event, name); + + ug_dir_event_t buffer; + + buffer.event = event; + buffer.name = strdup(name); + + ecore_pipe_write(ugd->ug_UiGadget.ug_pInotifyPipe, &buffer, sizeof(buffer)); + UG_TRACE_END; + + return; +} + +/****************************** +** Prototype : mf_ug_cb_dir_pipe_cb +** Description : Samsung +** Input : void *data +** void *buffer +** unsigned int nbyte +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +static GString *__mf_ug_cb_dir_pipe_get_parent(GString *path) +{ + + ug_mf_retvm_if(path == NULL, NULL, "path is NULL"); + ug_mf_retvm_if(path->str == NULL, NULL, "path->str is NULL"); + + if (ecore_file_exists(path->str)) { + return path; + } else if (mf_ug_fm_svc_wapper_is_root_path(path)) { + return path; + } else { + GString *parent = mf_ug_fm_svc_wrapper_get_file_parent_path(path); + UG_SAFE_FREE_GSTRING(path); + __mf_ug_cb_dir_pipe_get_parent(parent); + } + return path; +} + +void mf_ug_cb_dir_pipe_cb(void *data, void *buffer, unsigned int nbyte) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + + + if (ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_INIT) { + return; + } + + if (g_strcmp0(ugd->ug_Status.monitor_path, ugd->ug_Status.ug_pPath->str)) { + return; + } + if (buffer) { + ug_dir_event_t *msg = (ug_dir_event_t *) buffer; + ug_debug("event : %d, name : %s", msg->event, msg->name); + + Evas_Object *newContent = NULL; + ugListItemData *itemData = NULL; + Elm_Object_Item *it = NULL; + GString *parent = NULL; + char *path = NULL; + int count = 0; + + switch (msg->event) { + case UG_MF_INOTI_CREATE: + case UG_MF_INOTI_MOVE_IN: + /*/1 TODO: add new item to list */ + if(msg->name) { + path = g_strconcat(ugd->ug_Status.ug_pPath->str, "/", msg->name, NULL); + int file_type = 0; + if (mf_ug_file_attr_is_dir(path)) { + file_type = UG_FILE_TYPE_DIR; + } else { + file_type = UG_FILE_TYPE_FILE; + } + ugFsNodeInfo *pNode = mf_ug_util_generate_pnode(path, file_type); + if (ugd->ug_MainWindow.ug_pNaviGenlist == NULL) { + + Evas_Object *genlist = NULL; + 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); + + ugd->ug_MainWindow.ug_pNaviGenlist = genlist; + evas_object_smart_callback_add(genlist, "selected", mf_ug_genlist_selected_gl, ugd); + + evas_object_del(elm_object_part_content_unset(ugd->ug_MainWindow.ug_pNaviLayout, "part1")); + + elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "part1", newContent); + elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "part1", genlist); + } + if (file_type == UG_FILE_TYPE_DIR) { + 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 == IMPORT_PATH_SELECT_MODE || + ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || + ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE || + ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) { + + mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc); + } else { + int groupValue = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist); + mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc); + } + } else { + if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) { + int groupValue = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist); + mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc); + } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) { + mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc); + } else { + mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_itc); + } + + } + + if (pNode != NULL) { + UG_SAFE_FREE_CHAR(pNode->ext); + free(pNode); + pNode = NULL; + } + } + break; + case UG_MF_INOTI_DELETE: + case UG_MF_INOTI_MOVE_OUT: + /*/1 TODO: remove item from list */ + path = g_strconcat(ugd->ug_Status.ug_pPath->str, "/", msg->name, NULL); + it = elm_genlist_first_item_get(ugd->ug_MainWindow.ug_pNaviGenlist); + while (it) { + itemData = elm_object_item_data_get(it); + if (itemData->ug_pItemName == NULL || itemData->ug_pItemName->str == NULL) { + ug_debug(); + continue; + } + if (g_strcmp0(path, itemData->ug_pItemName->str) == 0) { + elm_object_item_del(it); + break; + } + + it = elm_genlist_item_next_get(it); + } + count = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist); + ugd->ug_Status.ug_bNoContentFlag = !count; + + break; + case UG_MF_INOTI_MODIFY: + /*/1 TODO: update item in list */ + ugd->ug_MainWindow.ug_pNaviGenlist = newContent = mf_ug_genlist_create_content_list_view(ugd); + mf_ug_navi_bar_set_new_content(ugd->ug_MainWindow.ug_pNaviLayout, newContent); + break; + case UG_MF_INOTI_DELETE_SELF: + case UG_MF_INOTI_MOVE_SELF: + /*/1 TODO: watching directory is removed, change current directory. */ + { + GString *current = NULL; + current = g_string_new(ugd->ug_Status.ug_pPath->str); + parent = __mf_ug_cb_dir_pipe_get_parent(current); + + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + + + g_string_free(ugd->ug_Status.ug_pPath, TRUE); + ugd->ug_Status.ug_pPath = NULL; + ugd->ug_Status.ug_pPath = parent; + + if (pNavi_s->ug_pCurrentPath != NULL) { + free(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = NULL; + } + pNavi_s->ug_pCurrentPath = g_strdup(parent->str); + + + + mf_ug_navi_bar_create_default_view(ugd); + } + break; + default: + ug_mf_error("Unknown event"); + break; + } + mf_ug_ctrl_bar_set_item_disable(ugd); + if (msg->name) { + free(msg->name); + msg->name = NULL; + } + } + UG_TRACE_END; +} + + +#ifdef UG_THUMB_REAL_TIME_UPDATE +Eina_Bool mf_ug_cb_thumb_timer_cb(void *data) +{ + ugListItemData *itemData = (ugListItemData *)data; + ug_mf_retvm_if(itemData == NULL, EINA_FALSE, "input params is NULL"); + ugData *ugd = (ugData *)itemData->ug_pData; + ug_mf_retvm_if(ugd == NULL, EINA_FALSE, "ugd is NULL"); + + bool allright_flag = true; + Evas_Object *pContent = NULL; + + if (ugd->ug_Status.ug_pThumbUpdateTimer == NULL) { + return EINA_FALSE; + } + + /****read the realized part of the list****/ + if (itemData->ug_pItem) { + pContent = elm_object_item_widget_get(itemData->ug_pItem); + if (pContent == NULL) { + ugd->ug_Status.ug_pThumbUpdateTimer = NULL; + return EINA_FALSE; + } + } else { + ugd->ug_Status.ug_pThumbUpdateTimer = NULL; + return EINA_FALSE; + } + Eina_List *realized_list = elm_genlist_realized_items_get(pContent); + Eina_List *list = NULL; + Elm_Object_Item *it; + ugListItemData *item_data = NULL; + + if (realized_list == NULL) { + allright_flag = false; + } + + EINA_LIST_FOREACH(realized_list, list, it) { + item_data = (ugListItemData *)elm_object_item_data_get(it); + if (item_data == NULL) + continue; + + if (item_data->ug_bRealThumbFlag == false) { + ug_debug("Update item: %s", item_data->ug_pItemName->str); + if (ecore_file_is_dir(item_data->ug_pItemName->str) == true) { + item_data->ug_pThumbPath = strdup(UG_ICON_FOLDER); + item_data->ug_bRealThumbFlag = true; + elm_object_item_data_set(it, item_data); + elm_genlist_item_update(it); + + } else if (ecore_file_exists(item_data->ug_pItemName->str)) { + char *new_thumb = NULL; + int thumbnail_type = 0; + thumbnail_type = mf_ug_file_attr_get_file_icon(item_data->ug_pItemName->str, NULL, &new_thumb); + if (new_thumb) { + if (thumbnail_type == MF_UG_THUMBNAIL_TYPE_DEFAULT) { + if (item_data->ug_pThumbPath && g_strcmp0(new_thumb, item_data->ug_pThumbPath) == 0) { + allright_flag = FALSE; + } else { + if (item_data->ug_pThumbPath) { + free(item_data->ug_pThumbPath); + item_data->ug_pThumbPath = NULL; + } + item_data->ug_pThumbPath = strdup(new_thumb); + item_data->ug_bRealThumbFlag = TRUE; + elm_object_item_data_set(it, item_data); + elm_genlist_item_update(it); + free(new_thumb); + new_thumb = NULL; + } + + } else { + if (item_data->ug_pThumbPath) { + free(item_data->ug_pThumbPath); + item_data->ug_pThumbPath = NULL; + } + item_data->ug_pThumbPath = strdup(new_thumb); + item_data->ug_bRealThumbFlag = TRUE; + elm_object_item_data_set(it, item_data); + elm_genlist_item_update(it); + free(new_thumb); + new_thumb = NULL; + } + } else { + allright_flag = false; + } + } + } + } + + if (allright_flag == false) { + return EINA_TRUE; + } else { + ugd->ug_Status.ug_pThumbUpdateTimer = NULL; + return EINA_FALSE; + } +} +#endif + +void mf_ug_cb_create_new_folder(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + + ugData *ugd = (ugData *)data; + UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pContextPopup); + + if (ugd->ug_Status.ug_b_NaviPushFlag) { + UG_TRACE_END; + return; + } + + if (ugd->ug_Status.ug_iMore == UG_MORE_CREATE_FOLDER) + return; + + int ret = 0; + ugd->ug_Status.ug_iMore = UG_MORE_CREATE_FOLDER; + + ret = mf_ug_util_check_disk_space(ugd); + if (ret == MYFILE_ERR_NO_FREE_SPACE) { + ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT; + return; + } +#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_MainWindow.ug_pNewFolderPopup = mf_ug_popup_create_new_folder_popup(ugd, MF_UG_LABEL_CREATE); + +} + +void mf_ug_cb_warning_popup_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + Evas_Object *btn = (Evas_Object *)obj; + const char *label = elm_object_text_get(btn); + + if (g_strcmp0(label, MF_UG_LABEL_OK) == 0 ) { + evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup); + ugd->ug_MainWindow.ug_pNormalPopup = NULL; + } +} + +void mf_ug_cb_reach_max_len_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + mf_ug_popup_indicator_popup(MF_UG_LABEL_MAX_CHARACTER_REACHED); + + UG_TRACE_END; +} + +void mf_ug_cb_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + elm_entry_entry_set(data, ""); +} + +void mf_ug_cb_cancel_new_folder_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT; + ecore_imf_context_input_panel_hide(elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry)); + evas_object_del(ugd->ug_MainWindow.ug_pEntry); + + UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNewFolderPopup); +} + +static int __mf_cb_imk_cancel_cb(void *data) +{ + UG_TRACE_BEGIN; + ug_mf_retvm_if(data == NULL, false, "data is NULL"); + ugData *ugd = (ugData *)data; + + mf_ug_cb_cancel_new_folder_cb(ugd, NULL, NULL); + ugd->ug_Status.popup_del_idler = NULL; + return 0; +} + + +static void __mf_ug_cb_illegal_char_popup_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + Evas_Object *btn = (Evas_Object *)obj; + const char *label = elm_object_text_get(btn); + + if (g_strcmp0(label, MF_UG_LABEL_YES) == 0 ) { + UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNormalPopup); + + Evas_Object *entry = ugd->ug_MainWindow.ug_pEntry; + if (entry != NULL) + elm_object_focus_set(entry, EINA_TRUE); + + } else if (g_strcmp0(label, MF_UG_LABEL_NO) == 0 ) { + UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNormalPopup); + ugd->ug_Status.popup_del_idler = ecore_idler_add((Ecore_Task_Cb) __mf_cb_imk_cancel_cb, ugd); + } + +} + +static int __mf_ug_cb_ime_mkdir_cb(void *data, char *fileName) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + + ug_mf_retvm_if(ugd == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL"); + ug_mf_retvm_if(fileName == NULL, MYFILE_ERR_SRC_ARG_INVALID, "data is NULL"); + ug_mf_retvm_if(ugd->ug_Status.ug_pPath == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL"); + ug_mf_retvm_if(ugd->ug_Status.ug_pPath->str == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL"); + + + int ret = 0; + const char *message = NULL; + const char *left_label = NULL; + const char *right_label = NULL; + + left_label = MF_UG_LABEL_YES; + right_label = MF_UG_LABEL_NO; + if (strlen(fileName)) { + + GString *fullpathdir = g_string_new(ugd->ug_Status.ug_pPath->str); + + if (fullpathdir == NULL) { + mf_ug_util_operation_alloc_failed(ugd); + return MYFILE_ERR_ALLOCATE_MEMORY_FAIL; + } + GString *fullpathname = g_string_new(fileName); + + if (fullpathname == NULL) { + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + mf_ug_util_operation_alloc_failed(ugd); + return MYFILE_ERR_ALLOCATE_MEMORY_FAIL; + } + /*check the space */ + gchar *test_space = g_strdup(fileName); + if (test_space == NULL) { + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + g_string_free(fullpathname, TRUE); + fullpathname = NULL; + mf_ug_util_operation_alloc_failed(ugd); + return MYFILE_ERR_ALLOCATE_MEMORY_FAIL; + } + if (strlen(g_strchug(test_space)) == 0) { + message = MF_UG_LABEL_NAME_INVALID; /*TODO */ + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message, + left_label, right_label, NULL, + __mf_ug_cb_illegal_char_popup_cb, ugd); + + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + g_string_free(fullpathname, TRUE); + fullpathname = NULL; + g_free(test_space); + test_space = NULL; + return MYFILE_ERR_DIR_CREATE_FAIL; + } + + g_free(test_space); + test_space = NULL; + + /*check if input name is valid */ + if (mf_ug_file_attr_is_valid_name(fullpathname->str) == MYFILE_ERR_INVALID_FILE_NAME) { + + message = MF_UG_LABEL_ILLEGAL_CHAR; + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message, + left_label, right_label, NULL, + __mf_ug_cb_illegal_char_popup_cb, ugd); + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + g_string_free(fullpathname, TRUE); + fullpathname = NULL; + + return MYFILE_ERR_DIR_CREATE_FAIL; + } + + GString *fullpath = NULL; + char *temp_fullpath = g_strconcat(fullpathdir->str, "/", fullpathname->str, NULL); + if (temp_fullpath) { + fullpath = g_string_new(temp_fullpath); + + free(temp_fullpath); + temp_fullpath = NULL; + if (fullpath == NULL) { + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + g_string_free(fullpathname, TRUE); + fullpathname = NULL; + mf_ug_util_operation_alloc_failed(ugd); + return MYFILE_ERR_ALLOCATE_MEMORY_FAIL; + } + } else { + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + g_string_free(fullpathname, TRUE); + fullpathname = NULL; + return MYFILE_ERR_ALLOCATE_MEMORY_FAIL; + } + + /*check whether DIR name is override(DIR name has no extention) */ + /*check whether path length is override */ + if ((strlen(fullpathdir->str) + strlen(fullpathname->str)) > MYFILE_FILE_PATH_LEN_MAX) { + + message = MF_UG_LABEL_PATH_REACH_MAX_LEN; + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message, + left_label, right_label, NULL, + __mf_ug_cb_illegal_char_popup_cb, ugd); + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + g_string_free(fullpathname, TRUE); + fullpathname = NULL; + ret = MYFILE_ERR_DIR_CREATE_FAIL; + } + /*check if duplicated name */ + else if (mf_ug_file_attr_is_duplicated_name(ugd->ug_Status.ug_pPath->str, fileName) == MYFILE_ERR_DUPLICATED_NAME) { + message = MF_UG_LABEL_DUP_NAME; + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message, + left_label, right_label, NULL, + __mf_ug_cb_illegal_char_popup_cb, ugd); + + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + g_string_free(fullpathname, TRUE); + fullpathname = NULL; + ret = MYFILE_ERR_DIR_CREATE_FAIL; + } + /*check if DIR name is all spaces */ + else { + ret = mf_ug_fm_svc_wrapper_create_service(ugd, fullpath); + /*check whether operate on read only area */ + if (errno == EROFS) { + message = MF_UG_LABEL_OPER_READ_ONLY; + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, message, NULL, NULL, NULL, NULL, NULL); + ret = MYFILE_ERR_DIR_CREATE_FAIL; + } else if (ret) { + message = MF_UG_LABEL_CREATE_DIR_FAILED; + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, message, NULL, NULL, NULL, NULL, NULL); + } + + g_string_free(fullpathdir, TRUE); + fullpathdir = NULL; + g_string_free(fullpathname, TRUE); + fullpathname = NULL; + g_string_free(fullpath, TRUE); + fullpath = NULL; + + } + } else { + message = MF_UG_LABEL_EMPTY_FOLDER_NAME; + + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message, + left_label, right_label, NULL, + __mf_ug_cb_illegal_char_popup_cb, ugd); + ret = MYFILE_ERR_DIR_CREATE_FAIL; + } + return ret; +} + + +void mf_ug_cb_save_cb(void *data, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + if (ugd->ug_Status.ug_b_NaviPushFlag) { + UG_TRACE_END; + return; + } + + int ret = 0; + const char *message = NULL; + const char *left_label = NULL; + const char *right_label = NULL; + + if (ugd->ug_Status.ug_iMore == UG_MORE_CREATE_FOLDER) { + const char *entry_data = NULL; + char *name = NULL; + + /*hide IMF*/ + if (ugd->ug_MainWindow.ug_pEntry != NULL) { + Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry); + if (imf_context != NULL) + ecore_imf_context_hide(imf_context); + } + + entry_data = elm_entry_entry_get(ugd->ug_MainWindow.ug_pEntry); + + if (entry_data) { + name = elm_entry_markup_to_utf8(entry_data); + } else { + message = MF_UG_LABEL_GET_NAME_FAILED; + left_label = MF_UG_LABEL_YES; + right_label = MF_UG_LABEL_NO; + ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message, + left_label, right_label, NULL, + __mf_ug_cb_illegal_char_popup_cb, ugd); + return; + } + + if (name == NULL) + return; + + ret = __mf_ug_cb_ime_mkdir_cb(ugd, name); + if (ret == 0) { + ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT; + ecore_imf_context_input_panel_hide(elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry)); + evas_object_del(ugd->ug_MainWindow.ug_pEntry); + UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNewFolderPopup); + mf_ug_navi_bar_create_default_view(ugd); + } + + if (name != NULL) { + free(name); + name = NULL; + } + } +} + +void mf_ug_cb_lcd_state_changed_cb(power_state_e state, void *user_data) +{ + UG_TRACE_BEGIN; + + ug_mf_retm_if(user_data == NULL, "user_data is NULL"); + ugData *ugd = (ugData *)user_data; + + if(state == POWER_STATE_SCREEN_OFF){ + if (0 != ugd->ug_ListPlay.ug_Player) { + ug_debug("destory the playing file"); + mf_ug_list_play_destory_playing_file(ugd); + mf_ug_list_disable_play_itc(ugd, true); + UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath); + } + } + UG_TRACE_END; +} + + +Eina_Bool mf_ug_cb_popup_del_idler_cb(void *data) +{ + UG_TRACE_BEGIN; + ug_mf_retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "data is NULL"); + ugData *ugd = (ugData *)data; + + UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSearchPopup); + ugd->ug_Status.popup_del_idler = NULL; + + return ECORE_CALLBACK_CANCEL; +} + +void mf_ug_cb_entry_button_pressed_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + + Evas_Object *home_button_ic = (Evas_Object *)data; + elm_image_file_set(home_button_ic, UG_ICON_ENTRY_FOLDER_PRESS, NULL); +} + +void mf_ug_cb_entry_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + + Evas_Object *home_button_ic = (Evas_Object *)data; + elm_image_file_set(home_button_ic, UG_ICON_ENTRY_FOLDER, NULL); +} + +void mf_ug_cb_play_button_pressed_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + const char *play_icon = NULL; + + Evas_Object *music_icon = elm_object_part_content_get(obj, "icon"); + if(ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_PLAYING) { + play_icon = UG_ICON_MUSIC_PLAY_WHITE_PRESS; + } else { + play_icon = UG_ICON_MUSIC_PAUSE_WHITE_PRESS; + } + + elm_image_file_set(music_icon, play_icon, NULL); +} + +void mf_ug_cb_play_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + const char *play_icon = NULL; + + Evas_Object *music_icon = elm_object_part_content_get(obj, "icon"); + if(ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_PLAYING) { + play_icon = UG_ICON_MUSIC_PLAY_WHITE; + } else { + play_icon = UG_ICON_MUSIC_PAUSE_WHITE; + } + + elm_image_file_set(music_icon, play_icon, NULL); +} + +void mf_ug_cb_more_cb(void *data, Evas_Object * obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + mf_ug_context_popup_create_more(ugd, obj); +} + + |