summaryrefslogtreecommitdiff
path: root/src/common/mf-ug-cb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/mf-ug-cb.c')
-rw-r--r--src/common/mf-ug-cb.c1701
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);
+}
+
+