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://www.tizenopensource.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.
21 #include "mp-player-debug.h"
25 #include "mp-play-list.h"
26 #include "mp-ug-launch.h"
28 #include "mp-player-drm.h"
29 #include "mp-widget.h"
31 #include "mp-setting-ctrl.h"
33 #ifndef MP_SOUND_PLAYER
34 #include "mp-view-layout.h"
35 #include "mp-playlist-view.h"
36 #include "mp-common.h"
37 #include "mp-view-manager.h"
40 #define MP_MENU_FID "mp_menu_fid"
41 #define MP_MENU_PLAY_LIST_FID "mp_menu_playlist_id"
42 #define MP_MENU_POPUP_PLAY_LIST_HANDLER "mp_menu_popup_handler"
43 #define MP_MENU_GROUP_ITEM_HANDLER "mp_menu_group_item_handler"
47 MP_MENU_FUNC_ADD_TO_LIST = 0,
53 mp_menu_get_track_type_by_group(mp_group_type_e group_type)
55 mp_track_type_e item_type = MP_TRACK_ALL;
57 if (group_type == MP_GROUP_BY_ALBUM)
59 item_type = MP_TRACK_BY_ALBUM;
61 else if (group_type == MP_GROUP_BY_ARTIST)
63 item_type = MP_TRACK_BY_ARTIST;
65 else if (group_type == MP_GROUP_BY_ARTIST_ALBUM)
67 item_type = MP_TRACK_BY_ALBUM;
69 else if (group_type == MP_GROUP_BY_GENRE)
71 item_type = MP_TRACK_BY_GENRE;
73 else if (group_type == MP_GROUP_BY_YEAR)
75 item_type = MP_TRACK_BY_YEAR;
77 else if (group_type == MP_GROUP_BY_COMPOSER)
79 item_type = MP_TRACK_BY_COMPOSER;
81 else if (group_type == MP_GROUP_BY_FOLDER)
83 item_type = MP_TRACK_BY_FOLDER;
89 #ifndef MP_SOUND_PLAYER
91 _mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, mp_media_info_h svc_handle,
92 mp_menu_func_type menu_func)
96 MP_CHECK_FALSE(layout_data);
97 MP_CHECK_LAYOUT_DATA(layout_data);
99 struct appdata *ad = layout_data->ad;
106 int playlist_item_count = 0;
108 mp_media_list_h tracks = NULL;
109 mp_track_type_e item_type = MP_TRACK_ALL;
111 item_type = mp_menu_get_track_type_by_group(layout_data->group_type);
115 if ((item_type == MP_TRACK_BY_FOLDER))
117 ret = mp_media_info_group_get_folder_id(svc_handle, &name);
121 ret = mp_media_info_group_get_main_info(svc_handle, &name);
124 mp_retvm_if(ret != 0, FALSE, "Fail to get value");
125 mp_retvm_if(name == NULL, FALSE, "Fail to get value");
126 mp_debug("%s", name);
128 ret = mp_media_info_list_count(item_type, name, NULL, NULL, 0, &count);
129 MP_CHECK_EXCEP(ret == 0);
131 ret = mp_media_info_list_create(&tracks, item_type, name, NULL, NULL, 0, 0, count);
132 MP_CHECK_EXCEP(ret == 0);
134 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
135 if (menu_func == MP_MENU_FUNC_ADD_TO_LIST)
137 mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, plst_id, &playlist_item_count);
138 if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
145 for (index = 0; index < count; ++index)
149 mp_media_info_h item;
151 item = mp_media_info_list_nth_item(tracks, index);
152 mp_media_info_get_media_id(item, &fid);
153 mp_media_info_get_file_path(item, &path);
155 if (menu_func == MP_MENU_FUNC_ADD_TO_LIST)
157 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
158 if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
163 err = mp_media_info_playlist_add_media(plst_id, fid);
164 MP_CHECK_EXCEP(err == 0);
165 playlist_item_count++;
169 MP_CHECK_EXCEP(path);
171 music_list_item *cur_item =
172 mp_play_list_get_current_item(layout_data->view_data->ad->playing_list);
173 if ((cur_item != NULL) && !g_strcmp0(cur_item->key_id ,fid))
175 mp_widget_text_popup(layout_data->view_data->ad,
176 GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"));
181 MP_CHECK_EXCEP(err == 0);
184 mp_media_info_list_destroy(tracks);
189 mp_media_info_list_destroy(tracks);
194 mp_menu_add_to_play_list_cancel_create_cb(void *data, Evas_Object * obj, void *event_info)
196 struct appdata *ad = (struct appdata *)data;
199 mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
201 Evas_Object *current_navi_bar = NULL;
202 current_navi_bar = ad->naviframe;
203 MP_CHECK(current_navi_bar);
205 view_data_t *view_data = evas_object_data_get(current_navi_bar, "view_data");
206 mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
211 mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *event_info)
214 struct appdata *ad = (struct appdata *)data;
217 mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
219 Evas_Object *current_navi_bar = NULL;
220 current_navi_bar = ad->naviframe;
221 MP_CHECK(current_navi_bar);
225 char *converted_name = NULL;
226 Evas_Object *entry = mp_widget_editfield_entry_get(ad->editfiled_new_playlist);
227 const char *name = elm_entry_entry_get(entry);
229 if (name == NULL || strlen(name) == 0)
231 name = elm_object_part_text_get(ad->editfiled_new_playlist, "elm.guidetext");
233 converted_name = elm_entry_markup_to_utf8(name);
235 plst_uid = mp_util_create_playlist(ad, converted_name, NULL);
236 IF_FREE(converted_name);
240 view_data_t *view_data = evas_object_data_get(current_navi_bar, "view_data");
241 mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
243 if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
244 mp_view_manager_update_list_contents(view_data, FALSE);
246 mp_layout_data_t *layout_data = ad->layout_data;
247 mp_list_category_t category = MP_LAYOUT_TRACK_LIST;
251 MP_CHECK_LAYOUT_DATA(layout_data);
252 category = layout_data->category;
257 if (category == MP_LAYOUT_TRACK_LIST)
259 result = mp_util_add_to_playlist_by_key(plst_uid, ad->fid);
261 else if (category == MP_LAYOUT_GROUP_LIST)
263 MP_CHECK(ad->group_item_handler);
265 result = _mp_menu_func_by_group_handle(plst_uid, layout_data,
266 ad->group_item_handler, MP_MENU_FUNC_ADD_TO_LIST);
271 mp_debug("sucess add to play list");
272 mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_ADDED"));
276 mp_debug("fail add to play list");
277 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
278 char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
279 char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
280 mp_util_create_notify(ad, noti_str);
283 mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
291 _mp_menu_add_playlist_create_select_cb(void *data, Evas_Object * obj, void *event_info)
295 struct appdata *ad = (struct appdata *)data;
296 Evas_Object *current_navi_bar = NULL;
297 view_data_t *view_data = NULL;
298 char *new_playlist_name = NULL;
301 MP_CHECK(ad->library);
303 current_navi_bar = ad->naviframe;
305 view_data = evas_object_data_get(current_navi_bar, "view_data");
307 new_playlist_name = mp_util_get_new_playlist_name();
308 Evas_Object *create_plst_layout = mp_common_create_editfield_layout(current_navi_bar, ad, new_playlist_name);
309 IF_FREE(new_playlist_name);
310 mp_retm_if(create_plst_layout == NULL, "create_plst_layout is NULL");
312 mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP);
314 evas_object_show(create_plst_layout);
316 ad->layout_data = evas_object_data_get(obj, "layout_data");
317 mp_layout_data_t *layout_data = ad->layout_data;
319 if (layout_data->category == MP_LAYOUT_TRACK_LIST)
322 ad->fid = (char *)evas_object_data_get(obj, MP_MENU_FID);
324 else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
326 ad->group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER);
329 if (layout_data->genlist)
330 mp_util_reset_genlist_mode_item(layout_data->genlist);
332 mp_popup_destroy(layout_data->ad);
339 _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info)
342 struct appdata *ad = NULL;
344 int playlist_id = -1;
346 mp_media_info_h item_handler = data;
348 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
349 mp_list_category_t category = MP_LAYOUT_TRACK_LIST;
353 MP_CHECK_LAYOUT_DATA(layout_data);
354 ad = layout_data->ad;
355 category = layout_data->category;
360 ad = evas_object_data_get(obj, "ad");
364 char *playlist_name = NULL;
366 ret = mp_media_info_group_get_main_info(item_handler, &playlist_name);
367 ret = mp_media_info_group_get_playlist_id(item_handler, &playlist_id);
369 mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, &item_count);
371 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
372 if (item_count > MP_PLAYLIST_MAX_ITEM_COUNT)
374 char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
375 char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
376 mp_widget_text_popup(ad, noti_str);
382 mp_retm_if(ret != 0, "Fail to get value");
386 if (category == MP_LAYOUT_TRACK_LIST)
388 char *fid = (char *)evas_object_data_get(obj, MP_MENU_FID);
389 result = mp_util_add_to_playlist_by_key(playlist_id, fid);
392 else if (category == MP_LAYOUT_GROUP_LIST)
394 mp_media_info_h group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER);
396 MP_CHECK(group_item_handler);
398 result = _mp_menu_func_by_group_handle(playlist_id, layout_data,
399 group_item_handler, MP_MENU_FUNC_ADD_TO_LIST);
404 mp_debug("sucess add to play list");
408 mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_ADDED"));
413 mp_debug("fail add to play list");
414 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
415 char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
416 char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
417 mp_util_create_notify(ad, noti_str);
420 mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
424 #ifdef MP_PLAYLIST_MAX_ITEM_COUNT
428 mp_media_list_h list = evas_object_data_get(obj, MP_MENU_POPUP_PLAY_LIST_HANDLER);
429 mp_media_info_group_list_destroy(list);
431 mp_popup_destroy(ad);
437 _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
441 mp_media_info_h handle = data;
444 struct appdata *ad = NULL;
448 Evas_Object *popup = obj;
449 mp_layout_data_t *layout_data = evas_object_data_get(popup, "layout_data");
450 MP_CHECK(layout_data);
451 MP_CHECK_LAYOUT_DATA(layout_data);
452 ad = layout_data->ad;
453 ad->popup_delete = NULL;
455 mp_evas_object_del(popup);
456 int response = (int)event_info;
458 if (response == MP_POPUP_YES)
462 if (layout_data->category == MP_LAYOUT_TRACK_LIST)
464 if (layout_data->track_type == MP_TRACK_BY_PLAYLIST)
467 ret = mp_media_info_get_playlist_member_id(handle, &member_id);
468 mp_media_info_playlist_remove_media(layout_data->playlist_handle, member_id);
470 else if (layout_data->track_type == MP_TRACK_BY_ADDED_TIME)
472 ret = mp_media_info_set_added_time(handle, 0);
474 else if (layout_data->track_type == MP_TRACK_BY_FAVORITE)
476 ret = mp_media_info_set_favorite(handle, false);
478 else if (layout_data->track_type == MP_TRACK_BY_PLAYED_TIME)
480 ret = mp_media_info_set_played_time(handle, 0);
482 else if (layout_data->track_type == MP_TRACK_BY_PLAYED_COUNT)
484 ret = mp_media_info_set_played_count(handle, 0);
488 fid = mp_util_get_fid_by_handle(layout_data, handle);
489 if (MP_FILE_DELETE_ERR_NONE != mp_util_delete_track(ad, fid, NULL, FALSE))
497 else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
499 result = _mp_menu_func_by_group_handle(0, layout_data, handle, MP_MENU_FUNC_DELETE);
501 else if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
504 ret = mp_media_info_group_get_playlist_id(handle, &plst_id);
505 mp_retm_if(ret != 0, "Fail to get value");
507 ret = mp_media_info_playlist_delete_from_db(plst_id);
508 mp_retm_if(ret != 0, "Fail to delete playlist");
513 Elm_Object_Item *it =
514 (Elm_Object_Item *)elm_genlist_decorated_item_get((const Evas_Object *)layout_data->genlist);
517 layout_data->item_count--;
519 /* update last view when change album track view or artist track view */
520 if (MP_TRACK_BY_ALBUM == layout_data->track_type
521 || MP_TRACK_BY_ARTIST == layout_data->track_type) {
522 layout_data->album_delete_flag = TRUE;
523 mp_view_manager_update_list_contents(layout_data->view_data, FALSE);
524 layout_data->album_delete_flag = FALSE;
527 //update view in case there is no content. otherwise juse call elm_object_item_del()
528 if(layout_data->item_count<1)
529 mp_view_layout_update(layout_data->layout);
532 if (MP_TRACK_BY_ARTIST == layout_data->track_type) {
533 if(!elm_genlist_item_parent_get(elm_genlist_item_next_get(it))
534 && !elm_genlist_item_parent_get(elm_genlist_item_prev_get(it)))
536 elm_object_item_del(elm_genlist_item_parent_get(it));
540 elm_genlist_item_update(elm_genlist_item_parent_get(it));
542 } else if (MP_TRACK_BY_ALBUM == layout_data->track_type) {
543 /* update group title */
544 elm_genlist_item_update(layout_data->album_group);
547 elm_object_item_del(it);
548 layout_data->is_item_del = true;
552 MP_CHECK(layout_data->view_data);
553 mp_util_create_notify(layout_data->ad, GET_SYS_STR("IDS_COM_POP_DELETED"));
556 mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"));
564 _mp_menu_set_isf_entry(mp_layout_data_t * layout_data)
567 char *init_str = NULL;
569 init_str = elm_entry_utf8_to_markup(layout_data->old_name);
574 elm_entry_entry_set(layout_data->isf_entry, init_str);
580 DEBUG_TRACE("+++++++ the init str for entry is empty!");
581 elm_entry_entry_set(layout_data->isf_entry, "");
587 mp_menu_share_list_select_cb(void *data, Evas_Object * obj, void *event_info)
589 mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
591 MP_CHECK(layout_data);
592 MP_CHECK_LAYOUT_DATA(layout_data);
594 const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info);
598 GString *path = NULL;
599 char *path_name = NULL;
602 if (g_strcmp0(label, BLUETOOTH_SYS) == 0 || g_strcmp0(label, NFC_SYS) == 0)
604 else if ( !g_strcmp0(label, EMAIL_SYS) ||!g_strcmp0(label, MESSAGE_SYS))
606 #ifdef MP_FEATURE_WIFI_SHARE
607 else if (g_strcmp0(label, WIFI_SYS) == 0)
612 ERROR_TRACE("not available");
616 mp_retm_if(layout_data->genlist == NULL, "genlist is NULL");
618 Elm_Object_Item *first_item = elm_genlist_first_item_get(layout_data->genlist);
619 MP_CHECK(first_item);
621 Elm_Object_Item *current_item = NULL;
622 Elm_Object_Item *next_item = NULL;
623 mp_genlist_item_data_t *gl_item = NULL;
626 if (layout_data->checked_count < 1)
628 ERROR_TRACE("There is no seleted Item");
632 MP_GENLIST_CHECK_FOREACH_SAFE(first_item, current_item, next_item, gl_item)
634 if(elm_genlist_item_select_mode_get(current_item) == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
637 if (gl_item->checked)
639 mp_media_info_h item = (gl_item->handle);
646 ret = mp_media_info_get_file_path(item, &path_name);
649 DEBUG_TRACE("Fail to get file path... ");
657 path = g_string_new(path_name);
661 g_string_append_printf(path, fmt, path_name);
666 ERROR_TRACE("path name is NULL");
674 ERROR_TRACE("item_data is NULL");
681 if (path && path->str)
683 DEBUG_TRACE("path is [%s]", path->str);
685 if (g_strcmp0(label, EMAIL_SYS) == 0)
686 mp_ug_email_attatch_file(path->str, layout_data->ad);
687 else if(g_strcmp0(label, MESSAGE_SYS) == 0)
688 mp_ug_message_attatch_file(path->str, layout_data->ad);
689 else if(g_strcmp0(label, BLUETOOTH_SYS) == 0)
690 mp_ug_bt_attatch_file(path->str, i, layout_data->ad);
691 #ifdef MP_FEATURE_WIFI_SHARE
692 else if(g_strcmp0(label, WIFI_SYS) == 0)
693 mp_ug_wifi_attatch_file(path->str, i, layout_data->ad);
695 g_string_free(path, TRUE);
699 ERROR_TRACE("path is NULL");
703 mp_popup_destroy(layout_data->ad);
707 mp_menu_share_select_cb(void *data, Evas_Object * obj, void *event_info)
709 char *path = NULL; //do not free
710 struct appdata *ad = NULL;
711 music_list_item *item = NULL;
713 const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info);
714 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
718 MP_CHECK_LAYOUT_DATA(layout_data);
719 mp_media_info_h handle = NULL;
721 ad = layout_data->ad;
722 path = mp_util_get_path_by_handle(layout_data, handle);
725 mp_debug("path =%s", path);
732 item = mp_play_list_get_current_item(ad->playing_list);
735 path = item->filename;
740 DEBUG_TRACE("%s selected", label);
742 if (g_strcmp0(label, BLUETOOTH_SYS) == 0)
744 mp_ug_bt_attatch_file(path, 1, ad);
746 else if (g_strcmp0(label, EMAIL_SYS) == 0)
748 mp_ug_email_attatch_file(path, ad);
750 else if (g_strcmp0(label, MESSAGE_SYS) == 0)
751 mp_ug_message_attatch_file(path, ad);
752 #ifdef MP_FEATURE_WIFI_SHARE
753 else if (g_strcmp0(label, WIFI_SYS) == 0)
754 mp_ug_wifi_attatch_file(path, 1, ad);
758 mp_popup_destroy(ad);
762 _mp_menu_set_caller_rington(char *path)
766 char *prev_ring_tone_path = NULL;
769 prev_ring_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
770 if (prev_ring_tone_path && mp_drm_file_right(prev_ring_tone_path))
772 mp_drm_request_setas_ringtone(prev_ring_tone_path, SETAS_REQUEST_UNREGISTER);
773 free(prev_ring_tone_path);
776 if (mp_drm_file_right(path))
778 if (!mp_drm_request_setas_ringtone(path, SETAS_REQUEST_CHECK_STATUS))
783 ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, path);
786 mp_drm_request_setas_ringtone(path, SETAS_REQUEST_REGISTER);
793 mp_menu_set_as_select_cb(void *data, Evas_Object * obj, void *event_info)
796 char *path = NULL; //do not free
797 struct appdata *ad = NULL;
798 music_list_item *item = NULL;
800 const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info);
801 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
805 MP_CHECK_LAYOUT_DATA(layout_data);
806 mp_media_info_h handle = NULL;
808 ad = layout_data->ad;
809 path = mp_util_get_path_by_handle(layout_data, handle);
816 item = mp_play_list_get_current_item(ad->playing_list);
819 path = item->filename;
824 DEBUG_TRACE("%s selected", label);
825 if (g_strcmp0(label, GET_STR(CALLER_RINGTONE)) == 0)
827 mp_ug_contact_user_sel(path, ad);
829 else if (g_strcmp0(label, GET_STR(CALL_RINGTONE)) == 0)
831 char *popup_txt = NULL;
833 DEBUG_TRACE("path =%s", path);
835 ret = _mp_menu_set_caller_rington(path);
838 popup_txt = GET_STR("IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE");
840 popup_txt = GET_STR("IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE");
842 mp_widget_text_popup(ad, popup_txt);
847 mp_popup_destroy(ad);
853 mp_menu_share_cb(void *data, Evas_Object * obj, void *event_info)
859 struct appdata *ad = NULL;
861 Evas_Object *share_popup = NULL;
862 Evas_Object *genlist = NULL;
864 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
866 char *file_name = NULL;
870 MP_CHECK_LAYOUT_DATA(layout_data);
871 mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
872 ad = layout_data->ad;
874 mp_media_info_h handle = NULL;
876 ad = layout_data->ad;
877 file_name = mp_util_get_path_by_handle(layout_data, handle);
879 if (mp_drm_check_foward_lock(file_name))
881 mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"));
885 share_popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SHARE, data, ad);
886 MP_CHECK(share_popup);
887 genlist = evas_object_data_get(share_popup, "genlist");
888 evas_object_data_set(genlist, "layout_data", layout_data);
894 mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
895 music_list_item *item = mp_play_list_get_current_item(ad->playing_list);
899 mp_debug("excuete by list view %s", item->filename);
901 if (mp_drm_check_foward_lock(item->filename))
903 mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"));
907 share_popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SHARE, data, ad);
908 MP_CHECK(share_popup);
909 genlist = evas_object_data_get(share_popup, "genlist");
917 mp_menu_set_cb(void *data, Evas_Object * obj, void *event_info)
923 struct appdata *ad = NULL;
925 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
929 MP_CHECK_LAYOUT_DATA(layout_data);
930 ad = layout_data->ad;
935 mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
940 popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SET_AS, data, ad);
942 popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME, data, ad);
946 Evas_Object *genlist = evas_object_data_get(popup, "genlist");
947 evas_object_data_set(genlist, "layout_data", layout_data);
954 #ifndef MP_SOUND_PLAYER
956 mp_menu_delete_cb(void *data, Evas_Object * obj, void *event_info)
960 struct appdata *ad = NULL;
961 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
964 MP_CHECK(layout_data);
965 MP_CHECK_LAYOUT_DATA(layout_data);
966 mp_media_info_h handle = NULL;
969 ad = layout_data->ad;
971 Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, handle, _mp_menu_excute_delete_cb, ad);
972 ad->popup_delete = popup;
973 evas_object_data_set(popup, "layout_data", layout_data);
975 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
977 elm_object_text_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q"));
979 mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_BODY_DELETE"), MP_POPUP_YES);
980 mp_popup_button_set(popup, MP_POPUP_BTN_2, GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_POPUP_NO);
982 evas_object_show(popup);
987 mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
993 mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
994 music_list_item *item = NULL;
998 struct appdata *ad = NULL;
1000 mp_media_info_h handle = NULL;
1002 Evas_Object *popup = NULL;
1006 MP_CHECK_LAYOUT_DATA(layout_data);
1007 ad = layout_data->ad;
1014 popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_ADD_TO_PLST, ad, ad);
1017 Evas_Object *genlist = evas_object_data_get(popup, "genlist");
1022 evas_object_data_set(genlist, "layout_data", layout_data);
1026 if (layout_data->category == MP_LAYOUT_TRACK_LIST)
1028 fid = g_strdup(mp_util_get_fid_by_handle(layout_data, handle));
1029 evas_object_data_set(genlist, MP_MENU_FID, (void *)fid); //set request fid
1033 evas_object_data_set(genlist, MP_MENU_GROUP_ITEM_HANDLER, handle); //set group item handler
1035 evas_object_data_set(genlist, "layout_data", layout_data);
1039 item = mp_play_list_get_current_item(ad->playing_list);
1040 MP_CHECK_EXCEP(item);
1041 fid = g_strdup(item->key_id);
1042 evas_object_data_set(genlist, MP_MENU_FID, (void *)fid); //set request fid
1043 evas_object_data_set(genlist, "ad", ad);
1046 int i = 0, count = -1, err = -1;
1048 mp_genlist_popup_item_append(popup, GET_STR("IDS_MUSIC_OPT_CREATE_PLAYLIST"), NULL,
1049 _mp_menu_add_playlist_create_select_cb, ad);
1051 err = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
1053 if ((err != 0) || (count < 0))
1055 ERROR_TRACE("Error in mp_media_info_group_list_count (%d)\n", err);
1061 mp_media_list_h playlists = NULL; //must be free
1063 ret = mp_media_info_group_list_create(&playlists, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count);
1064 mp_retm_if(ret != 0, "Fail to get playlist");
1065 evas_object_data_set(popup, MP_MENU_POPUP_PLAY_LIST_HANDLER, (void *)playlists); //set request handle id for support group item
1067 for (i = 0; i < count; i++)
1069 /* it should be released in a proper place */
1070 mp_media_info_h plst = NULL;
1072 plst = mp_media_info_group_list_nth_item(playlists, i);
1073 mp_retm_if(!plst, "Fail to get item");
1075 ret = mp_media_info_group_get_main_info(plst, &name);
1076 mp_retm_if(ret != 0, "Fail to get value");
1078 mp_genlist_popup_item_append(popup, name, NULL, _mp_menu_add_playlist_select_cb, (void *)plst);
1083 evas_object_show(popup);
1088 mp_evas_object_del(popup);