/* * myfile * * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.tizenopensource.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 #include #include #include #include #include #include "mf-ug-main.h" #include "mf-ug-fs-util.h" #include "mf-ug-util.h" #include "mf-ug-conf.h" #include "mf-ug-dlog.h" #include "mf-ug-winset.h" #include "mf-ug-fm-svc-wrapper.h" #include "mf-ug-resource.h" #include "mf-ug-cb.h" /****************************** ** Prototype : __mf_ug_main_init_data ** Description : ** Input : void *data ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_init_data(void *data) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugData is NULL"); 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(PHONE_FOLDER); ugd->ug_Status.ug_iState = STATE_PHONE; ugd->ug_Status.ug_iRadioOn = 0; ugd->ug_Status.ug_iMmcFlag = false; ugd->ug_Status.ug_bAudioPlayFlag = false; ugd->ug_Status.ug_bInstallFlag = true; ugd->ug_Status.ug_bInSettingView = false; ugd->ug_Status.ug_bSettingEntry = false; ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT; ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE; ugd->ug_UiGadget.ug_iFilterMode = SHOW_ALL_LIST; ugd->ug_UiGadget.ug_pExtension = NULL; ugd->ug_UiGadget.ug_iDrmFilter = DRM_FILTER_NONE; ugd->ug_UiGadget.ug_iMarkedMode = MARKED_OFF; ugd->ug_UiGadget.ug_pMultiSelectFileList = NULL; ugd->ug_ListPlay.ug_pPlayFilePath = NULL; ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_INIT; mf_ug_util_create_dir_monitor(ugd); mf_ug_util_set_mmc_state_cb(ugd); mf_ug_cb_set_mass_storage_state_cb(ugd); UG_TRACE_END; } /****************************** ** Prototype : __mf_ug_main_free_data ** Description : ** Input : void *data ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_free_data(void *data) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugData is NULL"); if (ugd->ug_Status.ug_pPath) { g_string_free(ugd->ug_Status.ug_pPath, TRUE); ugd->ug_Status.ug_pPath = NULL; } if (ugd->ug_UiGadget.ug_pMultiSelectFileList) { mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pMultiSelectFileList, NODE_TYPE_CHAR); ugd->ug_UiGadget.ug_pMultiSelectFileList = NULL; } if (ugd->ug_UiGadget.ug_pDirList) { mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pDirList, NODE_TYPE_PNODE); ugd->ug_UiGadget.ug_pDirList = NULL; } if (ugd->ug_UiGadget.ug_pFilterList) { mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pFilterList, NODE_TYPE_PNODE); ugd->ug_UiGadget.ug_pFilterList = NULL; } if (ugd->ug_Status.ug_pUpper_folder) { free(ugd->ug_Status.ug_pUpper_folder); ugd->ug_Status.ug_pUpper_folder = NULL; } if (ugd->ug_Status.ug_pEntryPath) { free(ugd->ug_Status.ug_pEntryPath); ugd->ug_Status.ug_pEntryPath = NULL; } UG_TRACE_END; } /****************************** ** Prototype : __mf_ug_main_free_evas_object ** Description : Samsung ** Input : void *data ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_free_evas_object(void *data) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugData is NULL"); int iNaviListLen = 0; int index = 0; if (ugd->ug_MainWindow.ug_pNormalPopup != NULL) { evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup); ugd->ug_MainWindow.ug_pNormalPopup = NULL; } if (ugd->ug_MainWindow.ug_pRadioGroup != NULL) { evas_object_del(ugd->ug_MainWindow.ug_pRadioGroup); ugd->ug_MainWindow.ug_pRadioGroup = NULL; } iNaviListLen = eina_list_count(ugd->ug_MainWindow.ug_pNaviBarList); for (index = 0; index < iNaviListLen; index++) { ugNaviBar *pNavi_s = NULL; pNavi_s = (ugNaviBar *)eina_list_nth(ugd->ug_MainWindow.ug_pNaviBarList, index); if (pNavi_s->ug_pNaviLabel != NULL) { free(pNavi_s->ug_pNaviLabel); pNavi_s->ug_pNaviLabel = NULL; } if (pNavi_s->ug_pNaviTitle != NULL) { free(pNavi_s->ug_pNaviTitle); pNavi_s->ug_pNaviTitle = NULL; } } if (ugd->ug_MainWindow.ug_pTabBar != NULL) { evas_object_del(ugd->ug_MainWindow.ug_pTabBar); ugd->ug_MainWindow.ug_pTabBar = NULL; } if (ugd->ug_MainWindow.ug_pTabBackGround != NULL) { evas_object_del(ugd->ug_MainWindow.ug_pTabBackGround); ugd->ug_MainWindow.ug_pTabBackGround = NULL; } if (ugd->ug_MainWindow.ug_pTabLayout != NULL) { evas_object_del(ugd->ug_MainWindow.ug_pTabLayout); ugd->ug_MainWindow.ug_pTabLayout = NULL; } if (ugd->ug_MainWindow.ug_pBackGround != NULL) { evas_object_del(ugd->ug_MainWindow.ug_pBackGround); ugd->ug_MainWindow.ug_pBackGround = NULL; } if (ugd->ug_MainWindow.ug_pMainLayout != NULL) { evas_object_del(ugd->ug_MainWindow.ug_pMainLayout); ugd->ug_MainWindow.ug_pMainLayout = NULL; } UG_TRACE_END; } Evas_Object *mf_ug_main_create_bg(Evas_Object *win) { ug_mf_retv_if(win == NULL, NULL); Evas_Object *bg = elm_bg_add(win); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_win_resize_object_add(win, bg); evas_object_show(bg); return bg; } /****************************** ** Prototype : _ug_mf_create_layout_main ** Description : ** Input : Evas_Object* parent ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static Evas_Object *__mf_ug_main_create_main_layout(Evas_Object *parent) { UG_TRACE_BEGIN; Evas_Object *layout = NULL; ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL"); layout = elm_layout_add(parent); ug_mf_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n"); elm_layout_theme_set(layout, "layout", "application", "default"); evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_win_resize_object_add(parent, layout); evas_object_show(layout); UG_TRACE_END; return layout; } Evas_Object *mf_ug_main_tab_layout_create(Evas_Object *parent) { Evas_Object *layout; ug_mf_retv_if(parent == NULL, NULL); layout = elm_layout_add(parent); ug_mf_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n"); elm_object_focus_set(layout, EINA_FALSE); //elm_layout_theme_set(layout, "layout", "application", "tabbar"); elm_layout_theme_set(layout, "layout", "tabbar", "default"); evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_hide(layout); return layout; } /****************************** ** Prototype : __mf_ug_main_set_path_option ** Description : Samsung ** Input : void *data ** char *path ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static int __mf_ug_main_set_path_option(void *data, const char *path) { 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(path == NULL, MYFILE_ERR_SRC_ARG_INVALID, "path is NULL"); int error_code = MYFILE_ERR_NONE; char *entry_path = NULL; if (strncmp(path, PHONE_FOLDER, strlen(PHONE_FOLDER)) == 0 || strncmp(path, MEMORY_FOLDER, strlen(MEMORY_FOLDER)) == 0) { /**check whether is /opt/media or /mnt/mmc */ entry_path = strdup(path); if (entry_path == NULL) { return MYFILE_ERR_ALLOCATE_FAIL; } } else if (strncmp(path, UG_SETTING_RINGTONE_PATH, strlen(UG_SETTING_RINGTONE_PATH)) == 0 || strncmp(path, UG_SETTING_ALERTS_PATH, strlen(UG_SETTING_ALERTS_PATH)) == 0 || strncmp(path, UG_SETTING_MSG_ALERTS_PATH, strlen(UG_SETTING_MSG_ALERTS_PATH)) == 0) { /**check whether is setting ringtone or alerts path */ entry_path = strdup(path); if (entry_path == NULL) { return MYFILE_ERR_ALLOCATE_FAIL; } ugd->ug_Status.ug_bInSettingView = true; ugd->ug_Status.ug_bSettingEntry = true; ugd->ug_Status.ug_pEntryPath = g_strdup(path); } else if (strlen(path) == 1 && strncmp(path, "/", 1)) { /**chech the path whether is "/" */ entry_path = strdup(PHONE_FOLDER); if (entry_path == NULL) { return MYFILE_ERR_ALLOCATE_FAIL; } } else { /**not begin with /mnt/mmc and /opt/media , so append it to /opt/media*/ char *temp = strdup(PHONE_FOLDER); if (temp == NULL) { return MYFILE_ERR_ALLOCATE_FAIL; } entry_path = g_strconcat(temp, path, NULL); free(temp); } if (entry_path != NULL) { /** if there is a '/' at the end of the path, can't be recognized */ if (entry_path[strlen(entry_path) - 1] == '/') { entry_path[strlen(entry_path) - 1] = '\0'; } if (ecore_file_exists(entry_path) == false) { if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE) { error_code = mf_ug_fm_svc_wrapper_create_p(entry_path); if (error_code != MYFILE_ERR_NONE) { free(entry_path); return MYFILE_ERR_INVALID_FILE_PATH; } } else { free(entry_path); return MYFILE_ERR_INVALID_FILE_PATH; } } if (ecore_file_is_dir(entry_path) == false) { ug_mf_debug("path is not a directory"); free(entry_path); return MYFILE_ERR_INVALID_DIR_PATH; } 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(entry_path); free(entry_path); } else { return MYFILE_ERR_ALLOCATE_FAIL; } UG_TRACE_END; return error_code; } /****************************** ** Prototype : __mf_ug_main_set_select_mode ** Description : Samsung ** Input : void *data ** char *select_mode ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_set_select_mode(void *data, const char *select_mode) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugd is NULL"); if (select_mode != NULL) { if (!strncmp(select_mode, UG_SELECT_MODE_SINGLE_FILE, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE; } else if (!strncmp(select_mode, UG_SELECT_MODE_MULTI_FILE, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = MULTI_FILE_MODE; } else if (!strncmp(select_mode, UG_SELECT_MODE_SINGLE_ALL, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = SINGLE_ALL_MODE; } else if (!strncmp(select_mode, UG_SELECT_MODE_MULTI_ALL, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = MULTI_ALL_MODE; } else if(!strncmp(select_mode, UG_SELECT_MODE_IMPORT, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = IMPORT_MODE; } else if(!strncmp(select_mode, UG_SELECT_MODE_EXPORT, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = EXPORT_MODE; } else { ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE; } } else { ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE; } UG_TRACE_END; } /****************************** ** Prototype : __mf_ug_main_set_filter_mode ** Description : Samsung ** Input : void *data ** char *file_filter ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_set_filter_mode(void *data, const char *file_filter) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugd is NULL"); if (file_filter != NULL) { if (!strncmp(file_filter, UG_FILE_FILTER_ALL, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_ALL_LIST; } else if (!strncmp(file_filter, UG_FILE_FILTER_IMAGE, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_IMAGE_LIST; } else if (!strncmp(file_filter, UG_FILE_FILTER_SOUND, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_SOUND_LIST; } else if (!strncmp(file_filter, UG_FILE_FILTER_VIDEO, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_VIDEO_LIST; } else if (!strncmp(file_filter, UG_FILE_FILTER_FLASH, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_FLASH_LIST; } else if (!strncmp(file_filter, UG_FILE_FILTER_FOLDER, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_FOLDER_LIST; } else if (!strncmp(file_filter, UG_FILE_FILTER_IV, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_IMAGE_VIDEO_LIST; } else if (!strncmp(file_filter, UG_FILE_FILTER_IS, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_IMAGE_SOUND_LIST; } else if (!strncmp(file_filter, UG_FILE_FILTER_VS, strlen(file_filter))) { ugd->ug_UiGadget.ug_iFilterMode = SHOW_VIDEO_SOUND_LIST; } else { ugd->ug_UiGadget.ug_iFilterMode = SHOW_BY_EXTENSION; ugd->ug_UiGadget.ug_pExtension = strdup(file_filter); if (g_strcmp0(file_filter, "opml") == 0) { ugd->ug_UiGadget.ug_iImportMode = 1; } } } else { ugd->ug_UiGadget.ug_iFilterMode = SHOW_ALL_LIST; ugd->ug_UiGadget.ug_pExtension = NULL; } if (ugd->ug_UiGadget.ug_iFilterMode != SHOW_BY_EXTENSION) { ugd->ug_UiGadget.ug_iFileFilter = mf_ug_fm_svc_wapper_get_file_filter(ugd->ug_UiGadget.ug_iFilterMode); } if (ugd->ug_UiGadget.ug_iFilterMode == SHOW_SOUND_LIST && ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) { ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_MUSIC; } else { ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_MULTI; } UG_TRACE_END; } /****************************** ** Prototype : __mf_ug_main_set_marked_mode ** Description : Samsung ** Input : void *data ** char *marked_mode ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_set_marked_mode(void *data, const char *marked_mode) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugd is NULL"); if (marked_mode != NULL) { ugd->ug_UiGadget.ug_iMarkedMode = MARKED_ON; mf_ug_util_get_params_path(&ugd->ug_UiGadget.ug_pMultiSelectFileList, marked_mode); } else { ugd->ug_UiGadget.ug_iMarkedMode = MARKED_OFF; } UG_TRACE_END; } /****************************** ** Prototype : __mf_ug_main_set_drm_filter_mode ** Description : Samsung ** Input : void *data ** char *drm_filter ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_set_drm_filter_mode(void *data, const char *drm_filter) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugd is NULL"); if (drm_filter != NULL) { if (!strncmp(drm_filter, UG_DRM_FILTER_NONE, strlen(drm_filter))) { ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_NONE; } else if (!strncmp(drm_filter, UG_DRM_FILTER_ALL, strlen(drm_filter))) { ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_ALL; } else if (!strncmp(drm_filter, UG_DRM_FILTER_WITHOUT_FL, strlen(drm_filter))) { ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_WITHOUT_FL; } else { ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_NONE; } } else { ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_NONE; } ugd->ug_UiGadget.ug_iDrmFilter = mf_ug_fm_svc_wapper_get_drm_filter(ugd->ug_UiGadget.ug_iDrmFilterMode, ugd->ug_UiGadget.ug_iFileFilter); UG_TRACE_END; } /****************************** ** Prototype : __mf_ug_main_set_option_status ** Description : Samsung ** Input : void *data ** service_h service ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_set_option_status(void *data, service_h service) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugd is NULL"); char *key[UG_OPTION_COUNT] = { "path", "select_type", "file_type", "marked_mode", "drm_type"}; char *path = NULL; char *select_mode = NULL; char *filter_mode = NULL; char *marked_mode = NULL; char *drm_filter_mode = NULL; service_get_extra_data(service, key[0], &path); service_get_extra_data(service, key[1], &select_mode); service_get_extra_data(service, key[2], &filter_mode); service_get_extra_data(service, key[3], &marked_mode); service_get_extra_data(service, key[4], &drm_filter_mode); __mf_ug_main_set_select_mode(ugd, select_mode); __mf_ug_main_set_path_option(ugd, path); __mf_ug_main_set_filter_mode(ugd, filter_mode); __mf_ug_main_set_marked_mode(ugd, marked_mode); __mf_ug_main_set_drm_filter_mode(ugd, drm_filter_mode); UG_TRACE_END; } /****************************** ** Prototype : __mf_ug_main_create_default_layout ** Description : Samsung ** Input : Evas_Object* parent ** void* data ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static Evas_Object *__mf_ug_main_create_default_layout(Evas_Object *parent, void *data) { ugData *ugd = (ugData *)data; ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL"); ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL"); Elm_Object_Item *pItemPhone = NULL; Elm_Object_Item *pItemMMC = NULL; Evas_Object *pContent = NULL; int tab_item_count = 1; int mmc_card = 0; int error_code = 0; /*/check if mmc mounted */ error_code = mf_ug_util_get_mmc_state(&mmc_card); if (error_code == 0 && mmc_card == 1) { tab_item_count++; } /*/check if usb otg mounted { Todo: we need to add something to record what should on } create phone navi */ ugNaviBar *pNavi_phone = calloc(1, sizeof(ugNaviBar)); ug_mf_retvm_if(pNavi_phone == NULL, NULL, "pNavi_phone is NULL"); ugd->ug_MainWindow.ug_pNaviBar = mf_ug_navi_bar_create_navi_bar(parent); if (ugd->ug_MainWindow.ug_pNaviBar == NULL) { ug_debug("ugd->ug_MainWindow.ug_pNaviBar is NULL"); free(pNavi_phone); pNavi_phone = NULL; UG_TRACE_END; return NULL; } pNavi_phone->ug_bNaviFlagInUse = TRUE; UG_SAFE_FREE_CHAR(pNavi_phone->ug_pCurrentPath); pNavi_phone->ug_pCurrentPath = g_strdup(ugd->ug_Status.ug_pPath->str); UG_SAFE_FREE_CHAR(pNavi_phone->ug_pNaviLabel); pNavi_phone->ug_pNaviLabel = strdup(MF_UG_LABEL_PHONE); /*/insert phone navi into the navi_list */ /** Todo: if we need to check ap->mf_MainWindow.plistNaviBar?*/ ugd->ug_MainWindow.ug_pNaviBarList = eina_list_append(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_phone); if (tab_item_count > 1 && !ugd->ug_Status.ug_bSettingEntry) { /*create tab bar */ if (ugd->ug_MainWindow.ug_pTabLayout == NULL) { ugd->ug_MainWindow.ug_pTabLayout = mf_ug_main_tab_layout_create(ugd->ug_MainWindow.ug_pWindow); } ugd->ug_MainWindow.ug_pTabBar = mf_ug_tab_bar_create(ugd->ug_MainWindow.ug_pWindow); pContent = ugd->ug_MainWindow.ug_pTabBar; pItemPhone = mf_ug_tab_bar_append_item(pContent, UG_ICON_PHONE, MF_UG_LABEL_PHONE, ugd); pItemMMC = mf_ug_tab_bar_append_item(pContent, UG_ICON_MEMORY, MF_UG_LABEL_MMC, ugd); //mf_ug_tab_bar_set_selected_item(pItemPhone); } UG_TRACE_END; return ugd->ug_MainWindow.ug_pNaviBar; } /****************************** ** Prototype : __mf_ug_main_start ** Description : ** Input : void *data ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void __mf_ug_main_start(void *data) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)data; ug_mf_retm_if(ugd == NULL, "ugd is NULL"); Evas_Object *pContent = NULL; int error_code = 0; int mmc_card = 0; pContent = __mf_ug_main_create_default_layout(ugd->ug_MainWindow.ug_pMainLayout, ugd); if (pContent != NULL) { error_code = mf_ug_util_get_mmc_state(&mmc_card); if (!mf_ug_fm_svc_wapper_is_root_path(ugd)) { elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content", pContent); } else { if (error_code == 0 && mmc_card == 1) { ug_debug(" mmc is inserted"); ugd->ug_Status.ug_iMmcFlag = MMC_ON; if (ugd->ug_Status.ug_bSettingEntry) { ug_debug(" entry from setting sounds"); elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content", pContent); } else { ug_debug(" not entry from setting sounds"); evas_object_show(ugd->ug_MainWindow.ug_pTabLayout); elm_object_part_content_set(ugd->ug_MainWindow.ug_pTabLayout, "elm.swallow.content", pContent); elm_object_part_content_set(ugd->ug_MainWindow.ug_pTabLayout, "elm.swallow.tabbar", ugd->ug_MainWindow.ug_pTabBar); elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content", ugd->ug_MainWindow.ug_pTabLayout); } } else { ug_debug(" mmc is not inserted"); elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content", pContent); } } mf_ug_navi_bar_create_default_view(ugd); mf_ug_ctrl_bar_set_item_disable(ugd); if (ugd->ug_Status.ug_bMassStorageFlag && ugd->ug_MainWindow.ug_pTabBar) { mf_ug_tab_bar_set_item_disable(ugd->ug_MainWindow.ug_pTabBar, EINA_TRUE); mf_ug_ctrl_bar_disable_item(ugd, true); } mf_ug_navi_bar_set_blocking(data, false); } else { return; } ug_debug("done"); UG_TRACE_END; return; } /****************************** ** Prototype : on_create ** Description : Samsung ** Input : ui_gadget_h ug ** enum ug_mode mode ** service_h service ** void *priv ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv) { UG_TRACE_BEGIN; Evas_Object *win = NULL; ugData *ugd = NULL; ug_mf_retv_if(NULL == priv, NULL); ugd = priv; ugd->ug = ug; bindtextdomain(UGPACKAGE, UGLOCALEDIR); win = (Evas_Object *)ug_get_window(); ug_mf_retv_if(NULL == win, NULL); ugd->ug_MainWindow.ug_pWindow = win; ugd->ug_Status.ug_bInstallFlag = false; ugd->ug_Status.ug_bMassStorageFlag = false; ugd->ug_Status.ug_bCancelDisableFlag = false; ugd->ug_UiGadget.ug_iImportMode = 0; ugd->ug_MainWindow.ug_pMainLayout = __mf_ug_main_create_main_layout(ugd->ug_MainWindow.ug_pWindow); ugd->ug_MainWindow.ug_pTabLayout = mf_ug_main_tab_layout_create(ugd->ug_MainWindow.ug_pWindow); ugd->ug_MainWindow.ug_pBackGround = mf_ug_main_create_bg(ugd->ug_MainWindow.ug_pWindow); elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.bg", ugd->ug_MainWindow.ug_pBackGround); bool usb_state = mf_ug_util_is_mass_storage_on(); #ifndef UG_LAUNCH_AT_MASS_STORAGE_MODE if (usb_state) { mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, ("Please use after turn off mass storage mode"), NULL, NULL, NULL, (Evas_Smart_Cb) mf_ug_cb_mass_storage_popup_cb, ugd); elm_object_style_set(ugd->ug_MainWindow.ug_pBackGround, "transparent"); UG_TRACE_END; return (void *)ugd->ug_MainWindow.ug_pMainLayout; } else #else ug_debug(); if (usb_state) { ugd->ug_Status.ug_bMassStorageFlag = true; } #endif { __mf_ug_main_init_data(ugd); __mf_ug_main_set_option_status(ugd, service); media_content_connect(); ugd->ug_Status.ug_iThemeType = mf_ug_util_get_theme(); __mf_ug_main_start(ugd); power_set_changed_cb(mf_ug_cb_lcd_state_changed_cb, ugd); UG_TRACE_END; return ugd->ug_MainWindow.ug_pMainLayout; } } /****************************** ** Prototype : on_start ** Description : ** Input : ui_gadget_h ug ** service_h service ** void *priv ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void on_start(ui_gadget_h ug, service_h service, void *priv) { } /****************************** ** Prototype : on_pause ** Description : ** Input : ui_gadget_h ug ** service_h service ** void *priv ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void on_pause(ui_gadget_h ug, service_h service, void *priv) { UG_TRACE_BEGIN; if (!priv) return; ugData *ugd = (ugData *)priv; if (0 != ugd->ug_ListPlay.ug_Player) { //mf_ug_list_play_destory_playing_file(ugd); } } /****************************** ** Prototype : on_resume ** Description : ** Input : ui_gadget_h ug ** bundle *data ** void *priv ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ inline bool __mf_ug_main_check_exist(const char *path) { if (path && (access(path, F_OK) == 0)) { return true; } return false; } static void on_resume(ui_gadget_h ug, service_h service, void *priv) { UG_TRACE_BEGIN; ug_mf_retm_if(NULL == priv, "priv is NULL"); ugData *ugd = priv; if (!__mf_ug_main_check_exist(ugd->ug_Status.ug_pPath->str)) { ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); GString *parent_path = mf_ug_fm_svc_wrapper_get_file_parent_path(ugd->ug_Status.ug_pPath); int storage = mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str); g_string_free(ugd->ug_Status.ug_pPath, TRUE); ugd->ug_Status.ug_pPath = NULL; free(pNavi_s->ug_pCurrentPath); pNavi_s->ug_pCurrentPath = NULL; if (parent_path && parent_path->str) { if (__mf_ug_main_check_exist(parent_path->str)) { ug_debug("paretn is [%s] exit", parent_path->str); ugd->ug_Status.ug_pPath = g_string_new(parent_path->str); pNavi_s->ug_pCurrentPath = g_strdup(parent_path->str); } else { ug_debug("paretn is [%s] not exit", parent_path->str); if (storage == MF_UG_PHONE) { ugd->ug_Status.ug_pPath = g_string_new(PHONE_FOLDER); pNavi_s->ug_pCurrentPath = strdup(PHONE_FOLDER); } else { ugd->ug_Status.ug_pPath = g_string_new(MEMORY_FOLDER); pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER); } } } else { ug_debug("get parent failed"); if (storage == MF_UG_PHONE) { ugd->ug_Status.ug_pPath = g_string_new(PHONE_FOLDER); pNavi_s->ug_pCurrentPath = strdup(PHONE_FOLDER); } else { ugd->ug_Status.ug_pPath = g_string_new(MEMORY_FOLDER); pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER); } } mf_ug_navi_bar_create_default_view(ugd); mf_ug_ctrl_bar_set_item_disable(ugd); g_string_free(parent_path, TRUE); parent_path = NULL; } UG_TRACE_END; } /****************************** ** Prototype : on_message ** Description : ** Input : ui_gadget_h ug ** bundle *msg ** bundle *data ** void *priv ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv) { } /****************************** ** Prototype : on_event ** Description : ** Input : ui_gadget_h ug ** enum ug_event event ** service_h service ** void *priv ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv) { UG_TRACE_BEGIN; switch (event) { case UG_EVENT_LOW_MEMORY: break; case UG_EVENT_LOW_BATTERY: break; case UG_EVENT_LANG_CHANGE: break; case UG_EVENT_ROTATE_PORTRAIT: break; case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: break; case UG_EVENT_ROTATE_LANDSCAPE: break; case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: break; default: break; } UG_TRACE_END; } /****************************** ** Prototype : on_key_event ** Description : Samsung ** Input : ui_gadget_h ug ** enum ug_key_event event ** service_h service ** void *priv ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)priv; ug_mf_retm_if(ugd == NULL, "ugd is NULL"); switch (event) { case UG_KEY_EVENT_END: if (ugd->ug_MainWindow.ug_pNormalPopup) { evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup); ugd->ug_MainWindow.ug_pNormalPopup = NULL; } if (0 != ugd->ug_ListPlay.ug_Player) { mf_ug_list_play_destory_playing_file(ugd); } ug_destroy_me(ug); break; default: break; } UG_TRACE_END; } /****************************** ** Prototype : on_destroy ** Description : ** Input : ui_gadget_h ug ** service_h service ** void *priv ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ static void on_destroy(ui_gadget_h ug, service_h service, void *priv) { UG_TRACE_BEGIN; ugData *ugd = (ugData *)priv; ug_mf_retm_if(ugd == NULL, "ugd is NULL"); __mf_ug_main_free_data(ugd); if (ugd->ug_Status.ug_bInstallFlag == true) { mf_ug_util_destory_dir_monitor(ugd); mf_ug_util_destory_mmc_state_cb(); media_content_disconnect(); mf_ug_util_destory_mass_storage_callback(); } if (0 != ugd->ug_ListPlay.ug_Player) { mf_ug_list_play_destory_playing_file(ugd); } if (ugd->ug_Status.callback_timer) { ecore_timer_del(ugd->ug_Status.ug_pThumbUpdateTimer); ugd->ug_Status.ug_pThumbUpdateTimer = NULL; } if (ugd->ug_Status.ug_pThumbUpdateTimer != NULL) { ecore_timer_del(ugd->ug_Status.ug_pThumbUpdateTimer); ugd->ug_Status.ug_pThumbUpdateTimer = NULL; } __mf_ug_main_free_evas_object(ugd); UG_TRACE_END; } /****************************** ** Prototype : UG_MODULE_INIT ** Description : ** Input : struct ug_module_ops *ops ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) { UG_TRACE_BEGIN; ugData *ugd; if (!ops) { return -1; } ugd = calloc(1, sizeof(ugData)); if (!ugd) { return -1; } ops->create = on_create; ops->start = on_start; ops->pause = on_pause; ops->resume = on_resume; ops->destroy = on_destroy; ops->message = on_message; ops->event = on_event; ops->key_event = on_key_event; ops->priv = ugd; ops->opt = UG_OPT_INDICATOR_ENABLE; UG_TRACE_END; return 0; } /****************************** ** Prototype : UG_MODULE_EXIT ** Description : ** Input : struct ug_module_ops *ops ** Output : None ** Return Value : ** Calls : ** Called By : ** ** History : ** 1.Date : 2010/12/10 ** Author : Samsung ** Modification : Created function ** ******************************/ UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops) { UG_TRACE_BEGIN; ugData *ugd; if (!ops) { return; } ugd = ops->priv; if (ugd) { free(ugd); } UG_TRACE_END; }