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.
22 #include <Elementary.h>
28 #include "mf-ug-main.h"
29 #include "mf-ug-conf.h"
31 #include "mf-ug-fm-svc-wrapper.h"
32 #include "mf-ug-util.h"
33 #include "mf-ug-winset.h"
34 #include "mf-ug-dlog.h"
35 #include "mf-ug-fs-util.h"
36 #include "mf-ug-resource.h"
37 #include "mf-ug-list-play.h"
38 static mf_player_cbs *g_player_cbs = NULL;
39 static Ecore_Pipe *g_player_pipe = NULL;
41 static void __mf_ug_list_play_control_cb(void *data);
42 static bool __mf_ug_list_play_play_current_file(void *data);
45 /******************************
46 ** Prototype : __mf_ug_list_play_init_data
47 ** Description : Samsung
55 ** 1.Date : 2010/12/10
57 ** Modification : Created function
59 ******************************/
60 static void __mf_ug_list_play_init_data(void *data)
63 ugData *ugd = (ugData *)data;
65 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
67 if (ugd->ug_ListPlay.ug_Player != 0) {
68 mf_ug_list_play_destory_playing_file(ugd);
69 ugd->ug_ListPlay.ug_Player = 0;
71 ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_INIT;
72 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
76 /******************************
77 ** Prototype : __mf_ug_list_play_drm_has_valid_ro
78 ** Description : Samsung
86 ** 1.Date : 2010/12/10
88 ** Modification : Created function
90 ******************************/
91 static bool __mf_ug_list_play_drm_has_valid_ro(char *path)
94 drm_result_e res = DRM_RETURN_INVALID_ARG;
95 drm_license_status_e licence_status;
98 res = drm_get_license_status(path, DRM_PERMISSION_TYPE_PLAY, &licence_status);
101 if (res == DRM_RETURN_SUCCESS && licence_status == DRM_LICENSE_STATUS_VALID) {
109 /******************************
110 ** Prototype : __mf_ug_list_play_check_drm_left_ro
111 ** Description : Samsung
112 ** Input : void *data
120 ** 1.Date : 2010/12/10
122 ** Modification : Created function
124 ******************************/
125 static bool __mf_ug_list_play_check_drm_left_ro(void *data, char *path)
128 ugData *ugd = (ugData *)data;
129 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
132 char left_ro_message[MAX_MESSAGE_LEN] = "\0";
134 bool ro_valid = false;
135 bool expired = false;
138 const char *title = ecore_file_file_get(path);
139 ugd->ug_ListPlay.ug_bDrmContentCanPlay = false;
141 if (__mf_ug_list_play_drm_has_valid_ro(path))
143 drm_constraint_info_s constraint;
144 memset(&constraint, 0x0, sizeof(drm_constraint_info_s));
146 int res = drm_get_constraint_info(path, DRM_PERMISSION_TYPE_PLAY, &constraint);
147 if (res == DRM_RETURN_SUCCESS) {
148 if (constraint.const_type.is_unlimited) {
149 ug_debug("UNLIMITED");
150 ugd->ug_ListPlay.ug_bDrmContentCanPlay = TRUE;
154 if (constraint.const_type.is_count) {
155 int remain_count = constraint.remaining_count;
157 if (remain_count == 1) {
158 snprintf(left_ro_message, sizeof(left_ro_message), "You can play \"%s\" just one more time", title);
160 ugd->ug_ListPlay.ug_bDrmContentCanPlay = true;
161 } else if (remain_count == 0) {
162 snprintf(left_ro_message, sizeof(left_ro_message), "You can't play \"%s\" anymore", title);
166 ugd->ug_ListPlay.ug_bDrmContentCanPlay = true;
170 if (constraint.const_type.is_datetime) {
171 ug_debug("DRM_DATETIME\n");
172 snprintf(ugd->ug_ListPlay.ug_DrmInfo.validity, sizeof(ugd->ug_ListPlay.ug_DrmInfo.validity),
173 "%d.%d.%d %d:%d~%d.%d.%d %d:%d",
174 constraint.start_time.tm_mday,
175 constraint.start_time.tm_mon + 1,
176 constraint.start_time.tm_year + 109,
177 constraint.start_time.tm_hour,
178 constraint.start_time.tm_min,
179 constraint.end_time.tm_mday,
180 constraint.end_time.tm_mon + 1,
181 constraint.end_time.tm_year + 109,
182 constraint.end_time.tm_hour,
183 constraint.end_time.tm_min);
186 if (constraint.const_type.is_interval) {
187 ug_debug("DRM_INTERVAL\n");
188 snprintf(ugd->ug_ListPlay.ug_DrmInfo.validity, sizeof(ugd->ug_ListPlay.ug_DrmInfo.validity),
189 "until %d.%d.%d %d:%d",
190 constraint.interval_time.tm_mon,
191 constraint.interval_time.tm_mday,
192 constraint.interval_time.tm_year,
193 constraint.interval_time.tm_hour,
194 constraint.interval_time.tm_min);
197 if (constraint.const_type.is_timedcount) {
198 int count = constraint.timed_remaining_count;
199 int time = constraint.timed_count_timer;
200 snprintf(ugd->ug_ListPlay.ug_DrmInfo.validity, sizeof(ugd->ug_ListPlay.ug_DrmInfo.validity),
201 "%d left (%d sec)", count, time);
202 ug_debug("DRM_TIMED_COUNT [%d]\n", count);
205 snprintf(left_ro_message, sizeof(left_ro_message),
206 "You can play \"%s\" just one more time", title);
207 ugd->ug_ListPlay.ug_bDrmContentCanPlay = TRUE;
211 snprintf(left_ro_message, sizeof(left_ro_message),
212 "You can't play \"%s\" anymore", title);
216 if (constraint.const_type.is_accumulated) {
217 int sec = constraint.accumulated_remaining_seconds;
218 int ndays = sec / ACCUMULATED_DATE;
219 ug_debug("DRM_ACCUMULATED [%d]\n", ndays);
220 snprintf(ugd->ug_ListPlay.ug_DrmInfo.validity, sizeof(ugd->ug_ListPlay.ug_DrmInfo.validity),
221 "%" UG_TIME_FORMAT " left", UG_TIME_ARGS(ndays));
223 if (ndays < ACCUMULATED_DATE)
225 snprintf(left_ro_message, sizeof(left_ro_message),
226 "You can play %s just one day", title);
228 ugd->ug_ListPlay.ug_bDrmContentCanPlay = TRUE;
232 if (constraint.const_type.is_individual) {
233 ug_debug("DRM_INDIVISUAL_ID [%s]", constraint.individual_id);
236 if (constraint.const_type.is_system) {
237 ug_debug("DRM_SYSTEM [ID:%s, type:%d]", constraint.system_id, constraint.system_identity_type);
241 ug_debug("have no valid ro\n");
242 snprintf(left_ro_message, sizeof(left_ro_message), "No valid RO for <br>\"%s\"", title);
253 /******************************
254 ** Prototype : __mf_ug_list_play_check_drm_forward
255 ** Description : Samsung
256 ** Input : void *data
264 ** 1.Date : 2010/12/10
266 ** Modification : Created function
268 ******************************/
269 static drm_file_type_e __drm_get_file_type(void *path)
271 drm_file_type_e type = DRM_TYPE_UNDEFINED;
272 drm_result_e res = -1;
274 res = drm_get_file_type(path, &type);
275 if (res == DRM_RETURN_SUCCESS) {
278 return DRM_TYPE_UNDEFINED;
281 static bool __mf_ug_list_play_check_drm_forward(void *data, char *path)
284 ugData *ugd = (ugData *)data;
285 drm_file_type_e type = __drm_get_file_type(path);
287 if (type == DRM_TYPE_OMA_V1 || type == DRM_TYPE_OMA_V2) {
289 drm_file_info_s info;
290 memset(&info, 0x0, sizeof(drm_file_info_s));
291 int ret = drm_get_file_info(path, &info);
292 if (ret == DRM_RETURN_SUCCESS) {
293 if (info.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK) {
294 ugd->ug_ListPlay.ug_DrmInfo.forward = true;
298 ugd->ug_ListPlay.ug_DrmInfo.forward = false;
300 } else if (type == DRM_TYPE_PLAYREADY) {
301 ug_debug("playready drm file");
302 ugd->ug_ListPlay.ug_DrmInfo.forward = true;
304 ug_debug("Not supported drm type");
312 /******************************
313 ** Prototype : mf_ug_list_play_update_item_icon
315 ** Input : ugListItemData *data
323 ** 1.Date : 2010/12/10
325 ** Modification : Created function
327 ******************************/
328 static void __mf_ug_list_play_icon_hide(ugListItemData *itemData)
330 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
331 ug_mf_retm_if(itemData->ug_pItem == NULL, "itemData->ug_pItem is NULL");
333 Evas_Object *btn = elm_object_item_part_content_unset(itemData->ug_pItem, "elm.icon.3");
334 evas_object_hide(btn);
335 UG_SAFE_FREE_OBJ(btn);
336 itemData->ug_pPlaybtn = NULL;
339 void mf_ug_list_disable_play_itc(void *data, bool disable)
343 ugData *ugd = (ugData *)data;
344 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
346 Elm_Object_Item *gl_item = NULL;
347 ugListItemData *itemData = NULL;
348 Evas_Object *pGenlist = NULL;
350 if (ugd->ug_ListPlay.ug_pPlayFilePath == NULL || strlen(ugd->ug_ListPlay.ug_pPlayFilePath) == 0) {
355 pGenlist = ugd->ug_MainWindow.ug_pContent;
357 gl_item = elm_genlist_first_item_get(pGenlist);
359 itemData = elm_object_item_data_get(gl_item);
360 if (itemData && itemData->ug_pItemName) {
361 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, itemData->ug_pItemName->str) == 0) {
363 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
364 elm_genlist_item_fields_update(itemData->ug_pItem, "elm.icon.3", ELM_GENLIST_ITEM_FIELD_CONTENT);
365 //elm_genlist_item_item_class_update(itemData->ug_pItem, &ugd->ug_Status.ug_noplayitc);
367 elm_genlist_item_fields_update(itemData->ug_pItem, "elm.icon.3", ELM_GENLIST_ITEM_FIELD_CONTENT);
373 gl_item = elm_genlist_item_next_get(gl_item);
376 ug_debug("mf_ug_list_play_update_item_icon failed");
381 void mf_ug_list_paly_hide_play_icon(void *data)
385 ugData *ugd = (ugData *)data;
386 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
388 Elm_Object_Item *gl_item = NULL;
389 ugListItemData *itemData = NULL;
390 Evas_Object *pGenlist = NULL;
392 if (ugd->ug_ListPlay.ug_pPlayFilePath == NULL || strlen(ugd->ug_ListPlay.ug_pPlayFilePath) == 0) {
397 pGenlist = ugd->ug_MainWindow.ug_pContent;
399 gl_item = elm_genlist_first_item_get(pGenlist);
401 itemData = elm_object_item_data_get(gl_item);
402 if (itemData && itemData->ug_pItemName) {
403 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, itemData->ug_pItemName->str) == 0) {
404 __mf_ug_list_play_icon_hide(itemData);
409 gl_item = elm_genlist_item_next_get(gl_item);
412 ug_debug("mf_ug_list_play_update_item_icon failed");
415 void mf_ug_list_play_update_play_icon(ugListItemData *itemData)
417 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
418 ugData *ugd = (ugData *)itemData->ug_pData;
419 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
420 Evas_Object *btn = itemData->ug_pPlaybtn;
421 Evas_Object *music_icon = elm_object_part_content_get(btn, "icon");
422 const char *play_icon = NULL;
423 const char *pause_icon = NULL;
424 if (ugd->ug_ListPlay.ug_pPlayFilePath) {
425 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, itemData->ug_pItemName->str) == 0) {
426 if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING) {
427 pause_icon = strdup(UG_ICON_MUSIC_PAUSE_WHITE);
428 elm_image_file_set(music_icon, pause_icon, NULL);
429 } else if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
430 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
431 elm_image_file_set(music_icon, play_icon, NULL);
433 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
434 elm_image_file_set(music_icon, play_icon, NULL);
437 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
438 elm_image_file_set(music_icon, play_icon, NULL);
441 play_icon = strdup(UG_ICON_MUSIC_PLAY_WHITE);
442 elm_image_file_set(music_icon, play_icon, NULL);
447 void mf_ug_list_play_update_item_icon(void *data)
451 ugData *ugd = (ugData *)data;
452 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
454 Elm_Object_Item *gl_item = NULL;
455 ugListItemData *itemData = NULL;
456 Evas_Object *pGenlist = NULL;
458 if (ugd->ug_ListPlay.ug_pPlayFilePath == NULL || strlen(ugd->ug_ListPlay.ug_pPlayFilePath) == 0) {
463 pGenlist = ugd->ug_MainWindow.ug_pContent;
465 gl_item = elm_genlist_first_item_get(pGenlist);
467 itemData = elm_object_item_data_get(gl_item);
468 if (itemData && itemData->ug_pItemName) {
469 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, itemData->ug_pItemName->str) == 0) {
470 elm_genlist_item_fields_update(itemData->ug_pItem, "elm.icon.3", ELM_GENLIST_ITEM_FIELD_CONTENT);
471 //mf_ug_list_play_update_play_icon(itemData);
476 gl_item = elm_genlist_item_next_get(gl_item);
479 ug_debug("mf_ug_list_play_update_item_icon failed");
484 /******************************
485 ** Prototype : __mf_ug_list_play_set_play_start_status
487 ** Input : ugListItemData *data
494 ** 1.Date : 2010/12/10
496 ** Modification : Created function
498 ******************************/
499 static void __mf_ug_list_play_set_play_start_status(void *data, char *path)
502 ugData *ugd = (ugData *)data;
503 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
505 ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_PLAYING;
509 /******************************
510 ** Prototype : __mf_ug_list_play_set_play_resume_status
512 ** Input : ugListItemData *data
519 ** 1.Date : 2010/12/10
521 ** Modification : Created function
523 ******************************/
524 static void __mf_ug_list_play_set_play_resume_status(void *data)
527 ugData *ugd = (ugData *)data;
528 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
530 ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_PLAYING;
534 /******************************
535 ** Prototype : __mf_ug_list_play_set_play_pause_status
537 ** Input : ugListItemData *data
544 ** 1.Date : 2010/12/10
546 ** Modification : Created function
548 ******************************/
549 static void __mf_ug_list_play_set_play_pause_status(ugData *data)
552 ugData *ugd = (ugData *)data;
553 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
555 ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_PAUSED;
559 /******************************
560 ** Prototype : _mp_player_mgr_create
562 ** Input : void *data
570 ** 1.Date : 2010/12/10
572 ** Modification : Created function
574 ******************************/
575 static void __mf_player_mgr_callback_pipe_handler(void *data, void *buffer, unsigned int nbyte)
578 mf_player_cb_extra_data *extra_data = buffer;
579 ug_mf_retm_if(extra_data == NULL, "NULL");
580 ug_mf_retm_if(g_player_cbs == NULL, "NULL");
582 switch (extra_data->cb_type) {
583 /*note: start callback and paused callback for player have been removed*/
584 /*case MF_PLAYER_CB_TYPE_STARTED:
585 if (g_player_cbs->started_cb)
586 g_player_cbs->started_cb(g_player_cbs->user_data[MF_PLAYER_CB_TYPE_STARTED]);
589 case MF_PLAYER_CB_TYPE_PAUSED:
590 if (g_player_cbs->paused_cb)
591 g_player_cbs->paused_cb(g_player_cbs->user_data[MF_PLAYER_CB_TYPE_PAUSED]);
594 case MF_PLAYER_CB_TYPE_COMPLETED:
595 if (g_player_cbs->completed_cb)
596 g_player_cbs->completed_cb(g_player_cbs->user_data[MF_PLAYER_CB_TYPE_COMPLETED]);
599 case MF_PLAYER_CB_TYPE_INTURRUPTED:
600 if (g_player_cbs->interrupted_cb)
601 g_player_cbs->interrupted_cb(extra_data->param.interrupted_code, g_player_cbs->user_data[MF_PLAYER_CB_TYPE_INTURRUPTED]);
604 case MF_PLAYER_CB_TYPE_ERROR:
605 if (g_player_cbs->error_cb)
606 g_player_cbs->error_cb(extra_data->param.error_code, g_player_cbs->user_data[MF_PLAYER_CB_TYPE_ERROR]);
609 case MF_PLAYER_CB_TYPE_BUFFERING:
610 if (g_player_cbs->buffering_cb)
611 g_player_cbs->buffering_cb(extra_data->param.percent ,g_player_cbs->user_data[MF_PLAYER_CB_TYPE_BUFFERING]);
613 case MF_PLAYER_CB_TYPE_PREPARE:
614 if (g_player_cbs->prepare_cb)
615 g_player_cbs->prepare_cb(g_player_cbs->user_data[MF_PLAYER_CB_TYPE_PREPARE]);
619 ug_debug("Not suppoted callback type [%d]", extra_data->cb_type);
625 __mf_ug_list_play_mgr_completed_cb(void *userdata)
628 MF_CHECK(g_player_pipe);
630 mf_player_cb_extra_data extra_data;
631 extra_data.cb_type = MF_PLAYER_CB_TYPE_COMPLETED;
633 ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mf_player_cb_extra_data));
637 __mf_ug_list_play_mgr_interrupted_cb(player_interrupted_code_e code, void *userdata)
640 MF_CHECK(g_player_pipe);
642 mf_player_cb_extra_data extra_data;
643 extra_data.cb_type = MF_PLAYER_CB_TYPE_INTURRUPTED;
644 extra_data.param.interrupted_code = code;
646 ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mf_player_cb_extra_data));
651 __mf_ug_list_play_mgr_error_cb(int error_code, void *userdata)
654 MF_CHECK(g_player_pipe);
656 mf_player_cb_extra_data extra_data;
657 extra_data.cb_type = MF_PLAYER_CB_TYPE_ERROR;
658 extra_data.param.error_code = error_code;
660 ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mf_player_cb_extra_data));
663 static bool __mf_ug_list_play_create_player_mgr(void *data, const char *path)
666 ugData *ugd = (ugData *)data;
667 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
669 int path_len = strlen(path);
670 char *g_err_name = NULL;
673 if (path_len > 0 && path_len < MYFILE_DIR_PATH_LEN_MAX) {
674 if (ugd->ug_ListPlay.ug_Player == 0) {
675 if (player_create(&ugd->ug_ListPlay.ug_Player) != PLAYER_ERROR_NONE) {
676 ug_debug("Error when __mf_ug_list_play_create_player_mgr\n");
680 ug_debug("player is [%d]", ugd->ug_ListPlay.ug_Player);
681 /*avsysaudiosink volume table setting */
683 //ret = mm_player_set_attribute(ugd->ug_ListPlay.ug_Player, &g_err_name, "sound_volume_type", MM_SOUND_VOLUME_TYPE_MEDIA,
684 // "profile_uri", path, strlen(path), NULL);
686 ug_debug("path is [%s]", path);
687 ret = player_set_uri(ugd->ug_ListPlay.ug_Player, path);
688 //player_set_sound_type(ugd->ug_ListPlay.ug_Player, SOUND_TYPE_MEDIA);
689 if (ret != PLAYER_ERROR_NONE) {
690 ug_debug(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name);
695 ret = player_set_sound_type(ugd->ug_ListPlay.ug_Player, SOUND_TYPE_MEDIA);
696 if (ret != PLAYER_ERROR_NONE) {
697 ug_error("set sound type failed");
699 ug_error("set sound type success");
703 ug_debug("player handle is exist");
708 ug_debug("the path_len is too long");
713 UG_SAFE_FREE_CHAR(g_player_cbs);
715 ecore_pipe_del(g_player_pipe);
716 g_player_pipe = NULL;
718 g_player_cbs = calloc(1, sizeof(mf_player_cbs));
719 g_player_pipe = ecore_pipe_add(__mf_player_mgr_callback_pipe_handler, ugd);
722 player_set_completed_cb(ugd->ug_ListPlay.ug_Player, __mf_ug_list_play_mgr_completed_cb, NULL);
723 player_set_interrupted_cb(ugd->ug_ListPlay.ug_Player, __mf_ug_list_play_mgr_interrupted_cb, NULL);
724 player_set_error_cb(ugd->ug_ListPlay.ug_Player, __mf_ug_list_play_mgr_error_cb, NULL);
725 //player_set_buffering_cb(ugd->ug_ListPlay.ug_Player, _mp_player_mgr_buffering_cb, NULL);
730 /******************************
731 ** Prototype : _mp_player_mgr_set_msg_callback
733 ** Input : MMMessageCallback cb
734 ** gpointer user_data
741 ** 1.Date : 2010/12/10
743 ** Modification : Created function
745 ******************************/
746 static void __mf_ug_list_play_start(void *data)
749 ugListItemData *itemData = (ugListItemData *)data;
750 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
751 ugData *ugd = itemData->ug_pData;
752 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
754 player_state_e state = PLAYER_STATE_NONE;
756 error_code = player_get_state(ugd->ug_ListPlay.ug_Player, &state);
757 ug_debug("state is [%d]", state);
758 if (error_code == 0 && state == PLAYER_STATE_PLAYING) {
759 if (ugd->ug_ListPlay.ug_pPlayFilePath == NULL) {
760 ugd->ug_ListPlay.ug_pPlayFilePath = g_strdup(itemData->ug_pItemName->str);
762 __mf_ug_list_play_set_play_start_status(ugd, itemData->ug_pItemName->str);
763 } else if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
764 if (ugd->ug_ListPlay.ug_pPlayFilePath == NULL) {
765 ugd->ug_ListPlay.ug_pPlayFilePath = g_strdup(itemData->ug_pItemName->str);
767 __mf_ug_list_play_set_play_resume_status(ugd);
773 static void __mf_ug_list_play_pauset(void *data)
777 ugData *ugd = (ugData *)data;
778 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
780 __mf_ug_list_play_set_play_pause_status(ugd);
784 static void __mf_ug_list_play_complete_cb(void *data)
788 ugData *ugd = (ugData *)data;
789 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
791 mf_ug_list_play_destory_playing_file(ugd);
792 mf_ug_list_disable_play_itc(ugd, true);
793 //mf_ug_list_play_update_item_icon(ugd);
794 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
798 static void __mf_ug_list_play_interrupt_cb(player_interrupted_code_e code, void *data)
801 ugListItemData *itemData = data;
802 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
804 ugData *ugd = (ugData *)itemData->ug_pData;
805 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
807 case PLAYER_INTERRUPTED_BY_MEDIA:
808 ug_debug("Interrupt :: PLAYER_INTERRUPTED_BY_MEDIA");
810 case PLAYER_INTERRUPTED_BY_CALL:
811 ug_debug("Interrupt :: PLAYER_INTERRUPTED_BY_CALL_START");
813 case PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT:
814 ug_debug("Interrupt :: PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT");
816 case PLAYER_INTERRUPTED_BY_ALARM:
817 ug_debug("Interrupt :: PLAYER_INTERRUPTED_BY_ALARM_START");
819 case PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG:
820 ug_debug("Interrupt :: PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG");
822 case PLAYER_INTERRUPTED_COMPLETED:
823 ug_debug("PLAYER_INTERRUPTED_COMPLETED");
824 /* ready to resume */
825 ug_debug("ugd->ug_ListPlay.ug_iPlayState is [%d]", ugd->ug_ListPlay.ug_iPlayState);
826 if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
828 __mf_ug_list_play_control_cb(itemData);
834 __mf_ug_list_play_set_play_pause_status(ugd);
835 mf_ug_list_play_update_item_icon(ugd);
841 __mf_list_play_control_prepare_cb(void *userdata)
845 __mf_ug_list_play_play_current_file(userdata);
849 /******************************
850 ** Prototype : _mp_player_mgr_realize
852 ** Input : ugListItemData *data
859 ** 1.Date : 2010/12/10
861 ** Modification : Created function
863 ******************************/
865 __mf_ug_list_play_prepare_cb(void *userdata)
868 MF_CHECK(g_player_pipe);
870 mf_player_cb_extra_data extra_data;
871 memset(&extra_data, 0, sizeof(mf_player_cb_extra_data));
872 extra_data.cb_type = MF_PLAYER_CB_TYPE_PREPARE;
874 ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mf_player_cb_extra_data));
877 static bool __mf_ug_list_play_realize_player_mgr(void *data)
880 ugData *ugd = (ugData *)data;
882 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
885 player_state_e state = PLAYER_STATE_NONE;
887 if (ugd->ug_ListPlay.ug_Player != 0) {
888 error_code = player_get_state(ugd->ug_ListPlay.ug_Player, &state);
889 ug_debug("state is [%d]", state);
891 if (0 == error_code && PLAYER_STATE_IDLE == state) {
892 ug_debug("player_prepare_async");
893 if (player_prepare_async(ugd->ug_ListPlay.ug_Player, __mf_ug_list_play_prepare_cb, ugd) != PLAYER_ERROR_NONE)
895 ug_debug("Error when mp_player_mgr_realize\n");
901 //ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_READY;
914 /******************************
915 ** Prototype : __mf_ug_list_play_ready_new_file_play
916 ** Description : Samsung
917 ** Input : void *data
918 ** bool drm_check_flag
925 ** 1.Date : 2010/12/10
927 ** Modification : Created function
929 ******************************/
930 /*void mf_player_mgr_set_started_cb(player_started_cb callback, void *user_data)
932 MF_CHECK(g_player_cbs);
934 g_player_cbs->started_cb = callback;
935 g_player_cbs->user_data[MF_PLAYER_CB_TYPE_STARTED] = user_data;
938 void mf_player_mgr_set_paused_cb(player_paused_cb callback, void *user_data)
940 MF_CHECK(g_player_cbs);
942 g_player_cbs->paused_cb = callback;
943 g_player_cbs->user_data[MF_PLAYER_CB_TYPE_PAUSED] = user_data;
946 void mf_player_mgr_set_completed_cb(player_completed_cb callback, void *user_data)
949 MF_CHECK(g_player_cbs);
951 g_player_cbs->completed_cb = callback;
952 g_player_cbs->user_data[MF_PLAYER_CB_TYPE_COMPLETED] = user_data;
955 void mf_player_mgr_set_interrupted_cb(player_interrupted_cb callback, void *user_data)
958 MF_CHECK(g_player_cbs);
960 g_player_cbs->interrupted_cb = callback;
961 g_player_cbs->user_data[MF_PLAYER_CB_TYPE_INTURRUPTED] = user_data;
964 void mf_player_mgr_set_error_cb(player_error_cb callback, void *user_data)
967 MF_CHECK(g_player_cbs);
969 g_player_cbs->error_cb = callback;
970 g_player_cbs->user_data[MF_PLAYER_CB_TYPE_ERROR] = user_data;
973 void mf_player_mgr_set_buffering_cb(player_buffering_cb callback, void *user_data)
975 MF_CHECK(g_player_cbs);
977 g_player_cbs->buffering_cb = callback;
978 g_player_cbs->user_data[MF_PLAYER_CB_TYPE_BUFFERING] = user_data;
981 void mf_player_mgr_set_prepare_cb(player_prepared_cb callback, void *user_data)
983 MF_CHECK(g_player_cbs);
985 g_player_cbs->prepare_cb = callback;
986 g_player_cbs->user_data[MF_PLAYER_CB_TYPE_PREPARE] = user_data;
989 static Eina_Bool __mf_play_control_error(void *data)
992 ugData *ugd = (ugData *)data;
993 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
995 mf_ug_list_play_destory_playing_file(ugd);
996 mf_ug_list_disable_play_itc(ugd, true);
997 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
998 ugd->ug_ListPlay.playing_err_idler = NULL;
1002 static void __mf_play_control_error_cb(int error_code, void *userdata)
1005 ugData *ugd = (ugData *)userdata;
1006 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
1010 case PLAYER_ERROR_OUT_OF_MEMORY:
1011 ug_error("PLAYER_ERROR_OUT_OF_MEMORY");
1013 case PLAYER_ERROR_INVALID_PARAMETER:
1014 ug_error("PLAYER_ERROR_INVALID_PARAMETER");
1015 //mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
1017 case PLAYER_ERROR_NOT_SUPPORTED_FILE: //can receive error msg while playing.
1018 ug_error("receive MM_ERROR_PLAYER_CODEC_NOT_FOUND\n");
1019 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_UNSUPPORT_FILE_TYPE, NULL, NULL, NULL, NULL, NULL);
1021 case PLAYER_ERROR_CONNECTION_FAILED:
1022 ug_error("MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL");
1024 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_CONNECT_FAILED, NULL, NULL, NULL, NULL, NULL);
1027 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_UNSUPPORT_FILE_TYPE, NULL, NULL, NULL, NULL, NULL);
1028 ug_error("error_code: %d", error_code);
1031 if(!ugd->ug_ListPlay.playing_err_idler) {
1032 ugd->ug_ListPlay.playing_err_idler = ecore_idler_add(__mf_play_control_error, ugd);
1037 static bool __mf_ug_list_play_ready_new_file_play(void *data, bool drm_check_flag)
1041 ugListItemData *itemData = data;
1042 ug_mf_retvm_if(itemData == NULL, false, "itemData is NULL");
1044 ugData *ugd = (ugData *)itemData->ug_pData;
1045 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1047 char *path = strdup(itemData->ug_pItemName->str);
1049 /*check if file is exist */
1051 if (!ecore_file_exists(path)) {
1052 ug_debug("Error file %s is not exist\n", path);
1058 /*/check if file is drm file */
1059 if (mf_ug_file_attr_is_drm_file(path) == 0) {
1060 if (!__mf_ug_list_play_check_drm_left_ro(ugd, path)) {
1067 if (!__mf_ug_list_play_check_drm_forward(ugd, path)) {
1074 ugd->ug_ListPlay.ug_bDrmconsumption = true;
1076 ugd->ug_ListPlay.ug_bDrmconsumption = true;
1079 if (!__mf_ug_list_play_create_player_mgr(ugd, path)) {
1082 ug_error("ERROR HERE !!!!!!!");
1083 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_ERROR_OCCUR, NULL, NULL, NULL, NULL, NULL);
1088 //mf_player_mgr_set_started_cb(__mf_ug_list_play_start_cb, itemData);
1089 //mf_player_mgr_set_paused_cb(__mf_ug_list_play_pauset_cb, ugd);
1090 mf_player_mgr_set_completed_cb(__mf_ug_list_play_complete_cb, ugd);
1091 mf_player_mgr_set_interrupted_cb(__mf_ug_list_play_interrupt_cb, ugd);
1092 mf_player_mgr_set_prepare_cb(__mf_list_play_control_prepare_cb, itemData);
1093 mf_player_mgr_set_error_cb(__mf_play_control_error_cb, ugd);
1094 //mf_player_mgr_set_buffering_cb(_mp_play_control_buffering_cb, ad);
1096 if (!__mf_ug_list_play_realize_player_mgr(ugd)) {
1099 ug_error("ERROR HERE !!!!!!!");
1100 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_ERROR_OCCUR, NULL, NULL, NULL, NULL, NULL);
1115 /******************************
1116 ** Prototype : _mp_player_mgr_play
1118 ** Input : ugListItemData *data
1125 ** 1.Date : 2010/12/10
1127 ** Modification : Created function
1129 ******************************/
1130 static bool __mf_ug_list_play_play(void *data)
1134 ugListItemData *itemData = data;
1135 ug_mf_retvm_if(itemData == NULL, false, "itemData is NULL");
1136 ugData *ugd = itemData->ug_pData;
1137 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1141 player_state_e state = PLAYER_STATE_NONE;
1143 if (ugd->ug_ListPlay.ug_Player != 0) {
1144 error_code = player_get_state(ugd->ug_ListPlay.ug_Player, &state);
1145 ug_debug("state is [%d]", state);
1147 if (0 == error_code && PLAYER_STATE_READY == state) {
1148 err = player_start(ugd->ug_ListPlay.ug_Player);
1149 if (err != PLAYER_ERROR_NONE) {
1151 if (err == PLAYER_ERROR_SOUND_POLICY)
1153 ug_error("PLAYER_ERROR_SOUND_POLICY error");
1154 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_UNABLE_TO_PLAY_DURING_CALL, NULL,
1155 NULL, NULL, NULL, NULL);
1159 ug_error("error is [%d]", err);
1160 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_UNABLE_TO_PLAY_ERROR_OCCURRED, NULL,
1161 NULL, NULL, NULL, NULL);
1163 ug_error("Error when _mp_player_mgr_play. err[%x]\n", err);
1167 __mf_ug_list_play_start(itemData);
1168 mf_ug_list_disable_play_itc(ugd, false);
1182 /******************************
1183 ** Prototype : __mf_ug_list_play_stop
1185 ** Input : void *data
1192 ** 1.Date : 2010/12/10
1194 ** Modification : Created function
1196 ******************************/
1197 static bool __mf_ug_list_play_stop(ugData *data)
1200 ugData *ugd = (ugData *)data;
1201 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1203 player_state_e state = PLAYER_STATE_NONE;
1206 if (ugd->ug_ListPlay.ug_Player != 0) {
1207 error_code = player_get_state(ugd->ug_ListPlay.ug_Player, &state);
1208 ug_debug("state is [%d]", state);
1210 if (0 == error_code && (PLAYER_STATE_PLAYING == state || PLAYER_STATE_PAUSED == state)) {
1211 if (player_stop(ugd->ug_ListPlay.ug_Player) != 0) {
1212 ug_debug("Error when __mf_ug_list_play_stop\n");
1217 ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_STOP;
1218 ugd->ug_ListPlay.ug_bDrmContentCanPlay = false;
1232 /******************************
1233 ** Prototype : __mf_ug_list_play_unrealize
1235 ** Input : void *data
1242 ** 1.Date : 2010/12/10
1244 ** Modification : Created function
1246 ******************************/
1247 static bool __mf_ug_list_play_unrealize(ugData *data)
1251 ugData *ugd = (ugData *)data;
1252 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1254 if (ugd->ug_ListPlay.ug_Player != 0) {
1255 /*/unrealize can be invoked at any state */
1256 if (player_unprepare(ugd->ug_ListPlay.ug_Player) != 0) {
1257 ug_debug("Error when __mf_ug_list_play_unrealize\n");
1269 /******************************
1270 ** Prototype : __mf_ug_list_play_destory
1272 ** Input : void *data
1279 ** 1.Date : 2010/12/10
1281 ** Modification : Created function
1283 ******************************/
1284 static bool __mf_ug_list_play_destory(ugData *data)
1287 ugData *ugd = (ugData *)data;
1288 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1290 if (ugd->ug_ListPlay.ug_Player != 0) {
1291 /*/destroy can be invoked at any state */
1292 if (player_destroy(ugd->ug_ListPlay.ug_Player) != 0) {
1293 ug_debug("Error when __mf_ug_list_play_destory\n");
1297 ugd->ug_ListPlay.ug_Player = 0;
1298 ugd->ug_ListPlay.ug_iPlayState = PLAY_STATE_INIT;
1304 UG_SAFE_FREE_CHAR(g_player_cbs);
1305 if (g_player_pipe) {
1306 ecore_pipe_del(g_player_pipe);
1307 g_player_pipe = NULL;
1313 /******************************
1314 ** Prototype : __mf_ug_list_play_play_current_file
1315 ** Description : Samsung
1316 ** Input : ugData *data
1323 ** 1.Date : 2010/12/10
1325 ** Modification : Created function
1327 ******************************/
1328 static bool __mf_ug_list_play_play_current_file(void *data)
1332 ugListItemData *itemData = data;
1333 ug_mf_retvm_if(itemData == NULL, false, "itemData is NULL");
1334 ugData *ugd = itemData->ug_pData;
1335 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1339 player_state_e state = PLAYER_STATE_NONE;
1340 error_code = player_get_state(ugd->ug_ListPlay.ug_Player, &state);
1341 ug_debug("state is [%d]", state);
1342 if (state != PLAYER_STATE_READY) {
1346 if (!__mf_ug_list_play_play(itemData)) {
1347 mf_ug_list_play_destory_playing_file(ugd);
1348 mf_ug_list_disable_play_itc(ugd, true);
1349 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
1358 /******************************
1359 ** Prototype : __mf_ug_list_play_resume
1361 ** Input : ugListItemData *data
1368 ** 1.Date : 2010/12/10
1370 ** Modification : Created function
1372 ******************************/
1373 static bool __mf_ug_list_play_resume(void *data)
1376 ugData *ugd = (ugData *)data;
1377 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1379 player_state_e state = PLAYER_STATE_NONE;
1383 if (ugd->ug_ListPlay.ug_Player != 0) {
1384 error_code = player_get_state(ugd->ug_ListPlay.ug_Player, &state);
1385 ug_debug("state is [%d]", state);
1387 if (0 == error_code && PLAYER_STATE_PAUSED == state) {
1388 err = player_start(ugd->ug_ListPlay.ug_Player);
1390 if (err != PLAYER_ERROR_NONE) {
1392 if (err == PLAYER_ERROR_SOUND_POLICY)
1394 ug_error("ERROR HERE !!!!!!!");
1395 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_UNABLE_TO_PLAY_DURING_CALL, NULL,
1396 NULL, NULL, NULL, NULL);
1400 ug_error("ERROR HERE !!!!!!!");
1401 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_UNABLE_TO_PLAY_ERROR_OCCURRED, NULL,
1402 NULL, NULL, NULL, NULL);
1404 ug_error("Error when _mp_player_mgr_play. err[%x]\n", err);
1408 __mf_ug_list_play_set_play_start_status(ugd, ugd->ug_ListPlay.ug_pPlayFilePath);
1409 mf_ug_list_disable_play_itc(ugd, false);
1424 /******************************
1425 ** Prototype : __mf_ug_list_play_pause
1427 ** Input : ugListItemData *data
1434 ** 1.Date : 2010/12/10
1436 ** Modification : Created function
1438 ******************************/
1439 static bool __mf_ug_list_play_pause(void *data)
1442 ugData *ugd = (ugData *)data;
1443 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1446 player_state_e state = PLAYER_STATE_NONE;
1449 if (ugd->ug_ListPlay.ug_Player) {
1450 error_code = player_get_state(ugd->ug_ListPlay.ug_Player, &state);
1451 ug_debug("state is [%d]", state);
1453 if (0 == error_code && PLAYER_STATE_PLAYING == state) {
1454 err = player_pause(ugd->ug_ListPlay.ug_Player);
1456 ug_debug("Error when _ug_player_mgr_pause. err[%x]\n", err);
1473 /******************************
1474 ** Prototype : mp_play_control_cb
1476 ** Input : ugListItemData *data
1484 ** 1.Date : 2010/12/10
1486 ** Modification : Created function
1488 ******************************/
1489 static void __mf_ug_list_play_control_cb(void *data)
1492 ugListItemData *itemData = data;
1493 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
1495 ugData *ugd = (ugData *)itemData->ug_pData;
1496 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
1498 int state = ugd->ug_ListPlay.ug_iPlayState;
1500 if (state == PLAY_STATE_PLAYING) {
1501 if(__mf_ug_list_play_pause(ugd)) {
1502 __mf_ug_list_play_pauset(ugd);
1503 mf_ug_list_disable_play_itc(ugd, false);
1506 if(__mf_ug_list_play_resume(ugd)) {
1507 __mf_ug_list_play_start(itemData);
1514 static bool __mf_ug_list_play_play_new_file(ugListItemData *data, bool drm_check_flag)
1517 ugListItemData *itemData = data;
1518 ug_mf_retvm_if(itemData == NULL, false, "itemData is NULL");
1520 ugData *ugd = (ugData *)itemData->ug_pData;
1521 ug_mf_retvm_if(ugd == NULL, false, "ugd is NULL");
1523 __mf_ug_list_play_init_data(ugd);
1525 if (!__mf_ug_list_play_ready_new_file_play(itemData, true)) {
1530 if (!__mf_ug_list_play_play_current_file(itemData)) {
1540 /******************************
1541 ** Prototype : _music_item_play
1543 ** Input : ugListItemData *param
1550 ** 1.Date : 2010/12/10
1552 ** Modification : Created function
1554 ******************************/
1555 void mf_ug_list_play_play_music_item(ugListItemData *data)
1558 ugListItemData *itemData = data;
1559 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
1560 ugData *ugd = itemData->ug_pData;
1561 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
1565 error_code = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &key);
1567 ug_debug("key is [%d]", key);
1568 ug_debug("ugd->ug_ListPlay.ug_iPlayState is [%d]", ugd->ug_ListPlay.ug_iPlayState);
1570 if (error_code == 0 && key <= VCONFKEY_SYSMAN_BAT_POWER_OFF) {
1571 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, ("Battery low, play failed!"), NULL, NULL, NULL, NULL, NULL);
1572 } else if (error_code != 0) {
1573 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, ("Unkown error, play failed!"), NULL, NULL, NULL, NULL, NULL);
1575 if (ugd->ug_ListPlay.ug_pPlayFilePath != NULL) {
1577 if (g_strcmp0(ugd->ug_ListPlay.ug_pPlayFilePath, itemData->ug_pItemName->str) != 0) {
1578 mf_ug_list_play_destory_playing_file(ugd);
1579 mf_ug_list_disable_play_itc(ugd, true);
1580 //mf_ug_list_play_update_item_icon(ugd);
1581 __mf_ug_list_play_play_new_file(itemData, true);
1584 /*/ playing the same file */
1585 __mf_ug_list_play_control_cb(itemData);
1589 mf_ug_list_disable_play_itc(ugd, false);
1590 __mf_ug_list_play_play_new_file(itemData, true);
1597 /******************************
1598 ** Prototype : mf_ug_list_play_destory_playing_file
1600 ** Input : ugListItemData *data
1607 ** 1.Date : 2010/12/10
1609 ** Modification : Created function
1611 ******************************/
1612 void mf_ug_list_play_destory_playing_file(void *data)
1615 ugData *ugd = (ugData *)data;
1616 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
1618 __mf_ug_list_play_stop(ugd);
1619 __mf_ug_list_play_unrealize(ugd);
1620 __mf_ug_list_play_destory(ugd);
1625 static sound_type_e mf_ug_player_get_sound_type()
1628 sound_type_e type = SOUND_TYPE_SYSTEM;
1630 ret = sound_manager_get_current_sound_type(&type);
1631 ug_error("ret is [%d]", ret);
1636 static int mf_ug_player_get_volume(sound_type_e type)
1641 ret = sound_manager_get_volume(SOUND_TYPE_MEDIA, &volume);
1642 //ret = sound_manager_get_volume(type, &volume);
1643 ug_error("ret is [%d]", ret);
1649 static void mf_ug_player_set_volume(sound_type_e type, int volume)
1653 ret = sound_manager_set_volume(type, volume);
1654 ug_error("ret is [%d]", ret);
1659 static void mf_ug_player_vol_type_set(mf_player_volume_type type)
1662 sound_type_e current_type;
1664 current_type = mf_ug_player_get_sound_type();
1665 volume = mf_ug_player_get_volume(current_type);
1666 ug_error("current type is [%d] volume is [%d] type is [%d]", current_type, volume, type);
1667 sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
1668 mf_ug_player_set_volume(SOUND_TYPE_MEDIA, volume);
1672 case MF_VOLUME_ALERT:
1673 sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_ALARM);
1674 mf_ug_player_set_volume(SOUND_TYPE_ALARM, volume);
1676 case MF_VOLUME_NOTIFICATION:
1677 sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NOTIFICATION);
1678 mf_ug_player_set_volume(SOUND_TYPE_NOTIFICATION, volume);
1680 case MF_VOLUME_RINGTONE:
1681 sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_RINGTONE);
1682 mf_ug_player_set_volume(SOUND_TYPE_RINGTONE, volume);
1685 sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
1686 mf_ug_player_set_volume(SOUND_TYPE_MEDIA, volume);
1692 void mf_ug_player_vol_set(const char *path)
1694 ug_mf_retm_if(path == NULL, "path is NULL");
1695 if (g_strcmp0(path, UG_SETTING_MSG_ALERTS_PATH) == 0) {
1696 mf_ug_player_vol_type_set(MF_VOLUME_NOTIFICATION);
1697 } else if (g_strcmp0(path, UG_SETTING_RINGTONE_PATH) == 0) {
1698 mf_ug_player_vol_type_set(MF_VOLUME_RINGTONE);
1699 } else if (g_strcmp0(path, UG_SETTING_ALERTS_PATH) == 0) {
1700 mf_ug_player_vol_type_set(MF_VOLUME_ALERT);
1702 mf_ug_player_vol_type_set(MF_VOLUME_NONE);