2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
23 #include <Elementary.h>
26 #include <media_content.h>
28 #include "mf-ug-main.h"
29 #include "mf-ug-fs-util.h"
30 #include "mf-ug-util.h"
31 #include "mf-ug-conf.h"
32 #include "mf-ug-dlog.h"
33 #include "mf-ug-winset.h"
34 #include "mf-ug-fm-svc-wrapper.h"
35 #include "mf-ug-resource.h"
37 #include "mf-ug-list-play.h"
39 #ifdef UG_OPERATION_SELECT_MODE
41 #define MF_BUNDLE_SELECTION_MODE "http://tizen.org/appcontrol/data/selection_mode"
42 #define MF_BUNDLE_SELECTION_MODE_SINGLE "single"
43 #define MF_BUNDLE_SELECTION_MODE_MULTI "multiple"
46 /******************************
47 ** Prototype : __mf_ug_main_init_data
56 ** 1.Date : 2010/12/10
58 ** Modification : Created function
60 ******************************/
61 static void __mf_ug_main_init_data(void *data)
64 ugData *ugd = (ugData *)data;
65 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
67 if (ugd->ug_Status.ug_pPath != NULL) {
68 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
69 ugd->ug_Status.ug_pPath = NULL;
71 ugd->ug_Status.ug_pPath = g_string_new(PHONE_FOLDER);
72 ugd->ug_Status.ug_iState = STATE_PHONE;
73 ugd->ug_Status.ug_iRadioOn = 0;
74 ugd->ug_Status.ug_iMmcFlag = false;
75 ugd->ug_Status.ug_bAudioPlayFlag = false;
76 ugd->ug_Status.ug_bInstallFlag = true;
77 ugd->ug_Status.ug_bInSettingView = false;
78 ugd->ug_Status.ug_bSettingEntry = false;
79 ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;
80 ugd->ug_Status.ug_iViewType = mf_ug_view_root;
82 ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE;
83 ugd->ug_UiGadget.ug_iFilterMode = SHOW_ALL_LIST;
84 ugd->ug_UiGadget.ug_pExtension = NULL;
85 ugd->ug_UiGadget.ug_iDrmFilter = DRM_FILTER_NONE;
86 ugd->ug_UiGadget.ug_iMarkedMode = MARKED_OFF;
87 ugd->ug_UiGadget.ug_pMultiSelectFileList = NULL;
89 ugd->ug_ListPlay.ug_pPlayFilePath = NULL;
90 ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_INIT;
91 #ifdef UG_OPERATION_SELECT_MODE
92 ugd->ug_UiGadget.ug_bOperationSelectFlag = false;
96 mf_ug_util_create_dir_monitor(ugd);
97 mf_ug_util_set_mmc_state_cb(ugd);
101 /******************************
102 ** Prototype : __mf_ug_main_free_data
104 ** Input : void *data
111 ** 1.Date : 2010/12/10
113 ** Modification : Created function
115 ******************************/
116 static void __mf_ug_main_free_data(void *data)
119 ugData *ugd = (ugData *)data;
120 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
122 if (ugd->ug_Status.ug_pPath) {
123 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
124 ugd->ug_Status.ug_pPath = NULL;
126 if (ugd->ug_UiGadget.ug_pMultiSelectFileList) {
127 mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pMultiSelectFileList, NODE_TYPE_CHAR);
128 ugd->ug_UiGadget.ug_pMultiSelectFileList = NULL;
130 if (ugd->ug_UiGadget.ug_pDirList) {
131 mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pDirList, NODE_TYPE_PNODE);
132 ugd->ug_UiGadget.ug_pDirList = NULL;
134 if (ugd->ug_UiGadget.ug_pFilterList) {
135 mf_ug_util_free_eina_list_data(&ugd->ug_UiGadget.ug_pFilterList, NODE_TYPE_PNODE);
136 ugd->ug_UiGadget.ug_pFilterList = NULL;
139 if (ugd->ug_Status.ug_pUpper_folder) {
140 free(ugd->ug_Status.ug_pUpper_folder);
141 ugd->ug_Status.ug_pUpper_folder = NULL;
143 if (ugd->ug_Status.ug_pEntryPath) {
144 free(ugd->ug_Status.ug_pEntryPath);
145 ugd->ug_Status.ug_pEntryPath = NULL;
153 /******************************
154 ** Prototype : __mf_ug_main_free_evas_object
155 ** Description : Samsung
156 ** Input : void *data
163 ** 1.Date : 2010/12/10
165 ** Modification : Created function
167 ******************************/
168 static void __mf_ug_main_free_evas_object(void *data)
172 ugData *ugd = (ugData *)data;
173 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
175 int iNaviListLen = 0;
178 if (ugd->ug_MainWindow.ug_pNormalPopup != NULL) {
180 evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);
181 ugd->ug_MainWindow.ug_pNormalPopup = NULL;
183 if (ugd->ug_MainWindow.ug_pRadioGroup != NULL) {
185 evas_object_del(ugd->ug_MainWindow.ug_pRadioGroup);
186 ugd->ug_MainWindow.ug_pRadioGroup = NULL;
189 iNaviListLen = eina_list_count(ugd->ug_MainWindow.ug_pNaviBarList);
190 for (index = 0; index < iNaviListLen; index++) {
191 ugNaviBar *pNavi_s = NULL;
192 pNavi_s = (ugNaviBar *)eina_list_nth(ugd->ug_MainWindow.ug_pNaviBarList, index);
193 if (pNavi_s->ug_pNaviLabel != NULL) {
194 free(pNavi_s->ug_pNaviLabel);
195 pNavi_s->ug_pNaviLabel = NULL;
197 if (pNavi_s->ug_pNaviTitle != NULL) {
198 free(pNavi_s->ug_pNaviTitle);
199 pNavi_s->ug_pNaviTitle = NULL;
203 if (ugd->ug_MainWindow.ug_pTabBar != NULL) {
204 evas_object_del(ugd->ug_MainWindow.ug_pTabBar);
205 ugd->ug_MainWindow.ug_pTabBar = NULL;
209 if (ugd->ug_MainWindow.ug_pBackGround != NULL) {
210 evas_object_del(ugd->ug_MainWindow.ug_pBackGround);
211 ugd->ug_MainWindow.ug_pBackGround = NULL;
214 if (ugd->ug_MainWindow.ug_pMainLayout != NULL) {
215 evas_object_del(ugd->ug_MainWindow.ug_pMainLayout);
216 ugd->ug_MainWindow.ug_pMainLayout = NULL;
221 Evas_Object *mf_ug_main_create_bg(Evas_Object *win)
223 ug_mf_retv_if(win == NULL, NULL);
224 Evas_Object *bg = elm_bg_add(win);
226 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
227 evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
228 evas_object_show(bg);
233 /******************************
234 ** Prototype : _ug_mf_create_layout_main
236 ** Input : Evas_Object* parent
243 ** 1.Date : 2010/12/10
245 ** Modification : Created function
247 ******************************/
248 static Evas_Object *__mf_ug_main_create_main_layout(Evas_Object *parent)
251 Evas_Object *layout = NULL;
252 ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
254 layout = elm_layout_add(parent);
255 ug_mf_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
257 elm_layout_theme_set(layout, "layout", "application", "default");
258 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
259 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
260 evas_object_show(layout);
266 Evas_Object *mf_ug_main_tab_layout_create(Evas_Object *parent)
270 ug_mf_retv_if(parent == NULL, NULL);
272 layout = elm_layout_add(parent);
273 ug_mf_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
274 elm_object_focus_set(layout, EINA_FALSE);
276 //elm_layout_theme_set(layout, "layout", "application", "tabbar");
277 elm_layout_theme_set(layout, "layout", "tabbar", "default");
279 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
281 evas_object_hide(layout);
285 /******************************
286 ** Prototype : __mf_ug_main_set_path_option
287 ** Description : Samsung
288 ** Input : void *data
296 ** 1.Date : 2010/12/10
298 ** Modification : Created function
300 ******************************/
301 static int __mf_ug_main_set_path_option(void *data, const char *path)
304 ugData *ugd = (ugData *)data;
305 ug_mf_retvm_if(ugd == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL");
306 ug_mf_retvm_if(path == NULL, MYFILE_ERR_SRC_ARG_INVALID, "path is NULL");
308 int error_code = MYFILE_ERR_NONE;
309 char *entry_path = NULL;
311 if (strncmp(path, PHONE_FOLDER, strlen(PHONE_FOLDER)) == 0 || strncmp(path, MEMORY_FOLDER, strlen(MEMORY_FOLDER)) == 0) {
313 /**check whether is /opt/media or /mnt/mmc */
314 entry_path = strdup(path);
315 if (entry_path == NULL) {
316 return MYFILE_ERR_ALLOCATE_FAIL;
318 } else if (strncmp(path, UG_SETTING_RINGTONE_PATH, strlen(UG_SETTING_RINGTONE_PATH)) == 0
319 || strncmp(path, UG_SETTING_ALERTS_PATH, strlen(UG_SETTING_ALERTS_PATH)) == 0
320 || strncmp(path, UG_SETTING_MSG_ALERTS_PATH, strlen(UG_SETTING_MSG_ALERTS_PATH)) == 0) {
322 /**check whether is setting ringtone or alerts path */
323 entry_path = strdup(path);
324 if (entry_path == NULL) {
325 return MYFILE_ERR_ALLOCATE_FAIL;
327 ugd->ug_Status.ug_bInSettingView = true;
328 ugd->ug_Status.ug_bSettingEntry = true;
329 ugd->ug_Status.ug_bRingtoneSet = true;
330 } else if (strlen(path) == 1 && strncmp(path, "/", 1)) {
331 /**chech the path whether is "/" */
332 entry_path = strdup(PHONE_FOLDER);
333 if (entry_path == NULL) {
334 return MYFILE_ERR_ALLOCATE_FAIL;
337 /**not begin with /mnt/mmc and /opt/media , so append it to /opt/media*/
338 char *temp = strdup(PHONE_FOLDER);
340 return MYFILE_ERR_ALLOCATE_FAIL;
342 entry_path = g_strconcat(temp, path, NULL);
346 if (entry_path != NULL) {
347 /** if there is a '/' at the end of the path, can't be recognized */
348 if (entry_path[strlen(entry_path) - 1] == '/') {
349 entry_path[strlen(entry_path) - 1] = '\0';
352 if (ecore_file_exists(entry_path) == false) {
354 if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||
355 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE ||
356 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
357 ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE ||
358 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
359 error_code = mf_ug_fm_svc_wrapper_create_p(entry_path);
360 if (error_code != MYFILE_ERR_NONE) {
362 return MYFILE_ERR_INVALID_FILE_PATH;
366 return MYFILE_ERR_INVALID_FILE_PATH;
369 if (ecore_file_is_dir(entry_path) == false) {
370 ug_mf_debug("path is not a directory");
372 return MYFILE_ERR_INVALID_DIR_PATH;
375 if (ugd->ug_Status.ug_pPath) {
376 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
377 ugd->ug_Status.ug_pPath = NULL;
379 ugd->ug_Status.ug_pEntryPath = g_strdup(entry_path);
380 ugd->ug_Status.ug_pPath = g_string_new(entry_path);
381 if (g_strcmp0(entry_path, PHONE_FOLDER) == 0) {
382 ugd->ug_Status.ug_iViewType = mf_ug_view_root;
384 ugd->ug_Status.ug_iViewType = mf_ug_view_normal;
388 return MYFILE_ERR_ALLOCATE_FAIL;
395 /******************************
396 ** Prototype : __mf_ug_main_set_select_mode
397 ** Description : Samsung
398 ** Input : void *data
406 ** 1.Date : 2010/12/10
408 ** Modification : Created function
410 ******************************/
412 static void __mf_ug_main_set_select_mode(void *data, const char *select_mode)
415 ugData *ugd = (ugData *)data;
416 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
418 if (select_mode != NULL) {
419 if (!strncmp(select_mode, UG_SELECT_MODE_SINGLE_FILE, strlen(select_mode))) {
420 ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE;
421 } else if (!strncmp(select_mode, UG_SELECT_MODE_MULTI_FILE, strlen(select_mode))) {
422 ugd->ug_UiGadget.ug_iSelectMode = MULTI_FILE_MODE;
423 } else if (!strncmp(select_mode, UG_SELECT_MODE_SINGLE_ALL, strlen(select_mode))) {
424 ugd->ug_UiGadget.ug_iSelectMode = SINGLE_ALL_MODE;
425 } else if (!strncmp(select_mode, UG_SELECT_MODE_MULTI_ALL, strlen(select_mode))) {
426 ugd->ug_UiGadget.ug_iSelectMode = MULTI_ALL_MODE;
427 } else if(!strncmp(select_mode, UG_SELECT_MODE_IMPORT, strlen(select_mode))) {
428 ugd->ug_UiGadget.ug_iSelectMode = IMPORT_MODE;
429 } else if(!strncmp(select_mode, UG_SELECT_MODE_IMPORT_PATH_SELECT, strlen(select_mode))) {
430 ugd->ug_UiGadget.ug_iSelectMode = IMPORT_PATH_SELECT_MODE;
431 } else if(!strncmp(select_mode, UG_SELECT_MODE_EXPORT, strlen(select_mode))) {
432 ugd->ug_UiGadget.ug_iSelectMode = EXPORT_MODE;
433 } else if (!strncmp(select_mode, UG_SELECT_MODE_IMPORT_SINGLE, strlen(select_mode))) {
434 ugd->ug_UiGadget.ug_iSelectMode = IMPORT_SINGLE;
435 ugd->ug_Status.ug_iViewType = mf_ug_view_normal;
437 else if (!strncmp(select_mode, UG_SELECT_MODE_SAVE, strlen(select_mode))) {
438 ugd->ug_UiGadget.ug_iSelectMode = SAVE_MODE;
441 ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE;
444 ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE;
452 /******************************
453 ** Prototype : __mf_ug_main_set_filter_mode
454 ** Description : Samsung
455 ** Input : void *data
463 ** 1.Date : 2010/12/10
465 ** Modification : Created function
467 ******************************/
469 static void __mf_ug_main_set_filter_mode(void *data, const char *file_filter)
472 ugData *ugd = (ugData *)data;
473 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
475 if (file_filter != NULL) {
476 if (!strncmp(file_filter, UG_FILE_FILTER_ALL, strlen(file_filter))) {
477 ugd->ug_UiGadget.ug_iFilterMode = SHOW_ALL_LIST;
478 } else if (!strncmp(file_filter, UG_FILE_FILTER_IMAGE, strlen(file_filter))) {
479 ugd->ug_UiGadget.ug_iFilterMode = SHOW_IMAGE_LIST;
480 } else if (!strncmp(file_filter, UG_FILE_FILTER_SOUND, strlen(file_filter))) {
481 ugd->ug_UiGadget.ug_iFilterMode = SHOW_SOUND_LIST;
482 } else if (!strncmp(file_filter, UG_FILE_FILTER_VIDEO, strlen(file_filter))) {
483 ugd->ug_UiGadget.ug_iFilterMode = SHOW_VIDEO_LIST;
484 } else if (!strncmp(file_filter, UG_FILE_FILTER_FLASH, strlen(file_filter))) {
485 ugd->ug_UiGadget.ug_iFilterMode = SHOW_FLASH_LIST;
486 } else if (!strncmp(file_filter, UG_FILE_FILTER_FOLDER, strlen(file_filter))) {
487 ugd->ug_UiGadget.ug_iFilterMode = SHOW_FOLDER_LIST;
488 } else if (!strncmp(file_filter, UG_FILE_FILTER_IV, strlen(file_filter))) {
489 ugd->ug_UiGadget.ug_iFilterMode = SHOW_IMAGE_VIDEO_LIST;
490 } else if (!strncmp(file_filter, UG_FILE_FILTER_IS, strlen(file_filter))) {
491 ugd->ug_UiGadget.ug_iFilterMode = SHOW_IMAGE_SOUND_LIST;
492 } else if (!strncmp(file_filter, UG_FILE_FILTER_VS, strlen(file_filter))) {
493 ugd->ug_UiGadget.ug_iFilterMode = SHOW_VIDEO_SOUND_LIST;
495 ugd->ug_UiGadget.ug_iFilterMode = SHOW_BY_EXTENSION;
496 ugd->ug_UiGadget.ug_pExtension = strdup(file_filter);
497 if (g_strcmp0(file_filter, "opml") == 0) {
498 ugd->ug_UiGadget.ug_iImportMode = 1;
502 ugd->ug_UiGadget.ug_iFilterMode = SHOW_ALL_LIST;
503 ugd->ug_UiGadget.ug_pExtension = NULL;
506 if (ugd->ug_UiGadget.ug_iFilterMode != SHOW_BY_EXTENSION) {
507 ugd->ug_UiGadget.ug_iFileFilter = mf_ug_fm_svc_wapper_get_file_filter(ugd->ug_UiGadget.ug_iFilterMode);
511 if (ugd->ug_UiGadget.ug_iFilterMode == SHOW_SOUND_LIST && ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
512 ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_MUSIC;
514 ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_MULTI;
521 /******************************
522 ** Prototype : __mf_ug_main_set_marked_mode
523 ** Description : Samsung
524 ** Input : void *data
532 ** 1.Date : 2010/12/10
534 ** Modification : Created function
536 ******************************/
538 static void __mf_ug_main_set_marked_mode(void *data, const char *marked_mode)
542 ugData *ugd = (ugData *)data;
543 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
545 if (marked_mode != NULL) {
546 ugd->ug_UiGadget.ug_iMarkedMode = MARKED_ON;
547 mf_ug_util_get_params_path(&ugd->ug_UiGadget.ug_pMultiSelectFileList, marked_mode);
549 ugd->ug_UiGadget.ug_iMarkedMode = MARKED_OFF;
555 /******************************
556 ** Prototype : __mf_ug_main_set_drm_filter_mode
557 ** Description : Samsung
558 ** Input : void *data
566 ** 1.Date : 2010/12/10
568 ** Modification : Created function
570 ******************************/
572 static void __mf_ug_main_set_drm_filter_mode(void *data, const char *drm_filter)
576 ugData *ugd = (ugData *)data;
577 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
578 if (drm_filter != NULL) {
579 if (!strncmp(drm_filter, UG_DRM_FILTER_NONE, strlen(drm_filter))) {
580 ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_NONE;
581 } else if (!strncmp(drm_filter, UG_DRM_FILTER_ALL, strlen(drm_filter))) {
582 ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_ALL;
583 } else if (!strncmp(drm_filter, UG_DRM_FILTER_WITHOUT_FL, strlen(drm_filter))) {
584 ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_WITHOUT_FL;
586 ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_ALL;
589 ugd->ug_UiGadget.ug_iDrmFilterMode = DRM_FILTER_ALL;
592 ugd->ug_UiGadget.ug_iDrmFilter = mf_ug_fm_svc_wapper_get_drm_filter(ugd->ug_UiGadget.ug_iDrmFilterMode, ugd->ug_UiGadget.ug_iFileFilter);
596 #ifdef UG_OPERATION_SELECT_MODE
597 static void __mf_ug_main_set_operation_select_mode(void *data, const char *select_mode)
600 ugData *ugd = (ugData *)data;
601 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
603 if (select_mode != NULL) {
604 if (!strncmp(select_mode, MF_BUNDLE_SELECTION_MODE_SINGLE, strlen(select_mode))) {
605 ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE;
606 } else if (!strncmp(select_mode, MF_BUNDLE_SELECTION_MODE_MULTI, strlen(select_mode))) {
607 ugd->ug_UiGadget.ug_iSelectMode = MULTI_FILE_MODE;
609 ugd->ug_UiGadget.ug_iSelectMode = SINGLE_FILE_MODE;
611 ugd->ug_UiGadget.ug_bOperationSelectFlag = true;
617 /******************************
618 ** Prototype : __mf_ug_main_set_option_status
619 ** Description : Samsung
620 ** Input : void *data
628 ** 1.Date : 2010/12/10
630 ** Modification : Created function
632 ******************************/
634 static void __mf_ug_main_set_option_status(void *data, service_h service)
637 ugData *ugd = (ugData *)data;
638 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
640 char *select_mode = NULL;
641 char *filter_mode = NULL;
642 char *marked_mode = NULL;
643 char *drm_filter_mode = NULL;
644 #ifdef UG_OPERATION_SELECT_MODE
645 char *key[UG_OPTION_COUNT] = { "path", "select_type", "file_type", "marked_mode", "drm_type", MF_BUNDLE_SELECTION_MODE};
646 char *operation_select_mode = NULL;
648 char *key[UG_OPTION_COUNT] = { "path", "select_type", "file_type", "marked_mode", "drm_type"};
651 service_get_extra_data(service, key[0], &path);
652 service_get_extra_data(service, key[1], &select_mode);
653 service_get_extra_data(service, key[2], &filter_mode);
654 service_get_extra_data(service, key[3], &marked_mode);
655 service_get_extra_data(service, key[4], &drm_filter_mode);
657 __mf_ug_main_set_select_mode(ugd, select_mode);
658 __mf_ug_main_set_path_option(ugd, path);
659 __mf_ug_main_set_filter_mode(ugd, filter_mode);
660 __mf_ug_main_set_marked_mode(ugd, marked_mode);
661 __mf_ug_main_set_drm_filter_mode(ugd, drm_filter_mode);
662 #ifdef UG_OPERATION_SELECT_MODE
663 service_get_extra_data(service, key[5], &operation_select_mode);
664 __mf_ug_main_set_operation_select_mode(ugd, operation_select_mode);
669 /******************************
670 ** Prototype : __mf_ug_main_create_default_layout
671 ** Description : Samsung
672 ** Input : Evas_Object* parent
680 ** 1.Date : 2010/12/10
682 ** Modification : Created function
684 ******************************/
685 static Evas_Object *__mf_ug_main_create_default_layout(Evas_Object *parent, void *data)
687 ugData *ugd = (ugData *)data;
688 ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");
689 ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
690 Evas_Object *pContent = NULL;
691 int tab_item_count = 1;
695 /*/check if mmc mounted */
696 error_code = mf_ug_util_get_mmc_state(&mmc_card);
697 if (error_code == 0 && mmc_card == 1) {
700 /*/check if usb otg mounted
702 Todo: we need to add something to record what should on
705 ugNaviBar *pNavi_phone = calloc(1, sizeof(ugNaviBar));
706 ug_mf_retvm_if(pNavi_phone == NULL, NULL, "pNavi_phone is NULL");
708 ugd->ug_MainWindow.ug_pNaviBar = mf_ug_navi_bar_create_navi_bar(parent);
709 if (ugd->ug_MainWindow.ug_pNaviBar == NULL) {
710 ug_debug("ugd->ug_MainWindow.ug_pNaviBar is NULL");
717 pNavi_phone->ug_bNaviFlagInUse = TRUE;
719 UG_SAFE_FREE_CHAR(pNavi_phone->ug_pCurrentPath);
720 pNavi_phone->ug_pCurrentPath = g_strdup(ugd->ug_Status.ug_pPath->str);
722 UG_SAFE_FREE_CHAR(pNavi_phone->ug_pNaviLabel);
723 pNavi_phone->ug_pNaviLabel = strdup(MF_UG_LABEL_PHONE);
724 /*/insert phone navi into the navi_list */
725 /** Todo: if we need to check ap->mf_MainWindow.plistNaviBar?*/
726 ugd->ug_MainWindow.ug_pNaviBarList = eina_list_append(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_phone);
729 return ugd->ug_MainWindow.ug_pNaviBar;
732 /******************************
733 ** Prototype : __mf_ug_main_start
735 ** Input : void *data
742 ** 1.Date : 2010/12/10
744 ** Modification : Created function
746 ******************************/
748 static void __mf_ug_main_start(void *data)
751 ugData *ugd = (ugData *)data;
752 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
753 Evas_Object *pContent = NULL;
757 pContent = __mf_ug_main_create_default_layout(ugd->ug_MainWindow.ug_pMainLayout, ugd);
759 if (pContent != NULL) {
760 elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.content", pContent);
761 mf_ug_navi_bar_create_default_view(ugd);
762 mf_ug_ctrl_bar_set_item_disable(ugd);
763 mf_ug_navi_bar_set_blocking(data, false);
775 /******************************
776 ** Prototype : on_create
777 ** Description : Samsung
778 ** Input : ui_gadget_h ug
788 ** 1.Date : 2010/12/10
790 ** Modification : Created function
792 ******************************/
794 static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
798 Evas_Object *win = NULL;
801 ug_mf_retv_if(NULL == priv, NULL);
806 bindtextdomain(UGPACKAGE, UGLOCALEDIR);
808 win = (Evas_Object *)ug_get_window();
809 ug_mf_retv_if(NULL == win, NULL);
811 ugd->ug_MainWindow.ug_pWindow = win;
812 ugd->ug_Status.ug_bInstallFlag = false;
813 ugd->ug_Status.ug_bCancelDisableFlag = false;
814 ugd->ug_UiGadget.ug_iImportMode = 0;
815 ugd->ug_MainWindow.ug_pMainLayout = __mf_ug_main_create_main_layout(ugd->ug_MainWindow.ug_pWindow);
816 ugd->ug_MainWindow.ug_pBackGround = mf_ug_main_create_bg(ugd->ug_MainWindow.ug_pWindow);
817 elm_object_part_content_set(ugd->ug_MainWindow.ug_pMainLayout, "elm.swallow.bg", ugd->ug_MainWindow.ug_pBackGround);
819 __mf_ug_main_init_data(ugd);
820 __mf_ug_main_set_option_status(ugd, service);
821 //mf_ug_player_vol_set(ugd->ug_Status.ug_pPath->str);
822 int err = media_content_connect();
823 if (err != MEDIA_CONTENT_ERROR_NONE) {
824 ug_debug("media_content_connect failed!");
827 power_set_changed_cb(mf_ug_cb_lcd_state_changed_cb, ugd);
829 __mf_ug_main_start(ugd);
832 return ugd->ug_MainWindow.ug_pMainLayout;
835 /******************************
836 ** Prototype : on_start
838 ** Input : ui_gadget_h ug
847 ** 1.Date : 2010/12/10
849 ** Modification : Created function
851 ******************************/
852 static void on_start(ui_gadget_h ug, service_h service, void *priv)
857 /******************************
858 ** Prototype : on_pause
860 ** Input : ui_gadget_h ug
869 ** 1.Date : 2010/12/10
871 ** Modification : Created function
873 ******************************/
874 static void on_pause(ui_gadget_h ug, service_h service, void *priv)
879 ugData *ugd = (ugData *)priv;
881 if (0 != ugd->ug_ListPlay.ug_Player) {
882 mf_ug_list_play_pause(ugd);
883 //mf_ug_list_play_destory_playing_file(ugd);
887 /******************************
888 ** Prototype : on_resume
890 ** Input : ui_gadget_h ug
899 ** 1.Date : 2010/12/10
901 ** Modification : Created function
903 ******************************/
904 inline bool __mf_ug_main_check_exist(const char *path)
906 if (path && (access(path, F_OK) == 0)) {
912 static void on_resume(ui_gadget_h ug, service_h service, void *priv)
915 ug_mf_retm_if(NULL == priv, "priv is NULL");
918 if (!__mf_ug_main_check_exist(ugd->ug_Status.ug_pPath->str)) {
919 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
920 GString *parent_path = mf_ug_fm_svc_wrapper_get_file_parent_path(ugd->ug_Status.ug_pPath);
921 int storage = mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str);
923 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
924 ugd->ug_Status.ug_pPath = NULL;
925 free(pNavi_s->ug_pCurrentPath);
926 pNavi_s->ug_pCurrentPath = NULL;
928 if (parent_path && parent_path->str) {
929 if (__mf_ug_main_check_exist(parent_path->str)) {
930 ug_debug("paretn is [%s] exit", parent_path->str);
931 ugd->ug_Status.ug_pPath = g_string_new(parent_path->str);
932 pNavi_s->ug_pCurrentPath = g_strdup(parent_path->str);
934 ug_debug("paretn is [%s] not exit", parent_path->str);
935 if (storage == MF_UG_PHONE) {
936 ugd->ug_Status.ug_pPath = g_string_new(PHONE_FOLDER);
937 pNavi_s->ug_pCurrentPath = strdup(PHONE_FOLDER);
939 ugd->ug_Status.ug_pPath = g_string_new(MEMORY_FOLDER);
940 pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER);
944 ug_debug("get parent failed");
945 if (storage == MF_UG_PHONE) {
946 ugd->ug_Status.ug_pPath = g_string_new(PHONE_FOLDER);
947 pNavi_s->ug_pCurrentPath = strdup(PHONE_FOLDER);
949 ugd->ug_Status.ug_pPath = g_string_new(MEMORY_FOLDER);
950 pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER);
954 mf_ug_navi_bar_create_default_view(ugd);
955 mf_ug_ctrl_bar_set_item_disable(ugd);
956 g_string_free(parent_path, TRUE);
963 /******************************
964 ** Prototype : on_message
966 ** Input : ui_gadget_h ug
976 ** 1.Date : 2010/12/10
978 ** Modification : Created function
980 ******************************/
981 static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv)
985 /******************************
986 ** Prototype : on_event
988 ** Input : ui_gadget_h ug
989 ** enum ug_event event
998 ** 1.Date : 2010/12/10
1000 ** Modification : Created function
1002 ******************************/
1003 static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv)
1007 case UG_EVENT_LOW_MEMORY:
1010 case UG_EVENT_LOW_BATTERY:
1013 case UG_EVENT_LANG_CHANGE:
1016 case UG_EVENT_ROTATE_PORTRAIT:
1019 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
1022 case UG_EVENT_ROTATE_LANDSCAPE:
1025 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
1036 /******************************
1037 ** Prototype : on_key_event
1038 ** Description : Samsung
1039 ** Input : ui_gadget_h ug
1040 ** enum ug_key_event event
1041 ** service_h service
1049 ** 1.Date : 2010/12/10
1051 ** Modification : Created function
1053 ******************************/
1055 static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv)
1058 ugData *ugd = (ugData *)priv;
1059 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
1062 case UG_KEY_EVENT_END:
1063 if (ugd->ug_MainWindow.ug_pNormalPopup) {
1064 evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);
1065 ugd->ug_MainWindow.ug_pNormalPopup = NULL;
1067 if (0 != ugd->ug_ListPlay.ug_Player) {
1068 mf_ug_list_play_destory_playing_file(ugd);
1069 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
1079 /******************************
1080 ** Prototype : on_destroy
1082 ** Input : ui_gadget_h ug
1083 ** service_h service
1091 ** 1.Date : 2010/12/10
1093 ** Modification : Created function
1095 ******************************/
1096 static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
1099 ugData *ugd = (ugData *)priv;
1100 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
1102 __mf_ug_main_free_data(ugd);
1104 if (ugd->ug_Status.ug_bInstallFlag == true) {
1105 mf_ug_util_destory_dir_monitor(ugd);
1106 mf_ug_util_destory_mmc_state_cb();
1107 media_content_disconnect();
1108 power_unset_changed_cb();
1111 ug_ecore_idler_del(ugd->ug_Status.search_idler);
1112 ug_ecore_idler_del(ugd->ug_Status.popup_del_idler);
1113 ug_ecore_idler_del(ugd->ug_Status.popup_create_idler);
1114 ug_ecore_idler_del(ugd->ug_Status.msg_finish_idler);
1115 UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.pPopupTimer);
1117 if (0 != ugd->ug_ListPlay.ug_Player) {
1118 mf_ug_list_play_destory_playing_file(ugd);
1119 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
1122 UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.ug_pThumbUpdateTimer);
1123 UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.play_timer);
1124 __mf_ug_main_free_evas_object(ugd);
1129 /******************************
1130 ** Prototype : UG_MODULE_INIT
1132 ** Input : struct ug_module_ops *ops
1139 ** 1.Date : 2010/12/10
1141 ** Modification : Created function
1143 ******************************/
1144 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
1153 ugd = calloc(1, sizeof(ugData));
1158 ops->create = on_create;
1159 ops->start = on_start;
1160 ops->pause = on_pause;
1161 ops->resume = on_resume;
1162 ops->destroy = on_destroy;
1163 ops->message = on_message;
1164 ops->event = on_event;
1165 ops->key_event = on_key_event;
1167 ops->opt = UG_OPT_INDICATOR_ENABLE;
1174 /******************************
1175 ** Prototype : UG_MODULE_EXIT
1177 ** Input : struct ug_module_ops *ops
1184 ** 1.Date : 2010/12/10
1186 ** Modification : Created function
1188 ******************************/
1189 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)