/* * 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 #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" #include "mf-ug-list-play.h" #ifdef UG_OPERATION_SELECT_MODE #define MF_BUNDLE_SELECTION_MODE "http://tizen.org/appcontrol/data/selection_mode" #define MF_BUNDLE_SELECTION_MODE_SINGLE "single" #define MF_BUNDLE_SELECTION_MODE_MULTI "multiple" #endif /****************************** ** 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_Status.ug_iViewType = mf_ug_view_root; 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; #ifdef UG_OPERATION_SELECT_MODE ugd->ug_UiGadget.ug_bOperationSelectFlag = false; #endif mf_ug_util_create_dir_monitor(ugd); mf_ug_util_set_mmc_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_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); 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); 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_bRingtoneSet = true; } 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_PATH_SELECT_MODE || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) { 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_pEntryPath = g_strdup(entry_path); ugd->ug_Status.ug_pPath = g_string_new(entry_path); if (g_strcmp0(entry_path, PHONE_FOLDER) == 0) { ugd->ug_Status.ug_iViewType = mf_ug_view_root; } else { ugd->ug_Status.ug_iViewType = mf_ug_view_normal; } 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_IMPORT_PATH_SELECT, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = IMPORT_PATH_SELECT_MODE; } else if(!strncmp(select_mode, UG_SELECT_MODE_EXPORT, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = EXPORT_MODE; } else if (!strncmp(select_mode, UG_SELECT_MODE_IMPORT_SINGLE, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = IMPORT_SINGLE; ugd->ug_Status.ug_iViewType = mf_ug_view_normal; } else if (!strncmp(select_mode, UG_SELECT_MODE_SAVE, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = SAVE_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_ALL; } } else { ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_ALL; } 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; } #ifdef UG_OPERATION_SELECT_MODE static void __mf_ug_main_set_operation_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, MF_BUNDLE_SELECTION_MODE_SINGLE, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE; } else if (!strncmp(select_mode, MF_BUNDLE_SELECTION_MODE_MULTI, strlen(select_mode))) { ugd->ug_UiGadget.ug_iSelectMode = MULTI_FILE_MODE; } else { ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE; } ugd->ug_UiGadget.ug_bOperationSelectFlag = true; } UG_TRACE_END; } #endif /****************************** ** 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 *path = NULL; char *select_mode = NULL; char *filter_mode = NULL; char *marked_mode = NULL; char *drm_filter_mode = NULL; #ifdef UG_OPERATION_SELECT_MODE char *key[UG_OPTION_COUNT] = { "path", "select_type", "file_type", "marked_mode", "drm_type", MF_BUNDLE_SELECTION_MODE}; char *operation_select_mode = NULL; #else char *key[UG_OPTION_COUNT] = { "path", "select_type", "file_type", "marked_mode", "drm_type"}; #endif 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); #ifdef UG_OPERATION_SELECT_MODE service_get_extra_data(service, key[5], &operation_select_mode); __mf_ug_main_set_operation_select_mode(ugd, operation_select_mode); #endif 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"); 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); 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) { 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); 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_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_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); __mf_ug_main_init_data(ugd); __mf_ug_main_set_option_status(ugd, service); //mf_ug_player_vol_set(ugd->ug_Status.ug_pPath->str); int err = media_content_connect(); if (err != MEDIA_CONTENT_ERROR_NONE) { ug_debug("media_content_connect failed!"); } power_set_changed_cb(mf_ug_cb_lcd_state_changed_cb, ugd); __mf_ug_main_start(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_pause(ugd); //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_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath); } 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(); power_unset_changed_cb(); } ug_ecore_idler_del(ugd->ug_Status.search_idler); ug_ecore_idler_del(ugd->ug_Status.popup_del_idler); ug_ecore_idler_del(ugd->ug_Status.popup_create_idler); ug_ecore_idler_del(ugd->ug_Status.msg_finish_idler); UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.pPopupTimer); 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_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.ug_pThumbUpdateTimer); UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.play_timer); __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; }