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.
20 #include <system_settings.h>
22 #include "mp-player-debug.h"
26 #include "mp-playlist-mgr.h"
27 #include "mp-ug-launch.h"
29 #include "mp-player-drm.h"
30 #include "mp-widget.h"
31 #include "mp-ctxpopup.h"
33 #include "mp-setting-ctrl.h"
35 #ifndef MP_SOUND_PLAYER
36 #include "mp-view-layout.h"
37 #include "mp-playlist-view.h"
38 #include "mp-common.h"
39 #include "mp-view-manager.h"
43 #define MP_MENU_FID "mp_menu_fid"
44 #define MP_MENU_PLAY_LIST_FID "mp_menu_playlist_id"
45 #define MP_MENU_POPUP_PLAY_LIST_HANDLER "mp_menu_popup_handler"
46 #define MP_MENU_GROUP_ITEM_HANDLER "mp_menu_group_item_handler"
50 MP_MENU_FUNC_ADD_TO_LIST = 0,
56 mp_menu_get_track_type_by_group(mp_group_type_e group_type)
58 mp_track_type_e item_type = MP_TRACK_ALL;
60 if (group_type == MP_GROUP_BY_ALBUM)
62 item_type = MP_TRACK_BY_ALBUM;
64 else if (group_type == MP_GROUP_BY_ARTIST)
66 item_type = MP_TRACK_BY_ARTIST;
68 else if (group_type == MP_GROUP_BY_ARTIST_ALBUM)
70 item_type = MP_TRACK_BY_ALBUM;
72 else if (group_type == MP_GROUP_BY_GENRE)
74 item_type = MP_TRACK_BY_GENRE;
76 else if (group_type == MP_GROUP_BY_YEAR)
78 item_type = MP_TRACK_BY_YEAR;
80 else if (group_type == MP_GROUP_BY_COMPOSER)
82 item_type = MP_TRACK_BY_COMPOSER;
84 else if (group_type == MP_GROUP_BY_FOLDER)
86 item_type = MP_TRACK_BY_FOLDER;
92 #ifndef MP_SOUND_PLAYER
94 _mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, mp_media_info_h svc_handle,
95 mp_menu_func_type menu_func)
99 MP_CHECK_FALSE(layout_data);
100 MP_CHECK_LAYOUT_DATA(layout_data);
102 struct appdata *ad = layout_data->ad;
109 int playlist_item_count = 0;
111 mp_media_list_h tracks = NULL;
112 mp_track_type_e item_type = MP_TRACK_ALL;
114 item_type = mp_menu_get_track_type_by_group(layout_data->group_type);
118 if ((item_type == MP_TRACK_BY_FOLDER))
120 ret = mp_media_info_group_get_folder_id(svc_handle, &name);
124 ret = mp_media_info_group_get_main_info(svc_handle, &name);
127 mp_retvm_if(ret != 0, FALSE, "Fail to get value");
128 mp_retvm_if(name == NULL, FALSE, "Fail to get value");
129 mp_debug("%s", name);
131 ret = mp_media_info_list_count(item_type, name, NULL, NULL, 0, &count);
132 MP_CHECK_EXCEP(ret == 0);
134 ret = mp_media_info_list_create(&tracks, item_type, name, NULL, NULL, 0, 0, count);
135 MP_CHECK_EXCEP(ret == 0);
137 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
138 if (menu_func == MP_MENU_FUNC_ADD_TO_LIST)
140 mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, plst_id, &playlist_item_count);
141 if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
148 for (index = 0; index < count; ++index)
152 mp_media_info_h item;
154 item = mp_media_info_list_nth_item(tracks, index);
155 mp_media_info_get_media_id(item, &fid);
156 mp_media_info_get_file_path(item, &path);
158 if (menu_func == MP_MENU_FUNC_ADD_TO_LIST)
160 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
161 if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
166 err = mp_media_info_playlist_add_media(plst_id, fid);
167 MP_CHECK_EXCEP(err == 0);
168 playlist_item_count++;
172 MP_CHECK_EXCEP(path);
174 MP_CHECK_EXCEP(err == 0);
177 mp_media_info_list_destroy(tracks);
182 mp_media_info_list_destroy(tracks);
187 mp_menu_add_to_play_list_cancel_create_cb(void *data, Evas_Object * obj, void *event_info)
189 struct appdata *ad = (struct appdata *)data;
192 mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
194 Evas_Object *current_navi_bar = NULL;
195 current_navi_bar = ad->naviframe;
196 MP_CHECK(current_navi_bar);
198 view_data_t *view_data = evas_object_data_get(current_navi_bar, "view_data");
199 mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
204 mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *event_info)
207 struct appdata *ad = (struct appdata *)data;
210 mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
212 Evas_Object *current_navi_bar = NULL;
213 current_navi_bar = ad->naviframe;
214 MP_CHECK(current_navi_bar);
218 char *converted_name = NULL;
219 Evas_Object *entry = mp_widget_editfield_entry_get(ad->editfiled_new_playlist);
220 const char *name = elm_entry_entry_get(entry);
222 if (name == NULL || strlen(name) == 0)
224 name = elm_object_part_text_get(ad->editfiled_new_playlist, "elm.guidetext");
226 converted_name = elm_entry_markup_to_utf8(name);
228 plst_uid = mp_util_create_playlist(ad, converted_name, NULL);
229 IF_FREE(converted_name);
233 view_data_t *view_data = evas_object_data_get(current_navi_bar, "view_data");
234 mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
236 if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
237 mp_view_manager_update_list_contents(view_data, FALSE);
239 mp_layout_data_t *layout_data = ad->layout_data;
240 mp_list_category_t category = MP_LAYOUT_TRACK_LIST;
244 MP_CHECK_LAYOUT_DATA(layout_data);
245 category = layout_data->category;
250 if (category == MP_LAYOUT_TRACK_LIST)
252 result = mp_util_add_to_playlist_by_key(plst_uid, ad->fid);
254 else if (category == MP_LAYOUT_GROUP_LIST)
256 MP_CHECK(ad->group_item_handler);
258 result = _mp_menu_func_by_group_handle(plst_uid, layout_data,
259 ad->group_item_handler, MP_MENU_FUNC_ADD_TO_LIST);
264 mp_debug("sucess add to play list");
265 mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_ADDED"));
269 mp_debug("fail add to play list");
270 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
271 char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
272 char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
273 mp_util_post_status_message(ad, noti_str);
276 mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
284 _mp_menu_add_playlist_create_select_cb(void *data, Evas_Object * obj, void *event_info)
290 struct appdata *ad = data;
291 Evas_Object *current_navi_bar = NULL;
292 view_data_t *view_data = NULL;
293 char *new_playlist_name = NULL;
296 MP_CHECK(ad->library);
298 current_navi_bar = ad->naviframe;
300 view_data = evas_object_data_get(current_navi_bar, "view_data");
302 new_playlist_name = mp_util_get_new_playlist_name();
303 Evas_Object *create_plst_layout = mp_common_create_editfield_layout(current_navi_bar, ad, new_playlist_name);
304 IF_FREE(new_playlist_name);
305 mp_retm_if(create_plst_layout == NULL, "create_plst_layout is NULL");
307 Elm_Object_Item *it = mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP);
308 elm_object_item_text_set(it, GET_STR("IDS_MUSIC_BODY_CREATE_PLAYLIST"));
309 mp_language_mgr_register_object_item(it, "IDS_MUSIC_BODY_CREATE_PLAYLIST");
311 Evas_Object *btn = mp_widget_create_button(create_plst_layout, "naviframe/toolbar/default", GET_SYS_STR("IDS_COM_OPT_SAVE"), NULL, mp_menu_add_to_play_list_done_create_cb, ad);
312 elm_object_item_part_content_set(it, "title_toolbar_button1", btn);
313 btn = mp_widget_create_button(create_plst_layout, "naviframe/back_btn/default", NULL, NULL, mp_playlist_view_create_new_cancel_cb, view_data);
314 elm_object_item_part_content_set(it, "title_prev_btn", btn);
316 mp_common_add_keypad_state_callback(ad->conformant, create_plst_layout, it);
318 mp_view_manager_set_back_button(create_plst_layout, it, mp_playlist_view_create_new_cancel_cb, view_data);
320 evas_object_show(create_plst_layout);
322 ad->layout_data = evas_object_data_get(obj, "layout_data");
323 mp_layout_data_t *layout_data = ad->layout_data;
327 if (layout_data->category == MP_LAYOUT_TRACK_LIST)
330 ad->fid = (char *)evas_object_data_get(obj, MP_MENU_FID);
332 else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
334 ad->group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER);
337 if (layout_data->genlist)
338 mp_util_reset_genlist_mode_item(layout_data->genlist);
341 ad->fid = (char *)evas_object_data_get(obj, MP_MENU_FID);
343 mp_popup_destroy(ad);
350 _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info)
353 struct appdata *ad = NULL;
355 int playlist_id = -1;
359 mp_media_info_h item_handler = data;
361 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
362 mp_list_category_t category = MP_LAYOUT_TRACK_LIST;
366 MP_CHECK_LAYOUT_DATA(layout_data);
367 ad = layout_data->ad;
368 category = layout_data->category;
373 ad = evas_object_data_get(obj, "ad");
377 char *playlist_name = NULL;
379 ret = mp_media_info_group_get_main_info(item_handler, &playlist_name);
380 ret = mp_media_info_group_get_playlist_id(item_handler, &playlist_id);
382 mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, &item_count);
384 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
385 if (item_count > MP_PLAYLIST_MAX_ITEM_COUNT)
387 char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
388 char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
389 mp_util_post_status_message(ad, noti_str);
395 mp_retm_if(ret != 0, "Fail to get value");
399 if (category == MP_LAYOUT_TRACK_LIST)
401 char *fid = (char *)evas_object_data_get(obj, MP_MENU_FID);
402 result = mp_util_add_to_playlist_by_key(playlist_id, fid);
405 else if (category == MP_LAYOUT_GROUP_LIST)
407 mp_media_info_h group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER);
409 MP_CHECK(group_item_handler);
411 result = _mp_menu_func_by_group_handle(playlist_id, layout_data,
412 group_item_handler, MP_MENU_FUNC_ADD_TO_LIST);
417 mp_debug("sucess add to play list");
419 if(layout_data && layout_data->track_type == MP_TRACK_BY_PLAYLIST && layout_data->category == MP_LAYOUT_TRACK_LIST)
420 mp_view_layout_update(obj);
424 mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_ADDED"));
429 mp_debug("fail add to play list");
430 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
431 char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
432 char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
433 mp_util_post_status_message(ad, noti_str);
436 mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
440 mp_media_list_h playlists = NULL;
442 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
445 playlists = evas_object_data_get(obj, MP_MENU_POPUP_PLAY_LIST_HANDLER);
446 mp_media_info_group_list_destroy(playlists);
448 mp_popup_destroy(ad);
454 _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
458 mp_media_info_h handle = data;
461 struct appdata *ad = NULL;
465 Evas_Object *popup = obj;
466 mp_layout_data_t *layout_data = evas_object_data_get(popup, "layout_data");
467 MP_CHECK(layout_data);
468 MP_CHECK_LAYOUT_DATA(layout_data);
469 ad = layout_data->ad;
470 ad->popup_delete = NULL;
472 mp_evas_object_del(popup);
473 int response = (int)event_info;
475 if (response == MP_POPUP_YES)
479 if (layout_data->category == MP_LAYOUT_TRACK_LIST)
481 if (layout_data->track_type == MP_TRACK_BY_PLAYLIST)
484 ret = mp_media_info_get_playlist_member_id(handle, &member_id);
485 mp_media_info_playlist_remove_media(layout_data->playlist_handle, member_id);
487 else if (layout_data->track_type == MP_TRACK_BY_ADDED_TIME)
489 ret = mp_media_info_set_added_time(handle, 0);
491 else if (layout_data->track_type == MP_TRACK_BY_FAVORITE)
493 ret = mp_media_info_set_favorite(handle, false);
495 else if (layout_data->track_type == MP_TRACK_BY_PLAYED_TIME)
497 ret = mp_media_info_set_played_time(handle, 0);
499 else if (layout_data->track_type == MP_TRACK_BY_PLAYED_COUNT)
501 ret = mp_media_info_set_played_count(handle, 0);
505 fid = mp_util_get_fid_by_handle(layout_data, handle);
506 if (MP_FILE_DELETE_ERR_NONE != mp_util_delete_track(ad, fid, NULL, FALSE))
514 else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
516 result = _mp_menu_func_by_group_handle(0, layout_data, handle, MP_MENU_FUNC_DELETE);
518 else if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
521 ret = mp_media_info_group_get_playlist_id(handle, &plst_id);
522 mp_retm_if(ret != 0, "Fail to get value");
524 ret = mp_media_info_playlist_delete_from_db(plst_id);
525 mp_retm_if(ret != 0, "Fail to delete playlist");
530 Elm_Object_Item *it =
531 (Elm_Object_Item *)elm_genlist_decorated_item_get((const Evas_Object *)layout_data->genlist);
533 if(!it && layout_data->category == MP_LAYOUT_PLAYLIST_LIST) {
534 Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
535 for(; item != NULL; item = elm_genlist_item_next_get(item)) {
536 mp_genlist_item_data_t *item_data = NULL;
537 item_data = (mp_genlist_item_data_t *)elm_object_item_data_get(item);
538 if(item_data && item_data->handle == handle) {
547 layout_data->item_count--;
549 /* update last view when change album track view or artist track view */
550 if (MP_TRACK_BY_ALBUM == layout_data->track_type
551 || MP_TRACK_BY_ARTIST == layout_data->track_type) {
552 layout_data->album_delete_flag = TRUE;
553 mp_view_manager_update_list_contents(layout_data->view_data, FALSE);
554 layout_data->album_delete_flag = FALSE;
557 //update view in case there is no content. otherwise juse call elm_object_item_del()
558 if(layout_data->item_count < 1) {
559 mp_view_layout_update(layout_data->layout);
560 /* update the first controlba item */
561 mp_view_manager_update_first_controlbar_item(layout_data);
563 if (MP_TRACK_BY_ARTIST == layout_data->track_type) {
564 if(!elm_genlist_item_parent_get(elm_genlist_item_next_get(it))
565 && !elm_genlist_item_parent_get(elm_genlist_item_prev_get(it)))
567 elm_object_item_del(elm_genlist_item_parent_get(it));
571 elm_genlist_item_update(elm_genlist_item_parent_get(it));
573 } else if (MP_TRACK_BY_ALBUM == layout_data->track_type) {
574 /* update group title */
575 elm_genlist_item_update(layout_data->album_group);
578 elm_object_item_del(it);
581 MP_CHECK(layout_data->view_data);
582 mp_util_post_status_message(layout_data->ad, GET_SYS_STR("IDS_COM_POP_DELETED"));
585 mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_FAILED"));
593 _mp_menu_set_isf_entry(mp_layout_data_t * layout_data)
596 char *init_str = NULL;
598 init_str = elm_entry_utf8_to_markup(layout_data->old_name);
603 elm_entry_entry_set(layout_data->isf_entry, init_str);
609 DEBUG_TRACE("+++++++ the init str for entry is empty!");
610 elm_entry_entry_set(layout_data->isf_entry, "");
616 mp_menu_share_list_select_cb(void *data, Evas_Object * obj, void *event_info)
619 CtxPopup_Data *popup_data = data;
620 void *user_data = popup_data->user_data;
622 const char *label = popup_data->label;
624 mp_layout_data_t *layout_data = (mp_layout_data_t *) user_data;
626 MP_CHECK(layout_data);
627 MP_CHECK_LAYOUT_DATA(layout_data);
631 GString *path = NULL;
632 char *path_name = NULL;
635 if (g_strcmp0(label, BLUETOOTH_SYS) == 0)
637 else if ( !g_strcmp0(label, EMAIL_SYS) ||!g_strcmp0(label, MESSAGE_SYS))
639 #ifdef MP_FEATURE_WIFI_SHARE
640 else if (g_strcmp0(label, WIFI_SYS) == 0)
645 ERROR_TRACE("not available");
649 mp_retm_if(layout_data->genlist == NULL, "genlist is NULL");
651 Elm_Object_Item *first_item = elm_genlist_first_item_get(layout_data->genlist);
652 MP_CHECK(first_item);
654 Elm_Object_Item *current_item = NULL;
655 Elm_Object_Item *next_item = NULL;
656 mp_genlist_item_data_t *gl_item = NULL;
659 if (layout_data->checked_count < 1)
661 ERROR_TRACE("There is no seleted Item");
665 MP_GENLIST_CHECK_FOREACH_SAFE(first_item, current_item, next_item, gl_item)
667 if(elm_genlist_item_select_mode_get(current_item) == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
670 if (gl_item->checked)
672 mp_media_info_h item = (gl_item->handle);
679 ret = mp_media_info_get_file_path(item, &path_name);
682 DEBUG_TRACE("Fail to get file path... ");
690 path = g_string_new(path_name);
694 g_string_append_printf(path, fmt, path_name);
699 ERROR_TRACE("path name is NULL");
707 ERROR_TRACE("item_data is NULL");
714 if (path && path->str)
716 DEBUG_TRACE("path is [%s]", path->str);
718 if (g_strcmp0(label, EMAIL_SYS) == 0)
719 mp_ug_email_attatch_file(path->str, layout_data->ad);
720 else if(g_strcmp0(label, MESSAGE_SYS) == 0)
721 mp_ug_message_attatch_file(path->str, layout_data->ad);
722 else if(g_strcmp0(label, BLUETOOTH_SYS) == 0)
723 mp_ug_bt_attatch_file(path->str, i, layout_data->ad);
724 #ifdef MP_FEATURE_WIFI_SHARE
725 else if(g_strcmp0(label, WIFI_SYS) == 0)
726 mp_ug_wifi_attatch_file(path->str, i, layout_data->ad);
728 g_string_free(path, TRUE);
732 ERROR_TRACE("path is NULL");
736 mp_ctxpopup_destroy(popup_data->popup);
740 mp_menu_share_select_cb(void *data, Evas_Object * obj, void *event_info)
742 char *path = NULL; //do not free
743 struct appdata *ad = NULL;
744 mp_plst_item *item = NULL;
747 CtxPopup_Data *popup_data = data;
748 void *user_data = popup_data->user_data;
750 const char *label = popup_data->label;
752 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
756 MP_CHECK_LAYOUT_DATA(layout_data);
757 mp_media_info_h handle = NULL;
759 ad = layout_data->ad;
760 path = mp_util_get_path_by_handle(layout_data, handle);
763 mp_debug("path =%s", path);
770 item = mp_playlist_mgr_get_current(ad->playlist_mgr);
778 DEBUG_TRACE("%s selected", label);
780 if (g_strcmp0(label, BLUETOOTH_SYS) == 0)
782 mp_ug_bt_attatch_file(path, 1, ad);
784 else if (g_strcmp0(label, EMAIL_SYS) == 0)
786 mp_ug_email_attatch_file(path, ad);
788 else if (g_strcmp0(label, MESSAGE_SYS) == 0)
789 mp_ug_message_attatch_file(path, ad);
790 #ifdef MP_FEATURE_WIFI_SHARE
791 else if (g_strcmp0(label, WIFI_SYS) == 0)
792 mp_ug_wifi_attatch_file(path, 1, ad);
796 mp_ctxpopup_destroy(popup_data->popup);
800 _mp_menu_set_caller_rington(char *path)
804 char *prev_ring_tone_path = NULL;
807 prev_ring_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
808 if (prev_ring_tone_path && mp_drm_file_right(prev_ring_tone_path))
810 mp_drm_request_setas_ringtone(prev_ring_tone_path, SETAS_REQUEST_UNREGISTER);
811 free(prev_ring_tone_path);
814 if (mp_drm_file_right(path))
816 if (!mp_drm_request_setas_ringtone(path, SETAS_REQUEST_CHECK_STATUS))
821 ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, path);
822 if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
823 mp_error("system_settings_set_value_string()... [0x%x]", ret);
828 mp_drm_request_setas_ringtone(path, SETAS_REQUEST_REGISTER);
835 mp_menu_set_as_select_cb(void *data, Evas_Object * obj, void *event_info)
838 char *path = NULL; //do not free
839 struct appdata *ad = NULL;
840 mp_plst_item *item = NULL;
843 CtxPopup_Data *popup_data = data;
844 void *user_data = popup_data->user_data;
846 const char *label = popup_data->label;
848 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
852 MP_CHECK_LAYOUT_DATA(layout_data);
853 mp_media_info_h handle = NULL;
855 ad = layout_data->ad;
856 path = mp_util_get_path_by_handle(layout_data, handle);
863 item = mp_playlist_mgr_get_current(ad->playlist_mgr);
871 DEBUG_TRACE("%s selected", label);
872 if (g_strcmp0(label, GET_STR(CALLER_RINGTONE)) == 0)
874 mp_ug_contact_user_sel(path, ad);
876 else if (g_strcmp0(label, GET_STR(CALL_RINGTONE)) == 0)
878 char *popup_txt = NULL;
880 DEBUG_TRACE("path =%s", path);
882 ret = _mp_menu_set_caller_rington(path);
885 popup_txt = GET_SYS_STR("IDS_COM_POP_SUCCESS");
887 popup_txt = GET_SYS_STR("IDS_COM_POP_FAILED");
889 mp_widget_text_popup(ad, popup_txt);
894 mp_ctxpopup_destroy(popup_data->popup);
901 mp_menu_share_cb(void *data, Evas_Object * obj, void *event_info)
907 struct appdata *ad = NULL;
909 Evas_Object *share_popup = NULL;
911 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
913 char *file_name = NULL;
914 Evas_Object *genlist = NULL;
918 MP_CHECK_LAYOUT_DATA(layout_data);
919 mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
920 ad = layout_data->ad;
922 mp_media_info_h handle = NULL;
924 ad = layout_data->ad;
925 file_name = mp_util_get_path_by_handle(layout_data, handle);
927 if (mp_drm_check_foward_lock(file_name))
929 mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"));
933 share_popup = mp_ctxpopup_create(obj, MP_CTXPOPUP_PV_SHARE, data, ad);
934 MP_CHECK(share_popup);
935 evas_object_data_set(share_popup, "layout_data", layout_data);
941 mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
942 mp_plst_item *item = mp_playlist_mgr_get_current(ad->playlist_mgr);
946 mp_debug("excuete by list view %s", item->uri);
948 if (mp_drm_check_foward_lock(item->uri))
950 mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"));
954 share_popup = mp_ctxpopup_create(obj, MP_POPUP_PV_SHARE, data, ad);
955 MP_CHECK(share_popup);
963 mp_menu_set_cb(void *data, Evas_Object * obj, void *event_info)
969 struct appdata *ad = NULL;
971 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
975 MP_CHECK_LAYOUT_DATA(layout_data);
976 ad = layout_data->ad;
981 mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
986 popup = mp_ctxpopup_create(obj, MP_CTXPOPUP_PV_SET_AS, data, ad);
988 popup = mp_ctxpopup_create(obj, MP_CTXPOPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME, data, ad);
992 evas_object_data_set(popup, "layout_data", layout_data);
999 #ifndef MP_SOUND_PLAYER
1001 mp_menu_delete_cb(void *data, Evas_Object * obj, void *event_info)
1005 struct appdata *ad = NULL;
1006 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
1009 MP_CHECK(layout_data);
1010 MP_CHECK_LAYOUT_DATA(layout_data);
1011 mp_media_info_h handle = NULL;
1014 ad = layout_data->ad;
1016 Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, handle, _mp_menu_excute_delete_cb, ad);
1017 ad->popup_delete = popup;
1018 evas_object_data_set(popup, "layout_data", layout_data);
1020 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1022 elm_object_text_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q"));
1024 mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_BODY_DELETE"), MP_POPUP_YES);
1025 mp_popup_button_set(popup, MP_POPUP_BTN_2, GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_POPUP_NO);
1027 evas_object_show(popup);
1031 mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
1037 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
1038 mp_plst_item *item = NULL;
1042 struct appdata *ad = NULL;
1044 mp_media_info_h handle = NULL;
1046 Evas_Object *popup = NULL;
1050 MP_CHECK_LAYOUT_DATA(layout_data);
1051 ad = layout_data->ad;
1058 popup = mp_genlist_popup_create(obj, MP_POPUP_ADD_TO_PLST, ad, ad);
1061 Evas_Object *genlist = evas_object_data_get(popup, "genlist");
1066 evas_object_data_set(genlist, "layout_data", layout_data);
1070 if (layout_data->category == MP_LAYOUT_TRACK_LIST)
1072 fid = g_strdup(mp_util_get_fid_by_handle(layout_data, handle));
1073 evas_object_data_set(genlist, MP_MENU_FID, (void *)fid); //set request fid
1077 evas_object_data_set(genlist, MP_MENU_GROUP_ITEM_HANDLER, handle); //set group item handler
1082 item = mp_playlist_mgr_get_current(ad->playlist_mgr);
1083 MP_CHECK_EXCEP(item);
1084 fid = g_strdup(item->uid);
1085 evas_object_data_set(genlist, MP_MENU_FID, (void *)fid); //set request fid
1086 evas_object_data_set(genlist, "ad", ad);
1089 int i = 0, count = -1, err = -1;
1091 mp_genlist_popup_item_append(popup, GET_STR("IDS_MUSIC_OPT_CREATE_PLAYLIST"), NULL,
1092 _mp_menu_add_playlist_create_select_cb, ad);
1094 err = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
1096 if ((err != 0) || (count < 0))
1098 ERROR_TRACE("Error in mp_media_info_group_list_count (%d)\n", err);
1104 mp_media_list_h playlists = NULL; //must be free
1106 ret = mp_media_info_group_list_create(&playlists, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count);
1107 mp_retm_if(ret != 0, "Fail to get playlist");
1108 evas_object_data_set(popup, MP_MENU_POPUP_PLAY_LIST_HANDLER, (void *)playlists); //set request handle id for support group item
1110 for (i = 0; i < count; i++)
1112 /* it should be released in a proper place */
1113 mp_media_info_h plst = NULL;
1115 plst = mp_media_info_group_list_nth_item(playlists, i);
1116 mp_retm_if(!plst, "Fail to get item");
1118 ret = mp_media_info_group_get_main_info(plst, &name);
1119 mp_retm_if(ret != 0, "Fail to get value");
1121 mp_genlist_popup_item_append(popup, name, NULL, _mp_menu_add_playlist_select_cb, (void *)plst);
1126 evas_object_show(popup);
1131 mp_evas_object_del(popup);