diff options
Diffstat (limited to 'src/mf-ug-main.c')
-rw-r--r-- | src/mf-ug-main.c | 1375 |
1 files changed, 1375 insertions, 0 deletions
diff --git a/src/mf-ug-main.c b/src/mf-ug-main.c new file mode 100644 index 0000000..0430646 --- /dev/null +++ b/src/mf-ug-main.c @@ -0,0 +1,1375 @@ +/* + * 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 <sys/time.h> +#include <Elementary.h> +#include <Ecore_X.h> +#include <vconf.h> +#include <media_content.h> +#include <utilX.h> +#include <assert.h> + +#include "mf-ug-main.h" +#include "mf-ug-fs-util.h" +#include "mf-ug-util.h" +#include "../data/ug_edc_common.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_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", "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); + 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; +} + + + +static Eina_Bool ug_callback_hw_key_down( void *data, int type __attribute__((unused)), void *event ) +{ + assert(data != NULL); + assert(event != NULL); + + if(data == NULL) + { + return ECORE_CALLBACK_DONE; + } + if(event == NULL) + { + return ECORE_CALLBACK_DONE; + } + + ugData *ugd = data; + Ecore_Event_Key *key_event = event; + + if (strcmp(key_event->keyname, KEY_BACK) == 0) + { + if (mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath)) + { + ug_destroy_me(ugd->ug); + } + else + { + mf_ug_cb_upper_click_cb(ugd, NULL, NULL); + } + } + else if (strcmp(key_event->keyname, KEY_MENU) == 0) + { + //TODO: Add menu handler here. + return ECORE_CALLBACK_DONE; + } + + return ECORE_CALLBACK_DONE; +} + + +/****************************** +** 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; + + ug_mf_retv_if(NULL == priv, NULL); + + ugData *ugd = priv; + + ugd->ug = ug; + + bindtextdomain(UGPACKAGE, UGLOCALEDIR); + + Evas_Object *win = ug_get_window(); + ug_mf_retv_if(NULL == win, NULL); + + if (elm_win_wm_rotation_supported_get(win)) + { + int rotations[] = + { + APP_DEVICE_ORIENTATION_0, + APP_DEVICE_ORIENTATION_180, + }; + + elm_win_wm_rotation_available_rotations_set(win, rotations, sizeof(rotations) / sizeof(rotations[0])); + } + + 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); + int err = media_content_connect(); + if (err != MEDIA_CONTENT_ERROR_NONE) + { + ug_debug("media_content_connect failed!"); + } + + ugd->key_event_handler = ecore_event_handler_add( ECORE_EVENT_KEY_DOWN, ug_callback_hw_key_down, ugd ); + 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); + } +} + +/****************************** +** 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: + case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: + case UG_EVENT_ROTATE_LANDSCAPE: + 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); + if(ugd->key_event_handler) + { + ecore_event_handler_del(ugd->key_event_handler); + } + 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; +} |