From ed5f9c6cc079ed431666ebc69a8e20707a02720b Mon Sep 17 00:00:00 2001 From: Byeongin Oh Date: Tue, 21 Aug 2012 17:30:10 +0900 Subject: [PATCH] initial tizen_2.0_beta Change-Id: Ie65d08e4e80ff4cfe4b8309f83995899e64e283a --- CMakeLists.txt | 76 +- LICENSE | 0 NOTICE | 1 + data/org.tizen.music-player.desktop.in | 5 +- debian/changelog | 9 - debian/compat | 1 - debian/control | 44 - debian/debhelper.log | 2 - debian/org.tizen.music-player-dbg.install.in | 7 - debian/org.tizen.music-player.install.in | 7 - debian/org.tizen.music-player.postinst | 79 - debian/rules | 134 - ...T02_control_top_bg.png => 00_sweep_list_bg.png} | Bin 2817 -> 2799 bytes .../music_player/00_winset_control_toolbar_bg.png | Bin 2798 -> 2879 bytes images/music_player/00_winset_tabbar_focus.png | Bin 156 -> 0 bytes .../music_player/00_winset_tabbar_focus_left.png | Bin 156 -> 0 bytes .../music_player/00_winset_tabbar_focus_right.png | Bin 154 -> 0 bytes images/music_player/00_winset_tabbar_press.png | Bin 2792 -> 0 bytes .../music_player/00_winset_tabbar_press_left.png | Bin 2794 -> 0 bytes .../music_player/00_winset_tabbar_press_right.png | Bin 2791 -> 0 bytes images/music_player/01_search_input_icon_bg.png | Bin 0 -> 978 bytes images/music_player/39_mini_controller_icon_ff.png | Bin 0 -> 905 bytes .../music_player/39_mini_controller_icon_pause.png | Bin 0 -> 147 bytes .../music_player/39_mini_controller_icon_play.png | Bin 0 -> 274 bytes .../music_player/39_mini_controller_icon_rew.png | Bin 0 -> 959 bytes .../music_player/Cover_flow/T02_cover_flow_bg.png | Bin 0 -> 37867 bytes .../T02_cover_flow_now_playing_album_01.png | Bin 0 -> 79017 bytes .../T02_cover_flow_now_playing_album_02.png | Bin 0 -> 82969 bytes .../T02_cover_flow_now_playing_album_03.png | Bin 0 -> 85134 bytes .../T02_cover_flow_now_playing_album_04.png | Bin 0 -> 81096 bytes .../T02_cover_flow_now_playing_album_05.png | Bin 0 -> 89169 bytes .../T02_cover_flow_now_playing_album_06.png | Bin 0 -> 86031 bytes .../T02_cover_flow_now_playing_album_07.png | Bin 0 -> 81871 bytes .../T02_cover_flow_now_playing_album_08.png | Bin 0 -> 86503 bytes .../T02_cover_flow_now_playing_album_09.png | Bin 0 -> 87846 bytes .../T02_cover_flow_now_playing_album_10.png | Bin 0 -> 79762 bytes .../T02_cover_flow_now_playing_album_11.png | Bin 0 -> 83388 bytes .../T02_cover_flow_now_playing_album_12.png | Bin 0 -> 82406 bytes .../T02_cover_flow_now_playing_arrow.png | Bin 0 -> 3006 bytes .../Cover_flow/T02_cover_flow_now_playing_bg.png | Bin 0 -> 5942 bytes ...uickPanel_mini_music_player_controller_next.png | Bin 0 -> 3120 bytes ...ckPanel_mini_music_player_controller_pause.png} | Bin 2872 -> 2936 bytes ...ickPanel_mini_music_player_controller_play.png} | Bin 2997 -> 3039 bytes ...ickPanel_mini_music_player_controller_prev.png} | Bin 2977 -> 3096 bytes .../Q02_QuickPanel_mini_music_player_gradient.png | Bin 0 -> 3565 bytes ...Quickpanel_mini_music_player_gradient_right.png | Bin 0 -> 25968 bytes ...Q02_Quickpanel_mini_music_player_repeat_all.png | Bin 0 -> 5514 bytes ...02_Quickpanel_mini_music_player_repeat_none.png | Bin 0 -> 4815 bytes ...02_Quickpanel_mini_music_player_repeat_once.png | Bin 0 -> 5133 bytes ...02_Quickpanel_mini_music_player_shuffle_off.png | Bin 0 -> 5325 bytes ...Q02_Quickpanel_mini_music_player_shuffle_on.png | Bin 0 -> 5453 bytes images/music_player/T02_Video_play.png | Bin 7095 -> 4396 bytes images/music_player/T02_control_top_arrow.png | Bin 3123 -> 0 bytes images/music_player/T02_nocomposers.png | Bin 11167 -> 8089 bytes images/music_player/T02_now_playing_bar.png | Bin 2819 -> 2805 bytes images/music_player/T02_now_playing_icon_pause.png | Bin 2834 -> 3810 bytes images/music_player/T02_now_playing_icon_play.png | Bin 2877 -> 4194 bytes images/music_player/T02_option_SA.png | Bin 0 -> 1967 bytes images/music_player/T02_option_SA_off.png | Bin 0 -> 1156 bytes images/music_player/T02_option_rep_1.png | Bin 4122 -> 1523 bytes images/music_player/T02_option_rep_A.png | Bin 3869 -> 1572 bytes images/music_player/T02_option_rep_all.png | Bin 4360 -> 1694 bytes images/music_player/T02_option_shuffle_off.png | Bin 4201 -> 1590 bytes images/music_player/T02_option_shuffle_on.png | Bin 3919 -> 1560 bytes images/music_player/T02_square_bg.png | Bin 0 -> 6671 bytes images/music_player/T02_square_cell_bg.png | Bin 0 -> 21901 bytes images/music_player/T02_square_cell_press.png | Bin 0 -> 3405 bytes images/music_player/T02_toolbar_press.png | Bin 2878 -> 0 bytes images/music_player/T02_youtube.png | Bin 0 -> 7667 bytes images/music_player/allshare_dmr_icon.png | Bin 0 -> 9230 bytes .../music_player/mini_app/T01_btn_apps_close.png | Bin 0 -> 3262 bytes images/music_player/music_play_square_bg.9.png | Bin 0 -> 1000 bytes .../{ => player}/12_music_player_bg_01.PNG | Bin .../player/12_music_player_control_bg.png | Bin 0 -> 411 bytes .../player/12_music_player_control_bg_h.png | Bin 0 -> 358 bytes .../{ => player}/T02_Play_btn__play.png | Bin .../{ => player}/T02_Play_btn__play_press.png | Bin .../{ => player}/T02_Play_btn_next.png | Bin .../{ => player}/T02_Play_btn_next_press.png | Bin .../{ => player}/T02_Play_btn_pause.png | Bin .../{ => player}/T02_Play_btn_pause_press.png | Bin .../{ => player}/T02_Play_btn_previou_press.png | Bin .../{ => player}/T02_Play_btn_previous.png | Bin .../player/T02_option_favorite_off.png | Bin 0 -> 3787 bytes .../music_player/player/T02_option_favorite_on.png | Bin 0 -> 3667 bytes .../{ => progress_bar}/T02_player_progress_bar.png | Bin .../{ => progress_bar}/T02_player_progress_bg.png | Bin .../T02_player_progress_point.png | Bin images/music_player/separator_h.png | Bin 151 -> 0 bytes include/mp-vconf-private-keys.h | 77 + layout/mp-3d-view.edc | 465 ++ layout/mp-button.edc | 19 +- layout/mp-custom-winset-style.edc | 24 +- layout/mp-defines.h | 35 +- layout/mp-edit-navi.edc | 49 + layout/mp-editfield.edc | 17 - layout/mp-gengrid-style.edc | 114 + layout/mp-genlist-edit.edc | 22 +- layout/mp-genlist-sweep.edc | 1423 ++++++ layout/mp-genlist-theme.edc | 4668 +++++++++++++++++++- layout/mp-library.edc | 296 +- layout/mp-lrc.edc | 179 + layout/mp-minicontroller.edc | 716 +++ layout/mp-naviframe.edc | 518 ++- layout/mp-no-contents.edc | 132 +- layout/mp-play-control.edc | 102 +- layout/mp-play-current-playing.edc | 21 +- layout/mp-play-info.edc | 788 +--- layout/mp-play-menu.edc | 165 +- layout/mp-play-mini-app.edc | 369 ++ layout/mp-play-progress.edc | 42 +- layout/mp-play-vew-landscape.edc | 213 + layout/mp-play-view.edc | 1203 ++++- layout/mp-progressbar.edc | 20 +- layout/mp-rich-info.edc | 1634 ++++++- layout/mp-selection-info.edc | 82 +- layout/mp-square-view.edc | 528 +++ layout/mp-toolbar.edc | 3460 +++++++-------- layout/mp_genlist_define.edc | 20 +- layout/mp_genlist_macro.edc | 614 +-- layout/music.edc | 26 +- org.tizen.music-player.xml | 63 + packaging/org.tizen.music-player.spec | 132 +- po/CMakeLists.txt | 26 +- po/ar.po | 414 ++ po/bg.po | 414 ++ po/ca.po | 414 ++ po/cs.po | 414 ++ po/da.po | 414 ++ po/de_DE.po | 84 + po/el_GR.po | 84 + po/en.po | 84 + po/en_US.po | 414 ++ po/es_ES.po | 86 +- po/fi.po | 414 ++ po/fr_FR.po | 94 +- po/he.po | 414 ++ po/hi.po | 414 ++ po/hr.po | 414 ++ po/hu.po | 414 ++ po/id.po | 414 ++ po/it_IT.po | 90 +- po/ja_JP.po | 120 +- po/ko_KR.po | 86 +- po/lt.po | 414 ++ po/lv.po | 414 ++ po/ms.po | 414 ++ po/nl_NL.po | 92 +- po/no.po | 414 ++ po/pl.po | 414 ++ po/pt_PT.po | 84 + po/ro.po | 414 ++ po/ru_RU.po | 96 +- po/sk.po | 414 ++ po/sl.po | 414 ++ po/sr.po | 414 ++ po/sv.po | 414 ++ po/th.po | 414 ++ po/tr_TR.po | 84 + po/uk.po | 414 ++ po/vi.po | 414 ++ po/zh_CN.po | 94 +- po/zh_HK.po | 88 +- po/zh_TW.po | 90 +- sound-player/CMakeLists.txt | 144 + sound-player/org.tizen.sound-player.desktop.in | 28 + sound-player/org.tizen.sound-player.png | Bin 0 -> 18297 bytes sound-player/org.tizen.sound-player.xml | 35 + sound-player/res/locale/CMakeLists.txt | 40 + sound-player/src/include/sp-view-manager.h | 42 + sound-player/src/sp-view-manager.c | 218 + src/common/include/mp-app.h | 16 +- src/common/include/mp-common.h | 17 +- src/common/include/mp-item.h | 32 +- src/common/include/mp-media-info.h | 162 + src/common/include/mp-menu.h | 27 +- src/common/include/mp-play.h | 6 +- src/common/include/mp-ta.h | 133 + src/common/include/mp-ug-launch.h | 33 + src/common/include/mp-util.h | 44 +- src/common/include/mp-view-manager.h | 13 +- src/common/include/mp-widget.h | 13 +- src/common/mp-app.c | 272 +- src/common/mp-common.c | 408 +- src/common/mp-item.c | 28 +- src/common/mp-media-info.c | 1724 ++++++++ src/common/mp-menu.c | 753 +++- src/common/mp-play.c | 180 +- src/common/mp-ta.c | 590 +++ src/common/mp-ug-launch.c | 451 ++ src/common/mp-util.c | 1284 +++--- src/common/mp-view-manager.c | 501 +-- src/common/mp-widget.c | 285 +- src/core/include/mp-file-tag-info.h | 12 +- src/core/include/mp-http-mgr.h | 13 +- src/core/include/mp-language-mgr.h | 48 + src/core/include/mp-play-list.h | 35 +- src/core/include/mp-player-control.h | 8 +- src/core/include/mp-player-drm.h | 58 +- src/core/include/mp-player-mgr.h | 54 +- src/core/include/mp-setting-ctrl.h | 48 +- src/core/include/mp-streaming-mgr.h | 10 +- src/core/mp-file-tag-info.c | 366 +- src/core/mp-http-mgr.c | 13 +- src/core/mp-language-mgr.c | 263 ++ src/core/mp-play-list.c | 367 +- src/core/mp-player-control.c | 291 +- src/core/mp-player-drm.c | 699 ++- src/core/mp-player-mgr.c | 726 +-- src/core/mp-setting-ctrl.c | 157 +- src/core/mp-streaming-mgr.c | 129 +- src/include/mp-define.h | 155 +- src/include/mp-player-debug.h | 39 +- src/include/mp-setting-keys.h | 36 - src/include/music.h | 236 +- src/mp-main.c | 723 ++- src/view/include/mp-edit-view.h | 8 +- src/view/include/mp-group-view.h | 28 +- src/view/include/mp-library.h | 37 +- src/view/include/mp-play-view.h | 22 +- src/view/include/mp-playlist-view.h | 6 +- src/view/include/mp-track-view.h | 4 +- src/view/mp-edit-view.c | 526 +-- src/view/mp-group-view.c | 476 +- src/view/mp-library.c | 469 +- src/view/mp-play-view.c | 1515 +++++-- src/view/mp-playlist-view.c | 483 +- src/view/mp-track-view.c | 53 +- src/widget/include/mp-minicontroller.h | 38 + src/widget/include/mp-popup.h | 39 +- src/widget/include/mp-search.h | 5 +- src/widget/include/mp-smart-event-box.h | 6 +- src/widget/include/mp-view-layout.h | 67 +- src/widget/mp-minicontroller.c | 446 ++ src/widget/mp-popup.c | 368 +- src/widget/mp-search.c | 14 +- src/widget/mp-smart-event-box.c | 5 +- src/widget/mp-view-layout.c | 1199 +++-- .../music_player/01_controlbar_icon_albums.png | Bin 2967 -> 0 bytes .../music_player/01_controlbar_icon_artist.png | Bin 402 -> 0 bytes .../music_player/01_controlbar_icon_composer.png | Bin 328 -> 0 bytes .../music_player/01_controlbar_icon_genre.png | Bin 323 -> 0 bytes .../01_controlbar_icon_music_albums.png | Bin 344 -> 0 bytes .../music_player/01_controlbar_icon_playlists.png | Bin 254 -> 0 bytes .../music_player/01_controlbar_icon_songs.png | Bin 3143 -> 0 bytes .../music_player/01_controlbar_icon_year.png | Bin 391 -> 0 bytes .../02_controlbar_icon_synchronise_start_sync.png | Bin 0 -> 1431 bytes target_images/music_player/34_rating_00.png | Bin 828 -> 0 bytes target_images/music_player/34_rating_01.png | Bin 999 -> 0 bytes target_images/music_player/34_rating_02.png | Bin 961 -> 0 bytes target_images/music_player/34_rating_03.png | Bin 912 -> 0 bytes target_images/music_player/34_rating_04.png | Bin 868 -> 0 bytes target_images/music_player/34_rating_05.png | Bin 600 -> 0 bytes .../music_player/3d_picture/T02_3d_view_bg.png | Bin 0 -> 9137 bytes .../3d_picture/T02_cover_flow_album_shadow_bg.png | Bin 0 -> 26951 bytes .../music_player/3d_picture/T02_cover_flow_bg.png | Bin 0 -> 37867 bytes .../T02_cover_flow_now_playing_album.png | Bin 0 -> 80122 bytes .../T02_cover_flow_now_playing_arrow.png | Bin 0 -> 3006 bytes .../3d_picture/T02_cover_flow_now_playing_bg.png | Bin 0 -> 5942 bytes .../music_player/3d_picture/back-button.png | Bin 0 -> 1228 bytes .../music_player/3d_picture/picture-frame.png | Bin 0 -> 806 bytes .../music_player/T02_controlbar_icon_add.png | Bin 3009 -> 3137 bytes .../T02_controlbar_icon_add_to_playlist.png | Bin 3461 -> 3417 bytes .../music_player/T02_controlbar_icon_all.png | Bin 0 -> 1728 bytes .../music_player/T02_controlbar_icon_artist.png | Bin 3827 -> 1549 bytes .../music_player/T02_controlbar_icon_cancel.png | Bin 3426 -> 3314 bytes .../music_player/T02_controlbar_icon_composer.png | Bin 0 -> 1670 bytes .../music_player/T02_controlbar_icon_delete.png | Bin 3095 -> 3250 bytes .../music_player/T02_controlbar_icon_edit.png | Bin 3305 -> 3531 bytes .../music_player/T02_controlbar_icon_folders.png | Bin 0 -> 1256 bytes .../music_player/T02_controlbar_icon_genres.png | Bin 0 -> 3345 bytes .../music_player/T02_controlbar_icon_move.png | Bin 0 -> 3437 bytes .../T02_controlbar_icon_music_albums.png | Bin 0 -> 1368 bytes .../T02_controlbar_icon_music_square.png | Bin 0 -> 3120 bytes .../T02_controlbar_icon_nearby_device.png | Bin 0 -> 1502 bytes .../music_player/T02_controlbar_icon_playlists.png | Bin 3145 -> 1652 bytes .../music_player/T02_controlbar_icon_search.png | Bin 3515 -> 3732 bytes .../music_player/T02_controlbar_icon_share.png | Bin 0 -> 1486 bytes .../music_player/T02_controlbar_icon_songs.png | Bin 3428 -> 3399 bytes .../music_player/T02_controlbar_icon_years.png | Bin 0 -> 3640 bytes target_images/music_player/T02_icon_allshare.png | Bin 0 -> 5260 bytes .../music_player/T02_square_cell_press.png | Bin 0 -> 3405 bytes .../music_player/T02_title_icon_nearby_device.png | Bin 0 -> 1345 bytes target_images/music_player/default_folder.png | Bin 0 -> 10101 bytes .../mini_app/T01_control_icon_apps.png | Bin 0 -> 4404 bytes .../music_player/music_play_square_cell.png | Bin 0 -> 1516 bytes .../music_play_square_cell_selected.png | Bin 0 -> 829 bytes .../storage_type/T02_external_storage_02.png | Bin 0 -> 3435 bytes .../storage_type/T02_memory_card_02.png | Bin 0 -> 3156 bytes .../music_player/storage_type/T02_phone_02.png | Bin 2973 -> 3094 bytes 290 files changed, 39142 insertions(+), 8970 deletions(-) mode change 100755 => 100644 LICENSE delete mode 100755 debian/changelog delete mode 100755 debian/compat delete mode 100755 debian/control delete mode 100644 debian/debhelper.log delete mode 100755 debian/org.tizen.music-player-dbg.install.in delete mode 100755 debian/org.tizen.music-player.install.in delete mode 100755 debian/org.tizen.music-player.postinst delete mode 100755 debian/rules rename images/music_player/{T02_control_top_bg.png => 00_sweep_list_bg.png} (95%) delete mode 100755 images/music_player/00_winset_tabbar_focus.png delete mode 100755 images/music_player/00_winset_tabbar_focus_left.png delete mode 100755 images/music_player/00_winset_tabbar_focus_right.png delete mode 100755 images/music_player/00_winset_tabbar_press.png delete mode 100755 images/music_player/00_winset_tabbar_press_left.png delete mode 100755 images/music_player/00_winset_tabbar_press_right.png create mode 100755 images/music_player/01_search_input_icon_bg.png create mode 100755 images/music_player/39_mini_controller_icon_ff.png create mode 100755 images/music_player/39_mini_controller_icon_pause.png create mode 100755 images/music_player/39_mini_controller_icon_play.png create mode 100755 images/music_player/39_mini_controller_icon_rew.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_bg.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_01.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_02.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_03.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_04.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_05.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_06.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_07.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_08.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_09.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_10.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_11.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_album_12.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_arrow.png create mode 100644 images/music_player/Cover_flow/T02_cover_flow_now_playing_bg.png create mode 100755 images/music_player/Q02_QuickPanel_mini_music_player_controller_next.png rename images/music_player/{00_list_bar_press_1x80.png => Q02_QuickPanel_mini_music_player_controller_pause.png} (91%) rename images/music_player/{00_Option_header_bt.png => Q02_QuickPanel_mini_music_player_controller_play.png} (88%) rename images/music_player/{00_Option_header_bt_press.png => Q02_QuickPanel_mini_music_player_controller_prev.png} (86%) create mode 100755 images/music_player/Q02_QuickPanel_mini_music_player_gradient.png create mode 100755 images/music_player/Q02_Quickpanel_mini_music_player_gradient_right.png create mode 100755 images/music_player/Q02_Quickpanel_mini_music_player_repeat_all.png create mode 100755 images/music_player/Q02_Quickpanel_mini_music_player_repeat_none.png create mode 100755 images/music_player/Q02_Quickpanel_mini_music_player_repeat_once.png create mode 100755 images/music_player/Q02_Quickpanel_mini_music_player_shuffle_off.png create mode 100755 images/music_player/Q02_Quickpanel_mini_music_player_shuffle_on.png delete mode 100755 images/music_player/T02_control_top_arrow.png create mode 100755 images/music_player/T02_option_SA.png create mode 100755 images/music_player/T02_option_SA_off.png create mode 100755 images/music_player/T02_square_bg.png create mode 100755 images/music_player/T02_square_cell_bg.png create mode 100755 images/music_player/T02_square_cell_press.png delete mode 100755 images/music_player/T02_toolbar_press.png create mode 100755 images/music_player/T02_youtube.png create mode 100755 images/music_player/allshare_dmr_icon.png create mode 100755 images/music_player/mini_app/T01_btn_apps_close.png create mode 100755 images/music_player/music_play_square_bg.9.png rename images/music_player/{ => player}/12_music_player_bg_01.PNG (100%) create mode 100755 images/music_player/player/12_music_player_control_bg.png create mode 100755 images/music_player/player/12_music_player_control_bg_h.png rename images/music_player/{ => player}/T02_Play_btn__play.png (100%) rename images/music_player/{ => player}/T02_Play_btn__play_press.png (100%) rename images/music_player/{ => player}/T02_Play_btn_next.png (100%) rename images/music_player/{ => player}/T02_Play_btn_next_press.png (100%) rename images/music_player/{ => player}/T02_Play_btn_pause.png (100%) rename images/music_player/{ => player}/T02_Play_btn_pause_press.png (100%) rename images/music_player/{ => player}/T02_Play_btn_previou_press.png (100%) rename images/music_player/{ => player}/T02_Play_btn_previous.png (100%) create mode 100755 images/music_player/player/T02_option_favorite_off.png create mode 100755 images/music_player/player/T02_option_favorite_on.png rename images/music_player/{ => progress_bar}/T02_player_progress_bar.png (100%) rename images/music_player/{ => progress_bar}/T02_player_progress_bg.png (100%) rename images/music_player/{ => progress_bar}/T02_player_progress_point.png (100%) delete mode 100644 images/music_player/separator_h.png create mode 100755 include/mp-vconf-private-keys.h create mode 100755 layout/mp-3d-view.edc create mode 100755 layout/mp-edit-navi.edc create mode 100755 layout/mp-gengrid-style.edc create mode 100755 layout/mp-genlist-sweep.edc create mode 100755 layout/mp-lrc.edc create mode 100755 layout/mp-minicontroller.edc create mode 100755 layout/mp-play-mini-app.edc create mode 100755 layout/mp-play-vew-landscape.edc create mode 100755 layout/mp-square-view.edc create mode 100755 org.tizen.music-player.xml create mode 100755 po/ar.po create mode 100755 po/bg.po create mode 100755 po/ca.po create mode 100755 po/cs.po create mode 100755 po/da.po create mode 100755 po/en_US.po create mode 100755 po/fi.po create mode 100755 po/he.po create mode 100755 po/hi.po create mode 100755 po/hr.po create mode 100755 po/hu.po create mode 100755 po/id.po create mode 100755 po/lt.po create mode 100755 po/lv.po create mode 100755 po/ms.po create mode 100755 po/no.po create mode 100755 po/pl.po create mode 100755 po/ro.po create mode 100755 po/sk.po create mode 100755 po/sl.po create mode 100755 po/sr.po create mode 100755 po/sv.po create mode 100755 po/th.po create mode 100755 po/uk.po create mode 100755 po/vi.po create mode 100755 sound-player/CMakeLists.txt create mode 100755 sound-player/org.tizen.sound-player.desktop.in create mode 100755 sound-player/org.tizen.sound-player.png create mode 100755 sound-player/org.tizen.sound-player.xml create mode 100755 sound-player/res/locale/CMakeLists.txt create mode 100755 sound-player/src/include/sp-view-manager.h create mode 100755 sound-player/src/sp-view-manager.c create mode 100755 src/common/include/mp-media-info.h create mode 100755 src/common/include/mp-ta.h create mode 100755 src/common/include/mp-ug-launch.h create mode 100755 src/common/mp-media-info.c create mode 100755 src/common/mp-ta.c create mode 100755 src/common/mp-ug-launch.c create mode 100755 src/core/include/mp-language-mgr.h create mode 100755 src/core/mp-language-mgr.c delete mode 100755 src/include/mp-setting-keys.h create mode 100755 src/widget/include/mp-minicontroller.h create mode 100755 src/widget/mp-minicontroller.c delete mode 100755 target_images/music_player/01_controlbar_icon_albums.png delete mode 100755 target_images/music_player/01_controlbar_icon_artist.png delete mode 100755 target_images/music_player/01_controlbar_icon_composer.png delete mode 100755 target_images/music_player/01_controlbar_icon_genre.png delete mode 100755 target_images/music_player/01_controlbar_icon_music_albums.png delete mode 100755 target_images/music_player/01_controlbar_icon_playlists.png delete mode 100644 target_images/music_player/01_controlbar_icon_songs.png delete mode 100755 target_images/music_player/01_controlbar_icon_year.png create mode 100644 target_images/music_player/02_controlbar_icon_synchronise_start_sync.png delete mode 100755 target_images/music_player/34_rating_00.png delete mode 100755 target_images/music_player/34_rating_01.png delete mode 100755 target_images/music_player/34_rating_02.png delete mode 100755 target_images/music_player/34_rating_03.png delete mode 100755 target_images/music_player/34_rating_04.png delete mode 100755 target_images/music_player/34_rating_05.png create mode 100755 target_images/music_player/3d_picture/T02_3d_view_bg.png create mode 100755 target_images/music_player/3d_picture/T02_cover_flow_album_shadow_bg.png create mode 100755 target_images/music_player/3d_picture/T02_cover_flow_bg.png create mode 100755 target_images/music_player/3d_picture/T02_cover_flow_now_playing_album.png create mode 100755 target_images/music_player/3d_picture/T02_cover_flow_now_playing_arrow.png create mode 100755 target_images/music_player/3d_picture/T02_cover_flow_now_playing_bg.png create mode 100755 target_images/music_player/3d_picture/back-button.png create mode 100755 target_images/music_player/3d_picture/picture-frame.png create mode 100755 target_images/music_player/T02_controlbar_icon_all.png create mode 100755 target_images/music_player/T02_controlbar_icon_composer.png create mode 100755 target_images/music_player/T02_controlbar_icon_folders.png create mode 100755 target_images/music_player/T02_controlbar_icon_genres.png create mode 100755 target_images/music_player/T02_controlbar_icon_move.png create mode 100755 target_images/music_player/T02_controlbar_icon_music_albums.png create mode 100755 target_images/music_player/T02_controlbar_icon_music_square.png create mode 100755 target_images/music_player/T02_controlbar_icon_nearby_device.png create mode 100755 target_images/music_player/T02_controlbar_icon_share.png create mode 100755 target_images/music_player/T02_controlbar_icon_years.png create mode 100755 target_images/music_player/T02_icon_allshare.png create mode 100755 target_images/music_player/T02_square_cell_press.png create mode 100755 target_images/music_player/T02_title_icon_nearby_device.png create mode 100755 target_images/music_player/default_folder.png create mode 100755 target_images/music_player/mini_app/T01_control_icon_apps.png create mode 100755 target_images/music_player/music_play_square_cell.png create mode 100755 target_images/music_player/music_play_square_cell_selected.png create mode 100755 target_images/music_player/storage_type/T02_external_storage_02.png create mode 100755 target_images/music_player/storage_type/T02_memory_card_02.png rename images/music_player/00_Option_header_bt_dim.png => target_images/music_player/storage_type/T02_phone_02.png (86%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 21e1f8c..1a7e111 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,13 +16,16 @@ SET(COMMON_SRCS src/core/mp-streaming-mgr.c src/common/mp-common.c - src/common/mp-item.c - src/common/mp-menu.c - src/common/mp-widget.c - src/common/mp-util.c + src/common/mp-item.c + src/common/mp-ta.c + src/common/mp-menu.c + src/common/mp-ug-launch.c + src/common/mp-widget.c + src/common/mp-util.c src/common/mp-play.c src/common/mp-app.c src/common/mp-view-manager.c + src/common/mp-media-info.c src/view/mp-library.c src/view/mp-track-view.c @@ -35,7 +38,10 @@ SET(COMMON_SRCS src/widget/mp-smart-event-box.c src/widget/mp-popup.c src/widget/mp-view-layout.c + src/widget/mp-minicontroller.c +# src/widget/mp-mini-player.c src/core/mp-http-mgr.c + src/core/mp-language-mgr.c ) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include @@ -45,25 +51,21 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include src/list/include src/view/include src/widget/include + src/oem/shazam/include ) SET(SRCS ${COMMON_SRCS} ${RICH_INFO_SRCS}) INCLUDE(FindPkgConfig) pkg_check_modules(pkgs REQUIRED - appcore-efl elementary ecore - utilX - mm-player - mm-sound - libmedia-service dlog - ui-gadget - mm-session - mm-fileinfo + drm-client + glib-2.0 + ui-gadget-1 syspopup-caller - pmapi + capi-system-power vconf libxml-2.0 eina @@ -71,31 +73,46 @@ pkg_check_modules(pkgs REQUIRED ecore-x ecore-file ecore-input + libcrypto edje - appsvc evas - devman_haptic - svi + capi-appfw-application + capi-appfw-app-manager + capi-media-sound-manager + capi-media-player + capi-media-metadata-extractor + capi-system-haptic + minicontrol-provider + capi-system-media-key + capi-content-media-content ) FOREACH(flag ${pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) +#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions") +#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMUSIC_DEBUG") SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMACHINE_$ENV{MACHINE}") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fpie") +SET(CMAKE_C_FLAGS_RELEASE "-O2 -Wall -g -fpie") +SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC") +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"") ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) -if("${CMAKE_SYSTEM_VERSION}" STREQUAL "arm") +MESSAGE("### CMAKE_SYSTEM_VERSION :: ${CMAKE_SYSTEM_VERSION} ###") +if("${CMAKE_SYSTEM_VERSION}" STREQUAL "arm" OR "${CMAKE_SYSTEM_VERSION}" STREQUAL "armv7l") ADD_DEFINITIONS("-D__ARM__") +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -lm) +else() +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -lm) endif() -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS}) - ADD_CUSTOM_TARGET(mp-custom-winset-style.edj COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/music_player ${CMAKE_SOURCE_DIR}/layout/mp-custom-winset-style.edc ${CMAKE_BINARY_DIR}/layout/mp-custom-winset-style.edj @@ -117,6 +134,13 @@ ADD_CUSTOM_TARGET(music.edj ) ADD_DEPENDENCIES(${PROJECT_NAME} music.edj) +ADD_CUSTOM_TARGET(mp-minicontroller.edj + COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/music_player + ${CMAKE_SOURCE_DIR}/layout/mp-minicontroller.edc ${CMAKE_BINARY_DIR}/layout/mp-minicontroller.edj + DEPENDS ${CMAKE_SOURCE_DIR}/layout/mp-minicontroller.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} mp-minicontroller.edj) + SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(BINDIR "${PREFIX}/bin") SET(RESDIR "${PREFIX}/res") @@ -137,16 +161,20 @@ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR}) INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-custom-winset-style.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/music.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-library.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-minicontroller.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-library.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/music.edj DESTINATION ${EDJDIR}) INSTALL(DIRECTORY DESTINATION ${DATADIR}) # install desktop file & icon -CONFIGURE_FILE(data/org.tizen.music-player.desktop.in org.tizen.music-player.desktop) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.music-player.desktop DESTINATION /opt/share/applications) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/org.tizen.music-player.png DESTINATION ${ICONDIR}) +#CONFIGURE_FILE(data/org.tizen.music-player.desktop.in org.tizen.music-player.desktop) +#INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.music-player.desktop DESTINATION /opt/share/applications) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/org.tizen.music-player.png DESTINATION ${CMAKE_DESKTOP_ICON_DIR}) INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/target_images/music_player DESTINATION ${RESDIR}/icons) +#install xml file +INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.music-player.xml DESTINATION /opt/share/packages) + # install menu icon INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/music-player.uri DESTINATION /opt/share/miregex) @@ -155,3 +183,5 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/music-player.uri DESTINATION /opt/share/m ADD_SUBDIRECTORY(po) #ADD_SUBDIRECTORY(data) +# Sound Player +ADD_SUBDIRECTORY(sound-player) diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 diff --git a/NOTICE b/NOTICE index 8b13789..62be933 100755 --- a/NOTICE +++ b/NOTICE @@ -1 +1,2 @@ +Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. diff --git a/data/org.tizen.music-player.desktop.in b/data/org.tizen.music-player.desktop.in index f87bc8e..7bc5d86 100755 --- a/data/org.tizen.music-player.desktop.in +++ b/data/org.tizen.music-player.desktop.in @@ -16,13 +16,12 @@ Name[fr_FR]=Musique Name[ko_KR]=음악 Type=Application Exec=${PREFIX}/bin/music-player -Icon=org.tizen.music-player.png +Icon=org.tizen..music-player.png Network=False Version=0.1.0 Comment=music X-Tizen-TaskManage=True X-Tizen-Multiple=False X-Tizen-Removable=False -MimeType=audio/x-flac; music-player.uri; audio/mpeg; audio/aac; audio/AMR; audio/AMR-WB; audio/ac3; audio/x-ms-wma; audio/ogg; audio/vorbis; audio/x-wav; audio/imelody; audio/iMelody; audio/rmf; audio/x-rmf; application/x-smaf; application/vnd.smaf; audio/x-xmf; audio/mobile-xmf; audio/mid; audio/vnd.ms-playready.media.pya; audio/imy; audio/m4a; audio/melody; audio/midi; audio/mmf; audio/mp3; audio/mp4; audio/MP4A-LATM; audio/mpeg3; audio/mpeg4; audio/mpg; audio/mpg3; audio/smaf; audio/sp-midi; audio/wav; audio/wave; audio/wma; audio/xmf; audio/amr; audio/amr-wb; audio/x-amr; audio/x-mid; audio/x-midi; audio/x-mp3; audio/-mpeg; audio/x-mpeg3; audio/x-mpegaudio; audio/x-mpg; audio/x-ms-asf; audio/x-wave; application/ogg; -X-Tizen-SVC=http://tizen.org/appsvc/operation/view|NULL|audio/*;http://tizen.org/appsvc/operation/view|http|audio/*;http://tizen.org/appsvc/operation/view|https|audio/* +MimeType=music-player.uri; Nodisplay=False diff --git a/debian/changelog b/debian/changelog deleted file mode 100755 index d73ab16..0000000 --- a/debian/changelog +++ /dev/null @@ -1,9 +0,0 @@ -music-player (0.1.3) unstable; urgency=low - - * Git init - * Git: pkgs/m/music-player - * Tag: music-player_0.1.3 - - -- Hyungmin Kim Thu, 22 Dec 2011 17:17:40 +0900 - - diff --git a/debian/compat b/debian/compat deleted file mode 100755 index 7ed6ff8..0000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/debian/control b/debian/control deleted file mode 100755 index 51f2d25..0000000 --- a/debian/control +++ /dev/null @@ -1,44 +0,0 @@ -Source: music-player -Section: base -Priority: extra -Maintainer: Hyungmin Kim , A-Ram Kim , He Jian , Xie RongHua , Tang Feng , Byeongin Oh -Uploaders: -Build-Depends: libappcore-efl-dev, - libelm-dev, - libecore-dev, - libslp-utilx-dev, - libmm-player-dev, - libmm-sound-dev, - libmedia-service-dev, - libslp-setting-dev, - dlog-dev, - libui-gadget-dev, - libmm-session-sdk-dev, - libmm-fileinfo-dev, - syspopup-caller-dev, - libslp-pm-dev, - libeina-dev, - execstack, - libappsvc-dev, - libevas-dev, - libslp-utilx-dev, - libdevman-haptic-dev, - libsvi-dev, -Standards-Version: 0.1.0 -Homepage: N/A - -Package: org.tizen.music-player -Section: base -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: music player application -Version: 0.1.0 - -Package: org.tizen.music-player-dbg -Section: debug -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: music player application(unstripped) -Version: 0.1.0 - - diff --git a/debian/debhelper.log b/debian/debhelper.log deleted file mode 100644 index 4d88c32..0000000 --- a/debian/debhelper.log +++ /dev/null @@ -1,2 +0,0 @@ -dh_installdirs -dh_installexamples diff --git a/debian/org.tizen.music-player-dbg.install.in b/debian/org.tizen.music-player-dbg.install.in deleted file mode 100755 index 2e079ba..0000000 --- a/debian/org.tizen.music-player-dbg.install.in +++ /dev/null @@ -1,7 +0,0 @@ -/opt/share/miregex/* -/opt/share/applications/* -@PREFIX@/bin/* -@PREFIX@/res/locale/* -@PREFIX@/res/icons/* -@PREFIX@/res/edje/* -@PREFIX@/data diff --git a/debian/org.tizen.music-player.install.in b/debian/org.tizen.music-player.install.in deleted file mode 100755 index 2e079ba..0000000 --- a/debian/org.tizen.music-player.install.in +++ /dev/null @@ -1,7 +0,0 @@ -/opt/share/miregex/* -/opt/share/applications/* -@PREFIX@/bin/* -@PREFIX@/res/locale/* -@PREFIX@/res/icons/* -@PREFIX@/res/edje/* -@PREFIX@/data diff --git a/debian/org.tizen.music-player.postinst b/debian/org.tizen.music-player.postinst deleted file mode 100755 index 2bece33..0000000 --- a/debian/org.tizen.music-player.postinst +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/sh - -if [ ${USER} = "root" ] -then - -# 5000 is inhouse user id 5 -# do not use relative path 6 /usr/bin/vconftool set -t int db/setting/music-player/menu 7 -g 6514 -chown -R 5000:5000 /opt/apps/org.tizen.music-player/data - -/usr/bin/vconftool set -t int db/setting/music-player/menu 7 -g 6514 - -/usr/bin/vconftool set -t bool db/setting/music-player/se_change 1 -g 6518 -/usr/bin/vconftool set -t bool db/setting/music-player/menu_change 1 -g 6518 -/usr/bin/vconftool set -t bool db/setting/music-player/surround_ch_state 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_val 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/effect_val 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_1 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_2 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_3 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_4 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_5 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_6 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_7 0 -g 6518 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_8 0 -g 6518 - -/usr/bin/vconftool set -t int memory/music/state 0 -i -g 6518 -/usr/bin/vconftool set -t int memory/music/process_state 0 -i -g 6518 -/usr/bin/vconftool set -t int memory/music/album_art 0 -i -g 6518 - -/usr/bin/vconftool set -t string memory/music/pos "00:00" -i -g 6518 -/usr/bin/vconftool set -t double memory/music/progress_pos 0.0 -i -g 6518 -/usr/bin/vconftool set -t bool memory/music/play_clicked 1 -i -g 6518 -/usr/bin/vconftool set -t bool memory/music/pause_clicked 1 -i -g 6518 -/usr/bin/vconftool set -t bool memory/music/prev_pressed 1 -i -g 6518 -/usr/bin/vconftool set -t bool memory/music/prev_released 1 -i -g 6518 -/usr/bin/vconftool set -t bool memory/music/next_pressed 1 -i -g 6518 -/usr/bin/vconftool set -t bool memory/music/next_released 1 -i -g 6518 - -/usr/bin/vconftool set -t bool db/music/menu/shuffle 1 -i -g 6518 -/usr/bin/vconftool set -t int db/music/menu/repeat 0 -i -g 6518 - - -else - -/usr/bin/vconftool set -t int db/setting/music-player/menu 7 - -/usr/bin/vconftool set -t bool db/setting/music-player/se_change 1 -/usr/bin/vconftool set -t bool db/setting/music-player/menu_change 1 -/usr/bin/vconftool set -t bool db/setting/music-player/surround_ch_state 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_val 0 -/usr/bin/vconftool set -t int db/setting/music-player/effect_val 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_1 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_2 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_3 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_4 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_5 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_6 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_7 0 -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_8 0 - -/usr/bin/vconftool set -t int memory/music/state 0 -/usr/bin/vconftool set -t int memory/music/process_state 0 -/usr/bin/vconftool set -t int memory/music/album_art 0 - -/usr/bin/vconftool set -t string memory/music/pos "00:00" -/usr/bin/vconftool set -t double memory/music/progress_pos 0.0 -/usr/bin/vconftool set -t bool memory/music/play_clicked 1 -/usr/bin/vconftool set -t bool memory/music/pause_clicked 1 -/usr/bin/vconftool set -t bool memory/music/prev_pressed 1 -/usr/bin/vconftool set -t bool memory/music/prev_released 1 -/usr/bin/vconftool set -t bool memory/music/next_pressed 1 -/usr/bin/vconftool set -t bool memory/music/next_released 1 - -/usr/bin/vconftool set -t bool db/music/menu/shuffle 1 -/usr/bin/vconftool set -t int db/music/menu/repeat 0 - -fi - - diff --git a/debian/rules b/debian/rules deleted file mode 100755 index 72eea56..0000000 --- a/debian/rules +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -CFLAGS += -Wall -g -CXXFLAGS += -Wall -g -LDFLAGS += - -PREFIX ?= /opt/apps/org.tizen.music-player -RESDIR ?= /opt/apps/org.tizen.music-player/res -DATADIR ?= /opt/apps/org.tizen.music-player/data - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 - CXXFLAGS += -O0 -else - CFLAGS += -O2 - CXXFLAGS += -O2 -endif - -CFLAGS += -fpie -LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed -pie - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" cmake . -DCMAKE_INSTALL_PREFIX=$(PREFIX) - - touch configure-stamp - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #docbook-to-man debian/wavplayer.sgml > wavplayer.1 - - for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ - cat $$f > $${f%.in}; \ - sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \ - sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \ - sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \ - done - - - touch $@ - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - -$(MAKE) clean - rm -rf CMakeCache.txt - rm -rf CMakeFiles - rm -rf cmake_install.cmake - rm -rf Makefile - rm -rf install_manifest.txt - - rm -rf *.so - rm -rf *.edj - rm -rf SettingData/*.edj - rm -rf layout/*.edj - rm -rf po/CMakeFiles po/Makefile po/cmake_install.cmake - rm -rf po/*.mo - rm -rf data/CMakeFiles data/Makefile data/cmake_install.cmake - rm -rf org.tizen.music-player.desktop - - for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ - rm -f $${f%.in}; \ - done - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/wavplayer. - $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install - execstack -c $(CURDIR)/debian/tmp/opt/apps/org.tizen.music-player/bin/music-player - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot -# dh_installchangelogs -# dh_installdocs - dh_installexamples - dh_install --sourcedir=debian/tmp -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link -# dh_strip - dh_strip --dbg-package=org.tizen.music-player-dbg - dh_compress - dh_fixperms -# dh_perl - dh_makeshlibs - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/images/music_player/T02_control_top_bg.png b/images/music_player/00_sweep_list_bg.png similarity index 95% rename from images/music_player/T02_control_top_bg.png rename to images/music_player/00_sweep_list_bg.png index 187516ebfeccecd361d090c64a460e58beff11ab..1606042003f007572b6588c1bf536ea3155a1fa2 100755 GIT binary patch delta 90 zcmZn^doQZk8Q|y6%O%Cdz`(%k>ERLtq#1#jor4WXp7c?lvQcq9m%fyzi(^Q|t)zg! nz@O)j95`^GVKPvf;s1YT2Hiu96;0{>CLq42tDnm{r-UW|0}&ar delta 108 zcmaDa+9;;j8Q|y6%O%Cdz`(%k>ERLtq*;KNgM$r7-ZPG4-KaR9%TdSE#WAGfR#Hh> z*}wA*EDFVdQ I&MBb@0O`*jKmY&$ diff --git a/images/music_player/00_winset_control_toolbar_bg.png b/images/music_player/00_winset_control_toolbar_bg.png index c9a05aaa1637fb4bb38b4048f66e0fcf09b866db..c46882d66683eab406cdd976b863c4f0023aebc8 100755 GIT binary patch delta 149 zcmV;G0BZm46~7jc7YcF+1^@s6lB2uku_2!de`-lYK~#9!l#oFVfFKM6C;k5u{Dx2P zLz)mhtp^bV3c*X$ZL`^FS=LRqhZ8%(g-ODIZxLXWi)t1n80eL0Cge*cMD`00000NkvXXu0mjf DAW=V{ delta 68 zcmdll_D*zyI9Ck^8v_Hwij}vfZB(4kr6=j>;uunKD=FZj`S0^b4jedO;MF6vMU{b> Y;m#SRdbzB`9YEC#p00i_>zopr0Coi#LjV8( diff --git a/images/music_player/00_winset_tabbar_focus.png b/images/music_player/00_winset_tabbar_focus.png deleted file mode 100755 index edcb394760344f26f680787078893871ef09beb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 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 diff --git a/images/music_player/00_winset_tabbar_press_right.png b/images/music_player/00_winset_tabbar_press_right.png deleted file mode 100755 index a1e1d7a88cb0ae3cea980459653838cfb14b1776..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2791 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 diff --git a/images/music_player/01_search_input_icon_bg.png b/images/music_player/01_search_input_icon_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..8c8a94006e2fc60c1f4c83a308b6ab00cf9d2843 GIT binary patch literal 978 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw3=&b&bYNg$%nR@dasB`QKTt%%B?-vj5D);8 z5Fp?X1!MrF1Z+T>B|Jb1rp%mk_1-gxI8cy7MiWTFxdI{*0v2A)o!tT^UO@40pS}S} z5a8edsu8dVnlf{VfR5vwRa=18frM2If#Tgux7>U7PQt)oq&3I>)67LNDsJrj_S02=b{-8TuFARx)XBLFnYF}Hcmsx=ZGSsXf+0xn5F zWkIo7K*xOh_U-7Udq9S!fg#Wt5&>BfKE;}m#X+@GBm#hp>a*8Cvc(gZtl4)qs&=RMvVM0|X2p|K#MKtUksxYq%L2L%ot^N&aD*myr- zMZo7vo3mQlzn}c_;`-;g5+(O-HU!O`FglFzsfc@f#WnwNfP~w_?B#sLmzTYrk~w4M%$Yy;lDL}~AaVyj9m%i6TWHC7LzU1!Db(*C-{~tt4*Dy%^uHN?1|4|dK zor>(Ys^iK9SJ<8>n3~8i#+7}w@in|F^49m7|66t?YpYjh z;rS!hLJMziJ8Bg$T`8NfF66JYXOX(^74z?kGy7JkdahPm#AanE9IBo3_Urr&TlG`7 ec^q#0%gXpacky?H+%#ZPVeoYIb6Mw<&;$Sztk0JK literal 0 HcmV?d00001 diff --git a/images/music_player/39_mini_controller_icon_ff.png b/images/music_player/39_mini_controller_icon_ff.png new file mode 100755 index 0000000000000000000000000000000000000000..b6cf3880afe04cb3c7c0333043ba32ba749738e8 GIT binary patch literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=3?wxlRx~p(FxCe6gt-161p^lXf7Z1<2gXNT zNswPK!?)f){C{8m?)u&t@GtNU?~DGM3(ji_`o9wBE0%lA^7iL(*78}=btTL()8|f7 z++4d?L+|=ZK95TagN{90?O+xA^!`^J9-~h`E^PU-JAC51qqikn9!)hpB<oPZpNiWXt{j*L;0>_pqxEF8dc3^8u5Dt*47)NJZS+$*#qR z4Fue#F5C3@Sm_L@6b)lAc>M2MU-0RD8EdlBUX@q3n^)iD7d2;No7yWFdWyeEPM2c| z!vR;%19SNWH@YRBEB9Y>MX4#k(fdIB?uVi4To`xls*aknYtn5q4Mx^xA(EQ zr10zWq*IfGINsgfEfcBAcF@sVPHuij#QgZU`%0T8v{*fPQ0+Ih|4KT?${U;F@7sHR eId5q2gSAKQh{U(K?#F;p%HZkh=d#Wzp$P!S;9@HP literal 0 HcmV?d00001 diff --git a/images/music_player/39_mini_controller_icon_pause.png b/images/music_player/39_mini_controller_icon_pause.png new file mode 100755 index 0000000000000000000000000000000000000000..ba5231655b6ef5a6560f37c6bf0cef85182ed74d GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_>3?$zOPHh5GLIFM@uKzK>uBRnTKv~w3AirP+ zCkq#=Zt=o7Kmlz}7srr_xVI+_1sNDP4j-81z~yG~>OL1oLR;g%392{LRfO-&^*eA+ cZf&j0`b literal 0 HcmV?d00001 diff --git a/images/music_player/39_mini_controller_icon_play.png b/images/music_player/39_mini_controller_icon_play.png new file mode 100755 index 0000000000000000000000000000000000000000..9d783504b30de085fd2c934978ac4dcc90ff1e35 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=3?wxlRx|@CvjCqE*Z=?j1DQaQBoMrx{V7nJ zU`dc)FayK;hW!Hf6&(5#3@^C7*Y}U_KGDRlc4}>V8-_Ckqx{4 zr*d*kbX&zDxZ~6G8~6A9tzCV!C+PkCSV4t(vmB&nIh6T6STjq&RXC$vZGy9~#cnm1 zmD3z_f64NVO^f=(=YszcWafOXkWSO-+fO5^Y!n=_&5B%^JSTO z&Z*3)x2!L5uY2nKfH~`Y{1Mi?T9(gKu1%YsXe4Xr=wu_#A@DnYSt&4yBzw9zhE&A8 zz2rK1vx7+6#d(~Z0;T2UlI0+<{ruB^pAvn7ad$> zYs&AOTA#Dybgv+LL*Pl>yO%aqx`sw(&)uh6s_piQ;SXck4fZ)zLOpM$s-?!PZ=F_Q z>a-y|XmW5IgM?_jp}-J%e1Kq>Wau&-TPYF=A`;|S)mpVg)N(RhbvBD)ckI1ad7|AhYtjP`njxgN@xNAn?Z!! literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_bg.png b/images/music_player/Cover_flow/T02_cover_flow_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..d76d20a094bb80177963b350bf8f3a8a7f136f0c GIT binary patch literal 37867 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�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 literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_01.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_01.png new file mode 100644 index 0000000000000000000000000000000000000000..33008ce392c0b51d644fefbea8a81ef8b28501fc GIT binary patch literal 79017 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�WF6K17%sG!5k?Bk`wbP+0 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

^6QJ6_$s%#Hf3HnYvw3%UK&K6UaVLjLZ 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

v&?P*NHPH)#Q~u4( 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 P00000NkvXXu0mjf({%?N literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_02.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_02.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2c96ddda87924a10630d613e7b5bb3e99c7223 GIT binary patch literal 82969 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

|&fe+!6o)K!ja_n}-d+DkjRs3gF<8_z#W$30G2r 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 N002ovPDHLkV1o3{JM#bl literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_04.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_04.png new file mode 100644 index 0000000000000000000000000000000000000000..536f8ef87f8419115d2961324bc8e592e9b844a5 GIT binary patch literal 81096 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 TADixH00000NkvXXu0mjfhNq91 literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_05.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_05.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a8e945a248032be53befac1406c2111fab5b54 GIT binary patch literal 89169 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

9dc>m1gUtt${ufWY{L&Zd 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⁢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 aEbG% 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 z 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 literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_09.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_09.png new file mode 100644 index 0000000000000000000000000000000000000000..8512716bdcab315d23060f3b48be6d476711defa GIT binary patch literal 87846 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 P00000NkvXXu0mjfqh|wI literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_11.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f288e84b35bed009e6a3560288af521b860b39 GIT binary patch literal 83388 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 z zT>EAVmg@QH_~r)hOj?P=YCS-Okwu1PbRZ3@4hT`BXX*Z6`m;&c<>2EXYe+SP(vChT z*b>t71ML6_GX)1j<674SUd`@oPj)0ThssQv-|stMSHBC3qLYEloSAeo!13cOywYqR zA9(P7|NeXLzmM(Mv5zi)G*03eb=s}ok)ucFd);1>ZB@_n0*7HuDvsVSH2lglEU}M% z;9*?BJ$6qkrRjDCGmnLW4>7=c0&tt0?mDR&n`Nf3IS(<^DSw`PS-YLCHTg2AwI5j6 zd*}|Z0DH})ZVz`mh|{)4f!OvFm!XjLU_rDOWC()q9;VjvGGmh$R3>ZSEO9Qm6sS8Tgp0b-y z5&{-j)4n>D)0H+?XHF-Chuo~oLc>Zm0584t;$pqtcwlR1tFgJg6?@QY9#}pwckJk~ zE@NCi#@H_a)+ez#z^^J`89vJ$?e$i(1AR2ZPxLSew-XxA4#W7_EaN3P*v!v^4p`Bg zZj}cpqJAb$_lEtCH@&la?ZDzadX=kn0gw-;Y?$O~G}0d=+WJCN7`W;7+j5W{Sr@nc zc6FaE+j`hE5;WySxpt@Ocsh*^LEgwppdC`NZ%p7!yfy{U$oXfc*FdYgsrz#b($o_| zGnq)b9aM#>rfz068=MsY!>ZqW5*LFiHr_{k)y zJJq%B)Sp!VE%$MpW$~cn^x4zs@kbv&#m@OtY;DC!8q->}+Btgc=v=4M5dwUpUJnXd zRxxY%xrK&zbx8Qi8?T^dtLdW(>asJVnPtfaX1|S-@Tp-KJ<7fU4?3WeQCWgRbFHc; zTZHKzNTXBJH*_i|FaF)>no!K{Ypu#Lu%f-$|9mee>HrjWn#xf(Bk4Npt!*OLve}6L zNDlTinM2JEkm}o{V>Wkmx()wCV^-Y>)wL10i3Zhif$CeQ=upH4Q&SGNN#y2md9rnz+Jgi{?-yKf|s4|wj`=Q?w<^ABt@mUVOOR>W9UZGL`!ZsovA zr%`KEcncb3bC_0V__>9KcOzgKcGYQhP`%aYu(N4~oil_N-?0A_4J=A4elfZ}?8^nHR&)(Od`{o{Dt}To`&=kR(M=Li0*zMT_9j_L$>2nI*UQlkg zN@~7Q2(7sh13TeGNzbPESD$_q>nVjC47C|k={E!#<118!%1ZHPS8b^i#%U(*8%LQi z>V{D&%(~+!0lcAW$o|e#?4nBsw>1#;64ZVc>gaBiDx;{|;s)j0=1^s4aM_jHvt0w9 z6w84DCQ-P|6=n@!TGvAQxzzT>g08s~8W79JLvZq{rFR(eP0^-YF&6Zuhv>ejvVeS%+0qv>;=l^fWh=;fBR(% z;a81eq4V#b_j%!kYSx~sX^e?ZVO+%g zjeN2&a39-)$z(agI&#~XXvwcSMHQ|LmU!6t2=3pER3vjsh*BSfkHP&>ui z@ncG>gV1P@N(?}dq_Q1PmZb8ckn+SvDi(Umey>(McKjh|u}FeXB|k>)lAQHRbcmf z&~{-EA)NvxJ+T?9X*g~tQQf5h?W7T6EdD(_@x+t0#f7DF zVKnYuzi}hN2v_G97UpK>=2~2MceE^TiU@y4hvT!}?zS;s#>T*LquQvopk!AGNwX+} z^vE!YzR6DZmhR6^jnK~7RptsO)*f%X@1~+{LI-Wjv!MBDa;U!d`SzXi3GJfKncC-? zjG;XXDFB6`ta?(rdwl=g6Q>mw!OsA`?`ps@p273)okxpHOI75f4r3F|BuUrD=?LsZgXhO_c*ZpS zR!@@cj_E!;=l{P7P@ zU%PhY;~TebCWlrI)|L+}&mLGhu(`gm9yaO?0!E++S{kT`b4Aa7pCEO&0+yyUDDVOp z)GBq}n2(*Pd>(TIe7G15(#P0(=z7RHu=xos|B(W-DvqKAQ+N?D8W^0=&tcj#^6xZ> zf6=}53lJ2>u-ZYX0NR1ArWcGZVIfu*Q|Uk{UQ=B}4dofbSrb1N&U9rd@+(gj51lf} zrm!+DrG!xi;)n=V6%S$n80*>^js+X)hq6tu z2=6#3l0@0B5`cUNcB2SXScEZznFKk`+A3Ip2M4uU#WRCWGxm=I7!jbQzDGjM*e-1# zMaCbaKXxX4X7F;inJ8_idGIEfKPwpndATWfBiq-`QYLQ@67k+8$4rpH5q8?CuH)**W=>pTA5`ojiqc1$EdVs%Kd? z7{}vrh~r1u&&%RE=+y7IeXihCmQ0Ey4!9M7bPDgL4l{#$+SS1VM8S!=7M$>Ss2br> zH8_-ze0!LT*nylplZM=>(CYQ%FlV;RAQ2}ZXCPRGjk?&GpJqt+zf$wic&NyMg_~;` z#}T0$PwiJ3fYci`GsZq;XfYhe;T2Q0TS?psL zK2oV8#q9B%^&~7j^f)W?7)Y?!3MxL}w#*89@n+2z7a_^ms9;_R`;Jo%sx0(Hss}x# za@`=uxsHJ}cWN=6YgxX^hnG3#R289@%bo(dy%zbpj71n)Zh^tJ<+u)}=~4%RqSIvnhS;`+#w!0wlf?&6Q${rzDnpr z!DLVK}vhN$bwUOyIfn9$zyY?6VLOw1A%vyEU%mU7bTY7Y|1b)|%kJ_B>}5^Y03 z`!|I0?M_U&4zlB{OzU11HuEryx4E5Z)WKZ00hZ=kpx0@L1(`9B+wDhScNnrTjxn$> zv&F;g6b*c-yLxVk3};5FJ#R*2c@0r)k!KloQhvHxBm+;ohXIp>@OCcHQDJ>^gMx*dg%P*Pb}qY`2em zeC6X2`~Fb9UTYs*U7cw*npKf8^gMrp_&&`*`g=8#-c^A0%4@H{GpFvURBFKt`Vd-L$a?F7H2xw47tD_hKT?s4sP-`61Rg>VC8=a; z42U=*OL-V7jK0W>sIrrUs0dLbMyoi8jbkF%Wu1kMT?SsWjR17m&pxt!u#5!(15@1W zA!tHBq_rz-bu8U`--L?L@s|NRwRzw4*C(wFgn6ri>sF_rU}Go>=d@sJ0MoUqNw06h zM|1vgmc=ey0S3=J^-QbRnYk~F$Bn^g5Mk^$78Vve-AJnZ-dhyr zK`z{*InaX>`8_Ofc{(Klke^p2Lp(XiKRgu+Ua5?j@mqY66C^`D!BN>xj2STTu#tlqR$(fCO-6); zn7%S!7vQoo+XW$uHR_BF?F`2ZWPAZqn1zHP1Fa^z-3=r5{s<KGt67-)rQ0vhZ& z+>+vZfgHGjk*tH`N?0m0ib22=0T8s1CyqhLLmNVjEd!|m7rq&Qs{L2;@4n6qA~l{% zJe%QAy_v#Y4V96pD=C_8=0Lh<=oaW52~28BY|j-5YV> z;-P0s0mCB!UIFq!pvrh$6K$NyFh5|g&6!_Y$pe`Jc9b)N>e@iwLPoZl_I0Zm?X#lV zrzJH$4DyW(>FvbzPr|zPs}CejI0&a$8}_p$|WC}3A-e!0*-Bi>0gqcnFFbhCDo1GC)MJVB-hId%qfkAwSW z6Wy#NExf{{OKOqLL04Q*`i;)~AcrX;(fgd*P71o!j4pFgSyRqDJVr07K_LEdhQ;g2 z!YF0{k%q0z-N-r9O9E=zUv9Ql) z$gsXU6rtVj)>!CV2@C0b-xC=^o^j+1tHWL^VvK8MvCH0%GVlw;XBaRb<8Jufi2qAL z%HAX5b_kV)5I}>0$#y10Ua)E&7Md6b9DW}~cI>>TJXX42yJS|>bZU_O@u|_XY@Y}S zz@+T&?K*&diu%4BC{5C~rT`VC(_fbs2tOsp@~7BVp0<%xCTAYF_ndd)=*c5*zWLf) zYn$uC)#cUN%*;%CX>qB&y}LbPkxa$_%X2b@xFEvAKLpFVD*)>!KYJOrnoUrv*Xqb; z?24o`OyV)YWF^Vcd)Y~pu@enz_9AQygqTcJ9w1yx0xUpEKHmc-cFUY*ZJ2hED~k7K zzOlAzPECdvjjhf&Rih?D?JgziQmRsK$kFn!vNZ@(C=Zc1__NTDOAmoBRqZhg#W-m2 zP*HlBFbfByKE#=7948`F>$TYTz@9tPZh|%g7#_NDb~a$FC}iNn+00-Z3jnwk4;b4) z!n?&mf@ktLK#W)j$(hSIOhwJ!ki9l$;IbRWpu)gw%pM;wrbcMQe)mDI5r`6=)gA_G zqZka5RA^UWCT$c%u_zJhnT`!Wc(p{)GJB7PCp%Nf5SbW{mGN3BN5ALH7{sbZ(4E2z z?^Gvtf#H+(h6G@b!83<5G@to{pwL1Fg2}C9ro9Kv3;6b8s7l&G0A`nF;FFI(wRq{H z4-c=cuf4Ilw1ODPYAh`;wJ%@2ygL{SQbw}Uhzp&TWn~U<{XtmP=LT5xI>Vr4Y(7x0 zH_Kbd@JY>0b~=q1gMv|(oMTt~qskYkz7*+b&j`s6BmjA@x@9_hRi{ai1NQML8-DWF z5Ed2-k5f3VJqcY&dNC;bo5+8&`vW8yGS60W2E~Q-ko_A(i0v=c%WAg1Y^qB z&TcdIwH;*w{5h!c8t;`UGzXu+ z5IXG&Ht81Z10-NCpcv7-05}vno;~VLHJZ%k#5InXQq27RsAWOa# z>q73>BID(P06IWa1i-x#|0LEoeNXp>hoLGb2l zo2ig)V`$44UAPy6!C=>1m06W@o;>p&*ANl?|1qo;E7sckoU9?MNPE{gXP-Ttz1RBU z`@i`9@7KGMs>uMK6KV#O6X*Zi&1;*t?%ulfX#cUn>e|}sxijb1?%cUEf%DKBN!`-W7vJAi zmi3+imSI=&pZ@A=(duxOcDhNQOECmu1!SQZXEgs0X^}kxt9mD7RpBK}-=G_Z>=s|7 z1`y31KF??F0aw$TMH`~IXe|?I%Tikhz+fqG)xnQcZ8f!N?^Hj#-Cz`kfx!u!K#7$A zOF=yeOQkH=i3x!*bs|VvzZ#yn!)}M10I(YNy6R-dUBUg)L@}PgG!tVP7olbbU(@+a zv8;49gUg(7o{Q;hf}7(!9ZzJ)0+D5N5r#3%^GrklI7QB77)2Dt`>4}Zp*7u=)gX$y zVGt)WNV-h1v>;KX8@B4;Qk22xi^kFzP^Jr@HUI!#>qcY+z;}{yGAoR!*6fUG2Bi(8 z>TibEpO`Fn>!%8wfwN)RQ0|V7r;81p$JDG!x4CS;zRlPvJB%MC6td&83u(PwbGsoq|fK}+REZ6N$ z+qvf3XIbHU#H`A45UmWu!7!u&8$==Nrg=V|r8816ak=2~0ye+8$B5Fe-0hXxh)PNP zF1-3Xf#jI1VOh#^WRj z##;bp@O839SZBBz1#sgq?y>IbD&SW?=nPgEixV0H`_fUwxDi0e2>zbLm`jHMTpIv{ z6Ika*Sn3)@xipHFgCVrK85#Xb*y%S!mw_hYz1$USJ(VO`*w5#$R&HBN&E!d207ACg z4Tx6`(gi(%?(bd89+7p%)uvt=BG}b>TYaq z3{IXnF+3O@01<{|i1Ta-%VI6>+`oTY1D1ndcKuEZYMR%(#B9t%hrCY&}3^dV`E^F9^c{E*8eV+`=aVA zY&&a{F33>Fo*?VxWLuA5`Fqjq+-cNfvThA@8Cex?q^~I8jXrz+H2KJfKXz*WaQE!i z_T8(S8=I`(9}L#k*L%_RC@zW|j*gODg`NP5S{A;i8rI3plXP`umBrntCnMU2 zW0_C0=@ek?XqGmFYvr(tt=18u5XZhn??@S3^vJc=V_%$&npKRP@hdpq~|{@z`YPRCFQPNq0_rQaI}E(pZmga5i@3lNqs zM^qDxuq^DZGV<*odA9dgfAie=*<^MN7A}dq_h-(WS$*}@S9j;>JPU##2A1X88+>1u zyYlmQQha|;01L}OCAi~!u1<%Aakx@Y-h;mvGp2()hnso1g2P zMlOYQx}fBf4PX2s0|HsVuw<)E!38POYEvbSNH4v?U@Z|i)+9=F8HlV1^(d~a;8h$j zYDRzuN}<7CytTC+fKs3U4ebqB8Zs7YZxei-PA6nJ4q)9!Y~pADrC4JC`6&BY73#=<}!y$!2qhn9lA{Bx&;KThjoXlco=kM0Br&k zA{{_nIPhf$*cX78geT6@(E+)&w=)~;Zq3(Ep6RY^o=yfQPsa=$FHxvI`&=4VKKva$ zc%B4U7=o6hcFdV+XqI})j*V>&+jfcN(IwxJu`wQES3w%|y9bkL_l%C*T z6Y|@h*Y#!9p3|f_;7&8pr>CBHlCG_tJa_xnwf_FWUKS^D2N?5Ub8~aByT3aos+%f^ z3~0H)#mVAn(f@u+Le#Ln`uG2h4*LVz>vy9}~c6g8|XfoKW45H9Gz(;9@mf1Z^n;MX72D510gTn>s2Wb0NrGWJJS|+LQvS z@6qKQ17KmvrIKfmT0=#s19+}T)0-pm#45Gbo)dssd8A>NFVM3=-P-*AW z^J*g@N2`I3(~Afq%+I<(vEhFO*a7IHZsP3AZEUYs4Q-AOj~&i2+%o$sujKAW&^ zN6*;6@IRq7JOr#5SY~09D;zVZ?G-FVpVFXvL>agMlxpRauha;qv?Gf}^b%a0m^90> zq&M=ijd6)KK=XSC7l2#?AkFJm-Yj_Gc?y-!$yM@^4?VkixPNaG0P6bb)2H#X>8!4< z;=t7eHLSeIt?=&l6uPCMI6{2?_W@W4R`>@E2Lswox-^R84h>iz&xb5ep*|sxOeT}3 zVBHRInbi6f9Eeo6FVS)vhAr_kxw;f_#Bx_bqD!oxgivq8!!PuN^GJ&uo@x0S+QLbE zZA{dfdPKA6l{(QA*_BT2Bb^ zw{@3XzkVeh?eEP*k*7)0$)m6%)i6zDZbCOHD>j852ZQNS%JSUcuq+2yYpK4zLSnQs zVm+3MR5v-66j)gym+w}t*%G5q1o;l$DtP3r3o|CamTWpj(x03aC+p&79 zYpZ>1(SfpXPGkvI;Q}KmYq7f0w_6szCkzYO6~5ThCr^h^Rt#encHyX-Ptyq*k;%vB zdG?T+YQie7y4A00Zg9__&;%e_Q?y8pzevYVRe>K}sEYX(Q~w(2@uzknzTGA7w*l4v zB0FOaPdsb@#@#(3oyRgJL9`}dtIDvSz@@7I5ZJ29w!(;RydSKLWc%Jda_idb#n$cH z@ay?33ZgXX4Mhh-v5Zm%3n&5xtRo7w@cGm!!MPnDQ4SCl+zhRCwIRw(>>$$sSDu8b ze56vEEO)*08PI~LBnQd_hxIFDlvlV@LOGo4D` z3eiFq+w!r5TqKXwZ->!CvY_ON$DUx_Zhv!Uveg055^Jlg(dLF8wmO+krf_Tocp=9d zQbFG-hV{VXWvrdy-u69-D{PR2L&15R^E`uBvyx`nGw}JXmLsvGG!s_}wc5*?tll2_ z(gr4^HAaSd!&PNt7LIhR63ua}(tGyBm!pGg>IJSJV}r&}<+FlvPH|09#*mtWSSm1E zff8`I(oS-E#+E>{EW~7;q<=?IX zNLig*@Sk)_$hp&}$+vyr+fPPuw7$Eyi+dVDzdz`%uWbzAwjq4henu8+xxC|9Sr3$9 znQ{;r7WwFhJ`(o(Jy;@150$0Kbb2Tv`A8Swo55JRw77S`hj#-Q?k_0 z?iXXSmP9H`YoQBH%o}4Ny#Sj!v!gXTDsA;^)qP=2t1Fs9RRb^p4r)(|nFwB)0ZnBAQh1w|>n$zfO(tqFSO`WgpN?8$D7PFvGoMh|*P#++VH7bagW1Z; zY5)}pZVt@tgpvq2%>YQ+bP;d8b22djVMoW(ISv92;H+CWB%@- z@P&sq5NUfo-gqzH(M~+!ozkXO*3h~vMfL_n*&XOSC!`N&<%gdBXzv@(|Ks`bWPA@8 zHx0wEGaL@OMsUYrt0`&bWLe>zy&K~D17}!YcNco1AJ^qeqLy}AUy`fW zE0(fBd<+DfB+^L}01Q{0Kj=wOdref=fz=G9kc z2fMomd7e)O{Q>QC0IY;SRweQbrF6}75UGIeSc0V35HctWNai9O=7ek+ZzC*|a^GCb ztn9_!)?Uir5o&Xmgqe$r3=G*G&dx)ByXbU#Y<+DVyCmipEQxxgRh zmZH_|sLoFl)pO#s@rNIIga$NRhx0F)r85Dgdc1jJbI|R;D#ut5!Ae5fL;Zpl(4udZ zRlR3`Wy?X_9Yp;qNTMz$JkIiLj<7V%=TE>Zie0Ci$~)q`MN4XyVm@g3P2_Sx!YJ|L zkE==c$qEOP;)DCUyX4xNSHz9$SLf65_%M#*Y}g+%bfe?@isc`yo~T?%z3W$&atc6{ zNN(7YWm-N+A=ubE`G5qgF>e7V>0Zj~8QeEuwUSX)iU3+zD#CFB*jn%;=_qXr?|b#N z*ABn&^{?;Ty>n{{e~7H=4qBh0Bz!<>p*=0ho()DN7gz{LOUWiH2HYqyMcv3L7L|me z`FJjyYb^=w{aS{tO3{3sTI161hb3NUSa|5dd3yHT`E|-ze?Fh%XB7_m{qAru>}Cb} zhgn++DRXuVsaGDhm4ftr&9KlciZ8L#O@Lvt9vreEhTO|YZqD-gqi{-xZpfG@d5Wtz z$pwHR76cmC0Yx_AlVvH%+Q$_&&=VdI5$}0PjaT`6$tKIYk8k-Gsl6J}fZi|&)mSZ| zjG){^&zN@xjy}|_uoT2-7;MYo%F+<1a%eoB0JC~oTzm8CbUvMpI!T=Mdp!z_EdWL< zQKLfrsE`F9jnsM)SE=j*^(YhF+zM0<1eC1Ff|F%nZ5Q}GZ@biP6EIw%@O!QlObuRI z--7=kaKUZl=H`hAf%)p|uOI&NKLKdnzB45?Ly6w1uSveO6S~R8Yub^hO2Qf=@=cz? z12)n0Mm0dNEz8|oyF|;*pATxX1w^IC@)ipB!exfk0ZmC#DE0uG$V2BZ58yai+dJ43 zMaF|9PLj2?HMBS26t*Z}K|~f0S`Avj>1{Er_r~cCZ_2Dl<0R;I5Qk>-*-XabG`wf4 zL`m^x$f%hRENi8i^z@?owZ5mx&k1eXHwkHGU}-CfFop)&XsWL7N>T-b5OxwJsH@1~LeB(@p?uui+a+&Yy&~@1zA>9k zr{g$|bM!gk0cyNX+QDUtKJ)SfwNcEb1hgRK>s2m8a&PBqTb_osRJ(9?7^!)FS`!=f z^@;!hsG^So$H4_y9s+pL8`o}(5v0Q~qUX<@>s32;(hQ0vgwTdtM1zg7Ke#78ZPSWc zK+W}EHFgQ5@k}{7mMgPKCmPv}iz)3Bj<2iKoQ~KTEMJZ%+EY@QM*Y`jr|`JperVb2 z#*AFP^jI8(!TNYQxrUDn>=yl4T{xa%DAO@+@u-}4=J~STmM80h0@i=|gU_oyXKdks zzq`XF@8BefjAwIrQ~Gd@tfHw+EkT;iTSPpGH1WuON{4PbJC%N63axz~h9R7|V} zR?cHC1TO?5r-Y*>`k9*hS+GK;$<(B1sA6-HE6>=_zVONm>IL?CJ(hHmKAd1(IDyivNTH4(kHJCNla$xBA1WF)2I74u z8}o45%fq(&)nSXYlzXnmMHWoiY17vHU2?HNfvd_+cbpgs?U9)w$Q{s@LaWi8B!RM8 zhxFlrr1G%TaEFxKym6h}x^aCz#rzk_(tfY6vg;71I9e5SjfH-K23Yx}pDUDGp&d#; zRj%Q6@UK9%9v%|s*Qr4TIJ5wMMg`xtZm7UF08@28bARF59L(c!x3qLhOkvAL`&io9 zfd|hVmpHM$wiks)_5eT?iL#Iuu!8T@aOdRklsxku6ijT-{1|JBhW|Uu}`%r+Mn+DcXtqYjB=+ z;XUQpOO9SFIET9!=m(!k+e969gnreSG5o#)ENf>_f_ra32mL{mi#$QQ43sBR0mt$r zn_SL#G1M!enT#X#RAN~ZseOBbbWU{AB6<_joUkohV2n7sgl@}>Y#j(DYW0AqX=-ht zC%wn33;kNDQ@4}KSgCT<6_XI$v?N)-3{fRu7piHrI%GW8Q8E~L47b_3b4T8|{$@TJ z9ZsN9O0fYMp$K;Z0Y@}enH@j_6wE|ssjlZa`NQK z1k2PjXU?ENDPSdrFQJ6%)L2(2AuyH%V|FtKoYch;<+%%FuEu4*F9A#0Pl@7;0GVQS zxDs}f4t@E>7x!Ly<>mc?=Yko>gf*&CN*gC}O{XHV(s!h@FWlBR?2FkgAlCpDu|PQY z?GB>Oh#DZ~u&z?vw^Ua&!K-|1QGdKvADH=jvjTOj4mo}5d>?+%#lAv3QldCYR#sNJ z3q<#}(O+zd&Efr768_51{XguJ-}Om0nvCT%orde18!>Lr!$DVsaX6gG^c*aiA*Kgt zdd^LZuW)ptwlHf88jRHXKx({+dS##+UF_>ni{zH7Ij4FQQR`5wm#h9g-Iixcnla9_ z1WP#Em544(u%7*$`Yk-wO1G;bV(|BX9ty1RR^!71U{^Qf{@(TkZkcwI4wi`w@ukqr zN|^VgW>aXbQAet-So;9z>;!i50< zS_ZdW+27xvn)?@c9pct(Hp>t*pQ_$r*Je00HL0m;3|q`;E|Mq-H`X_z z?cJU1g%`fHyS};>KlbQjtL2ekfFD_@D4Lp&uvstE$w%Q{Ipw4=$d)7r;jE9;J1vD@ zezjO7?2r{9>v~rSRHB}PWpy^;zD}~(mEQnsuYE^2JD>QN81Q)M(&N$B|MkDGkH_OX zuvk%8oD$Tq;2?~Q1eWgu*1J*`J`lh{I|Bd~4w|5=!&QdaZMopR5UP~D!@a|3 z7=9=%@^cKgwawXY_tD$}-EVB63rsY1DV;WaALw|f8oPqHi;Lyn=H_OMj`-Ep)fm`RZ!($8 z(Y$&0?%mP9{L8-_B6wZDe*Iu$VnUZ_}oB*_#>M!J~1g45LYHf=;I#+G@BPM#Ft_8OZ(J2qCGdQua5p8X6rQi71 zZ)~4Dak8^ATuDly*|1T?w7Ao(XEmarz7FcNR`0}a6SQT!Ps;)rCAGD(F1*v~F>3vN zqOwlZrd-PQxrI{H58L{*oI1csCsV7ffm;KXRFju3J#;yMH+Tg;HjD>CoituwTknMc zR6&5(6>Uw>KErCWGTb+KJurs#^b=20YZ&bf)e_wS8egP&hSKjt8P87WQNZSOmU^0t za6IYF_?7xm;!nw0>13c#SeN?80E>w;n-#wVp-xUwy@ zuqxxbQpAOue;5Ju@WT%e0kGiPPI&L$z0qI)^+h8nP*PJ_Zz^JD{H}x8#hKTz5LS7vmbf(Ob`alp0GNn zo+^ph4yA2u|635F^%Gk<0MuYxEr7Df)76MFmd#SF0Z2~ZpL9g>##XE(ty6h?SA5&p zF!is{z>V$hSQcJ5e-2nxcMTT57#1i#81!)wiZQ_<&C*#>XIE`~g@n9AeT5GUu$2D_ z{$+U^&2NTDF2?ZWf?j5h zl>jQ!zxu1cy78qied&$u?d>@L!purM@UvoQ2v+zNz)EEl^T*{OMd|yoxh%h^@<#~=-VF4{|2*lTV4D+dx8PN_1 z(y1;Y24nkPC5_Gy_NhsSvs;#e(d7SS3SrVdtrR)qCCj(dO386MXWc;#~0x|iOLU;>XQ@*mXLot=B~-quzI zrC=JxF&ytKK#|>e#gztSzAghR^)p(@v1EgiuXFnJ=`OIK2!ZM=U-`-#U;gr!Z~o&y z{^K4B>3F+_tG4;I(N28z>eU>|#>20E^{aQj<2$}%^)sLO%!QAA>|+-IxHc|by0i{# zYXqP-16CHm^8^;O+>2#e2C=B)2~##x0BDN6hnwr0(aqa8XD`3@^3LYwsUAi$Dy?CzV1@FKjjArMC=Ds2Vo&8vW=Vaf7#?@$ku)SK%rDo+%%jLt0=-N&KL zHXJFvzCh1>=;v&?Q4o~0y@pZ`T0MF41UY;9q0YVS>w_#yr&xw3NgSb)rQ}Bj z+jh7;!!7P5$PJ>jI9L?oQmuZ>C7rwRJD zgGvZ*?koBM$D}bUr_He?YKGB@l`&5rqYdLIZE2aN4fCpQ!$Hl8OIaIZh5(kZh;))z zJ!C3!J+cbE9|ODEx^r93rn4EmSved-Dpfj1b10V7I?ts{QgDI9h~2`LfY`5xyL%7RoU$kQ||Yj?QOZYvz-cF%mJ)W|6(dPT^J9$u|v3E1XiY${ z0;V$tkb3DCe&H9s{@ioV-7u!W-1w>r^L^%gpF7{X*X7P_YuCZ^WvF5O);BgbI+$#U{;owmiS~N4i-}rRX?p;AnIm~!8LmcInq^n6zPg*? z^i~@&!z<0u?#`8;ztn6>I(COP&ge26;aLWxY_|FM{f43~MM2bctXjWdo9{}HX8&W$ zj;0_@3kLD+6Yc^Qst)$FO3CNTm||j7Ntf9wxzsG|x7b=c+utg)&RZmfk(m;*9b^ zqi$*NdjS2^sfLBm11HzeDQdrUpRe9~=suPx|0fA|nxHGQsGT2(i42I;!u;*(J;7ZW zSQ5M4#B8^liO}%B$#jaTp<)i~3TQcw+oEdtgb~^eXf=`*yfRQ2yMj1>{(J|(q7NnD zm?x+?#OD*2FN1OeGz!w zw;zi=m_m?{XP$UEn9XNF+>0Yv{Ss&J);VAlCj*ldNvVMY+2&Mln>Q&N7EPZ=wK>$= z18GFVG2b+v@*0C`-p@6tk{Z~N61sTR5G@Pk=0|5cPQTH>6dV( z(SayWaMyt8gN^Tp@--@#5iQE_tmh$+7CzNz>#u=Nn_J#@+2Ej210o@hqCPTKl-CTdVPO?f7Sv}#RBlk7LY@%>YNyQAmmEgL zT~KiV!!jY?@lG7JBwAu@T=vxFNEgoTB6prckUD#F!P4(#l(OAQ(bhhsABz&~Pw4e} zB#Jsc_#6VLurYcF08DL+;Et|u7H!)dbiZHLrt|*jB~%*Ld?x$-9(os0XPM8k8E&2q z;1ABJ6J{rx>-i9p-9h5Lh{50abo0Gr@+C67fr|$^|Q9 zy5w*m2Dl@L`qkh5?cZJjcJ(HjJ`I&D7F_rOrgW5!wXh`gf$;Z#|M#E&o4@&+e}eM? zb+r|@e{tDG0WneG|H5UEy>2f!JRD7-EIbfpuM-9$Iyw(``T!BM3Q?IXy&l0@>x~Bh z!muu#v+n?v0W`rqM&mFy;$>9{Hx9>d|7mHUvPw_;kY^$ea`_4o1U>H2fMnV=8fQZ32}yI1du(;rWbOa zb)`F$ODrnu7B|k21!bUg`uzM*J>r#bq$ZfR2L`%gyWdABTlO!>!pEr+veeK|>>Grm zMGa%XlF_8BqA?UR*-`9NYyg{`^Bf1BO1NO|dKLpKmnFKZ0S}E`IyWiQF@_enBRCig zqL*HJ>F(!0|M@GgzyA987@)I=DHTWPSj!%#_89l>-JAWvAN;|;!RvYj(*ZEj#FU21 zK#N;(zNDw7MC>FThIakyH?QqwdCu)8&T+%joL2V4=jO!arjdzJhcy{yW$h4U$tNnt z#YJ6v;?8|t5#QB|+&$J3fJD7tka#+n8w6MbAy4C4lujx{Q>YgXi!A?MLDX>=M~P~5 zE{dGNA;zF0jDY<{7%YO!>zGXIEitPHUJ|}?1j@yu>SpQr&PX*{=+T1s)!OQdBK zlgc2C&V?2SY=TCUcENK!U?IS5_=1e~_9f4Xj1dZ}KxpPR>VQsL4*JQSj_9s#xU#Ym zZffvR2XmS9OGS zbtz*b{D4*k)dWt2?#qS$zyU*`Y(v73;>xGSl&VNR?o4?bT`hgW0CwJR3KN^!U%hV`qjr=74`7a?m^tpp)0U_u&ZP_j^9uiA8~w0Pk> zuB`1=ik2yY(gP_;NNsOYw(cRywgh*fK^i}Km3t+tTr4C9I21I7a#1M8$@OGjUXaOb zD%05vS%U~7lcB6rSET6$Bwl<>SrXb33E2i3QNQ`kZ{GUnfBxrfs0y=|l8-Mb3zwCK z*)c`-Y=MWX_LzV6XMc9<+O=!1LkT;;v9fHssLYcu7wrPg`*=0^A6yazp(ZMS&8kw5MJ|3ISzT@3G2ksk!+c0 z!N=V}6i(he_pAyovlA_BO| zU&m_mW4%8B>;L+{e^_AS^9!%MKss?pO-I0!GtE<6+;N&vq77=oT8B(OU%AQE0z714 ziRdSHw(kZu#d9Bk{6QD4y}`FpkjD54=?VVaVO#E44Gq+RYRPfAoiJw7fZ(1Nhl2&> zc#G+ygE9KG)F6hyjH%aI$GGfONeteEnzDSt;|t2G1Oxc~?(hEY`fIPfHeLWu#S(B@ zB$_V*p`$JffecH-uYK)nui)zjR=9!BX925L2Kt~CC~Je>WS~;LH{EWBDLEp`)E;2P zJZLpRThtkpJ%Kr|>rXB#lLe`b&MJ2V+q5O$qa~UEQq!_T-Df4+Zs*;{^^&;`dKWZZ zAz#S4AFE`8lo)9u1co(~2vAbZC}AWFBJ3l?)+kqSXG_Y!Wz%zxRUW?UfQ30&_Is4( zbb}n#ohTt&D|j9WDayXOHm|unLQZe9Imm^e*3^-fakb{PZRQ5j$Rll=+T&XqaPdd6 z7ePxKWo0!}4~YS@4(y5prfEvj$y{P-gMEKgkA9Zw_ICa(ZSD%%6B>60(K>@n1psUI z(n~MxVYBlB=ERRt9u`Z=y*5BP4sbP$reFQ)SFb}^czZY;_SJ$eW!^SEtR>gWMlh@E z<2Yeip60W3mf91Y7e@0l!n+in_GAq&+}zd?vq zCH_EG52$EM87Dp0x+Lw^2GKTY+S9fWs0(<({lNf-e?&nTU};EoD{7!@N~V{SDI`07 zO!9pT?+>K;c{ZB`8|xcno~2Ann3B%Zd6uw54<`&3HUh8S2~&e9g!{eFCR{}bkk(r78TQ#jQJiPl zJW~K;QwfNUEI?MpoR~5-8rfuOyAqFyk;NN~#89;!V1tv}Hhqa|7-~ z%}_5ZOZe+HBaI;%rMPatcVcC1zdmg_QA)N3Bq|D%FrUvUrUg^A;G!eTfD~2POu+(1 z^_I)P2ga~0yF$TTp(Ac20CfaLMS&?GkBF4(T@*Dz8b5W~>bP2D6eSBhRdpSz-6bVj zV9d{H7d6+rtet~(_^az;zJRoaK~T@ha17rj57sG~eu(!3watA!)zi$XOj z10z>QnBE-}>R|JB1ZzV}?LU>~kmtoKue`E-_wL=912W5WD!#zFP%J19+gR0ccMcnu z@pzm9V7-X|1T3p(W1DRryuVB6&QG+yGqj$mA#&J6o~IeML6yQfHz@|*&Yosbv=Y?a zCS{>DEY*NuSdw(7Ckx*--rfr1Ml_e30A9bM^uKo)n{ZP?o#!u)OxnVngg1_iIFISH zBH8;RBz5ABjKUbozkp$YWPq+pJxl;gLbcGCNb^Od;M?9Qe0KrsH~+Il57yqno_zJn zt6B#TJi?*}{?Zr@pcVMTabL6sK7#s9#EU?yUc8Z|`j$W8Su6!D(pr9!mg&-Rfkq~3 zWA9zjUA+paMRt|RWJGsc782vn(xSZnogV*%lbSPs-H)h&2WCMrBGitKO->F8Na;3D*XlbKyr!|*i zyl5XoU-NglzAjhfcPtlzESM18(nMW>H7!d*{970>S~wO%TqkhhEb>AnDu$r~twn7( ziva2^`LN#2l8{=L``OcH$>ocevG*uMWEQy7HJPMqaut`mpf<8WmgiuZm`-ZRSALW+ zC4M$mTgoUQ^)ze!?-w3Ty50a)Hr z78WffA@^2?`zZ;9^A#`Q&6_v(0cb~95~6$ESQ&_!lgRAfX-Y!%vsO&iZXsH#^!5aN zDU=U{R+=HHN|x8ixrUT@!zf6Vj6l4|)}|a}3)*j%?GD~o z`slk}5+cjO@2_6FD#~{W{*%POFR2I$S_HJw_TnX*E#N%M7+AY_-u_#;pwWjog_~^viDt=2 zyfV^l`EglYYfs>UOJjG_A3Ii>Uugy8@ZSi|(ugHC7}J1{-Z?V^aB;~9mXv~oEFSgs zzF=529Sa#22KcR$HFbv0=5rjQkf>1rtQsv}CHVQgsI4Sy3hm9WZKYxJ_lx=yo1j>q z;4EutqsQ_SEbSvP+JS~PIV zj$%^?VD@`=;D%{a(j~G=U)79DNG=fK)X+ruPbi%!InuEZaH$;cT+}BhP)B=mDL^gn z${Q4PI_uh2O|zUH1C5NA%F~@=P0;S zH3Wro)S?Z!qefEjjNWAC_fT@JDG_4)CnelmPR(QDG#Ika-JmF#4WAG*S&sSDf@b%9Di&6lm!qu=G?W*>@ z`rGw;qDn!kO{B`RX7b{_24JeK3ne?!gDPtIR=jCb@ca8*t;%(@*O;4^Mk-obcxpS6 zqONO6rx{z4s`;9b1+Psu<7yiD@HO3x8m2{6h#$u{1|!#`;a*CNXC}T{GBvDL&yqY& zI>S*wMISiBLUx6syBblC8!4Nfc z(f#Ct_iWh)0Q2rAk9_?Wv}^`esku>N%(F(`Qe_J^g)`HpqXHQub=E0-_waf(@x{s> zEue)@h#6Re!2pM!QqrEwz6i*U0v=xrYhzc-7?w{oYPVlqU6rN;LBU-yCgoqyb_Qy! z3)I!^)cIrt(J%-wqC%ZxYDtu6OmqB3+Inj?hs+DpLwZWnsJjVms`=Wd&OP=b{rQEo z66VV5ZTaWS6BM?=)(hTqpRBx%tcFIoBfQGVKHgZda`*-D*qS>qwzOI3vnGDEXt0KH5RR!k^LJ z;QpO%E0W8yaJSw3Tvj|xYs4()T+|XlyaLS#?WG<>KEvs2^#|B|F zsKQD5Y-m@$HNg!Jl=ZX+LcASD;gocu&cI606D=vGuHn_OZg89B#dSHHrZZ!5R@*~Z zic>u>vUq%=lKwgg1( z=kHy_&KCW=h-n=KY;*~WbDu|)QxSy$B0Uq(%v&;+2A$BrN?{&vgU!$Z08WPcfw;h_ zVf47!s)wyQa|he{2&EYrpTUXW!=zCMY1>#9KZXeJUoSj{C71X{`~#XTqr*v(V0vf= z`yP$BuE>gs)}dw)E9zJ-%TgI)y7X3lR29gIyIl;>zod1_T0&La44$0mWws}6SdL;d zJ%p?}scXF2G9;JrxHAczsXJExva1ax^*Mv~ajYX=cvGfJmP9KS<(fsA!}46)av87O zqOG})t)*3|*VB;LX*;TCB4&)csxcoeHrR5<768*C3&VYb*1O-D^PB%!{jqOc ze*=yMUQQ*2KQI!i;0-cL9kE#rY9gj2T%;qBx1dQKNB@#Xm{N}d#G`aB?|Z2SPLxN9 zIf|KiFOX`}aw4XV^F?-mC!5gSadvw~x#EphLoG;IX5|7HvJLDZ#2;}Q^ATWmKN^>R zyG4(2+~;UK=hII=eFjdJRs7!MVjYuZmF$voX<`O~D9}0;HJco?Y-DydAf@%?8mJ1h z%U3o?I|Z*hq(V5xP9p10bm6CZ`i;_}J^533T9e;LSj*D#{9fD*6{OAlE9tf8RKKU? zKn?`*be>`Pha0RCb&5hy&>`ACq87uW0P8rrg7iIQSpVmL{6FZ%`UX819Z*;qEn}r{ z(iEZ)GZK^BZB#bH=NcZW<-kLZ0Vv1WQCy~nEqY(&5zn`zY*jPygzg)3N3|Le9^;Y~ z{4nbk5+q6(36n^jeo`eJ#!TC^mE^7`H`6*gx+gBKiUk~Lc+%p?c+BdC&tj2&CCKu& zn`Pj&YmX zNa8_HwTctX!0@D=r#P8hvny89jj$!km`f?C=4aCSJVNPfOXfDh^=i@j4k0DgUo1ei>PaHtz*&q*a@TyN|E=DVcCD^c2^}~R;c4L|z)266VeVHtGO6{&`&NFpHDT650poL?rx`Pg4Q-J+kD6&&?21)5T z605S%{faJkj%DGcOP5YR^w2{|iv>X}VM0f-s}eTN zEf&Tpj@_L>;rO@;(QHt*Zgc5qV$`u+SX)AQA$4m7b#7A=+l4pxuwmYj<>8CF(;VKQ zCI(EAQYj^hUVag)+eiyL+goUU=y728EUML`g+40H!S5YOBx>bY6cXH6|)y+=G6Kdy&gzm-lH@xfMsRCLZ^k9rKtw?!Z|IMFsY+J>iwr-VM(~TzDXyu z36z90H7^c1CZ-n7rqdY}I=tN(HSV13$KAzyt1QTUTNi*Hm90Qy{07y1sXV$GZ;)i= zL(|i7l(btZsETfjOwB3OJ2NKH0Y0)`ze9tFVe+HO!P3rnYD=G58Q8+Klm~7!8cp!) zr#|(m%WG?EtOYpU3V^lENUOau()qXG19L%3-TxA*1&+iR8 zB<_R}Rz&E>(q*B>9Gy)r8$jiP7?xA>`5Y4vW*`3WhoAV~@BQABEh~g*0kGq+s8&WL zG*+~N*AXj`{HdS%sYf?9HvR)nfrftv_+Bx_YJRf?08PzpnYQ7*(BLJEeS`}uQr8DlSRiv-a)>*X zxkY3bqCWeuv_^Q$t&!;9F~C}CgkSFZphcXPA0xb@j+FtsDzX&r$8)s9C>Nm+#ziXV z5ogJ9L5jZTfQ2QY{eF9QTVz?LY$0(J$8gf5a7c|zLT1ec`PS_UZHz`P|NVpdNBti) zqbz`QGB0%$OJj_so$)EbsW{s9pjlS8pOF4aHv~!^ple&DK4K1yk%9I1P5sJxvY7t8 z+}YXL9}b7>KlDRC^mMn|r5-pD(mqkPt(kdQJ3+Yuw__6_9%$7b<8z<;T=(L|i%-Kz zatZ#{6fRSSLl{j@pxqgCfy!QIb_TI{43yxm!V4qT=?;fN1R*!682E0aa{#3oHxswH z1}3S~Z@D(>Dj?GSDqaN*Nn~WwjJDTFu|n93(DBxKqHQB)nR~t}H>ts$-dwwg`i^7i zxf1nkEH`#p5HB{FGb<`&A zg6G8(Br9?SNC8F*7>k2CA#p-ZJ~LjdKnM6?&s!XmmCe;KU@V%asX*s8PPn8h*S)?y z>FZh6?ttas{{H?LF8j|u`|P)U_OqY8bW9LBj$qjM089y2mQ_c9R(bUg|L_k#8OQO{ z090_Qn8!ffn{Sph4ZsD(AX3&=# z&i&M2RFNvd9nG`)B&)W}(|oEn%W#~R-S`b?MAlBMv#6VNF_#F>30MGd=Z2{qc-eeX z3sjcu7}1*Cym|9>6h*xs`>`MUo@btUrnkVTb{wE;6%>6SItsYlyMFC!U)zLI@Z)g% z3vgoW!|i7#Kb%_ILdyn&b@tm*Q0-(1HO5)+BkKsz;K`_$#u+e(jBC{jH}2Jp z1voo$xLXRPVqS0!P`pqPKiKQZO_^vxOd5gOUNi$ECFA1KGB^WbDmYL!`u-}zsjNyi zVIS9Xq??|{#`P`JaLNzK;{uX+AgPdn*3wmH^9dP`cHw1n)gX`;8NmtAaQw*!S+B5n zk#98q!D0@7uHY&}E{;QOiX;d4+3I!)eWogBH)Et_lIpt)MC6Dn{H=oGlKUZZLh~pb z1t<*H!i|76DZt7A(7I7qJGG7frau^v?x36GMG=|ZR~lmFqq@D=(pPCua$qjeY&M%i zX}ERa!i9%_{^x)G+t=6E!w0d&YFFb0z$Kr1?z!Ztr=I#a0PsiAxen}T+c?=7U2N;0BCMe=xz#zj1_nK#WBjkcT9wNAiIQ* zT)IrLB*dRHoDoE6fw8Lay_C5a5tB$jsEupET`~4xK>KZPwBE-@)B;?nRjE~-XDa(D zFj#}o11A{aaMDb&F=lCFQl^Sk#{Q1MutQFq!PXicO{Y_ip^t$+m#Jz+VMn4pvMh$# zQnzp4z6ZdSe*EJf|JX16(l31wz$<EJz-pEn_M?Ca&Pl_D5X?}F zS4@g)Z3}m9u|!hLN{CXcs#upU9qskPM#7qsu>76S6TX$ukDyfolrzZJL=Ki|X-@N? z5LMcQa2~(R)in4DqXx`P22`cH%Y`Xb?}*NHlq`5ZK(|PwmF`Uv}rVm%Q656Dmi`OWY`&Wd)Pt1)!BpoKIK7X zN0eJ-xdse|;mp3fckkYT(y;q|-}in0%g_Go&wk)OIq5qFT=?(w>C@kyB+35{FY96W z+xFq>t~n6`^RlV^`+SCGv@OLlncZCwSh*BDP6iu7#w$=AQWZaK0-vTcoU^CQkIEd0 zC%JkUSQsYr97=Xx=I#rjK}j(vWtfyo6B;{5Xn;0(k!bmw^MPbqKafL zTYpTXtd&fvl9N=RL@JTL^m_?eFZEoS?8V{Ol2JG*4P}NFN*1{!`v2Q5?1Fd!Ig|#sA)|)*SVB+q4FJ|A1))ced_`?VWq+$+Mdr7WNPm1M;lc zp@QwhZ8l08O7w}$%MnZTcmN{FyDO^uZ+neB(VAVD+Q?(-mqFCaCdAS&P&E6~L26=> zTY!q%lOE4$H~^#ZcszyD@E(B0DFCfc!lIJ?)^GjRH-UZSOW?STKfdLI5}DQc^XI<} zK=glulkWrY8g9VXU8(6dGxiATSS6MXGoZM!gZC|pJPo5b3c~(M&RHB7Z8U-JCKFD^ zlU$W_=-w{$L`O7?z=?{D;;3KYLPCiM)V7A!8R?yH2<58CF=J0I59LfEP$Hwj+x#dJ8233C%j%DDQx62 zEfa2u(^^y>z-AK+VgF!%4`1yJOCba-YP@mn^1~=H8*zlbAnSs+uRy>uhEn&cvtEX+x#x3WoSw2Es%2FwWGMl^bE@20>W zQpKLoUXm;Cl}Z!==2eh+##Kp%yU{RiivSGyFlq%ru@^< zHC11zuse$O_m0gRnG@$$WOrCwja7-V9jj^!((KKaiNYkGRGR>r4O*9f*=l5sV2%}D z7<`?~=45woOH8LDERHx;$Dfe1*-W6dO-d=q@g3aq{m8Id{~eAFC9LECS3HYDN!A8y z-8ZkjxwHDn6NmVrhRmjy>r8VUc19gGLfR8w-U;1F-hX*W9adEmJnF;(mCdoV_Lb`K zHf9mi-&nvJL<9IxVknUdH4&Pb-_P=?ic5~eF0A~MveWM5sS{*%bES9p#&%~moy}HO zS3+6{1B23T?z<%v_1Tuv%+y3*DFCo`@sUrRI(6m~pZLUQ&Ye3q{K6N$@ISxum9N}+ z<&{?oQZ*>^Blb(FW38Y|N`(Xt{8Ipup8;U{4mcwog_Zj?0EaEOTZG1RbFxy?N2tK5 z4S*4>s8;Zh3*kV*py2rw>f{ay`e)}^u!7)&V-%uTe|CF&bCTs8*p}`k#FreyLV|!b znM(CLru0PJ39MECJWjdkc{SU)DhkMC(l8qzMAhhvGLer-;C4)!=4o0oCu(D|YZ))p zfQAMRrtYUFUX zXWf36V=1Jj#Rz~db)s8rZ3ipEQiw5R28V}-2LKEyfY!!SPd)XCpZS@eIRj_r%y1s3`}D z4vUjDMrAJs%+$zqG>O8A8RGYx=NTGnE9HCS7oVZI%fc+4^y{i&-BmvV}d z@epu3zSq!Wd|vgK!W=Ee;^U?{*iw#4XM}L=7^f;^o7(b^$}%%clr)?X2kOlGthK!D z!+l^`2dJy4&YmEzoa#gs(ex&YoboM=ahnK`VBTuQdWW% zGdE%;mqOiw=|l$XAH=dRpsW<=QRBkfPx6sEu)AST1Gy;&PM=aaC}n_~p9q-$&1~M^JFHGpMI?+tN_&BpPvEn7%~a zl4Exex!F~8b_SjH9@}utZR-%>r7gnlI&$ZB+BzZ2T|*%qk=}^-R_M2kjhNTtKA#5<)uzljp)+s z2tO}o1yrVUsSJBpSK!Z#Iok(j*c+v0+Y3uSle3hIT!9-lm!hVkUGCbim5P*1p&VR^ z*OU!Hu{b!`I^8aL`0~Zh;r3{4=kD%2Ns_!j=tpqohQK(~=CgSteU??zw;Ulp!qN)B zY6d6$91hGmfJ=XMb@fBv`JLbS=(Ep0d*=s#@CUDrMx&drz4qD*2sS_RBR_KECx7xM zJHPjPzc>52pZmG^H-Gat(?9;>KkokckN^05YisKyFe&+qzxa!f!{a^)kN**Px=YBK z;Ia!qbsJ8q1M@y(gEMo>KnqkZqw-i5epsPqSTsaQE-hx5W*df`;psGw&lb270UtyZ zg-Sc!g;Ma|_EhOpXxh#TUEy}RjLg!490I#ap&UdrZ(!sJz(Sois#_7vVxzT2JYJZv zJHMuE#PvcmS5-ilyArHQC!ysa5?WFvONphE_)$?=^uID~Z!oM#O$1k>JuwrQsAAyM z4H1xrM^RxsSJWg`=)X-!+h-!w27?a7(t^yv{tf{6A+|-OD}w&#l1r9A_as z{`BLwSS~&&z>@#BP(+ z%P6EczK7~QJhzlqH}pY?){LE%w&0d@_5joL+vskrx(}j^8o)`Z@xW5$Ei3garU8qY z$40G623QKBu$z-4?7~4bHM=xHnV&mO56Cbcl0njk5^+`zso30Hr;j}T@NhPoPR8T$ zZm-+Lo!9_Y^FS}i#@Ht7pye@^GHTeEG!yta+uPgQg#+{uK&K0rsNe5@7%oq4Zf@q6 zFJB(P?_S>C-X6o(>%aP|zlx#6XI($07QI%g8MLg9ggy{uNjz;9+Qr~0LmhqqmIHbyp|$}x~KD^^Uy4n z9Xt_}h^qN|^E4-SfL-Af?I;X1tKt|x9jL`&Jj%#)oaVxU@AYTKIdQ6krJ-vJHmYmPWD7fb;IRt(?hk7~9 zQf^9o;Rx?VLYmQz&H zb}9Fmz1}tEM4LA%%eqQ6*9TJVezX$NWeHiOPQXlTWYr}?jRq&pN~|;41M|1wZ&Vt) zSshKBl`8!t<0O?c(hd3~mWi@EF!NYw4&^c@2$hLgfmU!?}6Lyz;&MhU^#%F2kX=cxZRWG3I?`I} zMXZ!Km^FtgH-lzMr8bYRwVcyQOUr^g6}lX^2%u=K78ae{gi&V*RW;>Vh0*DmOl8lm zJ;#jw!5koPyit+@^W5LR!}Dx5i=&7pNvvqtd^S`1m5OR`+O5d)$t(9W0p`60tY@Bl zhK?p<(eL$e3p<<7=4m_}7Hcc3$v0pA=JrD$KDPra(dB>{?-c@9z#3xqQ4ESYGrxW2 zMBEr=cZZKs$FNFE11qCdo~_v*QU^GXu*x{OkiYBugI? zHXK=sa`B?&Bn!vOXTXXGEAZP=&j1pmWl71)TA+FyWkRK-)XH=itA1{+L{U9_gH|c4 z${b56xzCaqIT2Je>lk z>~-bF+C~ow;jzrlU59kkqVqt zl8Myi9mTQoQkJ?#IqH^516mfuh&fOVi!|5iN)ny!9N5#GbdoNBRzh+yCw2-renr7` zk{yyYU|A9TPXG%erhGYb<`kVhF<*fNVYYv8u){)@54!yjb*T&vF#OX|*K!MJr$n?s zWv3@weMn_!A!xu?1P1g*p|~AGS%q3;fMqCvR|u=_Ex1htk8yxs;W74*1sNHpYjrX; z5Q1~rR+hTup9@+RxOl;pWdUvz>c^%rR%1{Irdg4RAnKhzoU%*fSaBY~EWSs95eqhggs#)-nI?GS2;SQ2hk%qh^-2a_%p z&7(5|WRjWNY0zP2v!Rd~=|nvubD>v1ycLSTW;Zdz86NPa<>oy?)`FSu=P#a%^DIB{ z((|trP#W$dhb%nW7PvE-Dd`W!c?iJBZbkbIc?n#5h43zV@-j2freq z!3jU$Tum)iqr~uW%xEshj-;SVL{|px3W4GS)Ap6+*qRbmxiUyqa(SozD{r7zBN5{{?r@}?9S?NHQ3+Uzjor( zI$CFAECrRBkun1kyqeNTX=|D1*{d6V4QueTIu&jBJ7@(#H9wWT3#)c`%Ex4tjX^jL z3J2Jzias{wpb}myYph~a282|_$c*JdhI$AEfKrD5%Zj=x-(C5D45;COILC0mAcmDN zCcMbCYZ@3suiGV$Klx~v^Wx;IFTGyu?d>0&*f=4fObf9Z#Bl)(eWH3Zo9XaK!Ax9B z$+C!vp>aw^W|*t=JXm%npPW)<5I5+?RkMG2r?>6R>kYE ztPJ%aI3!L%0)I>Z%xa$IX%63R&hzN;{YkMo%Op(zDm!ru;1rYn@tnN=#x|LySPDkE z=@@-i*fbtUwIjH9I3siTinbC}F4^`Lz!*$$P}UQvKQFbTEv-1DkwV%9Nu^dRs8gRW zF&Y@xtAS=fW_(UStxyhM3%l#cRG(wHb6766Rb;VSIY?>CLs5<4VfwkONma!eTVX@c za#EAsICA5T)I9=Byk+F}-K+4{XXp^kQ71)q1tmY9r}JWoePLP1X#X+@G2qh57TbtFa7F8R0 zRIWn$1FMVcR`{%jim|dU%P=eIT0cuCYq@e&Mk7`Sx1iFssvSdpeyzFvufz4r37Q~p#(8|@t_^GJgK~eOXRW*L84=_?$i>W=>n8hp4 z&2C)LCA-o#4K+KENp)h_=2YERXuzrz>a_^Up)8cLqXPU2uJfCe`(2q)r4E#%DM^AJ ze3+5mqL(_yX>GVlpMK`aVF-2hD=)t$4o8RM)!~ZhBprMkBD*(%eRrtHV?4anSkn;U zjoo39(U_XuB6VLlxP=8PWe6tCLWx& zOikXy4G>kT1Jh7|q;o_Ap=}N-M;}ihU}(zoY|A!N3TkoPEQsnL3d(L$L8-H&C(B)G z&A|0SizTEzu7$ncqN)8V(`A~ z-q|9%yEjuf#^&%#EbjvgSSAfpn9|-K9?~`o;C`nQzxO5KW0xPJ+q>Hm01K$*ZLz<* zKU?2iF9yASZ*{QBrU$bt-IWAGqGLOBL7&*HobgRtd{e%MN|v4Kb+5eJ$5#V7cQtcB zMAwz9WMJiUF)O~a+Rh}i9sD|nsWj!O?lx882HLD=K#5s)MRaIkKmybErF9Wq8Vg+- zvIv+|VkYNE#{rK{>I}}01Y@TOR#!F~3BRtatgxq_{=ga>Yx0dNZ*J}H@9nLwt;ue; zi<8X5bqJRts3BeAfSFhb8ufql7kNdqy zxx1luBr&{K-6SOQv>-eCQ!<(5B#eU6g)W))Lm~E{He{!9>wY_8)X74Xf65rjjCF;` zvaJR`cR{V)MH+TxG)`t&v^jQ6nW#i~vzx3IHWHMjq~0qrqP`tTZzsMoCvm~tUNTx* z7t}Kti-bCcOy$5><%+NNw;}=ritO)gk@4b29?CE`2`%jf{ z!*mJ6)i!v&f6t1dq!h_zBU{Oe=+Xj;tV%cAcuZS%3vJoQtmC+3bOxkUBbMFyBV`nb z0vl>_nXE>|%oaBOKhQ}OrPs{Z-4$5LifvJ&-yw|YHVv-Q8q|u9+KAm{G>?G-y&7YW z^pu;taizP2WY8awr=EOjb!9M&UV7!jQ5C?-_oxiX8Q z=#KBw?*1Iu)l}`?VTr~q3pW{60pogckh%dH2j8lVAOtEb*|F5Z&kbHGE+Fb-W_lhh z?lNL2hMOc@&5B~gb_+_w%Cz5=nm8C;6WWV0rut zS!%A>o2qRXq}DMgO%8n}jcAsSpV7@*ufgXwpTfeBuL4^~kQ$FiXlLNWWIH%RuLW8D zmAn&X(svWE8eW8Fo_q#(3xQqTL4!}QyR$n-9jll0)-RmBFnsaF7jK{c;F+sD$xops zV>5dqrelO%Q)fwaXyt)oWsOcsAhWn+e90yF{QvB|>9b_Xbsv_QxAuB_?>#f!vovSL zHUJ2K1RzL+DMdI!q(fg6LCU5g_(c|Nf3*G4;s3!7hk_9^FYx^?fl=lsrZasN#uPvp4x zgf-!O)h)Z%idbFy&a8AnpvjrvBnJPDPXLM$Z2?TNLINU3J80Jl(&v~TA#GuTPR)iZ zM^TaXJ@zpSo68opR5waR_&MD@nC+9YR=)65>-D;L=9y>a%H_%vw{PEx_V@N1t#)gu zM{+S&t3_ntf{Lg#=$;sjhA5CWMT^EpC|1;EA*V{=Mlj3<%oVDM4$J>-F&aZxK!q@5 zYZUcGRWy&RM-x2)0$s5*meJ*%*5LVeKUo2%4>RNHLUd|rjzzl5THS22w{LH=-e6>K zD>yY`-8I1R1|S}249(U+7p$R?eUF^GXW@XHGVUDkW@HrJP{0CRuwb|5-2_9f! zK?g`+J(i+F?h+z!o`{fJMrke%T(zjD-5N3POlkmj{2pVa%L}?Fl?+zJ>=lg{L4>a^ zL*cab%%VFnaQpPU#4bH`xmK&qJ@Medz3Rrs#?Ej!>SbvPTESwe1STs6DK-|%x~t=8 ziEgN-hWBW(EILU=*kwVXg1-rLht~&OtI0$gYxiW389FfB2})r3Ce60dbXC%di=nR? z$1&s&i*x;o6?>m7}1G)wz{LR?x)>iq*B7>w26Svs$fWx-KYI&=M@y zORQLmSi3u7JB>aAOY&kQY}6VYs|?*4n8kD);S*d&0c=P7F*KI+)D=!KYFMBmywMOJ z5OuQf_!7?x8G5PN8XG5nZO)O4P zf;Kb~0r}m%bzRWcV|~mAf)z}ZT(95D27_UWDM8spx^Tvv>Cx0^xLF*n$5TrfF8KBu zd-BRNR}7A|xxUd`I<*wns?}N=r&(*O^>+2_8AwQ3CakBR-@w!mCexsE3c^-{O&^^| zIZP@?DCNO6PuUeR4>ySn-4zJ5SI&)rY&{&|)HyJOm>BotCoK(#&L9wXikRcl5Gf|2 z?=$S^2yxm7w~5$Aag?n_aOo5SeU!8 zyu4CfU0d7T-Pzge_Pa?b9woJUy-?yStAZ^C=#TRwfb;F@rOpxd_6L~ssiycN8+e)KS=dO)77tFF;<03JDuT` z=D}zMEUZjdC4i+KvE_w1b79|G-(_#ySTjI+73wb}-(;z|;lbt<*zWzo*s$FV0v5rT zRWP_#L0L)xOro@3Fa%Q}ouJt09EB}PU^8QQSvcN1ZK_1RmGHu5sPUPj&?ro#k$AHa zmRWC1w(L!Z1oRoob+}Vu*n(o1ddhXI)>DnJE9|6btP~U5az#}O4Fw}1154zh(Xux7 zS5>#$80epl>$(GnM;-M0X|LByjOmRqV{yi&CxxFheE0EnYnc2Kfo+kHYHM?=`|R`2 z^~=R_{n8Vcs#kyf*8Q_D{JmX$Dldy-!NKMRAMle(zSCm%#NnZ%Nzg&%eYFT5Kv0wj zq`_kf!lZJ=iFAOr+mZsuxqysn@hU%_y5g$rxEB%bM4CcF9P~Ca$pR5J}rXlxINHm_nNp0^hN-GK_7NL2={4s!0@byWwTp zpi{_wFlp8x|H&XuN|&lssZuQYrOqgMdhcL#p*KqAz>^(1PauO<^>}yw^pbg9Z{1#J zch`2=L1)Nnm9lXiNYl(*hybwbmt-V4yN!XNFu;ZoZUj~)WU)cTeOip^?ybt$P#6T} z7&2piQLv*Ug4M!E2qUyAM!Z#bZ3J7Gt#g*=5gHbWx!G8!1%-Sqq^25LgfaY6+%0zC z>1AlYO*d|%l|r&X|&ZZ8#38g_Sg<6fsXD4#B8PhEU!>Bm=p zv?+(`W?D;MD6+B}`GDY;O5AiPZ=WpOh$cLHUC{iGMa7ww;rM61Zrk&SlWN|c41$Fn zm*+{)#*ZOpRp1`*c14LI$|gE1_@xHh2sl?1<0Y`Qx7-~&Mi6er-MEKFe$b&QE4eTn z8ly@Pcz$xkvqX+(V?KitC56%BF$D*QdVufPCTx6$~=h>O1 z1zmu8?8f~qcK6{9OZDhi)x`>4v-Po3Y_VQr3;JU`P7N2U)g78*WuCBASE7*F8r>=E zU?OS1$J}V#;)S6@LuQv8hW4gRu>$71uy2#`a<{@{8y99cS-Pqf4WCN*eqY+hvCa#^ zV2<|v&ur&KLS@=i11`yhlYS{8Z)MU`b>InP%54G};kYXAY+|;D3eIJWq_?|lw%^!f z&E~^VJRS~8#j=98el!{YEhd4&6~wI`Rj3}7d-eEXSm9W>zO|lRe)6)sb@$fzbIs57 zmX?>2`GxtaJ|42U(f;wpQ)hosAJD1*rnmvFg$ZOxc^a_ERWKehx50~$`=p3}LMvs# zk%y(6-<5eBRKHUp$&pM0LaB9GARZJxRsgn#1cHH2Ceur=Xyr7QC z#&P&jksy72vW^a6Iq!*4&PS

XNJgv;n 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 AJ^%m! literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_12.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_12.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a40140d3a9fdbdf50f442d8a7bf44f04b889ff GIT binary patch literal 82406 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 literal 4201 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 diff --git a/images/music_player/T02_option_shuffle_on.png b/images/music_player/T02_option_shuffle_on.png index b8c901502fd896a2c28b738011dca69166ec506c..4615d7f60afaa497f262b18f113ee64e07a55fdc 100755 GIT binary patch literal 1560 zcmeAS@N?(olHy`uVBq!ia0vp^J|N7&1|*M957Y)yk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh*)icxGNo zet9uiy|1s8XI^nhVqS8pr;Du;&;-5A%oHnQR|{ts3o}b|S3^rfLsvr!Cj&PN6H`kk zOLI$SH%AMYUYGpj(%jU%5}4i;gkDFSdO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZPro z(>$o&6x?pHz^PXs=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6+TY!SlYxP$$J50z zq~g|_S^a^B3`CA;K4*|+G=IU7%4}wk*C73ZrL=ihBaktLH=%ixyEf&YcL%zo3b-!qt0m!o9#ucxg{dk z_x0Q;+OqeZ$oHk+xqZ#gFS6|{oU=>UvhtGn+DGqJ$tD`U^KaL?)ud9(&%ACu$LjS) zQaj4y;y5yR_mN8gtLdszSIbw%>=FC>&N|{z>hhh>9JliiP(EKJwo&yXZ#ALw03_=_bE<|MaBs&%fhK0=~a~2#@E(Vp=p00i_>zopr06_;y AasU7T literal 3919 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 diff --git a/images/music_player/T02_square_bg.png b/images/music_player/T02_square_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..4f2b91b1da112e8b9562bebd5f88ba8276f83baa GIT binary patch literal 6671 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 literal 0 HcmV?d00001 diff --git a/images/music_player/T02_square_cell_bg.png b/images/music_player/T02_square_cell_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..cec9f08f9b54c7337fa913db113a417e46e083e7 GIT binary patch literal 21901 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 literal 0 HcmV?d00001 diff --git a/images/music_player/T02_square_cell_press.png b/images/music_player/T02_square_cell_press.png new file mode 100755 index 0000000000000000000000000000000000000000..21f0874cb27698d3aa8c3d64a989bc84d94b44b5 GIT binary patch literal 3405 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 KR<)*m#D4&wj4y}) literal 0 HcmV?d00001 diff --git a/images/music_player/T02_toolbar_press.png b/images/music_player/T02_toolbar_press.png deleted file mode 100755 index 98698f35ba5afe4739cadb1714155ba1e67cac29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2878 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 literal 0 HcmV?d00001 diff --git a/images/music_player/12_music_player_bg_01.PNG b/images/music_player/player/12_music_player_bg_01.PNG similarity index 100% rename from images/music_player/12_music_player_bg_01.PNG rename to images/music_player/player/12_music_player_bg_01.PNG diff --git a/images/music_player/player/12_music_player_control_bg.png b/images/music_player/player/12_music_player_control_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..86c56847fd7719a4e41c64a12dbfe08cbee32cd5 GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^j6fX5!3-oV9eBO~sdWK9A+D;bswyffYHDig>gsA> zj+T~|hPt|@rlz`@nudmkwzjsWhK7!gj=P(iy}iA=ySs-wkm=^;>S||e>*@jq&d$zG zVBqNJ>gt-6m1SyTVqy#eMnGT)0tP^!4+45XpbG{%I*tw?psl54Z)c~ascCC#YXbz< z*49=aU}d=iBSS+&0|Ntn5YW@p(**(@Fwh1AEilm3w6(F()X=cDveHmjx3sWOS5q@H zGgDJlH8C+UHa0dgGSar}RRTKCuq4PY_!$oH3WxZ!I1Ni1pyohN7srr_INyUu1(_HH z7&gp#@b2BaFY&V0%=|*hslKYYrm>;5qRz^tyzaW`vf;Mn%>MfM!okMH+}_&R($Ut{ q>_;mm9q;xjnf%Z0kM@x#znL@7vTRTJb)*?+ID@CFpUXO@geCx!>U!}2 literal 0 HcmV?d00001 diff --git a/images/music_player/T02_Play_btn__play.png b/images/music_player/player/T02_Play_btn__play.png similarity index 100% rename from images/music_player/T02_Play_btn__play.png rename to images/music_player/player/T02_Play_btn__play.png diff --git a/images/music_player/T02_Play_btn__play_press.png b/images/music_player/player/T02_Play_btn__play_press.png similarity index 100% rename from images/music_player/T02_Play_btn__play_press.png rename to images/music_player/player/T02_Play_btn__play_press.png diff --git a/images/music_player/T02_Play_btn_next.png b/images/music_player/player/T02_Play_btn_next.png similarity index 100% rename from images/music_player/T02_Play_btn_next.png rename to images/music_player/player/T02_Play_btn_next.png diff --git a/images/music_player/T02_Play_btn_next_press.png b/images/music_player/player/T02_Play_btn_next_press.png similarity index 100% rename from images/music_player/T02_Play_btn_next_press.png rename to images/music_player/player/T02_Play_btn_next_press.png diff --git a/images/music_player/T02_Play_btn_pause.png b/images/music_player/player/T02_Play_btn_pause.png similarity index 100% rename from images/music_player/T02_Play_btn_pause.png rename to images/music_player/player/T02_Play_btn_pause.png diff --git a/images/music_player/T02_Play_btn_pause_press.png b/images/music_player/player/T02_Play_btn_pause_press.png similarity index 100% rename from images/music_player/T02_Play_btn_pause_press.png rename to images/music_player/player/T02_Play_btn_pause_press.png diff --git a/images/music_player/T02_Play_btn_previou_press.png b/images/music_player/player/T02_Play_btn_previou_press.png similarity index 100% rename from images/music_player/T02_Play_btn_previou_press.png rename to images/music_player/player/T02_Play_btn_previou_press.png diff --git a/images/music_player/T02_Play_btn_previous.png b/images/music_player/player/T02_Play_btn_previous.png similarity index 100% rename from images/music_player/T02_Play_btn_previous.png rename to images/music_player/player/T02_Play_btn_previous.png diff --git a/images/music_player/player/T02_option_favorite_off.png b/images/music_player/player/T02_option_favorite_off.png new file mode 100755 index 0000000000000000000000000000000000000000..31be2bd742f8b9f09c6e946051dc802da5788893 GIT binary patch literal 3787 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 literal 0 HcmV?d00001 diff --git a/images/music_player/T02_player_progress_bar.png b/images/music_player/progress_bar/T02_player_progress_bar.png similarity index 100% rename from images/music_player/T02_player_progress_bar.png rename to images/music_player/progress_bar/T02_player_progress_bar.png diff --git a/images/music_player/T02_player_progress_bg.png b/images/music_player/progress_bar/T02_player_progress_bg.png similarity index 100% rename from images/music_player/T02_player_progress_bg.png rename to images/music_player/progress_bar/T02_player_progress_bg.png diff --git a/images/music_player/T02_player_progress_point.png b/images/music_player/progress_bar/T02_player_progress_point.png similarity index 100% rename from images/music_player/T02_player_progress_point.png rename to images/music_player/progress_bar/T02_player_progress_point.png diff --git a/images/music_player/separator_h.png b/images/music_player/separator_h.png deleted file mode 100644 index 0823fbc472f98bb3728fcf4d96a94f3e6234d034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^AT|>R8<0#)^t}M27>k44ofy`glX(f`uqAoByDx`7I;J!Gca%qgD@k*tT_@uLG}_)Usv{<9HN}8EVpMe`~V7xd%8G=a9mGL oNl18*sK8|K@Bjb(b0u0CdYYLh8*bu!160D`>FVdQ&MBb@02v!6_y7O^ diff --git a/include/mp-vconf-private-keys.h b/include/mp-vconf-private-keys.h new file mode 100755 index 0000000..f59f1a8 --- /dev/null +++ b/include/mp-vconf-private-keys.h @@ -0,0 +1,77 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef __MP_VCONF_PRIVATE_KEYS_H__ +#define __MP_VCONF_PRIVATE_KEYS_H__ + +#include + +#define VCONFKEY_MP_PRIVATE "private/org.tizen.music-player/" +#define VCONFKEY_MP_DB_PREFIX "db/"VCONFKEY_MP_PRIVATE +#define VCONFKEY_MP_MEMORY_PREFIX "memory/"VCONFKEY_MP_PRIVATE + +/** + * @brief trigger of menu settng changes + * + * type: int + * + * value is not meaningful + */ +#define VCONFKEY_MUSIC_MENU_CHANGE VCONFKEY_MP_DB_PREFIX"menu_change" + + +/** + * @brief playlist shuffle state + * + * type: bool + * + * 0 : off + * 1 : on + */ +#define MP_VCONFKEY_MUSIC_SHUFFLE VCONFKEY_MP_DB_PREFIX"shuffle" + + +/** + * @brief playlist repeat state + * + * type: int + * + * 0 : repeat all + * 1 : no repeat + * 2 : repeat only a songs + */ +#define MP_VCONFKEY_MUSIC_REPEAT VCONFKEY_MP_DB_PREFIX"repeat" +enum +{ + MP_SETTING_REP_ALL, + MP_SETTING_REP_NON, + MP_SETTING_REP_1 +}; + + +/** + * @brief check which player is playing now + * + * type: int + * + * pid of music-player of sound-player + */ +#define MP_VCONFKEY_PLAYING_PID VCONFKEY_MP_MEMORY_PREFIX"playing_pid" + + +#endif /* __MP_VCONF_PRIVATE_KEYS_H__ */ + diff --git a/layout/mp-3d-view.edc b/layout/mp-3d-view.edc new file mode 100755 index 0000000..3046470 --- /dev/null +++ b/layout/mp-3d-view.edc @@ -0,0 +1,465 @@ +#define MP_DALI_BACK_BUTTON_SIZE 52 +#define MP_DALI_TAP 10 + +group { + name: "3d-layout"; + + parts { + part { name: "background"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + //min: 1280 720; + //max: 1280 720; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + //color: 37 37 37 255; + color: 0 0 0 0; + } + } +#if 0 + part { + name : "now_playing_bar"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + align: 0 0; + min: 0 100; + fixed: 0 1; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0;} + } + } + + part { + name : "background"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 1.0; to_y: "now_playing_bar"; offset: 0 1;} + rel2 { relative: 1.0 1.0;} + } + } +#endif + part { + name : "content"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;to: "background";} + rel2 { relative: 1.0 1.0;to: "background";} + } + } + + part { + name : "genlist_ly"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.3 0.0;to: "content";} + rel2 { relative: 0.7 1.0;to: "content";} + } + } + + part { + name : "left_title"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;to: "content";} + rel2 { relative: 0.28 0.15;to: "content";} + } + } + + part { + name : "now_playing"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.72 0.0;to: "content";} + rel2 { relative: 1.0 0.35;to: "content";} + } + } + + part { name: "back_button"; + type : SWALLOW; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + min: MP_DALI_BACK_BUTTON_SIZE 0; + fixed: 1 0; + align: 0.5 0.5; + rel1 { relative: 1.0 1.0; + offset: (-MP_DALI_BACK_BUTTON_SIZE-MP_DALI_TAP) (-MP_DALI_BACK_BUTTON_SIZE-MP_DALI_TAP); + to, "background"; + } + rel2 { relative: 1.0 1.0; + offset: (-MP_DALI_TAP) (-MP_DALI_TAP); + to, "background"; + } + } + } + } +} + +group { + name: "3d-genlist"; + parts { + part { name: "background"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 229; + } + } + + part { + name : "list_content"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;to: "background";} + rel2 { relative: 1.0 1.0;to: "background";} + } + } + } +} + +group { + name: "3d-left-title"; + parts { + part { name: "background"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + + part { name: "album_name"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + //min: 0 38; + fixed: 0 1; + align: 1.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "background"; + } + rel2 { + relative: 1.0 0.5; + offset: 0 0; + to: "background"; + } + color: 255 255 255 255; + text { + font: FONT_STYLE_MEDIUM; + size: 34; + min: 0 1; + align: 1.0 0.5; + } + } + } + + part { name: "artist_name"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + //min: 0 38; + fixed: 0 1; + align: 1.0 0.0; + rel1 { + relative: 0.0 0.5; + to: "background"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to: "background"; + } + color: 176 176 176 255; + text { + font: FONT_STYLE_MEDIUM; + size: 34; + min: 0 1; + align: 1.0 0.0; + } + } + } + } +} + +#define COVER_FLOW_NOW_PLAYING_ARROW "Cover_flow/T02_cover_flow_now_playing_arrow.png" +#define COVER_FLOW_NOW_PLAYING_BG "Cover_flow/T02_cover_flow_now_playing_bg.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_01 "Cover_flow/T02_cover_flow_now_playing_album_01.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_02 "Cover_flow/T02_cover_flow_now_playing_album_02.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_03 "Cover_flow/T02_cover_flow_now_playing_album_03.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_04 "Cover_flow/T02_cover_flow_now_playing_album_04.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_05 "Cover_flow/T02_cover_flow_now_playing_album_05.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_06 "Cover_flow/T02_cover_flow_now_playing_album_06.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_07 "Cover_flow/T02_cover_flow_now_playing_album_07.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_08 "Cover_flow/T02_cover_flow_now_playing_album_08.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_09 "Cover_flow/T02_cover_flow_now_playing_album_09.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_10 "Cover_flow/T02_cover_flow_now_playing_album_10.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_11 "Cover_flow/T02_cover_flow_now_playing_album_11.png" +#define COVER_FLOW_NOW_PLAYING_ALBUM_12 "Cover_flow/T02_cover_flow_now_playing_album_12.png" + +#define COVER_FLOW_ALBUM_IMAGE( param_num ) \ + description { state: "album_"#param_num 0.0; \ + inherit: "default" 0.0; \ + image { \ + normal: "Cover_flow/T02_cover_flow_now_playing_album_"#param_num".png"; \ + } \ + } + +#define COVER_FLOW_SHOW_ALBUM_IMAGE( param_num ) \ + program { \ + name : "show_album_image_"#param_num; \ + signal : "SHOW_ALBUM_IMAGE_"#param_num; \ + source : "music_app"; \ + action : STATE_SET "album_"#param_num 0.0; \ + target : "album_image"; \ + } + +group { + name: "3d-now-playing"; + + images { + image: COVER_FLOW_NOW_PLAYING_ARROW COMP; + image: COVER_FLOW_NOW_PLAYING_BG COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_01 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_02 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_03 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_04 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_05 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_06 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_07 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_08 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_09 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_10 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_11 COMP; + image: COVER_FLOW_NOW_PLAYING_ALBUM_12 COMP; + } + + parts { + part { name: "background"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + + part { name: "elm.padding.right"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 8 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1.0 0.0; + to: "background"; + } + align: 1.0 0.0; + } + } + + part { name: "elm.padding.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 8; + fixed: 0 1; + visible: 0; + rel2 { + relative: 1.0 0.0; + to: "background"; + } + align: 0.0 0.0; + } + } + + part { name, "album_image"; + type, IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + image { normal: COVER_FLOW_NOW_PLAYING_ALBUM_01; } + visible: 1; + align: 0.5 0.5; + rel1 { + relative: 0.2 1.0; + offset: 0 0; + to_x: "background"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "background"; + } + } + COVER_FLOW_ALBUM_IMAGE( 01 ) + COVER_FLOW_ALBUM_IMAGE( 02 ) + COVER_FLOW_ALBUM_IMAGE( 03 ) + COVER_FLOW_ALBUM_IMAGE( 04 ) + COVER_FLOW_ALBUM_IMAGE( 05 ) + COVER_FLOW_ALBUM_IMAGE( 06 ) + COVER_FLOW_ALBUM_IMAGE( 07 ) + COVER_FLOW_ALBUM_IMAGE( 08 ) + COVER_FLOW_ALBUM_IMAGE( 09 ) + COVER_FLOW_ALBUM_IMAGE( 10 ) + COVER_FLOW_ALBUM_IMAGE( 11 ) + COVER_FLOW_ALBUM_IMAGE( 12 ) + } + + part { name, "now_playing_bg"; + type, IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + image { normal: COVER_FLOW_NOW_PLAYING_BG; } + visible: 1; + align: 0.5 0.5; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "background"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.5; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "background"; + } + } + } + + part { name, "now_playing_arrow"; + type, IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + image { normal: COVER_FLOW_NOW_PLAYING_ARROW; } + visible: 1; + align: 0.0 0.5; + rel1 { + relative: 0.0 0.0; + offset: 10 0; + to: "now_playing_bg"; + } + rel2 { + relative: 0.15 0.5; + offset: 10 0; + to: "now_playing_bg"; + } + } + } + + part { name: "track_name"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + //min: 0 38; + fixed: 0 1; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + offset: 8 0; + to_x: "now_playing_arrow"; + to_y: "now_playing_bg"; + } + rel2 { + relative: 1.0 0.5; + offset: 0 0; + to: "now_playing_bg"; + } + color: 169 220 255 255; + text { + font: FONT_STYLE_MEDIUM; + size: 30; + min: 0 1; + align: 0.0 0.5; + } + } + } + + part { name: "artist_name"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + //min: 0 38; + fixed: 0 1; + align: 0.0 0.0; + rel1 { + relative: 1.0 0.5; + offset: 8 0; + to_x: "now_playing_arrow"; + to_y: "now_playing_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to: "now_playing_bg"; + } + color: 169 220 255 255; + text { + font: FONT_STYLE_MEDIUM; + size: 30; + min: 0 1; + align: 0.0 0.0; + } + } + } + } + + programs { + COVER_FLOW_SHOW_ALBUM_IMAGE( 01 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 02 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 03 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 04 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 05 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 06 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 07 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 08 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 09 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 10 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 11 ) + COVER_FLOW_SHOW_ALBUM_IMAGE( 12 ) + } + +} \ No newline at end of file diff --git a/layout/mp-button.edc b/layout/mp-button.edc index 55c2f32..c2d5955 100755 --- a/layout/mp-button.edc +++ b/layout/mp-button.edc @@ -1,20 +1,6 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - + //1 this code is based on nbeat theme (2011/09/9) + #define BUTTON_STATE_ENABLED 0 #define BUTTON_STATE_DISABLED 1 @@ -998,6 +984,7 @@ script { public button_state = BUTTON_STATE_ENABLED; } + parts { part { name: "elm.swallow.content"; type: SWALLOW; diff --git a/layout/mp-custom-winset-style.edc b/layout/mp-custom-winset-style.edc index 11da2b5..6fe1058 100755 --- a/layout/mp-custom-winset-style.edc +++ b/layout/mp-custom-winset-style.edc @@ -1,30 +1,12 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - #include "mp-defines.h" collections { #include "mp-genlist-theme.edc" - #include "mp-naviframe.edc" - #include "mp-toolbar.edc" #include "mp-progressbar.edc" - #include "mp-button.edc" + #include "mp-genlist-sweep.edc" #include "mp-genlist-edit.edc" - #include "mp-editfield.edc" + #include "mp-gengrid-style.edc" #include "mp-selection-info.edc" + #include "mp-naviframe.edc" } diff --git a/layout/mp-defines.h b/layout/mp-defines.h index 53933db..35bbacf 100755 --- a/layout/mp-defines.h +++ b/layout/mp-defines.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,18 +14,15 @@ * limitations under the License. */ - - - #ifndef __MP_DEFINES_H__ #define __MP_DEFINES_H__ - /* main size */ #define MAIN_W 480 #define MAIN_H 800 +//#define PLAYVIEW_H 706 #define PLAYVIEW_H 620 -#define MENUBOX_H 56 +#define MENUBOX_H /*90*/56 #define PROGRESSBOX_H 67 @@ -34,20 +31,20 @@ #define FONT_STYLE_MEDIUM "SLP:style=Medium" #define FONT_STYLE_BOLD "SLP:style=Bold" -#define FONT_NAME "system_content" -#define FONT_TITLE_NAME "system_title" -#define FONT_CONTENT_NAME "system_content" -#define FONT_SUBCONTENT_NAME "system_subcontent" +#define FONT_NAME "system_content" //should be replaced to FONT_CONTENT_NAME +#define FONT_TITLE_NAME "system_title" //"system_title" +#define FONT_CONTENT_NAME "system_content" //"system_content" +#define FONT_SUBCONTENT_NAME "system_subcontent" //"system_subcontent" /* soft key*/ #define SOFTKEY_SY (722/MAIN_H) #define MP_NAVI_BAR_H (35) /* player info box*/ -#define INFO_BOX_SY ((634 - MP_NAVI_BAR_H)/MAIN_H) +#define INFO_BOX_SY ((/*595*/634 - MP_NAVI_BAR_H)/MAIN_H) /* play control box*/ -#define CTL_BOX_HEIGHT 120 -#define CTL_BOX_SY 705/MAIN_H +#define CTL_BOX_HEIGHT 120/*86*/ +#define CTL_BOX_SY /*((714 -10)/MAIN_H)*/705/MAIN_H #define CTL_REW_SX (115/MAIN_W) #define CTL_REW_EX (165/MAIN_W) #define CTL_REW_SY (20/CTL_BOX_HEIGHT) @@ -69,10 +66,12 @@ #define MENU_SY HD_MENU_PAD_TOP/HD_MENU_BOX_H #define MENU_EY (HD_MENU_PAD_TOP+HD_MENU_H)/HD_MENU_BOX_H -#define MENU_SHUFFLE_SX HD_MENU_PAA_LEFT/HD_MENU_BOX_W -#define MENU_SHUFFLE_EX (HD_MENU_PAA_LEFT+HD_MENU_W)/HD_MENU_BOX_W -#define MENU_REP_ALL_SX (HD_MENU_BOX_W-HD_MENU_W)/2/HD_MENU_BOX_W -#define MENU_REP_ALL_EX (HD_MENU_BOX_W+HD_MENU_W)/2/HD_MENU_BOX_W +#define MENU_SRS_SX HD_MENU_PAA_LEFT/HD_MENU_BOX_W +#define MENU_SRS_EX (HD_MENU_PAA_LEFT+HD_MENU_W)/HD_MENU_BOX_W +#define MENU_SHUFFLE_SX (HD_MENU_PAA_LEFT+HD_MENU_W+HD_MENU_PAD_MENU)/HD_MENU_BOX_W +#define MENU_SHUFFLE_EX (HD_MENU_PAA_LEFT+HD_MENU_W*2+HD_MENU_PAD_MENU)/HD_MENU_BOX_W +#define MENU_REP_ALL_SX (HD_MENU_PAA_LEFT+HD_MENU_W*2+HD_MENU_PAD_MENU*2)/HD_MENU_BOX_W +#define MENU_REP_ALL_EX (HD_MENU_PAA_LEFT+HD_MENU_W*3+HD_MENU_PAD_MENU*2)/HD_MENU_BOX_W #define MENU_FAVORITE_SX (HD_MENU_PAA_LEFT+HD_MENU_W*3+HD_MENU_PAD_MENU*3)/HD_MENU_BOX_W #define MENU_FAVORITE_EX (HD_MENU_PAA_LEFT+HD_MENU_W*4+HD_MENU_PAD_MENU*3)/HD_MENU_BOX_W diff --git a/layout/mp-edit-navi.edc b/layout/mp-edit-navi.edc new file mode 100755 index 0000000..fb98ccf --- /dev/null +++ b/layout/mp-edit-navi.edc @@ -0,0 +1,49 @@ + + group { + name: "edit_view"; + + parts { + part { name: "bg"; + mouse_events: 0; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name: "elm.swallow.list"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar";} + } + } + + part { + name: "elm.swallow.toolbar"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 86; + fixed: 0 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0; offset: 0 -1;} + rel2 { relative: 1.0 1.0; offset: 0 -1;} + } + } + } + + programs{ + + } + } diff --git a/layout/mp-editfield.edc b/layout/mp-editfield.edc index 4698f5a..655066a 100755 --- a/layout/mp-editfield.edc +++ b/layout/mp-editfield.edc @@ -1,20 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - #define ENTRY_TEXT_SIZE_INC 44 #define ENTRY_TEXT_COLOR_INC "#FFFFFF" diff --git a/layout/mp-gengrid-style.edc b/layout/mp-gengrid-style.edc new file mode 100755 index 0000000..08f5151 --- /dev/null +++ b/layout/mp-gengrid-style.edc @@ -0,0 +1,114 @@ + +#define VIDEO_W 184 +#define VIDEO_H 213 + +#define ICON_W 162 +#define ICON_H 129 + +#define VIDEO_TXT_COLOR 166 166 166 255 +#define VIDEO_TXT_SIZE 24 +#define VIDEO_TXT_FONT "Helvetica Neue:style=Roman" + +group { + name: "elm/gengrid/item/grid_video/default"; + + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "contents" "elm.swallow.icon"; + + parts { + part { + name: "bg"; + type: RECT; + description { + state: "default" 0.0; + color: 0 0 0 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "elm.swallow.bg"; + type: RECT; + description { + state: "default" 0.0; + color: 0 0 0 0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: ICON_W/VIDEO_W ICON_H/VIDEO_H;} + } + } + + part { + name: "elm.swallow.icon"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: ICON_W/VIDEO_W ICON_H/VIDEO_H;} + } + } + + part { + name: "elm.text.1"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 139/VIDEO_H; offset: 0 0; to_x: "elm.swallow.bg"; } + rel2 { relative: 1.0 167/VIDEO_H; offset: 0 0; to_x: "elm.swallow.bg"; } + color: VIDEO_TXT_COLOR; + text { + font: VIDEO_TXT_FONT; + size: VIDEO_TXT_SIZE; + align: 0.5 0.5; + } + } + } + + part { + name: "elm.text.2"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 173/VIDEO_H; offset: 0 0; to_x: "elm.text.1"; } + rel2 { relative: 1.0 201/VIDEO_H; offset: 0 0; to_x: "elm.text.1"; } + color: VIDEO_TXT_COLOR; + text { + font: VIDEO_TXT_FONT; + size: VIDEO_TXT_SIZE; + align: 0.5 0.5; + } + } + } + } +} + +group { name: "elm/gengrid/item/music/grid_square/default"; + data.item: "contents" "elm.swallow.icon elm.swallow.end"; + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + + part { name: "elm.swallow.icon"; + type: SWALLOW; + description { state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + to: "bg"; + } + rel2 { + relative: 1.0 1.0; + to: "bg"; + } + } + } + } + } + diff --git a/layout/mp-genlist-edit.edc b/layout/mp-genlist-edit.edc index 0ff784b..bff11c3 100755 --- a/layout/mp-genlist-edit.edc +++ b/layout/mp-genlist-edit.edc @@ -1,19 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - group { name: "elm/genlist/item/select_all/music/default"; alias: "elm/genlist/item_odd/select_all/music/default"; @@ -24,9 +8,7 @@ group { name: "elm/genlist/item/select_all/music/default"; data.item: "selectraise" "on"; data.item: "texts" "elm.text"; data.item: "contents" "elm.icon"; - images { - image: "00_list_bar_press_1x80.png" COMP; - } + parts { part { name: "base"; type: RECT; @@ -110,7 +92,7 @@ group { name: "elm/genlist/item/select_all/music/default"; to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; } - color: GENLIST_PART_TEXT_COLOR_INC; + color: MP_MAIN_TEXT_COLOR; text { font: "SLP:style=Roman"; size: GENLIST_FONT_44_INC; diff --git a/layout/mp-genlist-sweep.edc b/layout/mp-genlist-sweep.edc new file mode 100755 index 0000000..06dd495 --- /dev/null +++ b/layout/mp-genlist-sweep.edc @@ -0,0 +1,1423 @@ + +#define MP_GENLIST_SWEEP_PART_BASE( param_item_height ) \ + part { name: "base";\ + type: RECT;\ + clip_to: "disclip";\ + scale: 1;\ + description { state: "default" 0.0;\ + min: 0 param_item_height;\ + color: 236 240 242 255;\ + }\ + } + +#define GENLIST_SIZE_SLIDE_109_INC 109 +#define GENLIST_SIZE_SLIDE_147_INC 147 + +#define GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC 124 124 124 255 + +group { name: "elm/genlist/item/mode/music/slide/default"; + alias: "elm/genlist/item_odd/mode/music/slide/default"; + alias: "elm/genlist/item_compress/mode/music/slide/default"; + alias: "elm/genlist/item_compress_odd/mode/music/slide/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.slide.text.1"; + data.item: "contents" "elm.slide.swallow.1"; + data.item: "mode_part" "elm.swallow.origin"; + data.item: "treesize" "GENLIST_TREESIZE_32_INC"; + images { + image: "00_sweep_list_bg.png" COMP; + } + + parts { + #if 0 + part { name: "base"; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_HEIGHT_113_INC; + image { + normal: "00_sweep_list_bg.png"; + border: 0 0 3 0; + } + } + } + #endif + MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC) + + part { name: "bottom_line"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: GENLIST_PART_LIST_LINE_COLOR_INC; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.left"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + visible: 0; + rel1.to: "base"; + rel2 { + relative: 0 1; + to: "base"; + } + } + } + part { name: "base.padding.right"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1 0; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.bottom"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_PADDING_6_INC; + fixed: 0 1; + visible: 0; + align: 0.5 1; + rel1 { + relative: 0 1; + to: "base"; + } + rel2 { + relative: 1 1; + to: "base"; + } + } + } + part { name: "elm.slide.text.1"; + type: TEXT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_45_INC; + fixed: 0 1; + align: 0.5 0; + rel1 { + relative: 1 0; + to_x: "base.padding.left"; + to_y: "base"; + } + rel2 { + relative: 0 0; + to_x: "base.padding.right"; + to_y: "base"; + } + color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC; + text { + font: "SLP:style=Roman"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.5 0.5; + } + } + } + part { name: "elm.slide.swallow.1"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_390_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_390_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + rel1 { + relative: 0.5 1; + to_x: "base"; + to_y: "elm.slide.text.1"; + } + rel2 { + relative: 0.5 0; + to_x: "base"; + to_y: "base.padding.bottom"; + } + } + } + // Transparent part between base parts and slidable parts + part { name: "event_block_layer"; + type: RECT; + clip_to: "disclip"; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + color: 0 0 0 0; + } + description { state: "repeat_events" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + // Swallow part for original genlist item style + part { name: "elm.swallow.origin"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + } + description { state: "slide" 0.0; + inherit: "default" 0.0; + rel1.relative: 1 0; + rel2.relative: 2 1; + } + } + part { name: "disclip"; + type: RECT; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_DISCLIP_COLOR_INC; + } + } + } + programs { + program { + name: "slide_right"; + signal: "elm,state,slide,active"; + source: "elm"; + action: STATE_SET "slide" 0.0; + target: "elm.swallow.origin"; + transition: ACCELERATE 0.5; + after: "unblock_event"; + } + program { + name: "unblock_event"; + action: STATE_SET "repeat_events" 0.0; + target: "event_block_layer"; + } + program { + name: "slide_left"; + signal: "elm,state,slide,passive"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "event_block_layer"; + after: "slide_left2"; + } + program { + name: "slide_left2"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.origin"; + transition: DECELERATE 0.5; + after: "slide_left_finished"; + } + program { + name: "slide_left_finished"; + action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm"; + } + } + } + + group { name: "elm/genlist/item/mode/music/slide2/default"; + alias: "elm/genlist/item_odd/mode/music/slide2/default"; + alias: "elm/genlist/item_compress/mode/music/slide2/default"; + alias: "elm/genlist/item_compress_odd/mode/music/slide2/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.slide.text.1"; + data.item: "contents" "elm.slide.swallow.1 elm.slide.swallow.2"; + data.item: "mode_part" "elm.swallow.origin"; + data.item: "treesize" "GENLIST_TREESIZE_32_INC"; + images { + image: "00_sweep_list_bg.png" COMP; + } + + parts { + #if 0 + part { name: "base"; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_HEIGHT_129_INC; + image { + normal: "00_sweep_list_bg.png"; + border: 0 0 3 0; + } + } + } + #endif + MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC) + part { name: "bottom_line"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: GENLIST_PART_LIST_LINE_COLOR_INC; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.left"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1.to: "base"; + rel2 { + relative: 0 1; + to: "base"; + } + } + } + part { name: "base.padding.right"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1 0; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.bottom"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_PADDING_11_INC; + fixed: 0 1; + visible: 0; + align: 0.5 1; + rel1 { + relative: 0 1; + to: "base"; + } + rel2 { + relative: 1 1; + to: "base"; + } + } + } + part { name: "elm.slide.text.1"; + type: TEXT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_56_INC; + fixed: 0 1; + align: 0.5 0; + rel1 { + relative: 1 0; + to_x: "base.padding.left"; + to_y: "base"; + } + rel2 { + relative: 0 0; + to_x: "base.padding.right"; + to_y: "base"; + } + color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC; + text { + font: "SLP:style=Roman"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.5 0.5; + } + } + } + part { name: "base.padding.center"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + align: 0.5 0.5; + rel1 { + relative: 0.5 0; + to: "base"; + } + rel2 { + relative: 0.5 1; + to: "base"; + } + } + } + part { name: "elm.slide.swallow.1"; + type: SWALLOW; + clip_to: "disclip"; + description { state: "default" 0.0; + rel1 { + relative: 1 1; + to_x: "base.padding.left"; + to_y: "elm.slide.text.1"; + } + rel2 { + relative: 0 0; + to_x: "base.padding.center"; + to_y: "base.padding.bottom"; + } + } + } + part { name: "elm.slide.swallow.2"; + type: SWALLOW; + clip_to: "disclip"; + description { state: "default" 0.0; + rel1 { + relative: 1 1; + to_x: "base.padding.center"; + to_y: "elm.slide.text.1"; + } + rel2 { + relative: 0 0; + to_x: "base.padding.right"; + to_y: "base.padding.bottom"; + } + } + } + // Transparent part between base parts and slidable parts + part { name: "event_block_layer"; + type: RECT; + clip_to: "disclip"; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + color: 0 0 0 0; + } + description { state: "repeat_events" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + // Swallow part for original genlist item style + part { name: "elm.swallow.origin"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + } + description { state: "slide" 0.0; + inherit: "default" 0.0; + rel1.relative: 1 0; + rel2.relative: 2 1; + } + } + part { name: "disclip"; + type: RECT; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_DISCLIP_COLOR_INC; + } + } + } + programs { + program { + name: "slide_right"; + signal: "elm,state,slide,active"; + source: "elm"; + action: STATE_SET "slide" 0.0; + target: "elm.swallow.origin"; + transition: ACCELERATE 0.5; + after: "unblock_event"; + } + program { + name: "unblock_event"; + action: STATE_SET "repeat_events" 0.0; + target: "event_block_layer"; + } + program { + name: "slide_left"; + signal: "elm,state,slide,passive"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "event_block_layer"; + after: "slide_left2"; + } + program { + name: "slide_left2"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.origin"; + transition: DECELERATE 0.5; + after: "slide_left_finished"; + } + program { + name: "slide_left_finished"; + action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm"; + } + } + } + + group { name: "elm/genlist/item/mode/music/slide3/default"; + alias: "elm/genlist/item_odd/mode/music/slide3/default"; + alias: "elm/genlist/item_compress/mode/music/slide3/default"; + alias: "elm/genlist/item_compress_odd/mode/music/slide3/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.slide.text.1"; + data.item: "contents" "elm.slide.swallow.1 elm.slide.swallow.2 elm.slide.swallow.3"; + data.item: "mode_part" "elm.swallow.origin"; + data.item: "treesize" "GENLIST_TREESIZE_32_INC"; + images { + image: "00_sweep_list_bg.png" COMP; + } + + parts { + #if 0 + part { name: "base"; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_HEIGHT_113_INC; + image { + normal: "00_sweep_list_bg.png"; + border: 0 0 3 0; + } + } + } + #endif + MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC) + part { name: "bottom_line"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: GENLIST_PART_LIST_LINE_COLOR_INC; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.left"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1.to: "base"; + rel2 { + relative: 0 1; + to: "base"; + } + } + } + part { name: "base.padding.right"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1 0; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.bottom"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_PADDING_6_INC; + fixed: 0 1; + visible: 0; + align: 0.5 1; + rel1 { + relative: 0 1; + to: "base"; + } + rel2 { + relative: 1 1; + to: "base"; + } + } + } + part { name: "elm.slide.text.1"; + type: TEXT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_FONT_44_INC; + fixed: 0 1; + align: 0.5 0; + rel1 { + relative: 1 0; + to_x: "base.padding.left"; + to_y: "base"; + } + rel2 { + relative: 0 0; + to_x: "base.padding.right"; + to_y: "base"; + } + color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC; + text { + font: "SLP:style=Roman"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.5 0.5; + } + } + } + part { name: "elm.slide.swallow.2"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_220_INC 0; + fixed: 1 0; + rel1 { + relative: 0.5 1; + to_x: "base"; + to_y: "elm.slide.text.1"; + } + rel2 { + relative: 0.5 0; + to_x: "base"; + to_y: "base.padding.bottom"; + } + } + } + part { name: "elm.padding.swallow.2.left"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + align: 1 0.5; + visible: 0; + rel1.to: "elm.slide.swallow.2"; + rel2 { + relative: 0 1; + to: "elm.slide.swallow.2"; + } + } + } + part { name: "elm.slide.swallow.1"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_220_INC 0; + fixed: 1 0; + align: 1 0.5; + rel1.to: "elm.padding.swallow.2.left"; + rel2 { + relative: 0 1; + to: "elm.padding.swallow.2.left"; + } + } + } + part { name: "elm.padding.swallow.2.right"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + align: 0 0.5; + visible: 0; + rel1 { + relative: 1 0; + to: "elm.slide.swallow.2"; + } + rel2.to: "elm.slide.swallow.2"; + } + } + part { name: "elm.slide.swallow.3"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_220_INC 0; + fixed: 1 0; + align: 0 0.5; + rel1 { + relative: 1 0; + to: "elm.padding.swallow.2.right"; + } + rel2.to: "elm.padding.swallow.2.right"; + } + } + // Transparent part between base parts and slidable parts + part { name: "event_block_layer"; + type: RECT; + clip_to: "disclip"; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + color: 0 0 0 0; + } + description { state: "repeat_events" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + // Swallow part for original genlist item style + part { name: "elm.swallow.origin"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + } + description { state: "slide" 0.0; + inherit: "default" 0.0; + rel1.relative: 1 0; + rel2.relative: 2 1; + } + } + part { name: "disclip"; + type: RECT; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_DISCLIP_COLOR_INC; + } + } + } + programs { + program { + name: "slide_right"; + signal: "elm,state,slide,active"; + source: "elm"; + action: STATE_SET "slide" 0.0; + target: "elm.swallow.origin"; + transition: ACCELERATE 0.5; + after: "unblock_event"; + } + program { + name: "unblock_event"; + action: STATE_SET "repeat_events" 0.0; + target: "event_block_layer"; + } + program { + name: "slide_left"; + signal: "elm,state,slide,passive"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "event_block_layer"; + after: "slide_left2"; + } + program { + name: "slide_left2"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.origin"; + transition: DECELERATE 0.5; + after: "slide_left_finished"; + } + program { + name: "slide_left_finished"; + action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm"; + } + } + } + + group { name: "elm/genlist/item/mode/music/slide4/default"; + alias: "elm/genlist/item_odd/mode/music/slide4/default"; + alias: "elm/genlist/item_compress/mode/music/slide4/default"; + alias: "elm/genlist/item_compress_odd/mode/music/slide4/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.slide.text.1"; + data.item: "contents" "elm.slide.swallow.1 elm.slide.swallow.2 elm.slide.swallow.3 elm.slide.swallow.4"; + data.item: "mode_part" "elm.swallow.origin"; + data.item: "treesize" "GENLIST_TREESIZE_32_INC"; + images { + image: "00_sweep_list_bg.png" COMP; + } + + parts { + #if 0 + part { name: "base"; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_HEIGHT_129_INC; + image { + normal: "00_sweep_list_bg.png"; + border: 0 0 3 0; + } + } + } + #endif + MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC) + part { name: "bottom_line"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: GENLIST_PART_LIST_LINE_COLOR_INC; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.left"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1.to: "base"; + rel2 { + relative: 0 1; + to: "base"; + } + } + } + part { name: "base.padding.right"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1 0; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.bottom"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 7; + fixed: 0 1; + visible: 0; + align: 0.5 1; + rel1 { + relative: 0 1; + to: "base"; + } + rel2 { + relative: 1 1; + to: "base"; + } + } + } + part { name: "elm.slide.text.1"; + type: TEXT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_57_INC; + fixed: 0 1; + align: 0.5 0; + rel1 { + relative: 1 0; + to_x: "base.padding.left"; + to_y: "base"; + } + rel2 { + relative: 0 0; + to_x: "base.padding.right"; + to_y: "base"; + } + color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC; + text { + font: "SLP:style=Roman"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.5 0.5; + } + } + } + part { name: "base.padding.center"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_13_INC 0; + fixed: 1 0; + visible: 0; + align: 0.5 0.5; + rel1 { + relative: 0.5 1; + to_x: "base"; + to_y: "elm.slide.text.1"; + } + rel2 { + relative: 0.5 0; + to_x: "base"; + to_y: "base.padding.bottom"; + } + } + } + part { name: "elm.slide.swallow.2"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + align: 1 0.5; + rel1.to: "base.padding.center"; + rel2 { + relative: 0 1; + to: "base.padding.center"; + } + } + } + part { name: "elm.padding.swallow.2.left"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_13_INC 0; + fixed: 1 0; + align: 1 0.5; + visible: 0; + rel1.to: "elm.slide.swallow.2"; + rel2 { + relative: 0 1; + to: "elm.slide.swallow.2"; + } + } + } + part { name: "elm.slide.swallow.1"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + align: 1 0.5; + rel1.to: "elm.padding.swallow.2.left"; + rel2 { + relative: 0 1; + to: "elm.padding.swallow.2.left"; + } + } + } + part { name: "elm.slide.swallow.3"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { + relative: 1 0; + to: "base.padding.center"; + } + rel2.to: "base.padding.center"; + } + } + part { name: "elm.padding.swallow.3.right"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_13_INC 0; + fixed: 1 0; + align: 0 0.5; + visible: 0; + rel1 { + relative: 1 0; + to: "elm.slide.swallow.3"; + } + rel2.to: "elm.slide.swallow.2"; + } + } + part { name: "elm.slide.swallow.4"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { + relative: 1 0; + to: "elm.padding.swallow.3.right"; + } + rel2.to: "elm.padding.swallow.3.right"; + } + } + // Transparent part between base parts and slidable parts + part { name: "event_block_layer"; + type: RECT; + clip_to: "disclip"; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + color: 0 0 0 0; + } + description { state: "repeat_events" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + // Swallow part for original genlist item style + part { name: "elm.swallow.origin"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + } + description { state: "slide" 0.0; + inherit: "default" 0.0; + rel1.relative: 1 0; + rel2.relative: 2 1; + } + } + part { name: "disclip"; + type: RECT; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_DISCLIP_COLOR_INC; + } + } + } + programs { + program { + name: "slide_right"; + signal: "elm,state,slide,active"; + source: "elm"; + action: STATE_SET "slide" 0.0; + target: "elm.swallow.origin"; + transition: ACCELERATE 0.5; + after: "unblock_event"; + } + program { + name: "unblock_event"; + action: STATE_SET "repeat_events" 0.0; + target: "event_block_layer"; + } + program { + name: "slide_left"; + signal: "elm,state,slide,passive"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "event_block_layer"; + after: "slide_left2"; + } + program { + name: "slide_left2"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.origin"; + transition: DECELERATE 0.5; + after: "slide_left_finished"; + } + program { + name: "slide_left_finished"; + action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm"; + } + } + } + + group { name: "elm/genlist/item/mode/music/slide4.2/default"; + alias: "elm/genlist/item_odd/mode/music/slide4.2/default"; + alias: "elm/genlist/item_compress/mode/music/slide4.2/default"; + alias: "elm/genlist/item_compress_odd/mode/music/slide4.2/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.slide.text.1"; + data.item: "contents" "elm.slide.swallow.1 elm.slide.swallow.2 elm.slide.swallow.3 elm.slide.swallow.4"; + data.item: "mode_part" "elm.swallow.origin"; + data.item: "treesize" "GENLIST_TREESIZE_32_INC"; + images { + image: "00_sweep_list_bg.png" COMP; + } + + parts { + #if 0 + part { name: "base"; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_HEIGHT_113_INC; + image { + normal: "00_sweep_list_bg.png"; + border: 0 0 3 0; + } + } + } + #endif + MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC) + part { name: "bottom_line"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: GENLIST_PART_LIST_LINE_COLOR_INC; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.left"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1.to: "base"; + rel2 { + relative: 0 1; + to: "base"; + } + } + } + part { name: "base.padding.right"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1 0; + to: "base"; + } + rel2.to: "base"; + } + } + part { name: "base.padding.bottom"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 7; + fixed: 0 1; + visible: 0; + align: 0.5 1; + rel1 { + relative: 0 1; + to: "base"; + } + rel2 { + relative: 1 1; + to: "base"; + } + } + } + part { name: "elm.slide.text.1"; + type: TEXT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_42_INC; + fixed: 0 1; + align: 0.5 0; + rel1 { + relative: 1 0; + to_x: "base.padding.left"; + to_y: "base"; + } + rel2 { + relative: 0 0; + to_x: "base.padding.right"; + to_y: "base"; + } + color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC; + text { + font: "SLP:style=Roman"; + size: GENLIST_FONT_28_INC; + min: 0 1; + align: 0.5 0.5; + } + } + } + part { name: "base.padding.center"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_13_INC 0; + fixed: 1 0; + visible: 0; + align: 0.5 0.5; + rel1 { + relative: 0.5 1; + to_x: "base"; + to_y: "elm.slide.text.1"; + } + rel2 { + relative: 0.5 0; + to_x: "base"; + to_y: "base.padding.bottom"; + } + } + } + part { name: "elm.slide.swallow.2"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + align: 1 0.5; + rel1.to: "base.padding.center"; + rel2 { + relative: 0 1; + to: "base.padding.center"; + } + } + } + part { name: "elm.padding.swallow.2.left"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_13_INC 0; + fixed: 1 0; + align: 1 0.5; + visible: 0; + rel1.to: "elm.slide.swallow.2"; + rel2 { + relative: 0 1; + to: "elm.slide.swallow.2"; + } + } + } + part { name: "elm.slide.swallow.1"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + align: 1 0.5; + rel1.to: "elm.padding.swallow.2.left"; + rel2 { + relative: 0 1; + to: "elm.padding.swallow.2.left"; + } + } + } + part { name: "elm.slide.swallow.3"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { + relative: 1 0; + to: "base.padding.center"; + } + rel2.to: "base.padding.center"; + } + } + part { name: "elm.padding.swallow.3.right"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_13_INC 0; + fixed: 1 0; + align: 0 0.5; + visible: 0; + rel1 { + relative: 1 0; + to: "elm.slide.swallow.3"; + } + rel2.to: "elm.slide.swallow.2"; + } + } + part { name: "elm.slide.swallow.4"; + type: SWALLOW; + clip_to: "disclip"; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC; + fixed: 1 1; + align: 0 0.5; + rel1 { + relative: 1 0; + to: "elm.padding.swallow.3.right"; + } + rel2.to: "elm.padding.swallow.3.right"; + } + } + // Transparent part between base parts and slidable parts + part { name: "event_block_layer"; + type: RECT; + clip_to: "disclip"; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + color: 0 0 0 0; + } + description { state: "repeat_events" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + // Swallow part for original genlist item style + part { name: "elm.swallow.origin"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + } + description { state: "slide" 0.0; + inherit: "default" 0.0; + rel1.relative: 1 0; + rel2.relative: 2 1; + } + } + part { name: "disclip"; + type: RECT; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_DISCLIP_COLOR_INC; + } + } + } + programs { + program { + name: "slide_right"; + signal: "elm,state,slide,active"; + source: "elm"; + action: STATE_SET "slide" 0.0; + target: "elm.swallow.origin"; + transition: ACCELERATE 0.5; + after: "unblock_event"; + } + program { + name: "unblock_event"; + action: STATE_SET "repeat_events" 0.0; + target: "event_block_layer"; + } + program { + name: "slide_left"; + signal: "elm,state,slide,passive"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "event_block_layer"; + after: "slide_left2"; + } + program { + name: "slide_left2"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.origin"; + transition: DECELERATE 0.5; + after: "slide_left_finished"; + } + program { + name: "slide_left_finished"; + action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm"; + } + } + } + diff --git a/layout/mp-genlist-theme.edc b/layout/mp-genlist-theme.edc index 8657b1f..1de1109 100755 --- a/layout/mp-genlist-theme.edc +++ b/layout/mp-genlist-theme.edc @@ -1,19 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - #include "mp_genlist_macro.edc" #include "mp_genlist_define.edc" @@ -27,7 +11,7 @@ rel2 {relative: 1.0 1.0; to, test;}\ }\ } - + #define TEST_RECT2(test)\ part { name: "test_rect2";\ type: RECT; \ @@ -46,7 +30,7 @@ rel1 {relative: 0.0 0.0; to, test;}\ rel2 {relative: 1.0 1.0; to, test;}\ }\ - } + } #define GENLIST_PART_LIST_LINE_COLOR_INC MP_BOTTOM_LINE_COLOR @@ -54,85 +38,31 @@ #define GENLIST_FONT_35_INC 35 -#define GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC 166 166 166 255 +#define GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC 124 124 124 255 #define GENLIST_PART_TEXT_PRESS_COLOR_INC 249 249 249 255 #define MP_MAIN_TEXT_SIZE 36 -#define MP_MAIN_TEXT_COLOR 255 255 255 255 +#define MP_MAIN_TEXT_COLOR 0 0 0 255 +#define MP_MAIN_TEXT_STYLE_COLOR "#000000FF" #define MP_SUB_TEXT_SIZE 32 -#define MP_SUB_TEXT_COLOR 166 166 166 255 +#define MP_SUB_TEXT_COLOR 124 124 124 255 +#define MP_SUB_TEXT_STYLE_COLOR "#7C7C7CFF" #define MP_MAIN_TEXT_01_SIZE 36 -#define MP_MAIN_TEXT_01_COLOR 166 166 166 255 +#define MP_MAIN_TEXT_01_COLOR 0 0 0 255 +#define MP_MAIN_TEXT_01_STYLE_COLOR "#000000FF" + +#define MP_SUB_TEXT_01_SIZE 32 +#define MP_SUB_TEXT_01_COLOR 114 114 114 255 +#define MP_SUB_TEXT_01_STYLE_COLOR "#727272FF" #define MP_INDEX_LIST_TEXT_FONT FONT_STYLE_BOLD #define MP_INDEX_LIST_TEXT_SIZE 32 #define MP_INDEX_LIST_TEXT_COLOR 218 216 212 255 -#define MP_LIST_THUMBNAIL_INNER_LINE \ - part { name: "innerline.top";\ - type: RECT;\ - scale: 1;\ - mouse_events: 0;\ - description { state: "default" 0.0;\ - visible: 1;\ - fixed: 1 1;\ - align: 0 0;\ - min: 1 1;\ - rel1 {relative: 0.0 0.0; to, "elm.icon";}\ - rel2 {relative: 1.0 0.0; to, "elm.icon";}\ - color: 0 0 0 255;\ - }\ - GENLIST_DESCRIPTION_FLIP_ENABLED \ - }\ - part { name: "innerline.bottom";\ - type: RECT;\ - scale: 1;\ - mouse_events: 0;\ - description { state: "default" 0.0;\ - visible: 1;\ - fixed: 1 1;\ - align: 0 0;\ - min: 1 1;\ - rel1 {relative: 0.0 1.0; to, "elm.icon";}\ - rel2 {relative: 1.0 1.0; to, "elm.icon";}\ - color: 0 0 0 255;\ - }\ - GENLIST_DESCRIPTION_FLIP_ENABLED \ - }\ - part { name: "innerline.left";\ - type: RECT;\ - scale: 1;\ - mouse_events: 0;\ - description { state: "default" 0.0;\ - visible: 1;\ - fixed: 1 1;\ - align: 0 0;\ - min: 1 1;\ - rel1 {relative: 0.0 0.0; to, "elm.icon";}\ - rel2 {relative: 0.0 1.0; to, "elm.icon";}\ - color: 0 0 0 255;\ - }\ - GENLIST_DESCRIPTION_FLIP_ENABLED \ - }\ - part { name: "innerline.right";\ - type: RECT;\ - scale: 1;\ - mouse_events: 0;\ - description { state: "default" 0.0;\ - visible: 1;\ - fixed: 1 1;\ - align: 0 0;\ - min: 1 1;\ - rel1 {relative: 1.0 0.0; to, "elm.icon";}\ - rel2 {relative: 1.0 1.0; to, "elm.icon";}\ - color: 0 0 0 255;\ - }\ - GENLIST_DESCRIPTION_FLIP_ENABLED \ - }\ - #define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#31A1FF" +#define GENLIST_PART_BASE_COLOR_INC 000000 #define TEXTBLOCK_TAG \ tag: "br" "\n";\ @@ -143,16 +73,17 @@ styles { style { name: "genlist_textblock_style"; - base: "font=SLP:style=Roman font_size="MP_MAIN_TEXT_SIZE" color=#FFFFFFFF text_class=list_item ellipsis=1.0"; + base: "font=SLP:style=Roman font_size="MP_MAIN_TEXT_SIZE" color=#"GENLIST_PART_BASE_COLOR_INC" text_class=list_item ellipsis=1.0"; TEXTBLOCK_TAG } } +#ifdef MP_3D_FEATURE -group { name: "elm/genlist/item/music/1icon/default"; - alias: "elm/genlist/item_odd/music/1icon/default"; - alias: "elm/genlist/item_compress/music/1icon/default"; - alias: "elm/genlist/item_compress_odd/music/1icon/default"; + group { name: "elm/genlist/item/music/1icon/with_no_line/default"; + alias: "elm/genlist/item_odd/music/1icon/with_no_line/default"; + alias: "elm/genlist/item_compress/music/1icon/with_no_line/default"; + alias: "elm/genlist/item_compress_odd/music/1icon/with_no_line/default"; data.item: "stacking" "above"; data.item: "selectraise" "on"; data.item: "contents" "elm.icon"; @@ -204,6 +135,30 @@ group { name: "elm/genlist/item/music/1icon/default"; } } +group { name: "elm/genlist/item/music/1icon/default"; + alias: "elm/genlist/item_odd/music/1icon/default"; + alias: "elm/genlist/item_compress/music/1icon/default"; + alias: "elm/genlist/item_compress_odd/music/1icon/default"; + inherit: "elm/genlist/item/music/1icon/with_no_line/default"; + parts { + part { name: "bottom_line"; + insert_after: "elm.padding.right"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: GENLIST_PART_LIST_LINE_COLOR_INC; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + } + } + } + } + } + group { name: "elm/genlist/item/music_player/1icon.3text/default"; alias: "elm/genlist/item_odd/music_player/1icon.3text/default"; alias: "elm/genlist/item_compress/music_player/1icon.3text/default"; @@ -213,9 +168,7 @@ group { name: "elm/genlist/item/music_player/1icon.3text/default"; data.item: "texts" "elm.text.1 elm.text.2 elm.text.3"; data.item: "contents" "elm.icon"; data.item: "flips" "elm.flip.content"; - images { - image: "00_list_bar_press_1x80.png" COMP; - } + parts { GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) GENLIST_PART_BG_IMAGE @@ -248,7 +201,7 @@ group { name: "elm/genlist/item/music_player/1icon.3text/default"; GENLIST_DESCRIPTION_FLIP_ENABLED } MP_LIST_THUMBNAIL_INNER_LINE - + part { name: "elm.padding.icon.right"; clip_to: "disclip"; type: RECT; @@ -299,7 +252,238 @@ group { name: "elm/genlist/item/music_player/1icon.3text/default"; GENLIST_DESCRIPTION_INVISIBLE_SELECTED GENLIST_DESCRIPTION_FLIP_ENABLED } - + + part { name: "elm.padding.text3.left"; + clip_to: "disclip"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_32_INC 0; + fixed: 1 0; + rel1.to_x: "elm.text.3"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.text.3"; + } + align: 1.0 0.5; + visible: 0; + } + } + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + text { + style: "genlist_textblock_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + //max: 720 GENLIST_SIZE_48_INC; + min: 0 GENLIST_SIZE_48_INC; + align: 0.0 0.5; + rel1 { + relative: 0.0 1.0; + //to_x: "elm.padding.icon.right"; + //to_y: "elm.text.1"; + to: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + //to_x: "elm.text.3"; + to_x: "elm.padding.text3.left"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + target: "elm.text.3"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_3TEXT_1ICON + } + } + +group { name: "elm/genlist/item/music_player/folder/default"; + alias: "elm/genlist/item_odd/music_player/folder/default"; + alias: "elm/genlist/item_compress/music_player/folder/default"; + alias: "elm/genlist/item_compress_odd/music_player/folder/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2 elm.text.3"; + data.item: "contents" "elm.icon elm.icon.storage"; + data.item: "flips" "elm.flip.content"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + MP_LIST_THUMBNAIL_INNER_LINE + + part { name: "elm.icon.storage"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 0; to: "elm.icon"; } + rel2 { relative: 1 0; to: "elm.icon"; } + min: 46 46; + align: 1 0; + fixed: 1 1; + } + } + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.text.3"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_154_INC GENLIST_SIZE_48_INC; + fixed: 1 1; + rel1 { + relative: 0.0 0.5; + to: "elm.padding.right"; + } + rel2 { + relative: 0.0 0.5; + to: "elm.padding.right"; + } + align: 1.0 0.5; + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.text3.left"; clip_to: "disclip"; type: RECT; @@ -431,9 +615,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; data.item: "texts" "elm.text.1 elm.text.2"; data.item: "contents" "elm.icon"; data.item: "flips" "elm.flip.content"; - images { - image: "00_list_bar_press_1x80.png" COMP; - } + parts { GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) GENLIST_PART_BG_IMAGE @@ -466,7 +648,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; GENLIST_DESCRIPTION_FLIP_ENABLED } MP_LIST_THUMBNAIL_INNER_LINE - + part { name: "elm.padding.icon.right"; clip_to: "disclip"; type: RECT; @@ -542,7 +724,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; scale: 1; description { state: "default" 0.0; min: GENLIST_SIZE_112_INC 0; - fixed: 1 1; + fixed: 1 1; rel1 { relative: 0.0 1.0; to_x: "elm.padding.right"; @@ -569,7 +751,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; GENLIST_DESCRIPTION_INVISIBLE_SELECTED GENLIST_DESCRIPTION_FLIP_ENABLED } - + GENLIST_PART_FLIP GENLIST_PART_DISCLIP } @@ -617,9 +799,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; data.item: "selectraise" "on"; data.item: "texts" "elm.text.1 elm.text.3"; data.item: "flips" "elm.flip.content"; - images { - image: "00_list_bar_press_1x80.png" COMP; - } + parts { GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC ) GENLIST_PART_BG_IMAGE @@ -628,7 +808,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) - + part { name: "elm.text.3"; clip_to: "disclip"; type: TEXT; @@ -663,7 +843,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; GENLIST_DESCRIPTION_INVISIBLE_SELECTED GENLIST_DESCRIPTION_FLIP_ENABLED } - + part { name: "elm.padding.text3.left"; clip_to: "disclip"; type: RECT; @@ -792,9 +972,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; data.item: "selectraise" "on"; data.item: "texts" "elm.text.1 elm.text.2"; data.item: "flips" "elm.flip.content"; - images { - image: "00_list_bar_press_1x80.png" COMP; - } + parts { GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) GENLIST_PART_BG_IMAGE @@ -803,7 +981,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) - + part { name: "elm.text.1"; clip_to: "disclip"; type: TEXTBLOCK; @@ -1278,7 +1456,6 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; signal: "elm,state,flip,enabled"; source: "elm"; action: STATE_SET "disabled" 0.0; - target: "elm.edit.icon.1"; target: "elm.edit.icon.2"; after: "enable_flip_mode_next"; } @@ -1295,51 +1472,4165 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "elm.swallow.decorate.content"; - target: "elm.edit.icon.1"; target: "elm.edit.icon.2"; } } } -group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; - alias: "elm/genlist/item_compress_odd/multiline/music_player/info/default"; - alias: "elm/genlist/item_compress/multiline.music_player/info/default"; - alias: "elm/genlist/item_compress_odd/multiline.music_player/info/default"; + group { name: "elm/genlist/item/music_player/mp_info/default"; + + alias: "elm/genlist/item_odd/music_player/mp_info/default"; + alias: "elm/genlist/item_compress/music_player/mp_info/default"; + alias: "elm/genlist/item_compress_odd/music_player/mp_info/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.title"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + + part { name: "elm.text.title"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_40_INC; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: MP_MAIN_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + } + } + } + + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/track/default"; + + alias: "elm/genlist/item_odd/music_player/track/default"; + alias: "elm/genlist/item_compress/music_player/track/default"; + alias: "elm/genlist/item_compress_odd/music_player/track/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.title"; + data.item: "contents" "elm.swallow.icon elm.swallow.end elm.swallow.btn.bg elm.swallow.btn"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + + part { name: "elm.text.title"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_40_INC; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + offset: (-GENLIST_SIZE_60_INC) 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: MP_MAIN_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + } + } + } + part { name: "elm.swallow.btn.bg"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + fixed: 0 0; + align: 1 0.5; + min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC; + max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC; + rel1 { + relative: 1.0 0.0; + to: "elm.text.title"; + } + rel2 { + relative: 1.0 1.0; + offset: (-GENLIST_PADDING_10_INC) 0; + to_x: "elm.padding.right"; + to_y: "elm.text.title"; + } + } + } + part { name: "elm.swallow.btn"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + fixed: 0 0; + align: 0 0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.btn.bg"; + } + rel2 { + relative: 1.0 1.0; + to: "elm.swallow.btn.bg"; + } + } + } + part { name: "elm.swallow.end"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1.to_x: "elm.padding.right"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + } + } + } + + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/folder_track/default"; + alias: "elm/genlist/item_odd/music_player/folder_track/default"; + alias: "elm/genlist/item_compress/music_player/folder_track/default"; + alias: "elm/genlist/item_compress_odd/music_player/folder_track/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "contents" "elm.icon elm.icon.storage"; + data.item: "flips" "elm.flip.content"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + MP_LIST_THUMBNAIL_INNER_LINE + + part { name: "elm.icon.storage"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 0; to: "elm.icon"; } + rel2 { relative: 1 0; to: "elm.icon"; } + min: 46 46; + align: 1 0; + fixed: 1 1; + } + } + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + visible: 0; + } + } + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.text2.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.0; + text { + style: "genlist_textblock_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.padding.text2.left"; + clip_to: "disclip"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + rel1.to_x: "elm.text.2"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.text.2"; + } + align: 1.0 0.5; + visible: 0; + } + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC 0; + fixed: 1 1; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + align: 1.0 0.0; + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_2TEXT_1ICON + } + } + +group { name: "elm/genlist/item/music_player/related_video/default"; + + alias: "elm/genlist/item_odd/music_player/related_video/default"; + alias: "elm/genlist/item_compress/music_player/related_video/default"; + alias: "elm/genlist/item_compress_odd/music_player/related_video/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "contents" "elm.swallow"; + + parts { + GENLIST_PART_BASE( 283 ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + + part { name: "elm.swallow"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + } + } + + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/tag_btn/default"; + + alias: "elm/genlist/item_odd/music_player/tag_btn/default"; + alias: "elm/genlist/item_compress/music_player/tag_btn/default"; + alias: "elm/genlist/item_compress_odd/music_player/tag_btn/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.tag"; + //data.item: "texts" "elm.icon.tag"; + + parts { + GENLIST_PART_BASE( 112 ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_32_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + GENLIST_PART_BOTTOM_LINE + part { name: "top_line"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: MP_BOTTOM_LINE_COLOR; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 0.0; + } + } + } + + part { name: "elm.text.tag"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_42_INC; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: 36; + min: 0 1; + align: 0.0 0.5; + } + } + } + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/info_header/default"; + + alias: "elm/genlist/item_odd/music_player/info_header/default"; + alias: "elm/genlist/item_compress/music_player/info_header/default"; + alias: "elm/genlist/item_compress_odd/music_player/info_header/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1"; + //data.item: "texts" "elm.icon.tag"; + + parts { + GENLIST_PART_BASE( 70 ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_PADDING_TOP( 10 ) + GENLIST_PART_PADDING_BOTTOM( 0 ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_42_INC; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: 36; + min: 0 1; + align: 0.0 0.5; + text: "Media info"; + } + } + } + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; + alias: "elm/genlist/item_compress_odd/multiline/music_player/info/default"; + alias: "elm/genlist/item_compress/multiline.music_player/info/default"; + alias: "elm/genlist/item_compress_odd/multiline.music_player/info/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + + styles { + style { name: "name_style"; + base: "font=SLP:style=Roman font_size=36 color="MP_MAIN_TEXT_01_STYLE_COLOR" wrap=char text_class=list_item"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + tag: "b" "+ font=SLP:style=Bold"; + } + } + + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: MP_GENLIST_BG_COLOR; + } + } + GENLIST_PART_BG_IMAGE + GENLIST_PART_PADDING_TOP( 0 ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_42_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + color: MP_SUB_TEXT_01_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: 32; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_SELECTED_COLOR_INC; + } + } + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + text { + style: "name_style"; + min: 0 1; + align: 0.0 0.5; + } + } + } + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +#define RICH_INFO_STARS_BG_W 208 +#define RICH_INFO_STARS_BG_H 48 +#define RICH_INFO_STARS_W_H 32 +#define RICH_INFO_STARS_GAP 4 +#define RICH_INFO_STARS_SX(pos) (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos) +#define RICH_INFO_STARS_EX(pos) (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos+RICH_INFO_STARS_W_H) + +group { name: "elm/genlist/item/music_player/discography/default"; + + alias: "elm/genlist/item_odd/music_player/discography/default"; + alias: "elm/genlist/item_compress/music_player/discography/default"; + alias: "elm/genlist/item_compress_odd/music_player/discography/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.title elm.text.time"; + data.item: "contents" "elm.icon elm.icon.star1 elm.icon.star2 elm.icon.star3 elm.icon.star4 elm.icon.star5 elm.icon.btn"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_10_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + visible: 0; + } + } + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + fixed: 1 1; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + } + } + } + + part { name: "elm.text.title"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + align: 0 0.0; + min: 0 60; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.icon.btn"; + to_y: "elm.padding.top"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: GENLIST_FONT_35_INC; + min: 0 1; + align: 0.0 0.5; + } + } + } + + part { name: "elm.text.time"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + align: 0 0; + min: GENLIST_SIZE_96_INC 0; + rel1 { + relative: 0.0 1.0; + to: "elm.text.title"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text.title"; + to_y: "elm.padding.bottom"; + } + color, 151 150 150 255; + text { + font: FONT_STYLE_ROMAN; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + } + } + } + + part{ + name, "star_bg"; + type, RECT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + align: 0 0; + min: RICH_INFO_STARS_BG_W 0; + rel1 { relative: 1.0 8/48; to, "elm.text.time";} + rel2 { relative: 1.0 40/48;to , "elm.text.time";} + color: 0 0 0 0; + } + } + + part{name,"elm.icon.star1"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(0)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(0)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part{name,"elm.icon.star2"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(1)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(1)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part{name,"elm.icon.star3"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(2)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(2)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part{name,"elm.icon.star4"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(3)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(3)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part{name,"elm.icon.star5"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(4)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(4)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part { name: "elm.icon.btn"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + // TODO: enable btn after buy function implemented... + // min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC; + //max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC; + min: 1 GENLIST_SIZE_80_INC; + max: 1 GENLIST_SIZE_80_INC; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + } + } + + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.time"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.time"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/3text/default"; + + alias: "elm/genlist/item_odd/music_player/3text/default"; + alias: "elm/genlist/item_compress/music_player/3text/default"; + alias: "elm/genlist/item_compress_odd/music_player/3text/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2 elm.text.3"; + + parts { + GENLIST_PART_BASE( 90 ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 40; + fixed: 0 1; + align: 0.0 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: 255 255 255 255; + text { + font: FONT_STYLE_ROMAN; + size: 32; + min: 0 1; + align: 0.0 0.5; + } + } + } + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 30; + fixed: 0 1; + align: 0.0 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0 1; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.text.1"; + } + color: MP_SUB_TEXT_COLOR; + text { + font: FONT_STYLE_MEDIUM; + size: 22; + min: 0 1; + align: 0.0 0.5; + } + } + } + part { name: "elm.text.3"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 40; + fixed: 1 1; + align: 1.0 0.0; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: 229 144 30 255; + text { + font: FONT_STYLE_ROMAN; + size: 18; + min: 1 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.3"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.3"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + + #define GENLIST_GROUP_PART_BASE_EVENT_INC \ + part { name: "base_event";\ + type: RECT;\ + repeat_events: 0;\ + description { state: "default" 0.0;\ + color: 0 0 0 0;\ + }\ + } + #define GENLIST_GROUP_PART_TEXT_COLOR_INC 255 255 255 255 + + group { name: "elm/genlist/item/music_player/grouptitle/default"; + alias: "elm/genlist/item_odd/music_player/grouptitle/default"; + alias: "elm/genlist/item_compress/music_player/grouptitle/default"; + alias: "elm/genlist/item_compress_odd/music_player/grouptitle/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text"; + data.item: "treesize" "20"; + + parts { + GENLIST_GROUP_PART_BASE_EVENT_INC + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + part { name: "rect"; + type: RECT; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 0 30; + color: 121 121 121 255; + } + description { state: "alpha_off" 0.0; + min: 0 30; + color: 121 121 121 0; + } + } + + part { name: "elm.text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + color: GENLIST_GROUP_PART_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: 32; + min: 1 1; + align: 0.0 0.5; + } + } + } + } + program { + name: "enable_alpha"; + signal: "elm,state,alpha,enable"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "rect"; + } + program { + name: "disable_alpha"; + signal: "elm,state,alpha,disable"; + source: "elm"; + action: STATE_SET "alpha_off" 0.0; + target: "rect"; + } + program { + name: "selected"; + source: "rect"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "elm,title_action,item,click" "elm"; + } + } + + /* add by rocket.he for dialogue genlist style */ + group { name : "elm/genlist/item/music_player/dialogue_title/default"; + alias: "elm/genlist/item_odd/music_player/dialogue_title/default"; + alias: "elm/genlist/item_compress/music_player/dialogue_title/default"; + alias: "elm/genlist/item_compress_odd/music_player/dialogue_title/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2 elm.text.3"; + data.item: "contents" "elm.icon"; + data.item: "treesize" "34"; + + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 0 108; + color: 80 80 80 255; + } + } + + GENLIST_PART_PADDING_TOP( 9 ) + GENLIST_PART_PADDING_BOTTOM( 9 ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + GENLIST_PART_BOTTOM_LINE + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + visible: 0; + } + } + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 76 76; + max: 76 76; + fixed: 1 1; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + } + } + } + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 42; + fixed: 0 1; + align: 0.0 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.text.3"; + to_y: "elm.padding.top"; + } + color: MP_SUB_TEXT_COLOR; + text { + font: FONT_STYLE_MEDIUM; + size: MP_SUB_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + } + } + } + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_48_INC; + fixed: 0 1; + align: 0.0 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0 1; + offset: 0 0; + to_x: "elm.text.3"; + to_y: "elm.text.1"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN ; + size: MP_MAIN_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + } + } + } + part { name: "elm.text.3"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_56_INC GENLIST_SIZE_48_INC; + fixed: 0 1; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: MP_MAIN_TEXT_01_COLOR; + text { + font: FONT_STYLE_MEDIUM; + size: MP_MAIN_TEXT_01_SIZE; + min: 1 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + GENLIST_PART_DISCLIP + } + } + + /* add by rocket.he for album title */ + group { name : "elm/genlist/item/music_player/album_title/default"; + alias: "elm/genlist/item_odd/music_player/album_title/default"; + alias: "elm/genlist/item_compress/music_player/album_title/default"; + alias: "elm/genlist/item_compress_odd/music_player/album_title/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.3"; + data.item: "contents" "elm.icon elm.text.swallow"; + data.item: "treesize" "34"; + + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 0 108; + color: 80 80 80 255; + } + } + + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + GENLIST_PART_BOTTOM_LINE + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_10_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + visible: 0; + } + } + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 76 76; + max: 76 76; + fixed: 1 1; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + } + } + } + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 26; + fixed: 0 1; + align: 0.0 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.text.3"; + to_y: "elm.padding.top"; + } + color: MP_SUB_TEXT_COLOR; + text { + font: FONT_STYLE_MEDIUM; + size: MP_SUB_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + } + } + } + part { name: "elm.text.swallow"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_42_INC; + fixed: 0 1; + align: 0.0 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0 1; + offset: 0 0; + to_x: "elm.text.3"; + to_y: "elm.text.1"; + } + } + } + part { name: "elm.text.3"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_56_INC GENLIST_SIZE_48_INC; + fixed: 0 1; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + offset: -40 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: MP_MAIN_TEXT_01_COLOR; + text { + font: FONT_STYLE_MEDIUM; + size: MP_MAIN_TEXT_01_SIZE; + min: 1 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + GENLIST_PART_DISCLIP + } + } + + group { name: "elm/genlist/item/music_player/1text/default"; + + alias: "elm/genlist/item_odd/music_player/1text/default"; + alias: "elm/genlist/item_compress/music_player/1text/default"; + alias: "elm/genlist/item_compress_odd/music_player/1text/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text"; + + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_HEIGHT_89_INC; + color: 0 0 0 0; + } + } + + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + + part { name: "elm.text"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 0 1; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top";; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: 252 252 252 255; + text { + font: FONT_STYLE_MEDIUM; + //size: MP_MAIN_TEXT_SIZE; + size: 40; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 169 220 255 255; + } + } + + GENLIST_PART_DISCLIP + } + + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "elm.text"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +#else + group { name: "elm/genlist/item/music/1icon/with_no_line/default"; + alias: "elm/genlist/item_odd/music/1icon/with_no_line/default"; + alias: "elm/genlist/item_compress/music/1icon/with_no_line/default"; + alias: "elm/genlist/item_compress_odd/music/1icon/with_no_line/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "contents" "elm.icon"; + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + color: MP_GENLIST_BG_COLOR; + } + } + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + } + } + } + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music/1icon/default"; + alias: "elm/genlist/item_odd/music/1icon/default"; + alias: "elm/genlist/item_compress/music/1icon/default"; + alias: "elm/genlist/item_compress_odd/music/1icon/default"; + inherit: "elm/genlist/item/music/1icon/with_no_line/default"; + parts { + part { name: "bottom_line"; + insert_after: "elm.padding.right"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: GENLIST_PART_LIST_LINE_COLOR_INC; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + } + } + } + } + } + +group { name: "elm/genlist/item/music_player/1icon.3text/default"; + alias: "elm/genlist/item_odd/music_player/1icon.3text/default"; + alias: "elm/genlist/item_compress/music_player/1icon.3text/default"; + alias: "elm/genlist/item_compress_odd/music_player/1icon.3text/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2 elm.text.3"; + data.item: "contents" "elm.icon"; + data.item: "flips" "elm.flip.content"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + MP_LIST_THUMBNAIL_INNER_LINE + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.text.3"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_154_INC GENLIST_SIZE_48_INC; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.text.2"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.text.2"; + } + align: 1.0 0.0; + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.padding.text3.left"; + clip_to: "disclip"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_32_INC 0; + fixed: 1 0; + rel1.to_x: "elm.text.3"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.text.3"; + } + align: 1.0 0.5; + visible: 0; + } + } + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + text { + style: "genlist_textblock_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + max: 720 GENLIST_SIZE_48_INC; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text.3"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + target: "elm.text.3"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_3TEXT_1ICON + } + } + +group { name: "elm/genlist/item/music_player/folder/default"; + alias: "elm/genlist/item_odd/music_player/folder/default"; + alias: "elm/genlist/item_compress/music_player/folder/default"; + alias: "elm/genlist/item_compress_odd/music_player/folder/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2 elm.text.3"; + data.item: "contents" "elm.icon elm.icon.storage"; + data.item: "flips" "elm.flip.content"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + MP_LIST_THUMBNAIL_INNER_LINE + + part { name: "elm.icon.storage"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 0; to: "elm.icon"; } + rel2 { relative: 1 0; to: "elm.icon"; } + min: 46 46; + align: 1 0; + fixed: 1 1; + } + } + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.text.3"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_154_INC GENLIST_SIZE_48_INC; + fixed: 1 1; + rel1 { + relative: 0.0 0.5; + to: "elm.padding.right"; + } + rel2 { + relative: 0.0 0.5; + to: "elm.padding.right"; + } + align: 1.0 0.5; + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.padding.text3.left"; + clip_to: "disclip"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_32_INC 0; + fixed: 1 0; + rel1.to_x: "elm.text.3"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.text.3"; + } + align: 1.0 0.5; + visible: 0; + } + } + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + text { + style: "genlist_textblock_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + max: 720 GENLIST_SIZE_48_INC; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text.3"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + target: "elm.text.3"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_3TEXT_1ICON + } + } + +group { name: "elm/genlist/item/music_player/1icon.2text/default"; + alias: "elm/genlist/item_odd/music_player/1icon.2text/default"; + alias: "elm/genlist/item_compress/music_player/1icon.2text/default"; + alias: "elm/genlist/item_compress_odd/music_player/1icon.2text/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "contents" "elm.icon"; + data.item: "flips" "elm.flip.content"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + MP_LIST_THUMBNAIL_INNER_LINE + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + visible: 0; + } + } + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.text2.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.0; + text { + style: "genlist_textblock_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.padding.text2.left"; + clip_to: "disclip"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + rel1.to_x: "elm.text.2"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.text.2"; + } + align: 1.0 0.5; + visible: 0; + } + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC 0; + fixed: 1 1; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + align: 1.0 0.0; + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_2TEXT_1ICON + } + } + + group { name: "elm/genlist/item/music_player/2text/default"; + alias: "elm/genlist/item_odd/music_player/2text/default"; + alias: "elm/genlist/item_compress/music_player/2text/default"; + alias: "elm/genlist/item_compress_odd/music_player/2text/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.3"; + data.item: "flips" "elm.flip.content"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + + part { name: "elm.text.3"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_154_INC GENLIST_SIZE_48_INC; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.text.1"; + } + align: 1.0 0.0; + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.padding.text3.left"; + clip_to: "disclip"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_32_INC 0; + fixed: 1 0; + rel1.to_x: "elm.text.3"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.text.3"; + } + align: 1.0 0.5; + visible: 0; + } + } + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.text3.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.0; + text { + style: "genlist_textblock_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.bottom"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text.3"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + target: "elm.text.3"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_3TEXT + } + } + group { name: "elm/genlist/item/music_player/2text.2/default"; + alias: "elm/genlist/item_odd/music_player/2text.2/default"; + alias: "elm/genlist/item_compress/music_player/2text.2/default"; + alias: "elm/genlist/item_compress_odd/music_player/2text.2/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "flips" "elm.flip.content"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + text { + style: "genlist_textblock_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_2TEXT + } + } + + group { name: "elm/genlist/item/music_edit_default/default"; + alias: "elm/genlist/item_odd/music_edit_default/default"; + alias: "elm/genlist/item_compress/music_edit_default/default"; + alias: "elm/genlist/item_compress_odd/music_edit_default/default"; + data.item: "stacking" "above"; + data.item: "decorate_contents" "elm.edit.icon.1 elm.edit.icon.2"; + + images { + image: "01_list_reorder_bg_above.png" COMP; + image: "01_list_reorder_bg_below.png" COMP; + } + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + scale: 1; + description { state: "default" 0.0; + color: MP_GENLIST_BG_COLOR; + } + } + GENLIST_PART_PADDING_TOP( 0 ) + GENLIST_PART_PADDING_BOTTOM( 0 ) + GENLIST_PART_PADDING_RIGHT( 0 ) + + part { name: "elm.padding.reorder"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel2.relative: 0.0 1.0; + align: 1.0 0.0; + } + description { state: "reorder" 0.0; + inherit: "default" 0.0; + align: 0.0 0.0; + } + } + part { name: "elm.decorate_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.reorder"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_y: "elm.padding.bottom"; + } + color: MP_GENLIST_BG_COLOR; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: GENLIST_PART_LIST_PRESS_COLOR_INC; + } + } + + part { name: "elm.padding.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.reorder"; + } + rel2.to_x: "elm.padding.reorder"; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + + part { name: "elm.edit.icon.1"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 1.0 0.5; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + } + description { state: "enabled" 0.0; + inherit: "default" 0.0; + align: 0.0 0.5; + } + } + + part { name: "elm.padding.icon1.right"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.edit.icon.1"; + } + rel2.to_x: "elm.edit.icon.1"; + align: 0.0 0.0; + } + } + + part { name: "elm.swallow.decorate.content"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon1.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.2 0.0; + to_x: "elm.edit.icon.2"; + to_y: "elm.padding.bottom"; + } + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { state: "flipped" 0.0; + inherit: "default" 0.0; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.3 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + } + } + part { name: "elm.padding.icon2.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.swallow.decorate.content"; + } + rel2.to_x: "elm.swallow.decorate.content"; + align: 0.0 0.0; + } + } + + part { name: "elm.edit.icon.2"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + fixed: 1 0; + align: 0.0 0.5; + visible: 1; + rel1 { + relative: 1.0 0.0; + offset: -GENLIST_SIZE_16_INC GENLIST_SIZE_6_INC; + } + rel2 { + relative: 1.0 1.0; + offset: -GENLIST_SIZE_16_INC -GENLIST_SIZE_8_INC; + } + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { state: "enabled" 0.0; + inherit: "default" 0.0; + align: 1.0 0.5; + } + } + + part { name: "bottom_line"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 0; + fixed: 0 1; + visible: 1; + color: GENLIST_PART_LIST_LINE_COLOR_INC; + rel1 { + relative: 0.0 1.0; + to_x: "elm.decorate_bg"; + offset: 0 -1; + } + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "enabled" 0.0; + inherit: "default" 0.0; + min: 0 GENLIST_SIZE_8_INC; + fixed: 0 1; + } + } + part { name: "reorder_glow_above"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + rel1.relative: 0.0 -0.3; + rel2.relative: 1.0 0.0; + image { + normal: "01_list_reorder_bg_above.png"; + } + fill.smooth: 0; + } + description { state: "reorder" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "reorder_glow_below"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + rel1.relative: 0.0 1.0; + rel2.relative: 1.0 1.3; + image { + normal: "01_list_reorder_bg_below.png"; + } + fill.smooth: 0; + } + description { state: "reorder" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "elm.decorate_bg"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + transition: LINEAR 0.1; + target: "elm.decorate_bg"; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + // decorate mode enable signal + program { name: "decorate_mode_enabled_effect"; + signal: "elm,state,decorate,enabled,effect"; + source: "elm"; + action: STATE_SET "enabled" 0.0; + transition: DECELERATE 0.7; + target: "elm.edit.icon.1"; + target: "elm.edit.icon.2"; + target: "bottom_line"; + } + program { name: "decorate_mode_disabled_effect"; + signal: "elm,state,decorate,disabled,effect"; + source: "elm"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.7; + target: "elm.edit.icon.1"; + target: "elm.edit.icon.2"; + target: "bottom_line"; + } + program { name: "decorate_mode_enabled"; + signal: "elm,state,decorate,enabled"; + source: "elm"; + action: STATE_SET "enabled" 0.0; + target: "elm.edit.icon.1"; + target: "elm.edit.icon.2"; + target: "bottom_line"; + } + program { name: "decorate_mode_disabled"; + signal: "elm,state,decorate,disabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.edit.icon.1"; + target: "elm.edit.icon.2"; + target: "bottom_line"; + } + + // reorder signal + program { name: "reorder_enabled"; + signal: "elm,state,reorder,enabled"; + source: "elm"; + action: STATE_SET "reorder" 0.0; + target: "elm.padding.reorder"; + } + program { name: "reorder_disabled"; + signal: "elm,state,reorder,disabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.padding.reorder"; + } + + program { name: "reorder_enabled_effect"; + signal: "elm,state,reorder_enabled_effect"; + source: "elm"; + action: STATE_SET "reorder" 0.0; + transition: DECELERATE 0.7; + target: "elm.padding.reorder"; + } + program { name: "reorder_disabled_effect"; + signal: "elm,state,reorder_disabled_effect"; + source: "elm"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.7; + target: "elm.padding.reorder"; + } + // reorder glow + program { + name: "show_reorder_glow"; + signal: "elm,action,item,reorder_start"; + source: "elm"; + action: STATE_SET "reorder" 0.0; + target: "reorder_glow_above"; + target: "reorder_glow_below"; + } + program { + name: "hide_reorder_glow"; + signal: "elm,action,item,reorder_end"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "reorder_glow_above"; + target: "reorder_glow_below"; + } + // flip + program { + name: "enable_flip_mode"; + signal: "elm,state,flip,enabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "elm.edit.icon.2"; + after: "enable_flip_mode_next"; + } + program { + name: "enable_flip_mode_next"; + action: STATE_SET "flipped" 0.0; + transition: DECELERATE 0.5; + target: "elm.swallow.decorate.content"; + } + program { + name: "disable_flip_mode"; + signal: "elm,state,flip,disabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; + target: "elm.swallow.decorate.content"; + target: "elm.edit.icon.2"; + } + } + } + + group { name: "elm/genlist/item/music_player/mp_info/default"; + + alias: "elm/genlist/item_odd/music_player/mp_info/default"; + alias: "elm/genlist/item_compress/music_player/mp_info/default"; + alias: "elm/genlist/item_compress_odd/music_player/mp_info/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.title"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + + part { name: "elm.text.title"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_40_INC; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: MP_MAIN_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + } + } + } + + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/track/default"; + + alias: "elm/genlist/item_odd/music_player/track/default"; + alias: "elm/genlist/item_compress/music_player/track/default"; + alias: "elm/genlist/item_compress_odd/music_player/track/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.title"; + data.item: "contents" "elm.swallow.icon elm.swallow.end elm.swallow.btn.bg elm.swallow.btn"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + + part { name: "elm.text.title"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_40_INC; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + offset: (-GENLIST_SIZE_60_INC) 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: MP_MAIN_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + } + } + } + part { name: "elm.swallow.btn.bg"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + fixed: 0 0; + align: 1 0.5; + min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC; + max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC; + rel1 { + relative: 1.0 0.0; + to: "elm.text.title"; + } + rel2 { + relative: 1.0 1.0; + offset: (-GENLIST_PADDING_10_INC) 0; + to_x: "elm.padding.right"; + to_y: "elm.text.title"; + } + } + } + part { name: "elm.swallow.btn"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + fixed: 0 0; + align: 0 0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.btn.bg"; + } + rel2 { + relative: 1.0 1.0; + to: "elm.swallow.btn.bg"; + } + } + } + part { name: "elm.swallow.end"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1.to_x: "elm.padding.right"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + } + } + } + + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/folder_track/default"; + alias: "elm/genlist/item_odd/music_player/folder_track/default"; + alias: "elm/genlist/item_compress/music_player/folder_track/default"; + alias: "elm/genlist/item_compress_odd/music_player/folder_track/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "contents" "elm.icon elm.icon.storage"; + data.item: "flips" "elm.flip.content"; + + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + MP_LIST_THUMBNAIL_INNER_LINE + + part { name: "elm.icon.storage"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 0; to: "elm.icon"; } + rel2 { relative: 1 0; to: "elm.icon"; } + min: 46 46; + align: 1 0; + fixed: 1 1; + } + } + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + visible: 0; + } + } + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.text2.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.0; + text { + style: "genlist_textblock_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + part { name: "elm.padding.text2.left"; + clip_to: "disclip"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_16_INC 0; + fixed: 1 0; + rel1.to_x: "elm.text.2"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.text.2"; + } + align: 1.0 0.5; + visible: 0; + } + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC 0; + fixed: 1 1; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + align: 1.0 0.0; + color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_PRESS_COLOR_INC; + } + GENLIST_DESCRIPTION_INVISIBLE_SELECTED + GENLIST_DESCRIPTION_FLIP_ENABLED + } + + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_2TEXT_1ICON + } + } + +group { name: "elm/genlist/item/music_player/related_video/default"; + + alias: "elm/genlist/item_odd/music_player/related_video/default"; + alias: "elm/genlist/item_compress/music_player/related_video/default"; + alias: "elm/genlist/item_compress_odd/music_player/related_video/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "contents" "elm.swallow"; + + parts { + GENLIST_PART_BASE( 283 ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + + part { name: "elm.swallow"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + } + } + + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/tag_btn/default"; + + alias: "elm/genlist/item_odd/music_player/tag_btn/default"; + alias: "elm/genlist/item_compress/music_player/tag_btn/default"; + alias: "elm/genlist/item_compress_odd/music_player/tag_btn/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.tag"; + //data.item: "texts" "elm.icon.tag"; + + parts { + GENLIST_PART_BASE( 112 ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_32_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + GENLIST_PART_BOTTOM_LINE + part { name: "top_line"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: MP_BOTTOM_LINE_COLOR; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 0.0; + } + } + } + + part { name: "elm.text.tag"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_42_INC; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: 36; + min: 0 1; + align: 0.0 0.5; + } + } + } + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/info_header/default"; + + alias: "elm/genlist/item_odd/music_player/info_header/default"; + alias: "elm/genlist/item_compress/music_player/info_header/default"; + alias: "elm/genlist/item_compress_odd/music_player/info_header/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1"; + //data.item: "texts" "elm.icon.tag"; + + parts { + GENLIST_PART_BASE( 70 ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_PADDING_TOP( 10 ) + GENLIST_PART_PADDING_BOTTOM( 0 ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_42_INC; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: 36; + min: 0 1; + align: 0.0 0.5; + text: "Media info"; + } + } + } + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; + alias: "elm/genlist/item_compress_odd/multiline/music_player/info/default"; + alias: "elm/genlist/item_compress/multiline.music_player/info/default"; + alias: "elm/genlist/item_compress_odd/multiline.music_player/info/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + + styles { + style { name: "name_style"; + base: "font=SLP:style=Roman font_size=36 color="MP_MAIN_TEXT_01_STYLE_COLOR" wrap=char text_class=list_item"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + tag: "b" "+ font=SLP:style=Bold"; + } + } + + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: MP_GENLIST_BG_COLOR; + } + } + GENLIST_PART_BG_IMAGE + GENLIST_PART_PADDING_TOP( 0 ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_42_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + color: MP_SUB_TEXT_01_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: 32; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_SELECTED_COLOR_INC; + } + } + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + text { + style: "name_style"; + min: 0 1; + align: 0.0 0.5; + } + } + } + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +#define RICH_INFO_STARS_BG_W 208 +#define RICH_INFO_STARS_BG_H 48 +#define RICH_INFO_STARS_W_H 32 +#define RICH_INFO_STARS_GAP 4 +#define RICH_INFO_STARS_SX(pos) (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos) +#define RICH_INFO_STARS_EX(pos) (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos+RICH_INFO_STARS_W_H) + +group { name: "elm/genlist/item/music_player/discography/default"; + + alias: "elm/genlist/item_odd/music_player/discography/default"; + alias: "elm/genlist/item_compress/music_player/discography/default"; + alias: "elm/genlist/item_compress_odd/music_player/discography/default"; + data.item: "stacking" "above"; data.item: "selectraise" "on"; - data.item: "texts" "elm.text.1 elm.text.2"; - - styles { - style { name: "name_style"; - base: "font=SLP:style=Roman font_size=36 color=#A6A6A6FF wrap=char text_class=list_item"; - tag: "br" "\n"; - tag: "ps" "ps"; - tag: "tab" "\t"; - tag: "b" "+ font=SLP:style=Bold"; - } - } + data.item: "texts" "elm.text.title elm.text.time"; + data.item: "contents" "elm.icon elm.icon.star1 elm.icon.star2 elm.icon.star3 elm.icon.star4 elm.icon.star5 elm.icon.btn"; parts { - part { name: "base"; + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC ) + GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + + part { name: "elm.padding.icon.right"; + clip_to: "disclip"; type: RECT; - repeat_events: 1; + scale: 1; description { state: "default" 0.0; - color: MP_GENLIST_BG_COLOR; + min: GENLIST_PADDING_10_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + visible: 0; + } + } + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC; + fixed: 1 1; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + } + } + } + + part { name: "elm.text.title"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + align: 0 0.0; + min: 0 60; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.icon.btn"; + to_y: "elm.padding.top"; + } + color: MP_MAIN_TEXT_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: GENLIST_FONT_35_INC; + min: 0 1; + align: 0.0 0.5; + } + } + } + + part { name: "elm.text.time"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + align: 0 0; + min: GENLIST_SIZE_96_INC 0; + rel1 { + relative: 0.0 1.0; + to: "elm.text.title"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.text.title"; + to_y: "elm.padding.bottom"; + } + color, 151 150 150 255; + text { + font: FONT_STYLE_ROMAN; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + } + } + } + + part{ + name, "star_bg"; + type, RECT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + align: 0 0; + min: RICH_INFO_STARS_BG_W 0; + rel1 { relative: 1.0 8/48; to, "elm.text.time";} + rel2 { relative: 1.0 40/48;to , "elm.text.time";} + color: 0 0 0 0; + } + } + + part{name,"elm.icon.star1"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(0)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(0)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part{name,"elm.icon.star2"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(1)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(1)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part{name,"elm.icon.star3"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(2)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(2)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part{name,"elm.icon.star4"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(3)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(3)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part{name,"elm.icon.star5"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(4)/RICH_INFO_STARS_BG_W 0.0; + to , "star_bg"; + } + rel2 { relative: RICH_INFO_STARS_EX(4)/RICH_INFO_STARS_BG_W 1.0; + to , "star_bg"; + } + } + } + + part { name: "elm.icon.btn"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + // TODO: enable btn after buy function implemented... + // min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC; + //max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC; + min: 1 GENLIST_SIZE_80_INC; + max: 1 GENLIST_SIZE_80_INC; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } } } + + GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.time"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.time"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + +group { name: "elm/genlist/item/music_player/1text/default"; + + alias: "elm/genlist/item_odd/music_player/1text/default"; + alias: "elm/genlist/item_compress/music_player/1text/default"; + alias: "elm/genlist/item_compress_odd/music_player/1text/default"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2 elm.text.3"; + + parts { + GENLIST_PART_BASE( 90 ) GENLIST_PART_BG_IMAGE - GENLIST_PART_PADDING_TOP( 0 ) - GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC ) - GENLIST_PART_PADDING_LEFT( 0 ) + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + part { name: "elm.text.1"; clip_to: "disclip"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; - min: 0 GENLIST_SIZE_42_INC; + min: 0 40; fixed: 0 1; + align: 0.0 0.0; rel1 { relative: 1.0 1.0; to_x: "elm.padding.left"; @@ -1347,11 +5638,11 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; } rel2 { relative: 0.0 1.0; + offset: 0 0; to_x: "elm.padding.right"; to_y: "elm.padding.top"; } - align: 0.0 0.0; - color: GENLIST_PART_TEXT_COLOR_INC; + color: 255 255 255 255; text { font: FONT_STYLE_ROMAN; size: 32; @@ -1359,35 +5650,70 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; align: 0.0 0.5; } } - description { state: "selected" 0.0; - inherit: "default" 0.0; - color: GENLIST_PART_TEXT_SELECTED_COLOR_INC; - } } part { name: "elm.text.2"; clip_to: "disclip"; - type: TEXTBLOCK; + type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; + min: 0 30; + fixed: 0 1; + align: 0.0 0.0; rel1 { - relative: 1.0 1.0; + relative: 1.0 1.0; to_x: "elm.padding.left"; to_y: "elm.text.1"; } rel2 { - relative: 0.0 0.0; + relative: 0 1; + offset: 0 0; to_x: "elm.padding.right"; - to_y: "elm.padding.bottom"; + to_y: "elm.text.1"; } + color: MP_SUB_TEXT_COLOR; text { - style: "name_style"; + font: FONT_STYLE_MEDIUM; + size: 22; min: 0 1; align: 0.0 0.5; } } } - GENLIST_PART_DISCLIP + part { name: "elm.text.3"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 40; + fixed: 1 1; + align: 1.0 0.0; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: 229 144 30 255; + text { + font: FONT_STYLE_ROMAN; + size: 18; + min: 1 1; + align: 1.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + GENLIST_PART_DISCLIP } programs { program { name: "go_active"; @@ -1395,16 +5721,14 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; source: "elm"; action: STATE_SET "selected" 0.0; target: "bg_image"; - target: "elm.text.1"; - target: "elm.text.2"; + target: "elm.text.3"; } program { name: "go_passive"; signal: "elm,state,unselected"; source: "elm"; action: STATE_SET "default" 0.0; target: "bg_image"; - target: "elm.text.1"; - target: "elm.text.2"; + target: "elm.text.3"; transition: LINEAR 0.1; } program { name: "go_disabled"; @@ -1422,7 +5746,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; } } -#define GENLIST_PART_INDEX_LIST_BASE_EVENT_INC \ + #define GENLIST_GROUP_PART_BASE_EVENT_INC \ part { name: "base_event";\ type: RECT;\ repeat_events: 0;\ @@ -1430,8 +5754,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; color: 0 0 0 0;\ }\ } -#define GENLIST_PART_FONT_INDEX_LIST_COLOR_INC 195 195 195 255 -#define GENLIST_DIALOGUE_GROUP_BG_COLOR_INC 121 121 121 255 + #define GENLIST_GROUP_PART_TEXT_COLOR_INC 255 255 255 255 group { name: "elm/genlist/item/music_player/grouptitle/default"; alias: "elm/genlist/item_odd/music_player/grouptitle/default"; @@ -1441,23 +5764,23 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; data.item: "stacking" "above"; data.item: "selectraise" "on"; data.item: "texts" "elm.text"; - data.item: "treesize" "GENLIST_TREESIZE_32_INC"; + data.item: "treesize" "20"; parts { - GENLIST_PART_INDEX_LIST_BASE_EVENT_INC - GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) - GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) + GENLIST_GROUP_PART_BASE_EVENT_INC + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) part { name: "rect"; type: RECT; repeat_events: 1; scale: 1; description { state: "default" 0.0; - min: 0 GENLIST_HEIGHT_49_INC; - color: GENLIST_DIALOGUE_GROUP_BG_COLOR_INC; + min: 0 30; + color: 121 121 121 255; } description { state: "alpha_off" 0.0; - min: 0 GENLIST_SIZE_48_INC; - color: GENLIST_DIALOGUE_GROUP_BG_COLOR_INC; + min: 0 30; + color: 121 121 121 0; } } @@ -1475,10 +5798,10 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; offset: 0 0; to_x: "elm.padding.right"; } - color: GENLIST_PART_FONT_INDEX_LIST_COLOR_INC; + color: GENLIST_GROUP_PART_TEXT_COLOR_INC; text { font: "SLP:style=Medium"; - size: GENLIST_FONT_32_INC; + size: 32; min: 1 1; align: 0.0 0.5; } @@ -1507,6 +5830,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; } } + /* add by rocket.he for dialogue genlist style */ group { name : "elm/genlist/item/music_player/dialogue_title/default"; alias: "elm/genlist/item_odd/music_player/dialogue_title/default"; alias: "elm/genlist/item_compress/music_player/dialogue_title/default"; @@ -1517,9 +5841,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; data.item: "texts" "elm.text.1 elm.text.2 elm.text.3"; data.item: "contents" "elm.icon"; data.item: "treesize" "34"; - images { - image: "00_list_bar_press_1x80.png" COMP; - } + parts { part { name: "base"; type: RECT; @@ -1533,8 +5855,8 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; GENLIST_PART_PADDING_TOP( 9 ) GENLIST_PART_PADDING_BOTTOM( 9 ) - GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC ) - GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC ) GENLIST_PART_BOTTOM_LINE part { name: "elm.padding.icon.right"; @@ -1542,7 +5864,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; type: RECT; scale: 1; description { state: "default" 0.0; - min: GENLIST_PADDING_10_INC 0; + min: GENLIST_PADDING_16_INC 0; fixed: 1 0; rel1 { relative: 1.0 0.0; @@ -1579,7 +5901,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; mouse_events: 0; scale: 1; description { state: "default" 0.0; - min: 0 26; + min: 0 42; fixed: 0 1; align: 0.0 0.0; rel1 { @@ -1608,7 +5930,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; mouse_events: 0; scale: 1; description { state: "default" 0.0; - min: 0 GENLIST_SIZE_42_INC; + min: 0 GENLIST_SIZE_48_INC; fixed: 0 1; align: 0.0 0.0; rel1 { @@ -1669,6 +5991,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; } } + /* add by rocket.he for album title */ group { name : "elm/genlist/item/music_player/album_title/default"; alias: "elm/genlist/item_odd/music_player/album_title/default"; alias: "elm/genlist/item_compress/music_player/album_title/default"; @@ -1679,9 +6002,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; data.item: "texts" "elm.text.1 elm.text.3"; data.item: "contents" "elm.icon elm.text.swallow"; data.item: "treesize" "34"; - images { - image: "00_list_bar_press_1x80.png" COMP; - } + parts { part { name: "base"; type: RECT; @@ -1825,3 +6146,4 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default"; } } +#endif \ No newline at end of file diff --git a/layout/mp-library.edc b/layout/mp-library.edc index 3d4ba95..5c23aa4 100755 --- a/layout/mp-library.edc +++ b/layout/mp-library.edc @@ -1,20 +1,4 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - + /* main size */ #define MAIN_W 480 #define MAIN_H 800 @@ -33,6 +17,7 @@ /* indicator */ #define IND_H_R (38.0/MAIN_H) +//#define IND_H_P (MAIN_HEIGHT * IND_H_R) /* tab */ #define TAB_H_R (125/MAIN_H) @@ -71,7 +56,7 @@ #define NEW_INDICATOR 52/MAIN_H #define NOW_PLAYING_H 100 -#define BG_COLOR 37 37 37 255 +#define BG_COLOR 236 240 242 255 #define SEARCHBAR_H_INC 107 @@ -85,79 +70,6 @@ images { collections { #include "mp-no-contents.edc" - group { - name: "control_layout"; - parts { - part { name: "background"; - type: RECT; - mouse_events: 0; - description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; } - color: BG_COLOR; - } - } - part { - name : "elm.swallow.controlbar"; - type: SWALLOW; - mouse_events: 1; - scale: 1; - description { - state: "default" 0.0; - align: 0 0; - min: 0 CONTROLBAR_LARGE_HEIGHT_INC; - fixed: 0 1; - visible: 0; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 1.0 0.0;} - - } - description { - state: "show" 0.0; - inherit: "default" 0.0; - visible: 1; - } - } - - part { - name : "elm.swallow.content"; - type: SWALLOW; - mouse_events: 1; - scale: 1; - description { - state: "default" 0.0; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 1.0 1.0;} - } - description { - state: "show" 0.0; - rel1 { relative: 0.0 1.0; to_y: "elm.swallow.controlbar";} - rel2 { relative: 1.0 1.0;} - } - } - } - - programs { - program { - name : "show_control"; - signal : "show.control"; - source : "music_app"; - action : STATE_SET "show" 0.0; - target : "elm.swallow.content"; - target : "elm.swallow.controlbar"; - transition: LINEAR 0.3; - } - program { - name : "hide_control"; - signal : "hide.control"; - source : "music_app"; - action : STATE_SET "default" 0.0; - target : "elm.swallow.content"; - target : "elm.swallow.controlbar"; - } - } - } group { name: "main_layout"; @@ -252,12 +164,12 @@ collections { type: SWALLOW; scale: 1; description { - state: "default" 0.0; - align: 0.0 0.0; - fixed: 0 1; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 1.0 0.0;} - min: 0 SEARCHBAR_H_INC; + state: "default" 0.0; + align: 0.0 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0;} + min: 0 SEARCHBAR_H_INC; } description { state: "hide" 0.0; @@ -399,6 +311,17 @@ collections { color: 0 0 0 0; } } + /* //hjkim, 100427, removed, unneeded part + part { + name: "indicator"; + mouse_events:0; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + } + } + */ part { name: "img_selall"; mouse_events: 0; @@ -615,12 +538,45 @@ collections { rel2 { relative: 1.0 1.0; offset: -1 -1;} } } + /* //hjkim, 100427, removed, unneeded part + part { + name: "tab"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { relative: 0.0 NEW_INDICATOR; } + rel2 { relative: 1.0 TAB_H_R; } + } + description { + state: "delete" 0.0; + visible: 0; + } + description { + state: "album_tracks" 0.0; + visible: 0; + } + description { + state: "artist_tracks" 0.0; + visible: 0; + } + description { + state: "add_to_plst" 0.0; + visible: 0; + } + description { + state: "plst_tracks" 0.0; + visible: 0; + } + } + */ part { name: "plst_header"; type: SWALLOW; description { state: "default" 0.0; visible: 0; + //rel1 { relative: 0.0 HEAD_SY; } + //rel2 { relative: 1.0 HEAD_EY; } } description { state: "delete" 0.0; @@ -650,6 +606,8 @@ collections { description { state: "default" 0.0; visible: 0; + //rel1 { relative: 0.0 HEAD_SY; } + //rel2 { relative: 1.0 HEAD_EY; } } description { state: "delete" 0.0; @@ -658,6 +616,8 @@ collections { description { state: "album_tracks" 0.0; visible: 1; + //rel1 { relative: 0.0 HEAD_SY; } + //rel2 { relative: 1.0 HEAD_EY; } } description { state: "artist_tracks" 0.0; @@ -680,6 +640,7 @@ collections { description{ state: "default" 0.0; visible: 0; + //rel1{relative: 0.0 0.0; to: indicator;} rel1{relative: 0.0 0.0;} rel2{relative: 1.0 TITLEBAR_H_R; offset: -1 -1; to: background;} } @@ -710,6 +671,17 @@ collections { visible: 0; } } + /* //hjkim, 100427, removed, unneeded part + part { + name: "softkey"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { relative: 0.0 SOFTKEY_SY; } + rel2 { relative: 1.0 1.0; } + } + } + */ } programs { @@ -725,6 +697,7 @@ collections { source: "LIBRARY"; action: STATE_SET "delete" 0.0; target: "list"; + //target: "tab"; target: "plst_header"; target: "album_header"; target: "title_bar"; @@ -738,6 +711,7 @@ collections { source: "LIBRARY"; action: STATE_SET "add_to_plst" 0.0; target: "list"; + //target: "tab"; target: "plst_header"; target: "album_header"; target: "title_bar"; @@ -751,6 +725,7 @@ collections { source: "LIBRARY"; action: STATE_SET "album_tracks" 0.0; target: "list"; + //target: "tab"; target: "plst_header"; target: "album_header"; target: "title_bar"; @@ -765,6 +740,7 @@ collections { source: "LIBRARY"; action: STATE_SET "album_tracks" 0.0; target: "list"; + //target: "tab"; target: "plst_header"; target: "album_header"; target: "title_bar"; @@ -779,6 +755,7 @@ collections { source: "LIBRARY"; action: STATE_SET "artist_tracks" 0.0; target: "list"; + //target: "tab"; target: "plst_header"; target: "album_header"; target: "title_bar"; @@ -793,6 +770,7 @@ collections { source: "LIBRARY"; action: STATE_SET "plst_tracks" 0.0; target: "list"; + //target: "tab"; target: "plst_header"; target: "album_header"; target: "title_bar"; @@ -807,6 +785,7 @@ collections { source: "LIBRARY"; action: STATE_SET "default" 0.0; target: "list"; + //target: "tab"; target: "plst_header"; target: "album_header"; target: "title_bar"; @@ -886,8 +865,14 @@ images description { fixed: 1 1; state: "default" 0.0; + //visible: 0; + //min: SEARCH_ENTRY_C_LENGTH SEARCH_ENTRY_H; + //visible: 1; + //rel1 { relative: 0.0 0.0; offset: (SEARCH_ENTRY_C_R1_X) (SEARCH_ENTRY_C_R1_Y);to: "search_input_bg";} + //rel2 { relative: 0.0 0.0; offset: (SEARCH_ENTRY_C_R2_X) (SEARCH_ENTRY_C_R2_Y);to: "search_input_bg";} rel1 { relative, HEAD_TITLE_SX HEAD_TITLE_SY; offset, 0 0;} rel2 { relative, 1.0 HEAD_EY; offset, -10 -10;} + //image { normal: "01_search_input_field_bg_c.png"; } } description { state: "invisible" 0.0; @@ -1055,6 +1040,8 @@ images group { name: "album_items"; + //min: 480 101; + //max: 480 101; parts { part { name: "header"; @@ -1153,14 +1140,33 @@ images #define SEARCH_TEXT_NAME "search_txt" group { name: "search_entry"; + //min: MAIN_WIDTH SEARCHVIEW_H; + //max: MAIN_WIDTH SEARCHVIEW_H; parts { + /* + part { + name: "search_rect"; + type: RECT; + description { + min: MAIN_WIDTH SEARCHVIEW_H; + state: "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; } + rel2 { relative: 1.0 1.0; offset: 0 0; } + color: 0 0 0 0; + } + } + */ + /* Image bg */ part { name: "search_input_bg"; type: IMAGE; description { state: "default" 0.0; + /*min: MAIN_WIDTH SEARCHVIEW_H;*/ visible: 1; + //rel1 { relative: 0.0 0.0; offset: 0 SEARCHVIEW_Y;} + //rel2 { relative: 1.0 0; offset: 0 SEARCHVIEW_H;} rel1 { relative: 0.0 0.0; offset: 0 0;} rel2 { relative: 1.0 0; offset: 0 SEARCHVIEW_H;} image { normal: "01_search_input_bg.png"; } @@ -1216,6 +1222,8 @@ images state: "default" 0.0; min: SEARCH_BUTTON_W SEARCH_BUTTON_H; visible: 1; + //rel1 { relative: 0.0 0.0; offset: (SEARCH_BUTTON_R1_X) (SEARCH_BUTTON_R1_Y);to: "search_input_bg";} + //rel2 { relative: 1.0 0.0; offset: (SEARCH_BUTTON_R2_X) (SEARCH_BUTTON_R2_Y);to: "search_input_bg";} rel1 { relative: 0.0 0.0; offset: (SEARCH_BUTTON_R1_X) (SEARCH_BUTTON_R1_Y);} rel2 { relative: 0.0 0.0; offset: (SEARCH_BUTTON_R2_X) (SEARCH_BUTTON_R2_Y);} image { normal: "01_search_button.png"; } @@ -1287,6 +1295,73 @@ group { name: "library_controlbar"; parts { +/* + part { name: "bg"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + part { + name: "elm.swallow.view1"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar1";} + } + } + part { + name: "elm.swallow.view2"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar2";} + } + } + part { + name: "elm.swallow.tabbar"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + } + } + part { + name: "elm.swallow.toolbar1"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 74; + fixed: 0 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0;} + rel2 { relative: 1.0 1.0;} + } + } + part { + name: "elm.swallow.toolbar2"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + min: 0 86; + fixed: 0 1; + align: 0.5 1.0; + rel1 { relative: 0.0 1.0;} + rel2 { relative: 1.0 1.0;} + } + } +*/ + part { name: "elm.swallow.tabbar"; type: SWALLOW; @@ -1298,4 +1373,31 @@ group { } } +group { + name: "create_playlist"; + + parts { + part { name: "bg"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: BG_COLOR; + } + } + part { + name: "elm.swallow.content"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + } +} + } diff --git a/layout/mp-lrc.edc b/layout/mp-lrc.edc new file mode 100755 index 0000000..3ff8548 --- /dev/null +++ b/layout/mp-lrc.edc @@ -0,0 +1,179 @@ + +#define MP_LRC_BG_W 720 +#define MP_LRC_BG_H 602 +#define MP_LRC_BOX_PAD_TOP 42 +#define MP_LRC_BOX_PAD_LEFT 64 +#define MP_LRC_BOX_PAD_RIGHT 64 +#define MP_LRC_BOX_W (MP_LRC_BG_W-MP_LRC_BOX_PAD_LEFT-MP_LRC_BOX_PAD_RIGHT) +#define MP_LRC_BOX_H (MP_LRC_BG_H-MP_LRC_BOX_PAD_TOP) + +#define MP_LRC_LINE_W MP_LRC_BOX_W +#define MP_LRC_LINE_H 52 + +#define MP_LRC_BG_W_LANDSCAPE 720 +#define MP_LRC_BG_H_LANDSCAPE 150 +#define MP_LRC_BOX_PAD_TOP_LANDSCAPE 12 +#define MP_LRC_BOX_PAD_BOTTOM_LANDSCAPE 12 +#define MP_LRC_BOX_PAD_LEFT_LANDSCAPE 64 +#define MP_LRC_BOX_PAD_RIGHT_LANDSCAPE 64 +#define MP_LRC_BOX_W_LANDSCAPE (MP_LRC_BG_W_LANDSCAPE-MP_LRC_BOX_PAD_LEFT_LANDSCAPE-MP_LRC_BOX_PAD_RIGHT_LANDSCAPE) +#define MP_LRC_BOX_H_LANDSCAPE (MP_LRC_BG_H_LANDSCAPE-MP_LRC_BOX_PAD_TOP_LANDSCAPE-MP_LRC_BOX_PAD_BOTTOM_LANDSCAPE) + +#define MP_LRC_HEAD_LINE_W MP_LRC_BOX_W +#define MP_LRC_HEAD_LINE_W_LANDSCAPE MP_LRC_BOX_W +#define MP_LRC_HEAD_LINE_H 25 +#define MP_LRC_HEAD_LINE_H_LANDSCAPE 10 + +group{ + name: "mp_lrc_layout"; + + parts { + part { + name: "bg"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 204; + } + } + + part { + name: "lyric"; + type: SWALLOW; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 MP_LRC_BOX_PAD_TOP/MP_LRC_BG_H; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + } + } + } +} +group{ + name: "mp_lrc_layout_landscape"; + + parts { + part { + name: "bg"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 204; + } + } + + part { + name: "lyric"; + type: SWALLOW; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 MP_LRC_BOX_PAD_TOP_LANDSCAPE/MP_LRC_BG_H_LANDSCAPE; to: "bg";} + rel2 { relative: 1.0 (MP_LRC_BOX_PAD_TOP_LANDSCAPE+MP_LRC_BOX_H_LANDSCAPE)/MP_LRC_BG_H_LANDSCAPE; to: "bg";} + } + } + } +} + +group { + name, "mp_lrc_line"; + + styles + { + style { + name: "lyricstyle"; + base: "font=system_content font_size=32 align=center color=#7e7d7d wrap=char"; + tag: "br" "\n"; + tag: "tab" "\t"; + tag: "em" "+ font=system_content:style=Oblique"; + tag: "b" "+ font=system_content:style=Bold"; + tag: "link" "+ color=#800 underline=on underline_color=#8008"; + tag: "hilight" "+ font=system_content:style=Bold"; + } + } + + parts { + part { name, "background"; + type, RECT; + description { + state, "default" 0.0; + color, 0 0 0 0; + } + } + + part { + name: "txt"; + scale: 1; + type: TEXTBLOCK; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + min: MP_LRC_LINE_W MP_LRC_LINE_H; + max: MP_LRC_LINE_W 10000; + rel1 { relative, 0.0 0.0; to, background; } + rel2 { relative, 1.0 0.0; to, background; } + text { + style: "lyricstyle"; + min: 0 1; + } + } + } + + } +} + +group { + name: "mp_lrc_head"; + min: MP_LRC_HEAD_LINE_W MP_LRC_HEAD_LINE_H; + + parts { + + part { name: "start"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + min: 0 MP_LRC_HEAD_LINE_H; + rel1 { relative: 0.0 0.0; + offset : 0 0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + } +} +group { + name: "mp_lrc_head_landscape"; + min: MP_LRC_HEAD_LINE_W_LANDSCAPE MP_LRC_HEAD_LINE_H_LANDSCAPE; + + parts { + + part { name: "start"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + min: 0 MP_LRC_HEAD_LINE_H_LANDSCAPE; + rel1 { relative: 0.0 0.0; + offset : 0 0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + } +} \ No newline at end of file diff --git a/layout/mp-minicontroller.edc b/layout/mp-minicontroller.edc new file mode 100755 index 0000000..eeff744 --- /dev/null +++ b/layout/mp-minicontroller.edc @@ -0,0 +1,716 @@ + +#define MINI_W 720 +#define MINI_H 170 +#define TOP_PADDING 10 +#define LEFT_PADDING 8 +#define RIGHT_PADDING 16 +#define BOTTOM_PADDING 12 +#define ALBUM_ART_WIDTH 105 +#define ALBUM_ART_HEIGHT 105 +#define BUTTON_SIZE_MIN_MAX 62 46 +#define BUTTON_EXPAND_OFFSET 15 + +#define ICON_PLAY "Q02_QuickPanel_mini_music_player_controller_play.png" +#define ICON_PAUSE "Q02_QuickPanel_mini_music_player_controller_pause.png" +#define ICON_REW "Q02_QuickPanel_mini_music_player_controller_prev.png" +#define ICON_FF "Q02_QuickPanel_mini_music_player_controller_next.png" + +#define ICON_REPEAT_ALL "Q02_Quickpanel_mini_music_player_repeat_all.png" +#define ICON_REPEAT_ONE "Q02_Quickpanel_mini_music_player_repeat_once.png" +#define ICON_REPEAT_NONE "Q02_Quickpanel_mini_music_player_repeat_none.png" +#define ICON_SHUFFLE_ON "Q02_Quickpanel_mini_music_player_shuffle_on.png" +#define ICON_SHUFFLE_OFF "Q02_Quickpanel_mini_music_player_shuffle_off.png" + +#define IMG_BG_GRADIENT "Q02_QuickPanel_mini_music_player_gradient.png" +#define IMG_BG_GRADIENT_RIGHT "Q02_Quickpanel_mini_music_player_gradient_right.png" + +images { + image: ICON_PLAY COMP; + image: ICON_PAUSE COMP; + image: ICON_REW COMP; + image: ICON_FF COMP; + image: ICON_REPEAT_ALL COMP; + image: ICON_REPEAT_ONE COMP; + image: ICON_REPEAT_NONE COMP; + image: ICON_SHUFFLE_ON COMP; + image: ICON_SHUFFLE_OFF COMP; + image: IMG_BG_GRADIENT COMP; + image: IMG_BG_GRADIENT_RIGHT COMP; +} +collections { +group { + name: music-minicontroller; + + parts { + + part{ name: "bg"; + type : RECT; + scale : 1; + mouse_events: 0; + description { + state: "default" 0.0; + min : 0 MINI_H; + fixed: 0 1; + rel1{ relative : 0 0;} + rel2{ relative : 1 1;} + color : 20 20 20 102; + } + } + + part { name: "bg_image"; + type: SWALLOW; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "bg"; } + rel2 { relative: 1 1; to: "bg"; } + align: 0 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0 1; to: "bg"; } + min: 720 0; + fixed: 1 0; + } + } + part { name: "bg_image_gradient"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "bg_image"; + rel2.to: "bg_image"; + //image.normal: IMG_BG_GRADIENT; + } + } + + part { name: "bg_image_right"; + type: SWALLOW; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 1 0; to: "bg_image"; } + rel2 { relative: 1 1; to: "bg"; } + align: 0 0; + } + } + part { name: "bg_image_gradient_right"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "bg_image_right"; + rel2.to: "bg_image_right"; + image.normal: IMG_BG_GRADIENT_RIGHT; + } + } + + + + part { name: "padding.top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "bg"; } + rel2 { relative: 1 0; to: "bg"; } + min: 0 28; + fixed: 0 1; + align: 0 0; + visible: 0; + } + } + + part { name: "padding.left"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "bg"; } + rel2 { relative: 0 1; to: "bg"; } + min: LEFT_PADDING 0; + fixed: 1 0; + align: 0 0; + visible: 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 12 0; + } + } + + part { name: "padding.right"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 1 0; to: "bg"; } + rel2 { relative: 1 1; to: "bg"; } + min: RIGHT_PADDING 0; + fixed: 1 0; + align: 1 0; + visible: 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 20 0; + } + } + + part { name: "padding.bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 1; to: "bg"; } + rel2 { relative: 1 1; to: "bg"; } + min: 0 BOTTOM_PADDING; + fixed: 0 1; + align: 0 1; + visible: 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 0 22; + } + } + + part { name: "albumart_image"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + min : ALBUM_ART_WIDTH ALBUM_ART_HEIGHT; + fixed : 1 1; + rel1 { relative: 1 0.5; to_x: "padding.left"; to_y: "bg"; } + rel2 { relative: 1 0.5; to_x: "padding.left"; to_y: "bg"; } + align: 0 0.5; + } + } + + part { name: "padding.albumart.right"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 1 0; to_x: "albumart_image"; to_y: "bg"; } + rel2 { relative: 1 1; to_x: "albumart_image"; to_y: "bg"; } + min: 59 0; + fixed: 1 0; + align: 0 0; + visible: 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 194 0; + } + } + + part { name: "text_area"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 1 0; to_x: "padding.albumart.right"; to_y: "bg"; } + rel2 { relative: 0 0; to_x: "elapsed_time_area"; to_y: "bg"; } + min: 0 90; + fixed: 0 1; + align: 0 0; + visible: 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + rel2 { relative: 0 0; to_x: "padding_landscape_right"; to_y: "bg"; } + min: 0 70; + } + } + + part { name: "elm.text"; // title + type: TEXT; + mouse_events: 0; + scale: 1; + effect: SHADOW TOP_RIGHT; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "text_area"; } + rel2 { relative: 1 0; to: "text_area"; } + min: 0 48; + fixed: 0 1; + align: 0 0; + text { + font: "SLP:style=Light"; + size: 40; + align: 0.5 1.0; + } + color: 249 249 249 255; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + rel1.to: "text_area"; + rel2 { relative: 1 1; to: "text_area"; } + text.min: 0 0; + text.max: 1 0; + //text.align: 0.0 1.0; + } + } + + part { name: "padding_after_text"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 1; to: "elm.text"; } + rel2 { relative: 1 1; to: "elm.text"; } + min: 0 12; + fixed: 0 1; + align: 0 0; + visible: 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1 0; to: "elm.text"; } + rel2 { relative: 1 1; to: "elm.text"; } + min: 30 0; + fixed: 1 0; + } + } + + part { name: "elm.text.2"; // artist + type: TEXT; + mouse_events: 0; + scale: 1; + effect: SHADOW TOP_RIGHT; + description { state: "default" 0.0; + rel1 { relative: 0 1; to: "padding_after_text"; } + rel2 { relative: 1 1; to: "text_area"; } + align: 0.5 0.0; + text { + font: "SLP:style=Roman"; + size: 28; + align: 0.5 0.5; + } + color: 249 249 249 149; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + rel1 { relative: 1 0; to: "padding_after_text"; } + align: 0 0; + text.align: 0.0 1.0; + text.min: 0 0; + text.max: 1 0; + } + } + + part { name: "elapsed_time_area"; + type: RECT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "padding.right"; } + rel2 { relative: 0 1; to_x: "padding.right"; to_y: "elm.text";} + min: 70 0; + fixed: 1 0; + align: 1 0; + color: 0 255 0 100; + visible: 0; + } + } + + part { name: "elm.elapsed_time"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "elapsed_time_area"; } + rel2 { relative: 1 1; to: "elapsed_time_area"; } + color: 255 255 255 149; + text { + font: "SLP:style=Roman"; + style: "Roman"; + size: 26; + align: 1.0 1.0; + } + } + } + + part { name: "padding_landscape_right"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "padding.right"; } + rel2 { relative: 0 1; to: "padding.right"; } + min: 181 0; + fixed: 1 0; + align: 1 0; + visible: 0; + } + } + + part { name: "button_area"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 0; to_x: "padding.albumart.right"; to_y: "padding.bottom"; } + rel2 { relative: 0 0; to_x: "padding.right"; to_y: "padding.bottom"; } + min: 0 46; + fixed: 0 1; + align: 0 1; + visible: 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + rel2.to_x: "padding_landscape_right"; + } + } + + part { name: "repeat_btn_bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0.5; to: "button_area"; } + rel2 { relative: 0 0.5; to: "button_area"; } + min: 0 64; + fixed: 1 1; + align: 0 0.5; + visible: 0; + color: 255 0 0 200; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 64 64; + //visible: 1; + } + } + part { name: "repeat_btn"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "repeat_btn_bg"; } + rel2 { relative: 1 1; to: "repeat_btn_bg"; } + image.normal: ICON_REPEAT_ALL; + } + description { state: "one" 0.0; + inherit: "default" 0.0; + image.normal: ICON_REPEAT_ONE; + } + description { state: "none" 0.0; + inherit: "default" 0.0; + image.normal: ICON_REPEAT_NONE; + } + } + + part { name: "rewind_image_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0.5; to_x: "button_padding_1"; to_y: "play.pause.image_bg"; } + rel2 { relative: 0 0.5; to_x: "button_padding_1"; to_y: "play.pause.image_bg"; } + min: BUTTON_SIZE_MIN_MAX; + fixed: 1 1; + align: 1 0.5; + visible: 0; + } + } + + part { name: "rewind_image"; + type: IMAGE; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "rewind_image_bg"; } + rel2 { relative: 1 1; to: "rewind_image_bg"; } + image { normal: ICON_REW; } + } + } + + part { name: "rewind_button"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "rewind_image_bg"; offset: -BUTTON_EXPAND_OFFSET -BUTTON_EXPAND_OFFSET; } + rel2 { relative: 1 1; to: "rewind_image_bg"; offset: BUTTON_EXPAND_OFFSET BUTTON_EXPAND_OFFSET; } + color: 0 0 0 0; + } + } + + part { name: "button_padding_1"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "play.pause.image_bg"; } + rel2 { relative: 0 1; to: "play.pause.image_bg"; } + min: 111 0; + fixed: 1 0; + align: 1 0; + visible: 0; + } + } + + part { name: "play.pause.image_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0.5 0.5; to: "button_area"; } + rel2 { relative: 0.5 0.5; to: "button_area"; } + min: BUTTON_SIZE_MIN_MAX; + fixed: 1 1; + align: 0.5 0.5; + visible: 0; + color: 255 0 0 200; + } + } + + part { name: "play.pause.image"; + type: IMAGE; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "play.pause.image_bg"; } + rel2 { relative: 1 1; to: "play.pause.image_bg"; } + image { normal: ICON_PAUSE; } + } + description{ state: "pause" 0.0; + inherit : "default" 0.0; + image {normal: ICON_PLAY;} + } + + } + + part { name: "play_pause_button"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "play.pause.image_bg"; offset: -BUTTON_EXPAND_OFFSET -BUTTON_EXPAND_OFFSET; } + rel2 { relative: 1 1; to: "play.pause.image_bg"; offset: BUTTON_EXPAND_OFFSET BUTTON_EXPAND_OFFSET; } + color: 0 0 0 0; + } + } + + part { name: "button_padding_2"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 1 0; to: "play.pause.image_bg"; } + rel2 { relative: 1 1; to: "play.pause.image_bg"; } + min: 111 0; + fixed: 1 0; + align: 0 0; + visible: 0; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 115 0; + } + } + + part { name: "forward_image_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 0.5; to_x: "button_padding_2"; to_y: "play.pause.image_bg"; } + rel2 { relative: 1 0.5; to_x: "button_padding_2"; to_y: "play.pause.image_bg"; } + min: BUTTON_SIZE_MIN_MAX; + fixed: 1 1; + align: 0 0.5; + visible: 0; + } + } + + part { name: "forward_image"; + type: IMAGE; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "forward_image_bg"; } + rel2 { relative: 1 1; to: "forward_image_bg"; } + image { normal: ICON_FF; } + } + } + + part { name: "forward_button"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "forward_image_bg"; offset: -BUTTON_EXPAND_OFFSET -BUTTON_EXPAND_OFFSET; } + rel2 { relative: 1 1; to: "forward_image_bg"; offset: BUTTON_EXPAND_OFFSET BUTTON_EXPAND_OFFSET; } + color: 0 0 0 0; + } + } + + part { name: "shuffle_btn_bg"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 1 0.5; to: "button_area"; } + rel2 { relative: 1 0.5; to: "button_area"; } + min: 0 64; + fixed: 1 1; + align: 1S 0.5; + visible: 0; + color: 255 0 0 200; + } + description { state: "landscape" 0.0; + inherit: "default" 0.0; + min: 64 64; + //visible: 1; + } + } + part { name: "shuffle_btn"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "shuffle_btn_bg"; } + rel2 { relative: 1 1; to: "shuffle_btn_bg"; } + image.normal: ICON_SHUFFLE_ON; + } + description { state: "off" 0.0; + inherit: "default" 0.0; + image.normal: ICON_SHUFFLE_OFF; + } + } + } + + programs { + program { name: "press_rewind"; + signal: "mouse,down,1"; + source: "rewind_button"; + script{ + emit("clicked", "rew_btn_down"); + } + } + program { name: "normal_rewind"; + signal: "mouse,up,1"; + source: "rewind_button"; + script{ + emit("clicked", "rew_btn_up"); + } + } + program { name: "press_play"; + signal: "mouse,down,1"; + source: "play_pause_button"; + script{ + emit("clicked", "play"); + } + } + program { name: "press_fwd"; + signal: "mouse,down,1"; + source: "forward_button"; + script{ + emit("clicked", "ff_btn_down"); + } + } + program { name: "normal_fwd"; + signal: "mouse,up,1"; + source: "forward_button"; + script{ + emit("clicked", "ff_btn_up"); + } + } + program { name: "albumart_cb"; + signal: "mouse,clicked,1"; + source: "albumart_image"; + script{ + emit("clicked", "albumart"); + } + } + program { name: "set_pause_icon"; + signal: "set_pause"; + source: "play.pause.image"; + script{ + set_state(PART:"play.pause.image", "default", 0.0); + } + transition: LINEAR 0.1; + } + program { name: "set_play_icon"; + signal: "set_play"; + source: "play.pause.image"; + script{ + set_state(PART:"play.pause.image", "pause", 0.0); + } + transition: LINEAR 0.1; + } + program { name: "press_repeat"; + signal: "mouse,clicked,1"; + source: "repeat_btn"; + action: SIGNAL_EMIT "clicked" "repeat"; + } + program { name: "press_shuffle"; + signal: "mouse,clicked,1"; + source: "shuffle_btn"; + action: SIGNAL_EMIT "clicked" "shuffle"; + } + program { name: "set_repeat_icon_all"; + signal: "set_repeat_all"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "repeat_btn"; + } + program { name: "set_repeat_icon_one"; + signal: "set_repeat_one"; + source: "*"; + action: STATE_SET "one" 0.0; + target: "repeat_btn"; + } + program { name: "set_repeat_icon_none"; + signal: "set_repeat_none"; + source: "*"; + action: STATE_SET "none" 0.0; + target: "repeat_btn"; + } + program { name: "set_shuffle_icon_on"; + signal: "set_shuffle_on"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "shuffle_btn"; + } + program { name: "set_shuffle_icon_off"; + signal: "set_shuffle_off"; + source: "*"; + action: STATE_SET "off" 0.0; + target: "shuffle_btn"; + } + + /* landscape / portrait */ + program { name: "pgm_set_landscape_mode"; + signal: "sig_set_landscape_mode"; + source: "*"; + script { + set_state(PART:"padding.left", "landscape", 0.0); + set_state(PART:"padding.right", "landscape", 0.0); + set_state(PART:"padding.bottom", "landscape", 0.0); + set_state(PART:"padding.albumart.right", "landscape", 0.0); + set_state(PART:"text_area", "landscape", 0.0); + set_state(PART:"elm.text", "landscape", 0.0); + set_state(PART:"padding_after_text", "landscape", 0.0); + set_state(PART:"elm.text.2", "landscape", 0.0); + set_state(PART:"button_area", "landscape", 0.0); + set_state(PART:"repeat_btn_bg", "landscape", 0.0); + set_state(PART:"shuffle_btn_bg", "landscape", 0.0); + set_state(PART:"button_padding_1", "landscape", 0.0); + set_state(PART:"button_padding_2", "landscape", 0.0); + } + } + program { name: "pgm_set_portrait_mode"; + signal: "sig_set_portrait_mode"; + source: "*"; + script { + set_state(PART:"padding.left", "default", 0.0); + set_state(PART:"padding.right", "default", 0.0); + set_state(PART:"padding.bottom", "default", 0.0); + set_state(PART:"padding.albumart.right", "default", 0.0); + set_state(PART:"text_area", "default", 0.0); + set_state(PART:"elm.text", "default", 0.0); + set_state(PART:"padding_after_text", "default", 0.0); + set_state(PART:"elm.text.2", "default", 0.0); + set_state(PART:"button_area", "default", 0.0); + set_state(PART:"repeat_btn_bg", "default", 0.0); + set_state(PART:"shuffle_btn_bg", "default", 0.0); + set_state(PART:"button_padding_1", "default", 0.0); + set_state(PART:"button_padding_2", "default", 0.0); + } + } + } + +} // group +} // collection \ No newline at end of file diff --git a/layout/mp-naviframe.edc b/layout/mp-naviframe.edc index 2b2cae7..c1abb5e 100755 --- a/layout/mp-naviframe.edc +++ b/layout/mp-naviframe.edc @@ -1,21 +1,4 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - #define NAVIFRAME_VIEW_TRANS_TIME 0.3 //2 define custom style here.. @@ -28,15 +11,16 @@ #define NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 52 #define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144 -#define MP_NAVIFRAME_BG_IMAGE "T02_title_bg.png" - +//////////////////////////////////////////////////////////////////////////////////////// +// NavigationBar_ex +//////////////////////////////////////////////////////////////////////////////////////// - group { name:"elm/naviframe/item/basic/music/default"; +group { name:"elm/naviframe/item/basic/music/default"; alias:"elm/naviframe/item/1line/music/default"; images { image: "00_winset_control_top_bg.png" COMP; image: "00_winset_control_top_arrow.png" COMP; - image: MP_NAVIFRAME_BG_IMAGE COMP; + image: "T02_title_bg.png" COMP; } script { public oh_show = 0; //optionheader show/hide @@ -68,7 +52,7 @@ } part { name: "title_bg"; //type: RECT; - type: IMAGE; + type: IMAGE; scale: 1; description { state: "default" 0.0; min: 1 NAVIFRAME_TITLE_H_INC; @@ -77,7 +61,7 @@ rel1 { relative: 0.0 0.0; to: "base"; } rel2 { relative: 1.0 0.0; to: "base"; } //color: NAVIFRAME_TITLE_BG_COLOR_INC; - image.normal: MP_NAVIFRAME_BG_IMAGE; + image.normal: "T02_title_bg.png"; } description { state: "hide" 0.0; inherit: "default" 0.0; @@ -901,4 +885,490 @@ action: SIGNAL_EMIT "elm,action,title,clicked" ""; } } - } \ No newline at end of file + } + + group { name: "elm/naviframe/item/tabbar/music/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "base"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + } + description { state: "left" 0.0; + inherit: "default" 0.0; + rel1.relative: -1.0 0.0; + rel2.relative: 0.0 1.0; + } + description { state: "right" 0.0; + inherit: "default" 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 2.0 1.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel1.to: "base"; + rel2.relative: 1.0 0.0; + rel2.to_x: "base"; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "content_new_pushed"; + signal: "elm,state,new,pushed,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_pushed"; + signal: "elm,state,cur,pushed,internal"; + source: ""; + action: STATE_SET "left" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "pushed_finished"; + } + program { name: "content_prev_popped"; + signal: "elm,state,prev,popped,internal"; + source: ""; + action: STATE_SET "default" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "show_finished"; + } + program { name: "content_cur_popped"; + signal: "elm,state,cur,popped,internal"; + source: ""; + action: STATE_SET "right" 0.0; + target: "base"; + transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME; + after: "popped_finished"; + } + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,pushed,internal", ""); + } + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + script { + set_state(PART:"base", "right", 0.0); + emit("elm,state,new,pushed,internal", ""); + } + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + script { + set_state(PART:"base", "left", 0.0); + emit("elm,state,prev,popped,internal", ""); + } + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + script { + set_state(PART:"base", "default", 0.0); + emit("elm,state,cur,popped,internal", ""); + } + } + program { name: "visible"; + signal: "elm,state,visible"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bg_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + + group { name: "elm/naviframe/item/tabbar/music/instant/default"; + script { + public cbar_bg = 0; //Controlbar BG Show call count + } + parts { + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + repeat_events: 0; + clip_to: "content_clip"; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.0; + rel2.to_y: "controlbar_bg"; + } + } + part { name: "content_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "elm.swallow.content"; + rel2.to: "elm.swallow.content"; + } + } + part { name: "controlbar_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 0; + max: 999999 0; + fixed: 0 1; + align: 0.0 1.0; + visible: 0; + color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + min: 0 CONTROLBAR_SMALL_HEIGHT_INC; + max: 999999 CONTROLBAR_SMALL_HEIGHT_INC; + visible: 1; + } + } + part { name: "controlbar_clip"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { to: "controlbar_bg"; } + rel2 { to: "controlbar_bg"; } + } + } + part { name: "elm.prev_btn_bg"; + type: RECT; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + min: 0 0; + fixed: 1 0; + align: 1.0 0.0; + rel1 { relative: 1.0 0.0; to: "controlbar_bg"; } + rel2.to: "controlbar_bg"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0; + } + } + part { name: "elm.swallow.prev_btn"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.5; + rel1.to: "elm.prev_btn_bg"; + rel2.to: "elm.prev_btn_bg"; + } + } + part { name: "controlbar"; + type: SWALLOW; + scale: 1; + clip_to: "controlbar_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "controlbar_bg"; + rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; } + } + } + } + programs { + program { name: "cur_pushed"; + signal: "elm,state,cur,pushed"; + source: "elm"; + after: "pushed_finished"; + } + program { name: "new_pushed"; + signal: "elm,state,new,pushed"; + source: "elm"; + after: "show_finished"; + } + program { name: "prev_popped"; + signal: "elm,state,prev,popped"; + source: "elm"; + after: "show_finished"; + } + program { name: "cur_popped"; + signal: "elm,state,cur,popped"; + source: "elm"; + after: "popped_finished"; + } + program { name: "prev_btn_show"; + signal: "elm,state,prev_btn,show"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,show", "elm"); + set_state(PART:"elm.prev_btn_bg", "visible", 0.0); + } + } + program { name: "prev_btn_hide"; + signal: "elm,state,prev_btn,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + set_state(PART:"elm.prev_btn_bg", "default", 0.0); + } + } + program { name: "controlbar_show"; + signal: "elm,state,controlbar,show"; + source: "elm"; + action: STATE_SET "show" 0.0; + script { + emit("elm,state,controlbar_bg,show", "elm"); + } + } + program { name: "controlbar_hide"; + signal: "elm,state,controlbar,hide"; + source: "elm"; + script { + emit("elm,state,controlbar_bg,hide", "elm"); + } + } + program { name: "controlbar_bg_show"; + signal: "elm,state,controlbar_bg,show"; + source: "elm"; + script { + set_state(PART:"controlbar_bg", "show", 0.0); + set_int(cbar_bg, get_int(cbar_bg) + 1); + } + } + program { name: "controlbar_bgp_hide"; + signal: "elm,state,controlbar_bg,hide"; + source: "elm"; + script { + set_int(cbar_bg, get_int(cbar_bg) - 1); + if (get_int(cbar_bg) <= 0) + set_state(PART:"controlbar_bg", "default", 0.0); + } + } + program { name: "controlbar_open"; + signal: "elm,state,controlbar,open"; + source: ""; + action: STATE_SET "show" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_close"; + signal: "elm,state,controlbar,close"; + source: ""; + action: STATE_SET "default" 0.0; + target: "controlbar_bg"; + transition: LINEAR 0.2; + } + program { name: "controlbar_instant_open"; + signal: "elm,state,controlbar,instant_open"; + source: ""; + script { + emit("elm,state,prev_btn,show", "elm"); + emit("elm,state,controlbar,show", "elm"); + } + } + program { name: "controlbar_instant_close"; + signal: "elm,state,controlbar,instant_close"; + source: ""; + script { + emit("elm,state,prev_btn,hide", "elm"); + emit("elm,state,controlbar,hide", "elm"); + } + } + program { name: "show_finished"; + action: SIGNAL_EMIT "elm,action,show,finished" ""; + } + program { name: "pushed_finished"; + action: SIGNAL_EMIT "elm,action,pushed,finished" ""; + } + program { name: "popped_finished"; + action: SIGNAL_EMIT "elm,action,popped,finished" ""; + } + program { + name: "title_clicked"; + signal: "mouse,clicked,1"; + source: "click_event_area"; + action: SIGNAL_EMIT "elm,action,title,clicked" ""; + } + } + } + diff --git a/layout/mp-no-contents.edc b/layout/mp-no-contents.edc index b5848df..ed99f6c 100755 --- a/layout/mp-no-contents.edc +++ b/layout/mp-no-contents.edc @@ -1,20 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - /*********** no_content ***********************/ #define IMAGE_NO_CONTENT "T02_nocomposers.png" @@ -111,3 +94,118 @@ } } + + group { + images { + image: IMAGE_NO_CONTENT COMP; + } + + name: "no_content_landscape"; + parts { + part { name: "bg"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + part { + name: "image"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.5 0.5; + //min: 314 310; + //fixed: 1 1; + //rel1 { relative: 0.5 (230/570); to:bg;} + //rel2 { relative: 0.5 (230/570); to:bg;} + rel1 { relative: 483/1280 (100/570); to:bg;} + rel2 { relative: 1-(483/1280) (1-100/570); to:bg;} + image.normal: IMAGE_NO_CONTENT; + } + description { + state: "show" 0.0; + align: 0.5 0.5; + rel1 { relative: 483/1280 (400/470); to:bg;} + rel2 { relative: 1-(483/1280) (1-400/470); to:bg;} + image.normal: IMAGE_NO_CONTENT; + } + } + + part { + name: "elm.text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 1.0; to_y: "image"; offset: 0 20;} + rel2 { relative: 1.0 1.0; to_y: "image"; offset: 0 20;} + color: FONT_NO_CONTENT_COLOR; + min: 0 46; + text { + font: FONT_NO_CONTENT; + size: FONT_NO_CONTENT_SIZE; + align: 0.5 0.5; + } + } + + } + } + } + + group { + images { + image: IMAGE_NO_CONTENT COMP; + } + + name: "square_no_content_landscape"; + parts { + part { name: "bg"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + part { + name: "image"; + type: IMAGE; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 200/720 (100/570); to:bg;} + rel2 { relative: 1-(200/720) (1-100/570); to:bg;} + image.normal: IMAGE_NO_CONTENT; + } + } + + part { + name: "elm.text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 1.0; to_y: "image"; offset: 0 20;} + rel2 { relative: 1.0 1.0; to_y: "image"; offset: 0 20;} + color: FONT_NO_CONTENT_COLOR; + min: 0 46; + text { + font: FONT_NO_CONTENT; + size: FONT_NO_CONTENT_SIZE; + align: 0.5 0.5; + } + } + + } + } + } \ No newline at end of file diff --git a/layout/mp-play-control.edc b/layout/mp-play-control.edc index bf87e8c..40d102f 100755 --- a/layout/mp-play-control.edc +++ b/layout/mp-play-control.edc @@ -1,20 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - #define CONTROL_PAD_T 17 #define CONTROL_PAD_D 18 @@ -22,6 +5,11 @@ #define CONTROL_H (CONTROL_PAD_T+CONTROL_PAD_D+CONTROL_BUTTON) group { name : "music/playing/main/control"; + + images { + image: "player/12_music_player_control_bg.png" COMP; + } + parts { part { name: "bg"; type : SWALLOW; @@ -63,7 +51,6 @@ group { name : "music/playing/main/control"; scale: 1; description { state: "default" 0.0; visible: 1; - align: 0 0; rel1 { relative: 0.0 (CONTROL_PAD_T+CONTROL_BUTTON)/CONTROL_H; to, "bg";} rel2 { relative: 1.0 1.0; to, "bg";} @@ -72,6 +59,69 @@ group { name : "music/playing/main/control"; } } } +#define LS_CONTROL_PAD_T 17 +#define LS_CONTROL_PAD_D 18 +#define LS_CONTROL_BUTTON 50 +#define LS_CONTROL_H (LS_CONTROL_PAD_T+LS_CONTROL_PAD_D+LS_CONTROL_BUTTON) +group { name : "music/playing/main/control_ls"; + images { + image: "player/12_music_player_control_bg_h.png" COMP; + } + + parts { + part { name: "bg"; + type : SWALLOW; + scale: 1; + description { state: "default" 0.0; + visible: 1; + min: 0 LS_CONTROL_H; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 35 35 35 0; + } + } + + part { name: "pad.top"; + type : RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + min: 0 LS_CONTROL_PAD_T; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 0.0; to_y, "bg";} + rel2 { relative: 1.0 LS_CONTROL_PAD_T/LS_CONTROL_H; to, "bg";} + color: 0 0 0 0; + } + } + + part { name: "buttons"; + type : SWALLOW; + scale: 1; + description { state: "default" 0.0; + visible: 1; + align: 0 0; + rel1 { relative: 0.0 LS_CONTROL_PAD_T/LS_CONTROL_H; to, "bg"; } + rel2 { relative: 1.0 (LS_CONTROL_PAD_T+LS_CONTROL_BUTTON)/LS_CONTROL_H; to, "bg"; } + } + } + + part { name: "pad.down"; + type : RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + align: 0 0; + rel1 { relative: 0.0 (LS_CONTROL_PAD_T+LS_CONTROL_BUTTON)/LS_CONTROL_H; to, "bg";} + rel2 { relative: 1.0 1.0; to, "bg";} + color: 0 0 0 0; + } + } + + } +} #define MAIN_W 480 @@ -88,14 +138,14 @@ group { name : "music/playing/main/control"; #define CONTROL_BUTTON_FOWARD_X (CONTROL_BUTTON_PLAY_X+CONTROL_BUTTON_PLAY_W+CONTROL_BUTTON_PAD) #define CONTROL_BUTTON_INFO_X (CONTROL_BUTTON_FOWARD_X+CONTROL_BUTTON_FOWARD_W+CONTROL_BUTTON_PAD) -#define REW_BTN "T02_Play_btn_previous.png" -#define REW_BTN_PRESS "T02_Play_btn_previou_press.png" -#define PLAY_BTN "T02_Play_btn__play.png" -#define PLAY_BTN_PRESS "T02_Play_btn__play_press.png" -#define PAUSE_BTN "T02_Play_btn_pause.png" -#define PAUSE_BTN_PRESS "T02_Play_btn_pause_press.png" -#define FF_BTN "T02_Play_btn_next.png" -#define FF_BTN_PRESS "T02_Play_btn_next_press.png" +#define REW_BTN "player/T02_Play_btn_previous.png" +#define REW_BTN_PRESS "player/T02_Play_btn_previou_press.png" +#define PLAY_BTN "player/T02_Play_btn__play.png" +#define PLAY_BTN_PRESS "player/T02_Play_btn__play_press.png" +#define PAUSE_BTN "player/T02_Play_btn_pause.png" +#define PAUSE_BTN_PRESS "player/T02_Play_btn_pause_press.png" +#define FF_BTN "player/T02_Play_btn_next.png" +#define FF_BTN_PRESS "player/T02_Play_btn_next_press.png" #define VOLUME_BTN "T02_volume.png" #define BACK_BTN "T02_btn_Back.png" #define MUTE_BTN "music_icon_mute.png" diff --git a/layout/mp-play-current-playing.edc b/layout/mp-play-current-playing.edc index aa35411..50658b4 100755 --- a/layout/mp-play-current-playing.edc +++ b/layout/mp-play-current-playing.edc @@ -1,21 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - #define MP_NOW_PLAYING #define MP_NOW_PLAYING_W 720. @@ -73,6 +55,7 @@ group { part { name: "thumb_image"; type : SWALLOW; + //type : RECT; scale: 1; mouse_events: 0; description { state: "default" 0.0; @@ -81,6 +64,7 @@ group { align: 0 0; rel1 { relative: MP_NOW_PLAYING_THUMB_SX/MP_NOW_PLAYING_W MP_NOW_PLAYING_THUMB_SY/MP_NOW_PLAYING_H; } rel2 { relative: MP_NOW_PLAYING_THUMB_EX/MP_NOW_PLAYING_W MP_NOW_PLAYING_THUMB_EY/MP_NOW_PLAYING_H; } + //color: 0 0 0 255; } } @@ -177,6 +161,7 @@ group { } part { name: "playing_icon"; + //type : SWALLOW; type : IMAGE; scale: 1; mouse_events: 1; diff --git a/layout/mp-play-info.edc b/layout/mp-play-info.edc index 53ec6f1..741d4fc 100755 --- a/layout/mp-play-info.edc +++ b/layout/mp-play-info.edc @@ -1,29 +1,17 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - /* font name*/ #define FONT_TITLE_NAME "system_title" //"system_title" #define FONT_CONTENT_NAME "system_content" //"system_content" #define FONT_SUBCONTENT_NAME "system_subcontent" //"system_subcontent" -group +group { name : "music/playing/play_ctrl"; + + images { + image : "player/T02_option_favorite_off.png" COMP; + image : "player/T02_option_favorite_on.png" COMP; + } + parts { part { name: "player_info_bg"; @@ -37,7 +25,7 @@ group color: 35 35 35 0; } } - + part { name: "track_title"; type: TEXT; @@ -160,7 +148,7 @@ group inherit: "default" 0.0; visible: 1; } - } + } } programs { @@ -177,9 +165,9 @@ group source: "player_progress"; action: STATE_SET "default" 0.0; target: "player_progress"; - } + } } - + } #define INFO_BASE_SC_H 620 @@ -206,9 +194,10 @@ group { name : "music/playing/info"; color: 0 0 0 0; } } - + part { name: "contents"; type : SWALLOW; +// type : RECT; mouse_events: 1; scale: 1; description { state: "default" 0.0; @@ -218,757 +207,8 @@ group { name : "music/playing/info"; align: 0 0; rel1 { relative: 0.0 0.0; to_y, "bg"; } rel2 { relative: 1.0 0.0; to_y, "bg"; } +// color: 100 100 100 255; } } } } - -group { - name: "music/playing/info/contents"; - images { - image: "12_music_player_bg_01.PNG" COMP; - } - - styles - { - style { - name: "info_contents"; - base: "font=system_content font_size=28 align=left color=#ffffff wrap=word"; - tag: "br" "\n"; - tag: "tab" "\t"; - tag: "em" "+ font=system_content:style=Oblique"; - tag: "b" "+ font=system_content:style=Bold"; - tag: "link" "+ color=#800 underline=on underline_color=#8008"; - tag: "hilight" "+ font=system_content:style=Bold"; - } - } - - parts { - part { name: "bg"; - type : IMAGE; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_BASE_H; - fixed: 0 1; - align: 0 0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 0.0; } - image { normal: "12_music_player_bg_01.PNG"; } - } - } - part { - name: "pad.top"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 30; - fixed: 0 1; - align: 0 0; - rel1 { relative: 0.0 0.0; to_y, "bg"; } - rel2 { relative: 1.0 0.0; to_y, "bg"; } - color: 0 0 0 0; - } - } - part { - name: "pad.bottom"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 30; - fixed: 0 1; - align: 1 1; - rel1 { relative: 0.0 1.0; to_y, "bg"; } - rel2 { relative: 1.0 1.0;to_y, "bg"; } - color: 0 0 0 0; - } - } - part { name: "pad.1"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - min: 20 0; - fixed: 1 0; - align: 0 0; - rel1 { relative: 0.0 0.0; to_x, "bg";} - rel2 { relative: 0.0 1.0; to_x, "bg";} - color: 0 0 0 0; - } - } - part { name: "pad.2"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - min: 20 0; - fixed: 1 0; - align: 1 1; - rel1 { relative: 1.0 0.0; to_x, "bg";} - rel2 { relative: 1.0 1.0; to_x, "bg";} - color: 0 0 0 0; - } - } - part { - name: "albumart"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.top"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.top"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - } - part { name: "pad.albumart"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "albumart"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "albumart"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "artist"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.albumart"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.albumart"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - } - part { name: "pad.artist"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "artist"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "artist"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "title"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.artist"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.artist"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - } - - part { name: "pad.title"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "title"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "title"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "album"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.title"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.title"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - } - - part { name: "pad.album"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "album"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "album"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "tracklength"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.album"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.album"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - } - - part { name: "pad.tracklength"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "tracklength"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "tracklength"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "genres"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.tracklength"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.tracklength"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - } - - part { name: "pad.genres"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "genres"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "genres"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "author"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.genres"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.genres"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - } - - part { name: "pad.author"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "author"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "author"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "desc"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.author"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.author"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - } - part { name: "pad.desc"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "desc"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "desc"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "forwarding"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.desc"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.desc"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - description { - state: "invisible" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } - part { name: "pad.forwarding"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "forwarding"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "forwarding"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - - part { - name: "available"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.forwarding"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.forwarding"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - description { - state: "invisible" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } - part { name: "pad.available"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "available"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "available"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - part { - name: "type"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.available"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.available"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - description { - state: "invisible" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } - - part { name: "pad.type"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - visible: 1; - min: 0 INFO_ITEM_GAP_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "type"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "type"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - - part { - name: "validity"; - type: TEXTBLOCK; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 INFO_ITEM_TEXT_H; - fixed: 0 1; - align: 0 0; - rel1 { - to_x, "pad.1"; - to_y, "pad.type"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "pad.type"; - relative: 0.0 1.0; - } - text { - style: "info_contents"; - min: 0 1; - } - } - description { - state: "invisible" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } - part { name: "pad.validity"; - type : RECT; - scale: 1; - description { state: "default" 0.0; - rel1 { - to_x, "pad.1"; - to_y, "validity"; - relative: 1.0 1.0; - } - rel2 { - to_x, "pad.2"; - to_y, "validity"; - relative: 0.0 1.0; - } - color: 0 0 0 0; - } - } - - } - - programs { - program { - name: "desc_visible" ; - signal: "desc_visible"; - source: "desc"; - action: STATE_SET "default" 0.0; - target: "desc"; - } - - program { - name: "desc_invisible" ; - signal: "desc_invisible"; - source: "desc"; - action: STATE_SET "invisible" 0.0; - target: "desc"; - } - - program { - name: "forwarding_visible" ; - signal: "forwarding_visible"; - source: "forwarding"; - action: STATE_SET "default" 0.0; - target: "forwarding"; - } - - program { - name: "forwarding_invisible" ; - signal: "forwarding_invisible"; - source: "desc"; - action: STATE_SET "invisible" 0.0; - target: "forwarding"; - } - - program { - name: "available_visible" ; - signal: "available_visible"; - source: "available"; - action: STATE_SET "default" 0.0; - target: "available"; - } - - program { - name: "available_invisible" ; - signal: "available_invisible"; - source: "available"; - action: STATE_SET "invisible" 0.0; - target: "available"; - } - - program { - name: "type_visible" ; - signal: "type_visible"; - source: "type"; - action: STATE_SET "default" 0.0; - target: "type"; - } - - program { - name: "type_invisible" ; - signal: "type_invisible"; - source: "type"; - action: STATE_SET "invisible" 0.0; - target: "type"; - } - - program { - name: "validity_visible" ; - signal: "validity_visible"; - source: "validity"; - action: STATE_SET "default" 0.0; - target: "validity"; - } - - program { - name: "validity_invisible" ; - signal: "validity_invisible"; - source: "validity"; - action: STATE_SET "invisible" 0.0; - target: "validity"; - } - } -} - - diff --git a/layout/mp-play-menu.edc b/layout/mp-play-menu.edc index d87850b..0a75940 100755 --- a/layout/mp-play-menu.edc +++ b/layout/mp-play-menu.edc @@ -1,25 +1,9 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - group { name: "mp_play_menu"; images { + image: "T02_option_SA.png" COMP; + image: "T02_option_SA_off.png" COMP; image: "T02_option_shuffle_on.png" COMP; image: "T02_option_shuffle_off.png" COMP; image: "T02_option_rep_1.png" COMP; @@ -35,14 +19,61 @@ group { part { name: "menu_box_bg"; type: IMAGE; + //type: RECT; mouse_events: 0; description { state: "default" 0.0; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } image { normal: "T02_option_bg.png"; } + //color : 255 255 255 127; + //color : 0 0 0 0; + } + } + part { + name: "srs"; + type: IMAGE; + mouse_events: 1; + description { + state: "default" 0.0; + //image { normal: "T02_option_SA.png"; } + rel1 { relative: MENU_SRS_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; } + rel2 { relative: MENU_SRS_EX MENU_EY; offset: -1 0; to: "menu_box_bg"; } + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + //image { normal: "T02_option_SA.png"; } + } + description { + state: "invisible" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "srs_dim"; + type: IMAGE; + mouse_events: 1; + description { + state: "default" 0.0; + //image { normal: "T02_option_SA_off.png"; } + rel1 { relative: MENU_SRS_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; } + rel2 { relative: MENU_SRS_EX MENU_EY; offset: -1 0; to: "menu_box_bg"; } + } + description { + state: "clicked" 0.0; + inherit: "default" 0.0; + //image { normal: "T02_option_SA_off.png"; } + } + description { + state: "invisible" 0.0; + inherit: "default" 0.0; + visible: 0; } } + part { name: "shuffle"; type: IMAGE; @@ -114,6 +145,11 @@ group { rel1 { relative: MENU_REP_ALL_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; } rel2 { relative: MENU_REP_ALL_EX MENU_EY; offset: 0 0; to: "menu_box_bg"; } } + /*description { + state: "clicked" 0.0; + inherit: "default" 0.0; + image { normal: "34_menu_rep_non_press.png"; } + }*/ description { state: "invisible" 0.0; inherit: "default" 0.0; @@ -162,8 +198,101 @@ group { } programs { + program { + name: "srs_down"; + source: "srs"; + signal: "mouse,down,1"; + action: STATE_SET "clicked" 0.0; + target: "srs"; + } + + program { + name: "srs_up"; + source: "srs"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: "srs"; + } + + program { + name: "srs_clicked"; + source: "srs"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "srs_clicked" 0.0; + } + + program { + name: "srs_visible" ; + signal: "srs_visible"; + source: "srs"; + action: STATE_SET "default" 0.0; + target: "srs"; + } + + program { + name: "srs_invisible" ; + signal: "srs_invisible"; + source: "srs"; + action: STATE_SET "invisible" 0.0; + target: "srs"; + } program { + name: "srs_dim_down"; + source: "srs_dim"; + signal: "mouse,down,1"; + action: STATE_SET "clicked" 0.0; + target: "srs_dim"; + } + + program { + name: "srs_dim_up"; + source: "srs_dim"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: "srs_dim"; + } + + program { + name: "srs_dim_clicked"; + source: "srs_dim"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "srs_dim_clicked" 0.0; + } + + program { + name: "srs_dim_visible" ; + signal: "srs_dim_visible"; + source: "srs_dim"; + action: STATE_SET "default" 0.0; + target: "srs_dim"; + } + + program { + name: "srs_dim_invisible" ; + signal: "srs_dim_invisible"; + source: "srs_dim"; + action: STATE_SET "invisible" 0.0; + target: "srs_dim"; + } +/* + program { + name: "shuffle_down"; + source: "shuffle"; + signal: "mouse,down,1"; + action: STATE_SET "clicked" 0.0; + target: "shuffle"; + } + + program { + name: "shuffle_up"; + source: "shuffle"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: "shuffle"; + } +*/ + program { name: "shuffle_clicked"; source: "shuffle"; signal: "mouse,clicked,1"; diff --git a/layout/mp-play-mini-app.edc b/layout/mp-play-mini-app.edc new file mode 100755 index 0000000..b3d83d5 --- /dev/null +++ b/layout/mp-play-mini-app.edc @@ -0,0 +1,369 @@ + +#define MINI_APP_W 250 +#define MINI_APP_H 250 +#define MINI_ALBUM_ART_W 246 +#define MINI_ALBUM_ART_H 246 +#define CONTROL_BTN_W 54 +#define CONTROL_BTN_H 54 +#define CLOSE_BTN_W 50 +#define CLOSE_BTN_H 50 + +#define IMG_CLOSE_BTN "mini_app/T01_btn_apps_close.png" +#define IMG_REW_BTN "39_mini_controller_icon_rew.png" +#define IMG_FF_BTN "39_mini_controller_icon_ff.png" +#define IMG_PLAY_BTN "39_mini_controller_icon_play.png" +#define IMG_PAUSE_BTN "39_mini_controller_icon_pause.png" + +group { name: "mini-app"; + images { + image: IMG_CLOSE_BTN COMP; + image: IMG_REW_BTN COMP; + image: IMG_FF_BTN COMP; + image: IMG_PLAY_BTN COMP; + image: IMG_PAUSE_BTN COMP; + } + + parts { + part { name: "bottom_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: MINI_APP_W MINI_APP_H; + color: 51 51 51 255; + } + } + + part { name: "padding.inner.top_left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "bottom_bg"; } + rel2 { relative: 0 0; to: "bottom_bg"; } + min: 2 2; + max: 2 2; + fixed: 1 1; + align: 0 0; + visible: 0; + } + } + + part { name: "padding.inner.bottom_right"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 1; to: "bottom_bg"; } + rel2 { relative: 1 1; to: "bottom_bg"; } + min: 2 2; + max: 2 2; + fixed: 1 1; + align: 1 1; + visible: 0; + } + } + + part { name: "inner_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 1; to: "padding.inner.top_left";} + rel2 { relative: 0 0; to: "padding.inner.bottom_right";}; + color: 242 242 242 255; + align: 0 0; + } + } + + part { name: "padding.bg.top_left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "inner_bg"; } + rel2 { relative: 0 0; to: "inner_bg"; } + min: 2 2; + max: 2 2; + fixed: 1 1; + align: 0 0; + visible: 0; + } + } + + part { name: "padding.bg.bottom_right"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 1; to: "inner_bg"; } + rel2 { relative: 1 1; to: "inner_bg"; } + min: 2 2; + max: 2 2; + fixed: 1 1; + align: 1 1; + visible: 0; + } + } + + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 1; to: "padding.bg.top_left";} + rel2 { relative: 0 0; to: "padding.bg.bottom_right";} + visible: 0; + } + } + + part { name: "albumart"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "bg"; } + rel2 { relative: 1 1; to: "bg"; } + min: MINI_ALBUM_ART_W MINI_ALBUM_ART_H; + fixed: 1 1; + align: 0 0; + } + } + + part { name: "padding.text_area.top_left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 0 0; to: "albumart"; } + rel2 { relative: 0 0; to: "albumart"; } + min: 5 5; + fixed: 1 1; + align: 0 0; + visible: 0; + } + } + + part { name: "text_area"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 1 1; to: "padding.text_area.top_left"; } + rel2 { relative: 0 1; to_x: "close_btn"; to_y: "padding.text_area.top_left"; } + min: 0 45; + fixed: 0 1; + align: 0 0; + visible: 0; + } + } + + part { name: "text.title"; + type: TEXT; + scale: 1; + mouse_events: 0; + effect: SOFT_SHADOW BOTTOM_RIGHT; + description { state: "default" 0.0; + rel1.to: "text_area"; + rel2 { relative: 1 0; to: "text_area"; } + min: 0 25; + fixed: 0 1; + align: 0 0; + text { + font: "Helvetica Neue"; + style: "Medium"; + size: 25; + align: 0 0.5; + } + color: 255 255 255 255; + } + } + + part { name: "text.artist"; + type: TEXT; + scale: 1; + mouse_events: 0; + effect: SOFT_SHADOW BOTTOM_RIGHT; + description { state: "default" 0.0; + rel1 { relative: 0 1; to: "text.title"; } + rel2 { relative: 1 1; to: "text_area"; } + min: 0 20; + fixed: 0 1; + align: 0 0; + text { + font: "Helvetica Neue"; + style: "Roman"; + size: 20; + align: 0 0.5; + } + color: 255 255 255 255; + } + } + + part { name: "event_box"; + type: RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "albumart"; + rel2 { relative: 1 0; to: "control_area"; } + color: 0 0 0 0; + } + } + + part { name: "control_area"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 1; to: "bg"; } + rel2.to: "bg"; + min: 0 70; + fixed: 0 1; + align: 0 1; + color: 0 0 0 100; + } + } + + part { name: "rew_btn_bg"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0 0.5; to: "control_area"; } + rel2 { relative: 0 0.5; to: "control_area"; } + min: CONTROL_BTN_W CONTROL_BTN_H; + fixed: 1 1; + align: 0 0.5; + image.normal: IMG_REW_BTN; + } + } + + part { name: "rew_btn"; + type: RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "rew_btn_bg"; + rel2.to: "rew_btn_bg"; + color: 0 0 0 0; + } + } + + part { name: "play_pause_btn_bg"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0.5 0.5; to: "control_area"; } + rel2 { relative: 0.5 0.5; to: "control_area"; } + min: CONTROL_BTN_W CONTROL_BTN_H; + fixed: 1 1; + align: 0.5 0.5; + image.normal: IMG_PAUSE_BTN; + } + description { state: "paused" 0.0; + inherit: "default" 0.0; + image.normal: IMG_PLAY_BTN; + } + } + + part { name: "play_pause_btn"; + type: RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "play_pause_btn_bg"; + rel2.to: "play_pause_btn_bg"; + color: 0 0 0 0; + } + } + + part { name: "ff_btn_bg"; + type: IMAGE; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 1 0.5; to: "control_area"; } + rel2 { relative: 1 0.5; to: "control_area"; } + min: CONTROL_BTN_W CONTROL_BTN_H; + fixed: 1 1; + align: 1 0.5; + image.normal: IMG_FF_BTN; + } + } + + part { name: "ff_btn"; + type: RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + rel1.to: "ff_btn_bg"; + rel2.to: "ff_btn_bg"; + color: 0 0 0 0; + } + } + + part { name: "close_btn"; + type: IMAGE; + scale: 1; + description { state: "default" 0.0; + rel1 { relative: 1 0; to: "bg"; } + rel2 { relative: 1 0; to: "bg"; } + image.normal: IMG_CLOSE_BTN; + min: CLOSE_BTN_W CLOSE_BTN_H; + fixed: 1 1; + align: 1 0; + } + } + } + + programs { + program { name: "pgm_exit_btn_clicked"; + signal: "mouse,clicked,1"; + source: "close_btn"; + action: SIGNAL_EMIT "sig_exit_btn_clicked" "edje"; + } + + program { name: "pgm_event_box_click"; + signal: "mouse,clicked,1"; + source: "event_box"; + action: SIGNAL_EMIT "sig_event_box_clicked" "edje"; + } + + program { name: "pgm_rew_down"; + signal: "mouse,down,1"; + source: "rew_btn"; + action: SIGNAL_EMIT "sig_rew_btn_down" "rew_btn"; + } + + program { name: "pgm_rew_up"; + signal: "mouse,up,1"; + source: "rew_btn"; + action: SIGNAL_EMIT "sig_rew_btn_up" "rew_btn"; + } + + program { name: "pgm_play_pause_clicked"; + signal: "mouse,down,1"; + source: "play_pause_btn"; + action: SIGNAL_EMIT "sig_play_pause_btn_clicked" "play_pause_btn"; + } + + program { name: "pgm_ff_down"; + signal: "mouse,down,1"; + source: "ff_btn"; + action: SIGNAL_EMIT "sig_ff_btn_down" "ff_btn"; + } + + program { name: "pgm_ff_up"; + signal: "mouse,up,1"; + source: "ff_btn"; + action: SIGNAL_EMIT "sig_ff_btn_up" "ff_btn"; + } + + program { name: "set_pause_icon"; + signal: "set_pause"; + source: "*"; + action: STATE_SET "paused" 0.0; + target: "play_pause_btn_bg"; + } + + program { name: "set_play_icon"; + signal: "set_play"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "play_pause_btn_bg"; + } + } +} \ No newline at end of file diff --git a/layout/mp-play-progress.edc b/layout/mp-play-progress.edc index 527bb4f..6c2f4c5 100755 --- a/layout/mp-play-progress.edc +++ b/layout/mp-play-progress.edc @@ -1,21 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - #define PROGRESS_PAD_TOP_1 21 #define PROGRESS_PAD_TOP_2 6 #define PROGRESS_PAD_BOTTOM 26 @@ -23,6 +5,7 @@ #define PROGRESS_PAD_CENTER 14 +//#define PROGRESS_BOX_H (PROGRESS_PAD_TOP_1+PROGRESS_PAD_TOP_2+PROGRESS_PAD_CENTER+PROGRESS_PAD_BOTTOM) #define PROGRESS_BAR_PAD_TOP 32 #define PROGRESS_BAR_H 16 @@ -50,6 +33,7 @@ #define PROGRESS_TIME_TOTAL_SX 0.5*PROGRESS_BAR_EX #define PROGRESS_TIME_TOTAL_EX PROGRESS_BAR_EX + group { name: "music/playing/progress_box"; min: MAIN_W PROGRESS_BOX_H; @@ -240,9 +224,9 @@ group { group { name: "music/playing/progress_box/progress_bar"; images { - image: "T02_player_progress_bg.png" COMP; - image: "T02_player_progress_bar.png" COMP; - image: "T02_player_progress_point.png" COMP; + image: "progress_bar/T02_player_progress_bg.png" COMP; + image: "progress_bar/T02_player_progress_bar.png" COMP; + image: "progress_bar/T02_player_progress_point.png" COMP; } parts { @@ -265,10 +249,14 @@ group { mouse_events: 0; description { state: "default" 0.0; visible: 1; + //min: 16 10; + //fixed: 1 1; rel1 { relative: 0.0 PROGRESS_BAR_PAD_TOP/(PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_PAD_TIME+PROGRESS_BAR_H); to, "bg"; } rel2 { relative: 1.0 (PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_H)/(PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_PAD_TIME+PROGRESS_BAR_H); to, "bg"; } image { - normal : "T02_player_progress_bg.png"; + normal : "progress_bar/T02_player_progress_bg.png"; + //border: 7 7 0 0; + //border_scale: 1; } } } @@ -283,10 +271,15 @@ group { min: 10 10; fixed: 1 1; image { - normal: "T02_player_progress_bar.png"; + normal: "progress_bar/T02_player_progress_bar.png"; + //border: 7 7 0 0; + //border_scale: 1; } rel1 { relative: 0.0 0.0; to: "progress_bg_img"; } + /* modify by rocket.he for fix CQ: H0100130945 begin */ + /* rel2 { relative: 1.0 1.0; to_x: "progressbar_control"; to_y: "progress_bg_img";offset: -5 0;} */ rel2 { relative: 1.0 1.0; to_x: "progressbar_control"; to_y: "progress_bg_img";} + /* modify by rocket.he for fix CQ: H0100130945 end */ } } part { @@ -301,7 +294,7 @@ group { align: 0 0; rel1 { relative : 0.5 0.0; to:"progress_bg_img";} rel2 { relative : 0.5 1.0; to:"progress_bg_img";} - image.normal : "T02_player_progress_point.png"; + image.normal : "progress_bar/T02_player_progress_point.png"; } dragable { confine: "bg"; @@ -311,4 +304,3 @@ group { } } } - diff --git a/layout/mp-play-vew-landscape.edc b/layout/mp-play-vew-landscape.edc new file mode 100755 index 0000000..62795a8 --- /dev/null +++ b/layout/mp-play-vew-landscape.edc @@ -0,0 +1,213 @@ +#define LS_PLAYVIEW_H 720 +#define LS_PLAYVIEW_CONTROLBAR_H 129 + +group { + name: "mp_play_view_landscape"; + + parts { + + part { + name: "album_art"; + type: SWALLOW; + scale: 1; + mouse_events: 0; + description { + //min: 480 480; + + state: "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0;} + rel2 { relative: 1.0 1.0; offset: 0 0;} + } + } + + part { name: "event_box"; + type : SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to:"album_art";} + rel2 { relative: 1.0 1.0; to:"album_art";} + } + } + + part { + name: "buffering_area"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 100 100; + align: 1.0 0.5; + fixed: 1 1; + rel1 { relative: 1.0 0.5; to: "album_art"; } + rel2 { relative: 1.0 0.5; to: "album_art"; } + } + } + + + part { + + name: "player_info_bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 314/480; } //227 + rel2 { relative: 1.0 1.0 ; offset: 0 1; } //417 + color: 0 0 0 153; + } + } + + part { + name: "player_info"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 275/480; } //227 + rel2 { relative: 1.0 417/480 ; } //417 + } + description { + state: "invisible" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "line1"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 (LS_PLAYVIEW_H-LS_PLAYVIEW_CONTROLBAR_H)/LS_PLAYVIEW_H; offset: 0 -2; } + rel2 { relative: 1.0 (LS_PLAYVIEW_H-LS_PLAYVIEW_CONTROLBAR_H)/LS_PLAYVIEW_H; offset: 0 -1; } + color: 8 8 8 102; + } + } + part { + name: "line2"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 (LS_PLAYVIEW_H-LS_PLAYVIEW_CONTROLBAR_H)/LS_PLAYVIEW_H; offset: 0 -1; } + rel2 { relative: 1.0 (LS_PLAYVIEW_H-LS_PLAYVIEW_CONTROLBAR_H)/LS_PLAYVIEW_H; offset: 0 0; } + color: 130 130 130 102; + } + } + + //add by rocket.he for fixing CQ: H0100127628 Begin + part { + name: "main.mute.bg"; + type: IMAGE; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 266 266; + fixed: 1 1; + align: 0.5 0.5; + //rel1 { relative: (80/480) (240/480);} + //rel2 { relative: (80/480) (240/480);} + rel1 { relative: (133/480) (240/480);} + rel2 { relative: (133/480) (240/480);} + image { normal: "music_player_bg.PNG"; border: 7 7 0 0; } + color: 128 128 128 128; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { + name: "main.mute.image"; + type: IMAGE; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + min: 96 96; + fixed: 1 1; + align: 0.5 0.5; + rel1 { relative: (133/480) (240/480);} + rel2 { relative: (133/480) (240/480);} + image { normal: "music_popup_mute.png"; } + color: 255 255 255 255; + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + //add by rocket.he for fixing CQ: H0100127628 end + } + + programs { + program { + name: "album_art_clicked"; + source: "album_art"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "album_art_clicked" 0.0; + } + program { + name: "album_art_up"; + source: "album_art"; + signal: "mouse,up,1"; + action: SIGNAL_EMIT "album_art_up" 0.0; + } + program { + name: "album_art_down"; + source: "album_art"; + signal: "mouse,down,1"; + action: SIGNAL_EMIT "album_art_down" 0.0; + } + program { + name: "album_art_move"; + source: "album_art"; + signal: "mouse,move"; + action: SIGNAL_EMIT "album_art_move" 0.0; + } + program { + name: "info_invisible" ; + signal: "info_invisible"; + source: "player_info"; + action: STATE_SET "invisible" 0.0; + target: "player_info"; + } + program { + name: "info_visible" ; + signal: "info_visible"; + source: "player_info"; + action: STATE_SET "default" 0.0; + target: "player_info"; + } + + //add by rocket.he for fixing CQ: H0100127628 Begin + program { + signal: "signal.main.mute.show"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "main.mute.image"; + target: "main.mute.bg"; + } + + program { + signal: "signal.main.mute.hide"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "main.mute.image"; + target: "main.mute.bg"; + } + //add by rocket.he for fixing CQ: H0100127628 end + } +} \ No newline at end of file diff --git a/layout/mp-play-view.edc b/layout/mp-play-view.edc index 89f5583..13e1f60 100755 --- a/layout/mp-play-view.edc +++ b/layout/mp-play-view.edc @@ -1,25 +1,7 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - /* font name*/ -#define FONT_TITLE_NAME "system_title" -#define FONT_CONTENT_NAME "system_content" -#define FONT_SUBCONTENT_NAME "system_subcontent" +#define FONT_TITLE_NAME "system_title" //"system_title" +#define FONT_CONTENT_NAME "system_content" //"system_content" +#define FONT_SUBCONTENT_NAME "system_subcontent" //"system_subcontent" #define ALBUMART_IMAGE_SHADOW_RGBA 0 0 0 0 @@ -51,6 +33,7 @@ #define PLAYVIEW_CONTROLBAR_H 129 #define PLAYVIEW_MENU_H 96 +#define PLAYVIEW_LYRIC_H (PLAYVIEW_ALBUM_H-PLAYVIEW_MENU_H) #define PLAYVIEW_REFLECTION_H 244 #define PLAYVIEW_TOP_LINE_1_SX (0.5*(HD_PLAYVIEW_W-PLAYVIEW_TOP_LINE_W))/HD_PLAYVIEW_W #define PLAYVIEW_TOP_LINE_1_EX (0.5*(HD_PLAYVIEW_W+PLAYVIEW_TOP_LINE_W))/HD_PLAYVIEW_W @@ -74,10 +57,13 @@ #define PLAYVIEW_ALBUM_EX 1.0 #define PLAYVIEW_ALBUM_SY PLAYVIEW_OPTION_EY #define PLAYVIEW_ALBUM_EY (PLAYVIEW_ALBUM_SY+PLAYVIEW_ALBUM_H/HD_PLAYVIEW_H) - +#define PLAYVIEW_LYRIC_SX 0.0 +#define PLAYVIEW_LYRIC_EX 1.0 +#define PLAYVIEW_LYRIC_SY PLAYVIEW_OPTION_EY +#define PLAYVIEW_LYRIC_EY (PLAYVIEW_LYRIC_SY+PLAYVIEW_LYRIC_H/HD_PLAYVIEW_H) #define PLAYVIEW_MENU_SX 0.0 #define PLAYVIEW_MENU_EX 1.0 -#define PLAYVIEW_MENU_SY (PLAYVIEW_OPTION_EY+(PLAYVIEW_ALBUM_H-PLAYVIEW_MENU_H)/HD_PLAYVIEW_H) +#define PLAYVIEW_MENU_SY PLAYVIEW_LYRIC_EY #define PLAYVIEW_MENU_EY (PLAYVIEW_MENU_SY+PLAYVIEW_MENU_H/HD_PLAYVIEW_H) #define PLAYVIEW_REFLECTION_SX 0.0 #define PLAYVIEW_REFLECTION_EX 1.0 @@ -103,9 +89,16 @@ #define OPTION_H PLAYVIEW_OPTION_H #define OPTION_W HD_PLAYVIEW_W #define OPTION_BUTTON_H 70 + +#ifdef MP_FEATURE_INNER_SETTINGS +#define OPTION_BUTTON_W 160 +#define OPTION_BUTTON_PAD_LEFT 13 +#else #define OPTION_BUTTON_W 220 -#define OPTION_BUTTON_PAD_TOP 4 #define OPTION_BUTTON_PAD_LEFT 12 +#endif + +#define OPTION_BUTTON_PAD_TOP 4 #define OPTION_BUTTON_PAD_BUTTON 18 #define OPTION_SY OPTION_BUTTON_PAD_TOP/OPTION_H #define OPTION_EY (OPTION_BUTTON_PAD_TOP+OPTION_BUTTON_H)/OPTION_H @@ -115,9 +108,56 @@ #define OPTION_2_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*2+OPTION_BUTTON_PAD_BUTTON)/OPTION_W #define OPTION_3_SX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*2+OPTION_BUTTON_PAD_BUTTON*2)/OPTION_W #define OPTION_3_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*3+OPTION_BUTTON_PAD_BUTTON*2)/OPTION_W +#define OPTION_4_SX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*3+OPTION_BUTTON_PAD_BUTTON*3)/OPTION_W +#define OPTION_4_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*4+OPTION_BUTTON_PAD_BUTTON*3)/OPTION_W + /* landscape mode layout */ +#define LS_STATUSBAR_H 50 +#define LS_NAVIGATIONBAR_H 0 + +//#define LS_PLAYVIEW_H (HD_MAIN_W-LS_STATUSBAR_H-LS_NAVIGATIONBAR_H) +#define LS_PLAYVIEW_W HD_MAIN_W +#define LS_PLAYVIEW_TITLE_H 100 +#define LS_PLAYVIEW_OPTION_H 80 +#define LS_PLAYVIEW_MENU_H 96 +#define LS_PLAYVIEW_PROGRESSBAR_H 113 +#define LS_PLAYVIEW_LINE_H 2 +#define LS_PLAYVIEW_CONTROLBAR_H 129 + +#define LS_STATUSBAR_H 50 #define NAVIGATIONBAR_H 100 +#define PLAYVIEW_H_LANDSCAPE HD_MAIN_W +#define PLAYVIEW_W_LANDSCAPE HD_MAIN_W +#define PLAYVIEW_TITLE_H_LANDSCAPE 100 +#define PLAYVIEW_OPTION_H_LANDSCAPE 80 +#define PLAYVIEW_MENU_H_LANDSCAPE 96 +#define PLAYVIEW_CONTROLBAR_H_LANDSCAPE 128 +#define PLAYVIEW_CONTROLBAR_Y_LANDSCAPE (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-LS_STATUSBAR_H) +#define PLAYVIEW_PROGRESSBAR_H_LANDSCAPE 113 +#define PLAYVIEW_PROGRESSBAR_Y_LANDSCAPE (PLAYVIEW_CONTROLBAR_Y_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE-2) + +#define LRC_PROG \ + program {\ + signal: "lrc_invisible";\ + source: "lrc";\ + action: STATE_SET "default" 0.0;\ + target: "lrc";\ + transition: LINEAR 0.3;\ + }\ + program {\ + signal: "lrc_visible";\ + source: "lrc";\ + action: STATE_SET "show" 0.0;\ + target: "lrc";\ + transition: LINEAR 0.3;\ + }\ + program {\ + signal: "lrc_destroy";\ + source: "lrc";\ + action: STATE_SET "default" 0.0;\ + target: "lrc";\ + } #define OPT_PROG \ program {\ @@ -145,15 +185,93 @@ transition: LINEAR 0.3;\ } +#ifdef MP_3D_FEATURE +group { + name: "mp_play_view_base"; + + parts { + part { + name: "bg"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + + part { + name : "now_playing"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + align: 0 0; + min: 0 100; + fixed: 0 1; + visible: 0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 0.0;} + + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name : "content"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + description { + state: "show" 0.0; + rel1 { relative: 0.0 1.0; to_y: "now_playing"; offset: 0 1;} + rel2 { relative: 1.0 1.0;} + } + } + } + + programs { + program { + name : "show_now_playng"; + signal : "SHOW_NOW_PLAING"; + source : "music_app"; + action : STATE_SET "show" 0.0; + target : "now_playing"; + target : "content"; + } + program { + name : "hide_now_playng"; + signal : "HIDE_NOW_PLAING"; + source : "music_app"; + action : STATE_SET "default" 0.0; + target : "now_playing"; + target : "content"; + } + } +} +#endif group { name: "mp_play_view_layout"; - + parts { - part { + part { name: "bg"; mouse_events: 0; type: RECT; - description { + description { state: "default" 0.0; visible: 1; rel1 { relative: 0.0 0.0;} @@ -214,7 +332,7 @@ group { } } - + part{ name : "base"; type: RECT; @@ -225,15 +343,28 @@ group { color: 0 0 0 0; state: "default" 0.0; rel1 { relative: 0.0 1.0; to: "player_options";} - rel2 { relative: 1.0 1.0; to: "bg";} + rel2 { relative: 1.0 1.0/*(PLAYVIEW_OPTION_H+PLAYVIEW_ALBUM_H)/PLAYVIEW_OPTION_H*/; to: "bg";} + } + } + + part { + name: "album_art_reflection_bg"; + type: IMAGE; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + image { normal: "T02_controls_bg_shadow.png"; } + rel1 { relative: 0.0 (PLAYVIEW_OPTION_H+PLAYVIEW_ALBUM_H)/PLAYVIEW_OPTION_H; to: "player_options";} + rel2 { relative: 1.0 1.0 ; to, "bg"; } } } - part { + part { name: "clipper"; mouse_events: 0; type: RECT; - description { + description { state: "default" 0.0; visible: 1; rel1 { relative: 0.0 0.0; @@ -242,7 +373,7 @@ group { color: 255 255 255 255; } } - + part { name : "list_content"; type: SWALLOW; @@ -278,7 +409,7 @@ group { rel2 { relative: 2.0 1.0;to: "base";} } } - + part { name : "list_content_temp"; type: SWALLOW; @@ -313,8 +444,8 @@ group { rel1 { relative: 1.0.0 0.0;to: "base";} rel2 { relative: 2.0 1.0;to: "base";} } - } - + } + part { name: "elm.swallow.content.index"; type: SWALLOW; @@ -325,7 +456,9 @@ group { } } - part { + + //add by rocket.he for fixing CQ: H0100127628 Begin + part { name: "main.mute.bg"; type: IMAGE; mouse_events: 0; @@ -342,11 +475,11 @@ group { } description { state: "show" 0.0; - inherit: "default" 0.0; + inherit: "default" 0.0; visible: 1; - } + } } - part { + part { name: "main.mute.image"; type: IMAGE; mouse_events: 0; @@ -363,11 +496,30 @@ group { } description { state: "show" 0.0; - inherit: "default" 0.0; + inherit: "default" 0.0; visible: 1; - } + } } + //add by rocket.he for fixing CQ: H0100127628 end + part { + name: "lrc"; + type: SWALLOW; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: PLAYVIEW_LYRIC_SX PLAYVIEW_LYRIC_SY; offset: 0 -1; to: "bg";} + rel2 { relative: PLAYVIEW_LYRIC_EX PLAYVIEW_LYRIC_SY; offset: 0 -1; to: "bg";} + } + description { + state: "show" 0.0; + visible: 1; + rel1 { relative: PLAYVIEW_LYRIC_SX PLAYVIEW_LYRIC_SY; offset: 0 -1; to: "bg";} + rel2 { relative: PLAYVIEW_LYRIC_EX PLAYVIEW_LYRIC_EY; to: "bg";} + } + } part { name: "player_option_menu"; type: SWALLOW; @@ -390,7 +542,7 @@ group { visible: 0; } } - + part { name: "player_progress"; type: SWALLOW; @@ -403,7 +555,7 @@ group { color: ALBUMART_IMAGE_SHADOW_RGBA; } } - + part { name: "line1"; type: RECT; @@ -416,7 +568,7 @@ group { color: 8 8 8 102; } } - + part { name: "line2"; type: RECT; @@ -446,6 +598,7 @@ group { } programs { + LRC_PROG OPT_PROG program { name: "flick_left"; signal: "flick_left"; @@ -488,20 +641,21 @@ group { target: "list_content"; } program { name : "list_content_transit_done"; - signal: "transit_done"; + signal: "transit_done"; source: "list_content"; - script { - emit("transit_done", "list"); - } - } + script { + emit("transit_done", "list"); + } + } program { name : "list_temp_transit_done"; - signal: "transit_done"; + signal: "transit_done"; source: "list_content_temp"; - script { - emit("transit_done", "temp"); - } + script { + emit("transit_done", "temp"); + } } - + + //add by rocket.he for fixing CQ: H0100127628 Begin program { signal: "signal.main.mute.show"; source: "*"; @@ -515,19 +669,22 @@ group { source: "*"; action: STATE_SET "default" 0.0; target: "main.mute.image"; - target: "main.mute.bg"; + target: "main.mute.bg"; } - } + //add by rocket.he for fixing CQ: H0100127628 end + + } } - - - + + + group { name : "mp_play_view"; images { image: "T02_controls_bg_shadow.png" COMP; image: "music_player_bg.PNG" COMP; image: "music_popup_mute.png" COMP; + image: "allshare_dmr_icon.png" COMP; } parts { @@ -535,6 +692,7 @@ group { part { name: "bg"; type: SWALLOW; + scale: 1; mouse_events: 0; description { state: "default" 0.0; @@ -543,15 +701,17 @@ group { rel2 { relative: 1.0 1.0; } } } - + part { name: "album_bg"; type: SWALLOW; mouse_events: 0; + scale: 1; description { state: "default" 0.0; visible: 1; rel1 { relative: 0.0 0.0; to: "bg";} + //rel2 { relative: 1.0 1.0; to: "bg";} rel2 { relative: 1.0 PLAYVIEW_ALBUM_H/964; offset: 0 -2; to: "bg";} } } @@ -560,10 +720,12 @@ group { name: "album_art"; type: SWALLOW; mouse_events: 0; + scale: 1; description { state: "default" 0.0; visible: 1; rel1 { relative: 0.0 0.0; to: "album_bg"; } + //rel2 { relative: 1.0 1.0; to: "bg";} rel2 { relative: 1.0 PLAYVIEW_ALBUM_H/964; offset: 0 -2; to: "bg";} } } @@ -578,7 +740,7 @@ group { rel2 { relative: 1.0 1.0; to: "album_bg"; } } } - + /* streaming buffering area */ part { name: "buffering_area"; @@ -594,10 +756,56 @@ group { rel1 { relative: 1.0 1.0; to: "album_art"; } rel2 { relative: 1.0 1.0; to: "album_art"; } } - } + } + + /* allshare DMR icon */ + part { + name: "dmr_icon"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + min: 60 80; + align: 0.0 1.0; + fixed: 1 1; + rel1 { relative: 0.0 1.0; offset: 30 -10; to: "album_art"; } + rel2 { relative: 0.0 1.0; offset: 30 -10; to: "album_art"; } + image { normal: "allshare_dmr_icon.png"; } + } + description { + state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + } programs { + + /* allshare DMR icon */ + program { + source: "dmr_icon"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "dmr_icon_clicked" "ctrl_edj"; + } + + program { + signal: "show_dmr_icon"; + source: "*"; + action: STATE_SET "show" 0.0; + target: "dmr_icon"; + } + + program { + signal: "hide_dmr_icon"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "dmr_icon"; + } } } @@ -620,119 +828,673 @@ group { #define TITLE_ARTIST 36 #define TITLE_ALBUM 34 #define TITLE_H (TITLE_PAD_T+TITLE_PAD_D+TITLE_NAME+TITLE_ARTIST+TITLE_ALBUM) +#define BG_COLOR 236 240 242 255 #define BASE_SC_H (ALBUM_ART_H+TITLE_H) group { - name: "empty_layout"; + name: "landscape_layout"; + // min: MAIN_H MAIN_W; parts { - - part { name: "bg"; - mouse_events: 0; - type: RECT; - description { state: "default" 0.0; - visible: 1; - rel1 { relative: 0.0 0.0; - offset : 0 0;} - rel2 { relative: 1.0 1.0;} - color: 0 0 0 255; - } - } - } - } - group { - name: "player_view_info"; - min: 54 MAIN_W; - parts { - - part { name: "bg"; - mouse_events: 0; - type : RECT; - description { state: "default" 0.0; - visible: 1; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 1.0 1.0;} - color: 0 0 0 255; + part { name: "bg"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; + offset : 0 0;} + rel2 { relative: 1.0 1.0;} + color: BG_COLOR; + } } - } - part { - name : "artist"; - type: TEXT; + part { + name : "list_content"; + type: SWALLOW; mouse_events: 1; scale: 1; description { visible:1; + min: 100 100; + fixed: 1 1; state: "default" 0.0; - rel1 { relative: 0.0 0.0;to: "bg";} - rel2 { relative: 1.0 20/54;to: "bg";} - text { - font: FONT_STYLE_ROMAN; - size: 32; - align: 0.5 0.5; - } - color: 18 131 183 255; + rel1 { relative: 0.0 0.0;to: "bg";} + rel2 { relative: 1.0 1.0;to: "bg";} } } + part { - name : "album"; - type: TEXT; - mouse_events: 1; - scale: 1; + name: "elm.swallow.content.index"; + type: SWALLOW; description { - visible:1; state: "default" 0.0; - rel1 { relative: 0.0 24/50;to: "bg";} - rel2 { relative: 1.0 48/50;to: "bg";} - text { - font: FONT_STYLE_ROMAN; - size: 32; - align: 0.5 0.5; - } - color: 18 131 183 255; + rel1 { to: "list_content"; } + rel2 { to: "list_content"; } + } + } + + part { + name : "elm.swallow.controlbar"; + type: SWALLOW; + mouse_events:1; + scale : 1; + description { + visible:1; + //min: 0 65; + //max: 480 65; + state: "default" 0.0; + rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + rel2 { relative: 1.0 1.0;to: "bg";} } } } } - group { - name: "player_view_options"; - min: 50 MAIN_W; - - images { - image: "T02_OptionHeader_btn_press.png" COMP; - } + name: "empty_layout"; parts { - + part { name: "bg"; - mouse_events: 1; + mouse_events: 0; type: RECT; description { state: "default" 0.0; visible: 1; rel1 { relative: 0.0 0.0; offset : 0 0;} rel2 { relative: 1.0 1.0;} - color: 53 53 53 255; + color: 0 0 0 255; } } + } + } - part { name: "bottom_line"; + group { + name: "landscape_playview_layout"; + min: MAIN_W MAIN_W; + parts { + + part { name: "bg"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; + offset : 0 0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 0; + } + } + part { name: "clipper"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; + offset : 0 0; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + color: 255 255 255 255; + } + } + part { + name : "list_content"; + type: SWALLOW; mouse_events: 1; - type: RECT; - description { state: "default" 0.0; - visible: 1; - min: 0 1; + scale: 1; + clip_to : "clipper"; + description { + visible:1; fixed: 1 1; - rel1 { relative: 0.0 1.0;} - rel2 { relative: 1.0 1.0;} - color: 49 49 49 255; + state: "default" 0.0; + rel1 { relative: 0.0 0.0;to: "bg";} + rel2 { relative: 1.0 1.0;to: "bg";} + } + description { + visible:0; + fixed: 1 1; + state: "invisible" 0.0; + rel1 { relative: 0.0 0.0;to: "bg";} + rel2 { relative: 1.0 1.0;to: "bg";} + } + description { + visible:1; + fixed: 1 1; + state: "left" 0.0; + rel1 { relative: -1.0 0.0;to: "bg";} + rel2 { relative: 0.0 1.0;to: "bg";} + } + description { + visible:1; + fixed: 1 1; + state: "right" 0.0; + rel1 { relative: 1.0.0 0.0;to: "bg";} + rel2 { relative: 2.0 1.0;to: "bg";} } } - part { - name: "option_3_bg"; - type: RECT; + name : "list_content_temp"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + clip_to : "clipper"; + description { + visible:1; + fixed: 1 1; + state: "default" 0.0; + rel1 { relative: 0.0 0.0;to: "bg";} + rel2 { relative: 1.0 1.0;to: "bg";} + } + description { + visible:0; + fixed: 1 1; + state: "invisible" 0.0; + rel1 { relative: 0.0 0.0;to: "bg";} + rel2 { relative: 1.0 1.0;to: "bg";} + } + description { + visible:1; + fixed: 1 1; + state: "left" 0.0; + rel1 { relative: -1.0 0.0;to: "bg";} + rel2 { relative: 0.0 1.0;to: "bg";} + } + description { + visible:1; + fixed: 1 1; + state: "right" 0.0; + rel1 { relative: 1.0.0 0.0;to: "bg";} + rel2 { relative: 2.0 1.0;to: "bg";} + } + } + + part { + name: "player_title_bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 1.0; offset: 0 -415; to: "bg";} + rel2 { relative: 1.0 1.0; offset: 0 -389; to: "bg";} + color: 24 24 24 180; + } + } + + part { + name: "player_title"; + type: TEXT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to, "player_title_bg";} + rel2 { relative: 1.0 1.0; to, "player_title_bg";} + text { + font: FONT_STYLE_MEDIUM; + size: 20; + align: 0.5 0.5; + } + color: 215 215 215/*240 123 20*/ 255; + } + } + + part{ + name : "player_head"; + type: SWALLOW; + mouse_events:1; + scale : 1; + description { + visible:1; + min: 0 NAVIGATIONBAR_H; + fixed: 1 1; + align: 0 0; + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "bg";} + rel2 { relative: 1.0 0.0; to: "bg";} + } + } + + part{ + name: "top_line1"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.5*(720-688)/720 (NAVIGATIONBAR_H)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + rel2 { relative: 0.5*(720+688)/720 (NAVIGATIONBAR_H)/PLAYVIEW_H_LANDSCAPE; offset: 0 1; to: "bg";} + color: 8 8 8 102; + } + } + part { + name: "top_line2"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to: "top_line1";} + rel2 { relative: 1.0 1.0; offset: 0 1; to: "top_line1";} + color: 173 173 173 102; + } + } + part{ + name : "player_clip"; + type: RECT; + scale : 1; + description { + color: 255 255 255 255; + state: "default" 0.0; + rel1 { relative: 0.0 (NAVIGATIONBAR_H)/PLAYVIEW_H_LANDSCAPE; offset: 0 2; to: "bg";} + rel2 { relative: 1.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; offset: 0 2; to: "bg";} + } + + } + + part{ + name : "player_info"; + type: SWALLOW; + mouse_events:1; + scale : 1; + clip_to: "player_clip"; + description { + visible:1; + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "player_clip";} + rel2 { relative: 1.0 1.0; to: "player_clip";} + } + } + + part{ + name : "player_options"; + type: SWALLOW; + mouse_events:1; + scale : 1; + description { + visible:1; + //min: 480 50; + color: 49 49 49 255; + state: "default" 0.0; + rel1 { relative: 0.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; offset: 0 2; to: "bg";} + rel2 { relative: 1.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE+PLAYVIEW_OPTION_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; offset: 0 2; to: "bg";} + } + } + + part { + name: "lrc"; + type: SWALLOW; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + rel2 { relative: 1.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + } + description { + state: "show" 0.0; + visible: 1; + rel1 { relative: 0.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + rel2 { relative: 1.0 0.0; to_x: "bg"; to_y: "player_option_menu";} + } + } + part { + name: "player_option_menu"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE-96)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + rel2 { relative: 1.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + } + description { + state: "invisible" 0.0; + rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + rel2 { relative: 1.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + } + description { + state: "invisible" 1.0; + inherit: "invisible" 0.0; + visible: 0; + } + } + + part { + name: "player_progress"; + type: SWALLOW; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + //min: 480 79; + rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + rel2 { relative: 1.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + color: ALBUMART_IMAGE_SHADOW_RGBA; + } + } + + part { + name : "elm.swallow.controlbar"; + type: SWALLOW; + mouse_events:1; + scale : 1; + description { + visible:1; + //min: 0 85; + state: "default" 0.0; + rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";} + rel2 { relative: 1.0 1.0;to: "bg";} + } + } + } + + programs { + LRC_PROG + OPT_PROG + program { name: "flick_left"; + signal: "flick_left"; + source: "list_content"; + action: STATE_SET "left" 0.0; + target: "list_content"; + transition: LINEAR 0.5; + } + program { name: "flick_right"; + signal: "flick_right"; + source: "list_content"; + action: STATE_SET "right" 0.0; + target: "list_content"; + transition: LINEAR 0.5; + } + program { name: "set_right"; + signal: "set_right"; + source: "list_content_temp"; + action: STATE_SET "right" 0.0; + target: "list_content_temp"; + } + program { name: "set_left"; + signal: "set_left"; + source: "list_content_temp"; + action: STATE_SET "left" 0.0; + target: "list_content_temp"; + } + program { name: "set_default"; + signal: "set_default"; + source: "list_content_temp"; + action: STATE_SET "default" 0.0; + target: "list_content_temp"; + transition: LINEAR 0.5; + after :"list_content_transit_done"; + } + program { name: "set_default_list"; + signal: "set_default"; + source: "list_content"; + action: STATE_SET "default" 0.0; + target: "list_content"; + } + program { name : "list_content_transit_done"; + signal: "transit_done"; + source: "list_content"; + script { + emit("transit_done", "list"); + } + } + program { name : "list_temp_transit_done"; + signal: "transit_done"; + source: "list_content_temp"; + script { + emit("transit_done", "temp"); + } + } + } + + } + + group { + name: "player_view_info"; + min: 54 MAIN_W; + parts { + + part { name: "bg"; + mouse_events: 0; + type : RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 0 0 0 255; + } + } + part { + name : "artist"; + type: TEXT; + mouse_events: 1; + scale: 1; + description { + visible:1; + state: "default" 0.0; + rel1 { relative: 0.0 0.0;to: "bg";} + rel2 { relative: 1.0 20/54;to: "bg";} + text { + font: FONT_STYLE_ROMAN; + size: 32; + align: 0.5 0.5; + } + color: 18 131 183 255; + } + } + part { + name : "album"; + type: TEXT; + mouse_events: 1; + scale: 1; + description { + visible:1; + state: "default" 0.0; + rel1 { relative: 0.0 24/50;to: "bg";} + rel2 { relative: 1.0 48/50;to: "bg";} + text { + font: FONT_STYLE_ROMAN; + size: 32; + align: 0.5 0.5; + } + color: 18 131 183 255; + } + } + } + } + + + group { + name: "player_view_options"; + min: 50 MAIN_W; + + images { + image: "T02_OptionHeader_btn_press.png" COMP; + } + parts { + + part { name: "bg"; + mouse_events: 1; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; + offset : 0 0;} + rel2 { relative: 1.0 1.0;} + color: 53 53 53 255; + } + } + + part { name: "bottom_line"; + mouse_events: 1; + type: RECT; + description { state: "default" 0.0; + visible: 1; + min: 0 1; + fixed: 1 1; + rel1 { relative: 0.0 1.0;} + rel2 { relative: 1.0 1.0;} + color: 49 49 49 255; + } + } + + part { + name: "option_1_bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: OPTION_1_SX OPTION_SY; to: "bg";} + rel2 { relative: OPTION_1_EX OPTION_EY; to: "bg";} + color: 53 53 53 255; + } + description { + state: "press" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "option_1_press_bg"; + type: IMAGE; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + image { normal: "T02_OptionHeader_btn_press.png"; border: 3 3 1 1;} + rel1 { relative: 0.0 0.0; to: "option_1_bg";} + rel2 { relative: 1.0 1.0; to: "option_1_bg";} + } + description { + state: "press" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "option_1"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "option_1_bg";} + rel2 { relative: 1.0 1.0; to, "option_1_bg";} + + + + text { + font: FONT_STYLE_MEDIUM; + size: 32; + align: 0.5 0.5; + text: "Share"; + } + color: 249 249 249 255; + } + description { + state: "press" 0.0; + inherit: "default" 0.0; + color: 188 187 187 255; + } + } + + part { name: "option_1_event_blocker"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + rel1 { relative: 0.0 0.0; to, "option_1_bg";} + rel2 { relative: 1.0 1.0; to, "option_1_bg";} + color: 0 0 0 0; + visible: 0; + } + description { state: "enabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "option_2_bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: OPTION_2_SX OPTION_SY; to: "bg";} + rel2 { relative: OPTION_2_EX OPTION_EY; to: "bg";} + color: 53 53 53 255; + } + description { + state: "press" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + + part { + name: "option_2_press_bg"; + type: IMAGE; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + image { normal: "T02_OptionHeader_btn_press.png"; border: 3 3 1 1;} + rel1 { relative: 0.0 0.0; to: "option_2_bg";} + rel2 { relative: 1.0 1.0; to: "option_2_bg";} + } + description { + state: "press" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "option_2"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "option_2_bg";} + rel2 { relative: 1.0 1.0; to, "option_2_bg";} + text { + font: FONT_STYLE_MEDIUM; + size: 32; + align: 0.5 0.5; + text: "Set"; + } + color: 249 249 249 255; + } + description { + state: "press" 0.0; + inherit: "default" 0.0; + color: 188 187 187 255; + } + } + + part { name: "option_2_event_blocker"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + rel1 { relative: 0.0 0.0; to, "option_2_bg";} + rel2 { relative: 1.0 1.0; to, "option_2_bg";} + color: 0 0 0 0; + visible: 0; + } + description { state: "enabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + + part { + name: "option_3_bg"; + type: RECT; mouse_events: 1; description { state: "default" 0.0; @@ -740,7 +1502,7 @@ group { rel1 { relative: OPTION_3_SX OPTION_SY; to: "bg";} rel2 { relative: OPTION_3_EX OPTION_EY; to: "bg";} color: 53 53 53 255; - }description { + }description { state: "press" 0.0; inherit: "default" 0.0; visible: 0; @@ -753,14 +1515,13 @@ group { description { state: "default" 0.0; visible: 0; - image { normal: "T02_OptionHeader_btn_press.png"; } + image { normal: "T02_OptionHeader_btn_press.png"; border: 3 3 1 1;} rel1 { relative: 0.0 0.0; to: "option_3_bg";} rel2 { relative: 1.0 1.0; to: "option_3_bg";} } - description { + description { state: "press" 0.0; inherit: "default" 0.0; - image { normal: "T02_OptionHeader_btn_press.png"; } visible: 1; } } @@ -782,16 +1543,122 @@ group { } color: 249 249 249 255; } - description { + description { + state: "press" 0.0; + inherit: "default" 0.0; + color: 188 187 187 255; + } + } +#ifdef MP_FEATURE_INNER_SETTINGS + part { name: "option_4_bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: OPTION_4_SX OPTION_SY; to: "bg";} + rel2 { relative: OPTION_4_EX OPTION_EY; to: "bg";} + color: 53 53 53 255; + }description { + state: "press" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "option_4_press_bg"; + type: IMAGE; + mouse_events: 1; + description { + state: "default" 0.0; + visible: 0; + image { normal: "T02_OptionHeader_btn_press.png"; border: 3 3 1 1;} + rel1 { relative: 0.0 0.0; to: "option_4_bg";} + rel2 { relative: 1.0 1.0; to: "option_4_bg";} + } + description { + state: "press" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "option_4"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "option_4_bg";} + rel2 { relative: 1.0 1.0; to, "option_4_bg";} + text { + font: FONT_STYLE_MEDIUM; + size: 32; + align: 0.5 0.5; + text: "Settings"; + } + color: 249 249 249 255; + } + description { state: "press" 0.0; inherit: "default" 0.0; color: 188 187 187 255; } } +#endif } programs { program { + name: "option_1_down"; + source: "option_1_bg"; + signal: "mouse,down,1"; + action: STATE_SET "press" 0.0; + target: "option_1"; + target: "option_1_press_bg"; + } + + program { + name: "option_1_up"; + source: "option_1_bg"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: "option_1"; + target: "option_1_press_bg"; + } + + program { + name: "option_1_clicked"; + source: "option_1_bg"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "option_1_clicked" 0.0; + } + + program { + name: "option_2_down"; + source: "option_2_bg"; + signal: "mouse,down,1"; + action: STATE_SET "press" 0.0; + target: "option_2"; + target: "option_2_press_bg"; + } + + program { + name: "option_2_up"; + source: "option_2_bg"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: "option_2"; + target: "option_2_press_bg"; + } + + program { + name: "option_2_clicked"; + source: "option_2_bg"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "option_2_clicked" 0.0; + } + + program { name: "option_3_down"; source: "option_3_bg"; signal: "mouse,down,1"; @@ -799,7 +1666,7 @@ group { target: "option_3"; target: "option_3_press_bg"; } - + program { name: "option_3_up"; source: "option_3_bg"; @@ -808,13 +1675,61 @@ group { target: "option_3"; target: "option_3_press_bg"; } - + program { name: "option_3_clicked"; source: "option_3_bg"; signal: "mouse,clicked,1"; action: SIGNAL_EMIT "option_3_clicked" 0.0; } +#ifdef MP_FEATURE_INNER_SETTINGS + program { + name: "option_4_down"; + source: "option_4_bg"; + signal: "mouse,down,1"; + action: STATE_SET "press" 0.0; + target: "option_4"; + target: "option_4_press_bg"; + } + + program { + name: "option_4_up"; + source: "option_4_bg"; + signal: "mouse,up,1"; + action: STATE_SET "default" 0.0; + target: "option_4"; + target: "option_4_press_bg"; + } + + program { + name: "option_4_clicked"; + source: "option_4_bg"; + signal: "mouse,clicked,1"; + action: SIGNAL_EMIT "option_4_clicked" 0.0; + } +#endif + program { name: "pgm_disale_option"; + source: "*"; + signal: "sig_disable_option_btn"; + script { + set_state(PART:"option_1", "press", 0.0); + set_state(PART:"option_1_event_blocker", "enabled", 0.0); + + set_state(PART:"option_2", "press", 0.0); + set_state(PART:"option_2_event_blocker", "enabled", 0.0); + } + } + + program { name: "pgm_enable_option"; + source: "*"; + signal: "sig_enable_option_btn"; + script { + set_state(PART:"option_1", "default", 0.0); + set_state(PART:"option_1_event_blocker", "default", 0.0); + + set_state(PART:"option_2", "default", 0.0); + set_state(PART:"option_2_event_blocker", "default", 0.0); + } + } } } - diff --git a/layout/mp-progressbar.edc b/layout/mp-progressbar.edc index f710262..e2230cf 100755 --- a/layout/mp-progressbar.edc +++ b/layout/mp-progressbar.edc @@ -1,20 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - group { name: "elm/progressbar/horizontal/music/list_progress"; images { @@ -258,6 +241,7 @@ group { name: "elm/progressbar/horizontal/music/list_progress"; mouse_events: 0; scale: 1; clip_to: "progress-rect"; + //effect: SOFT_SHADOW; scale: 0; description { state: "default" 0.0; align: 0.0 0.0; @@ -366,6 +350,7 @@ group { name: "elm/progressbar/horizontal/music/list_progress"; program { name: "start_pulse"; signal: "elm,state,pulse,start"; source: "elm"; + // after: "slide_to_end"; } program { name: "stop_pulse"; signal: "elm,state,pulse,stop"; @@ -374,6 +359,7 @@ group { name: "elm/progressbar/horizontal/music/list_progress"; target: "slide_to_begin"; target: "slide_to_end"; target: "start_pulse"; + //after: "state_pulse"; } program { name: "state_pulse"; signal: "elm,state,pulse"; diff --git a/layout/mp-rich-info.edc b/layout/mp-rich-info.edc index 6aa5f98..ca8bda6 100755 --- a/layout/mp-rich-info.edc +++ b/layout/mp-rich-info.edc @@ -1,21 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - #ifndef FONT_NAME #define FONT_NAME "system_content" #endif @@ -32,24 +14,37 @@ #define FONT_NAME "system_content" #endif +#define RICHINFO_TITLE_X_PAD_W 15 +#define RICHINFO_RELATED_VIDEO_FONT_SIZE 24 +#define RICHINFO_TOP_PAD_H 10 + #define TITLE_TEXT_01_SIZE 38 -#define TITLE_TEXT_01_COLOR 255 255 255 255 +#define TITLE_TEXT_01_COLOR 0 0 0 255 #define MAIN_TEXT_01_SIZE 32 #define MAIN_TEXT_01_COLOR 255 255 255 255 #define SUB_TEXT_01_SIZE 36 -#define SUB_TEXT_01_COLOR 166 166 166 255 +#define SUB_TEXT_01_COLOR 114 114 114 255 #define RICH_INFO_WIDTH 720.0 #define RICH_INFO_HEIGHT 1130.0 +//left area #define RICH_INFO_ALBUM_WIDTH 138.0 #define RICH_INFO_ALBUM_HEIGHT 138.0 #define RICH_INFO_GAB 16.0 #define RICH_INFO_LEFT_WIDTH 170 + +//right area +#define RICH_INFO_RELATED_VIDEO_TITLE_WIDTH 266.0 +#define RICH_INFO_RELATED_VIDEO_LINE_HEIGHT 213 +#define RICH_INFO_RELATED_VIDEO_HEIGHT 282 + #define RICH_INFO_RIGHT_WIDTH 550 +#define RICH_INFO_RELATED_VIDEO_DETAIL_TITLE 43 + #define RICH_INFO_BASE_BOX_DETAIL_TITLE 60 #define RICH_INFO_SEQ_TEXT_SIZE 24 #define RICH_INFO_NO_XML_FIND_TAG_HEIGHT 112 @@ -57,7 +52,7 @@ #define RICH_INFO_BIO_ALBUM_WIDTH 528 #define RICH_INFO_BIO_ALBUM_HEIGHT 370 -#define MP_INFO_BG_COLOR 37 37 37 255; +#define MP_INFO_BG_COLOR 255 255 255 255; #define RICH_INFO_TITLE_FONT_SIZE 38 #define BOTTOM_LINE_COLOR 82 82 82 255 @@ -176,8 +171,9 @@ group{ } } +//for info view group{ - name: "richinfo/base_layout"; + name: "richinfo/test_rich_info"; parts { part { name: "bg"; @@ -193,16 +189,17 @@ group{ } part { name: "detail_event_box"; - type : SWALLOW; - mouse_events: 1; - scale: 1; - description { state: "default" 0.0; - visible: 1; - rel1 { relative: 0.0 0.0; to, "bg"; } - rel2 { relative: 1.0 1.0; to, "bg"; } - } - } + type : SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "bg"; } + rel2 { relative: 1.0 1.0; to, "bg"; } + } + } + ///left area part { name: "left_area"; type : SWALLOW; @@ -216,11 +213,31 @@ group{ } } + /////right area + //for base box BASE_BOX_PART("base_box") + + //for base box datail + BASE_BOX_DETAIL_PART("rv_base_box_detail") + BASE_BOX_DETAIL_PART("track_base_box_detail") + BASE_BOX_DETAIL_PART("review_base_box_detail") + BASE_BOX_DETAIL_PART("bio_base_box_detail") + BASE_BOX_DETAIL_PART("dis_base_box_detail") + BASE_BOX_DETAIL_PART("credit_base_box_detail") BASE_BOX_DETAIL_PART("mi_base_box_detail") + + //for datail scroller + DETAIL_SCROLLER_PART("rv_detail_scroller", RICH_INFO_RELATED_VIDEO_DETAIL_TITLE) + DETAIL_SCROLLER_PART("track_detail_scroller", (RICH_INFO_BASE_BOX_DETAIL_TITLE*2+1)) + DETAIL_SCROLLER_PART("review_detail_scroller", RICH_INFO_BASE_BOX_DETAIL_TITLE) + DETAIL_SCROLLER_PART("bio_detail_scroller", RICH_INFO_BASE_BOX_DETAIL_TITLE) + DETAIL_SCROLLER_PART("dis_detail_scroller", (RICH_INFO_BASE_BOX_DETAIL_TITLE+1)) + DETAIL_SCROLLER_PART("credit_detail_scroller", RICH_INFO_BASE_BOX_DETAIL_TITLE) DETAIL_SCROLLER_PART("mi_detail_scroller", RICH_INFO_BASE_BOX_DETAIL_TITLE) + BASE_BOX_SCROLLER_PART("no_xml_detail_scroller", RICH_INFO_NO_XML_FIND_TAG_HEIGHT) BASE_BOX_SCROLLER_PART("no_xml_no_sim_detail_scroller", RICH_INFO_GAB) + BASE_BOX_SCROLLER_PART("contents", 0) } } @@ -241,6 +258,7 @@ group{ description { state: "default" 0.0; visible: 1; fixed: 1 0; + //min: (RICH_INFO_GAB*2+ RICH_INFO_ALBUM_WIDTH) 710; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } color: MP_INFO_BG_COLOR @@ -394,9 +412,1555 @@ group{ } } -/******************for media info detail view start****************************************/ +group { + name, "find_tag_bt"; + + images { + image: "01_search_input_icon_bg.png" COMP; + } + + parts { + part { name, "background"; + type, RECT; + mouse_events: 1; + description { + state, "default" 0.0; + color, 25 25 25 255; + } + } + + part { name, "button_img"; + type, IMAGE; + ignore_flags: ON_HOLD; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + //min: 45 45; + //max: 45 45; + image { normal: "01_search_input_icon_bg.png"; } + rel1 { relative: 0 26/112; offset: 0 0;} + rel2 { relative: 60/RICH_INFO_RIGHT_WIDTH 86/RICH_INFO_NO_XML_FIND_TAG_HEIGHT; offset: 0 0;} + } + } + + part { + name: "txt"; + scale: 1; + type: TEXT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { relative, 86/RICH_INFO_RIGHT_WIDTH 32/RICH_INFO_NO_XML_FIND_TAG_HEIGHT; } + rel2 { relative, 1.0 80/RICH_INFO_NO_XML_FIND_TAG_HEIGHT; } + color: TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: TITLE_TEXT_01_SIZE; + align: 0 0.5; + text: "Category"; + } + } + } + + part { name, "bottom_line"; + type, RECT; + mouse_events: 1; + description { + state, "default" 0.0; + color, BOTTOM_LINE_COLOR; + min: 0 1; + rel1 { relative: 0.0 1.0; offset: 0 -2;} + rel2 { relative: 1.0 1.0; offset: 0 -2;} + } + } + + } + + programs { + program { + name: "bg_clicked"; + signal: "mouse,clicked,1"; + source: "background"; + action: SIGNAL_EMIT "btn_clicked" "0"; + } + } +} + group{ - name: "mi_base_box_detail"; + name: "parent_base_box"; + + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH (RICH_INFO_RELATED_VIDEO_HEIGHT+RICH_INFO_GAB); + //max: RICH_INFO_RIGHT_WIDTH RICH_INFO_HEIGHT; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part { + name: "base_box"; + type: SWALLOW; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 1; offset: 0 0; to: "bg";} + } + } + + part { + name: "scroller"; + type: SWALLOW; + description { state: "default" 0.0; + visible: 1; + align: 0 0; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 1; offset: 0 0; to: "bg";} + } + } + } +} + +group{ + name: "base_box"; + + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + + part { + name: "no_rv_genlist"; + type: SWALLOW; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 1; offset: 0 0; to: "bg";} + } + } + + //for scroller + part { + name: "contents"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + min: 0 0; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 0.0; offset:0 0; to: "bg";} + rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";} + } + } + } + +} + +//for related video in first view +#define RICH_INFO_RELATED_VIDEO_TITLE_W 266.0 +group{ + name, "related_video_box"; + images { + image: "00_list_bar_press_1x80.png" COMP; + image: "T02_youtube.png" COMP; + } + parts{ + + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + + part { + name: "title"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 {relative: 0 (10/RICH_INFO_RELATED_VIDEO_HEIGHT); to: "bg";} + rel2 { + relative: (RICH_INFO_RELATED_VIDEO_TITLE_W/RICH_INFO_RIGHT_WIDTH) (58/RICH_INFO_RELATED_VIDEO_HEIGHT); + to: "bg" ; + } + color, TITLE_TEXT_01_COLOR; + text { + font: FONT_STYLE_ROMAN; + size: TITLE_TEXT_01_SIZE; + align: 0.5 0.5; + } + } + } + + part { + name: "seperator"; + type: RECT; + scale: 1; + description{ + state: "default" 0.0; + min: 1 0; + rel1 { relative: 1 8/48; to: "title";} + rel2 { relative: 1 40/48; to: "title";} + color: 112 112 112 255; + } + } + + part { name, "youtube_image"; + type, IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + image { normal: "T02_youtube.png"; } + visible: 1; + align: 0 0.5; + min: 96 48; + max: 96 48; + rel1 { relative: 1 0; offset: 0 0; to_x: "seperator"; to_y: "title";} + rel2 { relative: 1 1; offset: 0 0; to_x: "seperator"; to_y: "title";} + } + } + + part { + name: "video"; + type: SWALLOW; + scale:1; + description { state: "default" 0.0; + fixed: 1 1; + min: RICH_INFO_RIGHT_WIDTH RICH_INFO_RELATED_VIDEO_LINE_HEIGHT; + rel1 { relative: 0 1; offset: 0 0; to: "title";} + rel2 { relative: 1 1; offset: 0 0; to: "bg";} + } + } + } +} + +#define RICH_INFO_RELATED_VIDEO_LINE_H 213 +#define RICH_INFO_RELATED_VIDEO_LINE_W RICH_INFO_RIGHT_WIDTH +#define VIDEO_LINE_W_R(w) ((w)/RICH_INFO_RELATED_VIDEO_LINE_W) +#define VIDEO_LINE_H_R(h) ((h)/RICH_INFO_RELATED_VIDEO_LINE_H) +#define RICH_INFO_RELATED_VIDEO_IMAGE_W 162.0 +#define RICH_INFO_RELATED_VIDEO_IMAGE_H 129.0 + +//for related video images by line +group{ + name, "related_video_line"; + + parts{ + part { name, "bg"; + type, RECT; + scale: 1; + mouse_events: 1; + description { + state, "default" 0.0; + visible: 1; + align: 0 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + part{name, "img_bg1"; + type, RECT; + scale: 1; + mouse_events: 1; + description { + state, "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; + to, "bg"; + } + rel2 { relative: VIDEO_LINE_W_R(RICH_INFO_RELATED_VIDEO_IMAGE_W) VIDEO_LINE_H_R(RICH_INFO_RELATED_VIDEO_IMAGE_H); + to, "bg"; + } + color, 54 54 54 255; + align: 0 0.5; + } + } + + part{name,"img1"; + type,SWALLOW; + scale:1; + mouse_events: 1; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; to, "img_bg1"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "img_bg1"; } + align: 0.5 0.5; + } + } + + part{ name, "title1"; + type, TEXT; + scale: 1; + description { + state, "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 VIDEO_LINE_H_R(139); + to_x, "img_bg1"; to_y, "bg"; + } + rel2 { relative: 1.0 VIDEO_LINE_H_R(167); + to_x, "img_bg1"; to_y, "bg"; + } + color, 151 150 150 255; + text { + font: FONT_STYLE_ROMAN; + size: RICHINFO_RELATED_VIDEO_FONT_SIZE; + align: 0.5 0.5; + } + } + } + + part{ name, "title12"; + type, TEXT; + scale: 1; + description { + state, "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 VIDEO_LINE_H_R(173); + offset:0 0; + to_x, "title1"; + to_y, "bg"; + } + rel2 { relative: 1.0 VIDEO_LINE_H_R(201); + to_x, "title1"; + to_y, "bg"; + } + color, 151 150 150 255; + + text { + font: FONT_STYLE_MEDIUM; + size: RICHINFO_RELATED_VIDEO_FONT_SIZE; + align: 0.5 0.5; + } + } + } + + part{name, "img_bg2"; + type, RECT; + scale: 1; + mouse_events: 1; + description { + state, "default" 0.0; + visible: 0; + rel1 { relative: VIDEO_LINE_W_R(184) 0.0; + offset: 0 0; + to_x, "bg"; to_y, "img_bg1"; + } + rel2 { relative: VIDEO_LINE_W_R(346) 1.0; + offset: 0 0; + to_x, "bg"; to_y, "img_bg1"; + } + color, 54 54 54 255; + align: 0 0.5; + } + } + + part{name,"img2"; + type,SWALLOW; + scale:1; + mouse_events: 1; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; to, "img_bg2"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "img_bg2"; } + align: 0.5 0.5; + //fixed: 1 1; + } + } + + part{ name, "title2"; + type, TEXT; + scale: 1; + description { + state, "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; + to_x, "img_bg2"; + to_y, "title1"; + } + rel2 { relative: 1.0 1.0; + to_x, "img_bg2"; + to_y, "title1"; + } + color, 151 150 150 255; + + text { + font: FONT_STYLE_MEDIUM; + size: RICHINFO_RELATED_VIDEO_FONT_SIZE; + align: 0.5 0.5; + } + } + } + + part{ name, "title22"; + type, TEXT; + scale: 1; + description { + state, "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; + offset:0 0; + to_x, "title2"; + to_y, "title12"; + + } + rel2 { relative: 1.0 1.0; + offset:0 0; + to, "title2"; + to_y, "title12"; + } + color, 151 150 150 255; + + text { + font: FONT_STYLE_MEDIUM; + size: RICHINFO_RELATED_VIDEO_FONT_SIZE; + align: 0.5 0.5; + } + } + } + + part{name, "img_bg3"; + type, RECT; + scale: 1; + mouse_events: 1; + description { + state, "default" 0.0; + visible: 0; + rel1 { relative: VIDEO_LINE_W_R(368) 0.0; + offset: 0 0; + to_x, "bg"; to_y, "img_bg1"; + } + rel2 { relative: VIDEO_LINE_W_R(530) 1.0; + offset: 0 0; + to_x, "bg"; to_y, "img_bg1"; + } + color, 54 54 54 255; + align: 0 0.5; + } + } + + part{name,"img3"; + type,SWALLOW; + scale:1; + mouse_events: 1; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; to, "img_bg3"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "img_bg3"; } + align: 0.5 0.5; + //fixed: 1 1; + } + } + + part{ name, "title3"; + type, TEXT; + scale: 1; + description { + state, "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; + offset:0 0; + to_x, "img_bg3"; + to_y, "title1"; + } + rel2 { relative: 1.0 1.0; + offset:0 0; + to_x, "img_bg3"; + to_y, "title1"; + } + color, 151 150 150 255; + + text { + font: FONT_STYLE_MEDIUM; + size: RICHINFO_RELATED_VIDEO_FONT_SIZE; + align: 0.5 0.5; + } + } + } + + part{ name, "title32"; + type, TEXT; + scale: 1; + description { + state, "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; + offset:0 0; + to_x, "title3"; + to_y, "title12"; + } + rel2 { relative: 1.0 1.0; + offset:0 0; + to_x, "title3"; + to_y, "title12"; + } + color, 151 150 150 255; + + text { + font: FONT_STYLE_MEDIUM; + size: RICHINFO_RELATED_VIDEO_FONT_SIZE; + align: 0.5 0.5; + } + } + } + + programs{ + program { + name: "clicked"; + signal: "mouse,clicked,1"; + //source: "img_bg1"; + source: "img1"; + action: SIGNAL_EMIT "related.video.clicked" "0"; + } + program { + name: "clicked1"; + signal: "mouse,clicked,1"; + //source: "img_bg2"; + source: "img2"; + action: SIGNAL_EMIT "related.video.clicked" "1"; + } + program { + name: "clicked2"; + signal: "mouse,clicked,1"; + //source: "img_bg3"; + source: "img3"; + action: SIGNAL_EMIT "related.video.clicked" "2"; + } + } + + }//parts + +}//group + + +/******************for related video detail view start****************************************/ +group{ + name: "rv_base_box_detail"; + images { + image: "T02_youtube.png" COMP; + } + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part{ name, "title"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + align: 0 0; + rel1 { //relative: 0 (RICH_INFO_GAB/RICH_INFO_HEIGHT); + relative: 0 0; + offset: 0 0; + to: "bg"; + } + rel2 { relative: (RICH_INFO_RELATED_VIDEO_TITLE_WIDTH/RICH_INFO_RIGHT_WIDTH) (70/RICH_INFO_HEIGHT); + offset: 0 0; + to: "bg"; + } + color, TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + text: "Music"; + } + } + } + + part { name, "youtube_image"; + type, IMAGE; + scale: 1; + mouse_events: 0; + description { + state: "default" 0.0; + image { normal: "T02_youtube.png"; } + visible: 1; + align: 0 0.5; + min: 96 48; + max: 96 48; + rel1 { relative: 1 0; offset: 0 0; to_x: "title"; to_y: "title";} + rel2 { relative: 1 1; offset: 0 0; to_x: "title"; to_y: "title";} + } + } + + part{name,"rv_content"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + align: 0 0; + fixed: 0 0; + } + } + + + //for scroller + part { + name: "rv_scroller"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + align: 0 0; + fixed: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + } + } + } +} + + +/******************for related video detail view end****************************************/ + +/******************for track list detail view start****************************************/ +#define RICH_INFO_STARS_BG_W 208 +#define RICH_INFO_STARS_BG_H 48 +#define RICH_INFO_STARS_W_H 32 +#define RICH_INFO_STARS_GAP 4 +#define RICH_INFO_STARS_SX(pos) (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos) +#define RICH_INFO_STARS_EX(pos) (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos+RICH_INFO_STARS_W_H) +group{ + name: "track_base_box_detail"; + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part{ name, "title"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + align: 0 0; + rel1 { relative: 0 10/RICH_INFO_HEIGHT; to: "bg";} + rel2 { relative: 1 (58/RICH_INFO_HEIGHT); to: "bg";} + color, TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + } + } + } + + part{ name, "artist_name"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + + align: 0 0; + rel1 { relative: 0 64/RICH_INFO_HEIGHT; offset: 0 0; } + rel2 { relative: 0.0 112/RICH_INFO_HEIGHT; offset: 0 0; to_x: "star_bg";} + color, SUB_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + } + } + } + + part{ + name, "star_bg"; + type, RECT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + align: 0 0; + rel1 { relative: (RICH_INFO_RIGHT_WIDTH -RICH_INFO_STARS_BG_W)/RICH_INFO_RIGHT_WIDTH 0.0; to_y, "artist_name";} + rel2 { relative: 1.0 1.0; to_y, "artist_name";} + color: 0 0 0 0 ; + } + } + + part{name,"stars"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 1 0.5; + rel1 { relative: 16/RICH_INFO_STARS_BG_W 8/RICH_INFO_STARS_BG_H; + to, "star_bg"; + } + rel2 { relative: (RICH_INFO_STARS_BG_W-16)/RICH_INFO_STARS_BG_W (40/RICH_INFO_STARS_BG_H); + to, "star_bg"; + } + } + } + + part{name,"star1"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(0)/RICH_INFO_STARS_BG_W 0.0; + to_x, "star_bg"; + to_y, "stars"; + } + rel2 { relative: RICH_INFO_STARS_EX(0)/RICH_INFO_STARS_BG_W 1.0; + to_x, "star_bg"; + to_y, "stars"; + } + } + } + + part{name,"star2"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(1)/RICH_INFO_STARS_BG_W 0.0; + to_x, "star_bg"; + to_y, "stars"; + } + rel2 { relative: RICH_INFO_STARS_EX(1)/RICH_INFO_STARS_BG_W 1.0; + to_x, "star_bg"; + to_y, "stars"; + } + } + } + + part{name,"star3"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(2)/RICH_INFO_STARS_BG_W 0.0; + to_x, "star_bg"; + to_y, "stars"; + } + rel2 { relative: RICH_INFO_STARS_EX(2)/RICH_INFO_STARS_BG_W 1.0; + to_x, "star_bg"; + to_y, "stars"; + } + } + } + + part{name,"star4"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(3)/RICH_INFO_STARS_BG_W 0.0; + to_x, "star_bg"; + to_y, "stars"; + } + rel2 { relative: RICH_INFO_STARS_EX(3)/RICH_INFO_STARS_BG_W 1.0; + to_x, "star_bg"; + to_y, "stars"; + } + } + } + + part{name,"star5"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + align: 0 0.5; + rel1 { relative: RICH_INFO_STARS_SX(4)/RICH_INFO_STARS_BG_W 0.0; + to_x, "star_bg"; + to_y, "stars"; + } + rel2 { relative: RICH_INFO_STARS_EX(4)/RICH_INFO_STARS_BG_W 1.0; + to_x, "star_bg"; + to_y, "stars"; + } + } + } + + part { + name: "top_tap_line"; + type: RECT; + description { + state, "default" 0.0; + fixed: 1 1; + align: 0 0; + rel1 { relative: 0 122/RICH_INFO_HEIGHT; to: "bg";} + rel2 { relative: 1 124/RICH_INFO_HEIGHT); to: "bg";} + color: BOTTOM_LINE_COLOR; + } + } + + part{name,"track_genlist"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + visible: 1; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "top_tap_line"; } + align: 0 0; + } + } + + //for scroller + part { + name: "track_scroller"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to: "top_tap_line";} + rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";} + } + } + } +} +/******************for track list detail view end****************************************/ + +/******************for discography detail view start****************************************/ +#define RICH_INFO_INTERVAL 0 +group{ + name: "dis_base_box_detail"; + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part { name: "detail_event_box"; + type : SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "bg"; } + rel2 { relative: 1.0 1.0; to, "bg"; } + } + } + + part{ name, "title"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + align: 0 0; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); to: "bg";} + color, TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + text: "Music"; + } + } + } + + part { + name: "top_tap_line"; + type: RECT; + description { state: "default" 0; + min: 0 1; + rel1 { + relative: 0 1.0; + to: "title" ; + } + rel2 { + relative: 1 1.0; + to: "title" ; + } + color: BOTTOM_LINE_COLOR; + } + } + + //for scroller + part { + name: "dis_scroller"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to: "top_tap_line";} + rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";} + } + } + } +} + + +/******************for discography detail view end****************************************/ + +/******************for review detail view start****************************************/ +group{ + name: "review_base_box_detail"; + images { + image: "rich_info/12_music_player_bg_01.PNG" COMP; + image: "12_music_playing_bg.png" COMP; + } + + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + // min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part { name: "detail_event_box"; + type : SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "bg"; } + rel2 { relative: 1.0 1.0; to, "bg"; } + } + } + + part{ name, "title"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + align: 0 0; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); offset: 0 0; to: "bg";} + color, TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + text: "Music"; + } + } + } + + part{name,"review_content"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + align: 0 0; + fixed: 0 0; + } + } + //for scroller + part { + name: "review_scroller"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + } + } + } +} + +group{ + name: "review_content"; + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH 100; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + + part{name,"review_image"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; to, "bg"; } + rel2 { relative: 1.0 0.0; offset: 0 100; to, "bg"; } + align: 0.5 0.5; + fixed: 0 0; + } + } + //for label + part { + name: "review_label"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 0; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to: "review_image";} + rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";} + } + } + } +} + +/******************for review detail view end****************************************/ + +/******************for biography detail view start****************************************/ +group{ + name: "bio_base_box_detail"; + images { + image: "rich_info/12_music_player_bg_01.PNG" COMP; + image: "12_music_playing_bg.png" COMP; + } + + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part { name: "detail_event_box"; + type : SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "bg"; } + rel2 { relative: 1.0 1.0; to, "bg"; } + } + } + + part{ name, "title"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + align: 0 0; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); offset: 0 0; to: "bg";} + color, TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + text: "Music"; + } + } + } + + part{name,"bio_content"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + align: 0 0; + fixed: 0 0; + } + } + //for scroller + part { + name: "bio_scroller"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } + //rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + } + } + } +} + +group{ + name: "bio_content"; + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + + part{name,"bio_image"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + rel1 { relative: 0/RICH_INFO_RIGHT_WIDTH 0/1280; offset: 0 0; to, "bg"; } + rel2 { relative: ((RICH_INFO_BIO_ALBUM_WIDTH)/RICH_INFO_RIGHT_WIDTH) ((RICH_INFO_BIO_ALBUM_HEIGHT)/(RICH_INFO_HEIGHT - RICH_INFO_BASE_BOX_DETAIL_TITLE)); offset: 0 0; to, "bg"; } + align: 0.5 0.5; + } + } + //for label + part { + name: "bio_label"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 0; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to_x: "bg"; to_y: "bio_image";} + } + } + } +} + +group { + name: "bio_image"; + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 0; + min: RICH_INFO_BIO_ALBUM_WIDTH RICH_INFO_BIO_ALBUM_HEIGHT; + max: RICH_INFO_BIO_ALBUM_WIDTH RICH_INFO_BIO_ALBUM_HEIGHT; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: 0 0 0 0; + } + } + + part{name,"image"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; to, "bg"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + } + } + } +} + +/******************for biography detail view end****************************************/ + + +/******************for simlar albums detail view start****************************************/ +group{ + name: "sal_base_box_detail"; + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part { name: "detail_event_box"; + type : SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "bg"; } + rel2 { relative: 1.0 1.0; to, "bg"; } + } + } + + part{ name, "title"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + align: 0 0; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); to: "bg";} + color, TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + text: "Music"; + } + } + } + + part { + name: "top_tap_line"; + type: RECT; + description { state: "default" 0; + min: 0 1; + rel1 { + relative: 0 1.0; + to: "title" ; + } + rel2 { + relative: 1 1.0; + to: "title" ; + } + color: BOTTOM_LINE_COLOR; + } + } + + //for scroller + part { + name: "dis_scroller"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to: "top_tap_line";} + rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";} + } + } + } +} + +/******************for simlar albums detail view end****************************************/ + +/******************for simlar artists detail view start****************************************/ +group{ + name: "sar_base_box_detail"; + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part { name: "detail_event_box"; + type : SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "bg"; } + rel2 { relative: 1.0 1.0; to, "bg"; } + } + } + + part{ name, "title"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + align: 0 0; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); to: "bg";} + color, TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + text: "Music"; + } + } + } + + part { + name: "top_tap_line"; + type: RECT; + description { state: "default" 0; + min: 0 1; + rel1 { + relative: 0 1.0; + to: "title" ; + } + rel2 { + relative: 1 1.0; + to: "title" ; + } + color: BOTTOM_LINE_COLOR; + } + } + + //for scroller + part { + name: "dis_scroller"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to: "top_tap_line";} + rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";} + } + } + } +} + +/******************for simlar artists detail view end****************************************/ + +/******************for credit detail view start****************************************/ +group{ + name: "credit_base_box_detail"; + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part { name: "detail_event_box"; + type : SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; to, "bg"; } + rel2 { relative: 1.0 1.0; to, "bg"; } + } + } + + part{ name, "title"; + type, TEXT; + scale: 1; + mouse_events: 0; + description { + state, "default" 0.0; + fixed: 1 1; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; + align: 0 0; + rel1 { relative: 0 0; offset: 0 0; to: "bg";} + rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); offset: 0 0; to: "bg";} + color, TITLE_TEXT_01_COLOR; + + text { + font: FONT_STYLE_MEDIUM; + size: RICH_INFO_TITLE_FONT_SIZE; + align: 0 0.5; + text: "Music"; + } + } + } + + part{name,"credit_content"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + align: 0 0; + fixed: 0 0; + } + } + + //for scroller + part { + name: "credit_scroller"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + visible: 1; + align: 0 0; + rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + } + } + } +} + +group{ + name: "info_content"; + + parts{ + part { name: "bg"; + type : RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + color: MP_INFO_BG_COLOR + } + } + + part{name,"content"; + type,SWALLOW; + scale:1; + mouse_events: 0; + description{ + state, "default" 0.0; + rel1 { relative: 0.0 0.0; offset: 0 0; to, "bg"; } + rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } + align: 0 0; + fixed: 0 0; + } + } + } +} +/******************for credit detail view end****************************************/ + +/******************for media info detail view start****************************************/ +group{ + name: "mi_base_box_detail"; + images { + image: "rich_info/12_music_player_bg_01.PNG" COMP; + image: "12_music_playing_bg.png" COMP; + } + parts{ part { name: "bg"; type : RECT; @@ -405,6 +1969,7 @@ group{ description { state: "default" 0.0; visible: 1; fixed: 1 0; + //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } color: MP_INFO_BG_COLOR @@ -455,7 +2020,7 @@ group{ fixed: 0 0; } } - + //for scroller part { name: "mi_scroller"; type: SWALLOW; @@ -463,6 +2028,7 @@ group{ scale: 1; description { state: "default" 0.0; visible: 1; + //fixed: 0 1; align: 0 0; rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; } rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; } diff --git a/layout/mp-selection-info.edc b/layout/mp-selection-info.edc index 92a04de..78142e3 100755 --- a/layout/mp-selection-info.edc +++ b/layout/mp-selection-info.edc @@ -1,23 +1,8 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +#define SELECTION_INFO_BACKGROUND_COLOR_INC 215 225 232 255 +#define SELECTION_INFO_TEXT_COLOR_INC 77 77 77 255 -#define SELECTION_INFO_BACKGROUND_COLOR_INC 69 90 131 255 -#define SELECTION_INFO_TEXT_COLOR_INC 255 255 255 255 - +#define SELECTION_INFO_MIN_PLAYVIEW_HORZ_W_INC 634 #define SELECTION_INFO_MIN_VER_W_INC 720 #define SELECTION_INFO_MIN_HORZ_W_INC 1280 #define SELECTION_INFO_VER_PADDING_INC 48 @@ -87,3 +72,64 @@ group { name: "elm/standard/selectioninfo/music/vertical/bottom_64"; } } +group { name: "elm/standard/selectioninfo/music/playview_landscape/bottom_64"; + parts { + part { + name: "bg"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + scale : 1; + description { + state: "default" 0.0; + min: SELECTION_INFO_MIN_PLAYVIEW_HORZ_W_INC SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC; + fixed: 1 1; + align: 0.5 1.0; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + color: 0 0 0 0; + } + } + part { name: "base"; + type: RECT; + mouse_events: 1; + scale : 1; + description { + state: "default" 0.0; + min: 0 SELECTION_INFO_VER_PADDING_INC; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 1.0 0.32; to: "bg"; } + color: SELECTION_INFO_BACKGROUND_COLOR_INC; + } + } + part { + name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + align: 0.5 0.0; + rel1 { to: "base"; } + rel2 { to: "base"; } + color: SELECTION_INFO_TEXT_COLOR_INC; + text { + font: "SLP"; + size: SELECTION_INFO_TEXT_FONT_SIZE_INC; + text: ""; + } + } + } + } + programs { + program { + name: "clicked"; + signal: "mouse,clicked,1"; + source: "base"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + } +} + diff --git a/layout/mp-square-view.edc b/layout/mp-square-view.edc new file mode 100755 index 0000000..4a5940d --- /dev/null +++ b/layout/mp-square-view.edc @@ -0,0 +1,528 @@ +#define NOW_PLAYING_H 100 +#define GRID_BG_COLOR 0 0 135 255 +#define GRID_TITLE_COLOR 61 64 67 255 +#define GRID_TITLE_SIZE 28 +#define GRID_H 656 +#define GRID_HALF_H 328 +#define GRID_TITLE_H 38 +#define GRID_MAIN_W 720 + +group { + name: "mp_square_view_split_right_layout"; + + images { + image: "00_winset_control_toolbar_bg.png" COMP; + } + + parts { + part { name: "bg"; + mouse_events: 0; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { relative: 0.0 0.0; + offset : 0 0;} + rel2 { relative: 1.0 1.0;} + color: 37 37 37 255; + } + } + + part { + name : "list_content"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + visible:1; + fixed: 1 1; + state: "default" 0.0; + rel1 { relative: 0.0 0.0;to: "bg";} + rel2 { relative: 1.0 0.85;to: "bg";} + } + } + + part { + name : "options_bg"; + type: IMAGE; + mouse_events: 1; + scale: 1; + description { + visible:1; + fixed: 1 1; + state: "default" 0.0; + image { normal: "00_winset_control_toolbar_bg.png";} + rel1 { relative: 0.0 0.85; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + } + } + part { + name : "options"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + visible:1; + fixed: 1 1; + state: "default" 0.0; + rel1 { relative: 0.0 0.0;to: "options_bg";} + rel2 { relative: 1.0 1.0;to: "options_bg";} + } + } + } +} + +group { + name: "mp_square_view"; + + images { + image: "T02_square_bg.png" COMP; + image: "T02_square_cell_bg.png" COMP; + image: "T02_square_cell_press.png" COMP; + } + + parts { + part { + name: "square_bg"; + mouse_events: 0; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + image { normal: "T02_square_bg.png";} + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + + part { + name: "square_cell_bg"; + mouse_events: 0; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 690; + fixed: 0 1; + align: 0 1; + image { normal: "T02_square_cell_bg.png";} + rel1 { relative: 0.0 (690+132)/899; to: square_bg;} + rel2 { relative: 1.0 (690+132)/899; to: square_bg;} + } + } + + part { + name: "gengrid"; + mouse_events: 1; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 40/720 0.0; to: square_cell_bg;} + rel2 { relative: 1.0-40/720 1-50/690; to: square_cell_bg;} + } + } + + part { + name: "title_top"; + mouse_events: 0; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 40; + fixed: 0 1; + align: 0 1; + rel1 { relative: 0.0 0.0; to: gengrid;} + rel2 { relative: 1.0 0.0; to: gengrid;} + color: GRID_TITLE_COLOR; + text { + font: FONT_NAME; + size: GRID_TITLE_SIZE; + min: 0 1; + align: 0.5 0.5; + text: "EXCITING"; + } + } + } + + part { + name: "title_bottom"; + mouse_events: 0; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 40; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 1.0; to: gengrid;} + rel2 { relative: 1.0 1.0; to: gengrid;} + color: GRID_TITLE_COLOR; + text { + font: FONT_NAME; + size: GRID_TITLE_SIZE; + min: 0 1; + align: 0.5 0.5; + text: "Calm"; + } + } + } + + part { + name: "title_left"; + mouse_events: 0; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to: gengrid;} + rel2 { relative: 1.0 1.0; to: gengrid;} + color: GRID_TITLE_COLOR; + text { + font: FONT_NAME; + size: GRID_TITLE_SIZE; + min: 0 1; + align: 0.5 0.5; + text: "Old"; + } + } + } + + part { + name: "title_right"; + mouse_events: 0; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to: gengrid;} + rel2 { relative: 1.0 1.0; to: gengrid;} + color: GRID_TITLE_COLOR; + text { + font: FONT_NAME; + size: GRID_TITLE_SIZE; + min: 0 1; + align: 0.5 0.5; + text: "New"; + } + } + } + } +} + +group { + name: "mp_square_view_landscape"; + + images { + image: "T02_square_bg.png" COMP; + image: "T02_square_cell_bg.png" COMP; + image: "T02_square_cell_press.png" COMP; + } + + parts { + part { + name: "square_bg"; + mouse_events: 0; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + image { normal: "T02_square_bg.png";} + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + + part { + name: "square_cell_bg"; + mouse_events: 0; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + image { normal: "T02_square_cell_bg.png";} + rel1 { relative: 0.0 40/640; to: square_bg;} + rel2 { relative: 1.0 1.0; to: square_bg;} + } + } + + part { + name: "gengrid"; + mouse_events: 1; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + rel1 { relative: 40/720 0.0; to: square_cell_bg;} + rel2 { relative: 1.0-40/720 1-40/640; to: square_cell_bg;} + } + } + + part { + name: "title_top"; + mouse_events: 0; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 40; + fixed: 0 1; + align: 0 1; + rel1 { relative: 0.0 0.0; to: gengrid;} + rel2 { relative: 1.0 0.0; to: gengrid;} + color: GRID_TITLE_COLOR; + text { + font: FONT_NAME; + size: GRID_TITLE_SIZE; + min: 0 1; + align: 0.5 0.5; + text: "EXCITING"; + } + } + } + + part { + name: "title_bottom"; + mouse_events: 0; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 0 40; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.0 1.0; to: gengrid;} + rel2 { relative: 1.0 1.0; to: gengrid;} + color: GRID_TITLE_COLOR; + text { + font: FONT_NAME; + size: GRID_TITLE_SIZE; + min: 0 1; + align: 0.5 0.5; + text: "Calm"; + } + } + } + + part { + name: "title_left"; + mouse_events: 0; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to: gengrid;} + rel2 { relative: 1.0 1.0; to: gengrid;} + color: GRID_TITLE_COLOR; + text { + font: FONT_NAME; + size: GRID_TITLE_SIZE; + min: 0 1; + align: 0.5 0.5; + text: "Old"; + } + } + } + + part { + name: "title_right"; + mouse_events: 0; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + visible: 0; + rel1 { relative: 0.0 0.0; to: gengrid;} + rel2 { relative: 1.0 1.0; to: gengrid;} + color: GRID_TITLE_COLOR; + text { + font: FONT_NAME; + size: GRID_TITLE_SIZE; + min: 0 1; + align: 0.5 0.5; + text: "New"; + } + } + } + } +} + +group { name: "popup_update_library_progressview"; + parts{ + part { name: "pad_t"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.5 0.0; + min: 0 14; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + } + } + } + part { name: "pad_l"; + scale: 1; + description { state: "default" 0.0; + min : 10 0; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 1.0; + } + align: 0.0 0.0; + } + } + part { name: "pad_r"; + scale: 1; + description { state: "default" 0.0; + min : 10 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + align: 1.0 0.0; + } + } + part{ name:"elm.swallow.content"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 300 0; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.5 1.0; + to: "pad_t"; + } + rel2 { + relative: 0.5 0.0; + to: "pad_b"; + } + } + } + part { name: "pad_b"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.5 1.0; + min: 0 90; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + } + } + part { name: "elm.swallow.end"; + type: SWALLOW; + scale : 1; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + to: "pad_b"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_b"; + } + } + } + part { name: "pad_bm"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + min: 0 52; + fixed: 0 1; + rel1 { + relative: 0.0 1.0; + to: "pad_b"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_b"; + } + } + } + part { name: "elm.text.subtext1"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: 16; + min: 0 0; + align: 0.0 1.0; + } + color: 108 108 108 255; + align: 0.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "pad_bm"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_bm"; + } + } + } + part { name: "elm.text.subtext2"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + text { + font: "SLP:style=Medium"; + size: 16; + min: 0 0; + align: 1.0 1.0; + } + color: 108 108 108 255; + align: 1.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "pad_bm"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_bm"; + } + } + } + } +} + diff --git a/layout/mp-toolbar.edc b/layout/mp-toolbar.edc index 3b6aabc..189d602 100755 --- a/layout/mp-toolbar.edc +++ b/layout/mp-toolbar.edc @@ -1,1730 +1,1730 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC 28 -#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC "#f9f9f9" -#define BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC 56 56 -#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255 -#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255 - -#define ITEM_STATE_ENABLED 0 -#define ITEM_STATE_DISABLED 1 - -group { name: "elm/toolbar/base/music/default"; - images { - image: "00_winset_control_toolbar_bg.png" COMP; - } - parts { - part { name: "base"; - mouse_events: 1; - description { state: "default" 0.0; - image.normal: "00_winset_control_toolbar_bg.png"; - } - } - part { name: "clipper"; - type: RECT; - mouse_events: 0; - description { - state: "default" 0.0; - rel1 { - to: "base"; - offset: 2 2; - } - rel2 { - to: "base"; - offset: -3 -3; - } - } - } - part { name: "elm.swallow.content"; - clip_to: "clipper"; - type: SWALLOW; - description { - state: "default" 0.0; - rel1.to: "clipper"; - rel2.to: "clipper"; - } - } - part { name: "event"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - } -} - -group { name: "elm/toolbar/item/music/default"; - images { - image: "T02_toolbar_press.png" COMP; - } - styles{ - style { name: "toolbar_style"; - base: "font=SLP:style=Medium font_size="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC" align=center color="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC" wrap=mixed ellipsis=1"; - tag: "br" "\n"; - tag: "ps" "ps"; - tag: "hilight" "+ font=SLP:style=Bold"; - tag: "b" "+ font=SLP:style=Bold"; - tag: "tab" "\t"; - } - } - - data.item: "transition_animation_on" "1"; - script { - public item_state = ITEM_STATE_ENABLED; - } - parts { - part { name: "bg"; - mouse_events: 0; - description { state: "default" 0.0; - visible: 0; - color: 255 255 255 0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - image { - normal: "T02_toolbar_press.png"; - border: 3 3 3 3; - } - image.middle: SOLID; - fill.smooth: 0; - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - color: 255 255 255 255; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - visible: 0; - color: 255 255 255 0; - } - } - part { name: "padding_left_top"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 0.0 0.0; - rel2.relative: 0.0 0.0; - min: 10 8; - fixed: 1 1; - visible: 1; - color: 0 0 0 0; - } - } - part { name: "padding_right_bottom"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 1.0 1.0; - rel1.relative: 1.0 1.0; - min: 10 5; - fixed: 1 1; - visible: 1; - color: 0 0 0 0; - } - } - part { - name: "icon_rect"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 0; - fixed: 0 1; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - align: 0.5 0.0; - color: 0 0 0 0; - } - description { state: "visible" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - fixed: 0 1; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - align: 0.5 0.0; - color: 0 0 0 0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { name: "padding_after_icon"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.0 0.0; - rel1 { - relative: 0.0 1.0; - to: "icon_rect"; - } - rel2.to: "icon_rect"; - fixed: 0 1; - min: 0 0; - color: 0 0 0 0; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { name: "padding_before_text"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.5 1.0; - rel1 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "elm.text"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "elm.text"; - } - fixed: 0 1; - min: 0 0; - color: 0 0 0 0; - } - } - part { name: "elm.swallow.icon"; - type: SWALLOW; - scale: 1; - clip_to: "elm.icon.clipper"; - description { state: "default" 0.0; - visible: 0; - align: 0.5 0.0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - fixed: 0 1; - } - description { state: "visible" 0.0; - fixed: 0 1; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "padding_before_text"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - description { state: "icononly" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - } - part { name: "elm.swallow.icon_new"; - type: SWALLOW; - scale: 1; - clip_to: "elm.icon_new.clipper"; - description { state: "default" 0.0; - visible: 0; - align: 0.5 0.0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - fixed: 0 1; - } - description { state: "visible" 0.0; - fixed: 0 1; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "padding_before_text"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - description { state: "icononly" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - mouse_events: 0; - scale: 1; - clip_to: "elm.text.clipper"; - description { state: "default" 0.0; - visible: 1; - rel1 { - relative: 1.0 1.0; - to_x: "padding_left_top"; - to_y: "padding_after_icon"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; - fixed: 1 1; - text { - style: "toolbar_style"; - min: 0 1; - max: 0 1; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text_new"; - type: TEXTBLOCK; - mouse_events: 0; - scale: 1; - clip_to: "elm.text_new.clipper"; - description { state: "default" 0.0; - visible: 1; - rel1 { - relative: 1.0 1.0; - to_x: "padding_left_top"; - to_y: "padding_after_icon"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; - fixed: 1 1; - text { - style: "toolbar_style"; - min: 0 1; - max: 0 1; - } - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 255; - } - description { state: "animation" 0.0; - color: 255 255 255 0; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "elm.text_new.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 0; - } - description { state: "animation" 0.0; - color: 255 255 255 255; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "elm.icon.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 255; - } - description { state: "animation" 0.0; - color: 255 255 255 0; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "elm.icon_new.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 0; - } - description { state: "animation" 0.0; - color: 255 255 255 255; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "event"; - type: RECT; - mouse_events: 1; - ignore_flags: ON_HOLD; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "event2"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - } - programs { - program { name: "pressed"; - signal: "mouse,down,1"; - source: "event"; - script { - if (get_int(item_state) != ITEM_STATE_DISABLED) - set_state(PART:"bg", "selected", 0.0); - } - transition: LINEAR 0.2; - } - program { name: "unpressed"; - signal: "mouse,up,1"; - source: "event2"; - action: STATE_SET "default" 0.0; - target: "bg"; - transition: LINEAR 0.1; - } - program { name: "go"; - signal: "mouse,up,1"; - source: "event"; - action: SIGNAL_EMIT "elm,action,click" "elm"; - } - program { name: "mouse,in"; - signal: "mouse,in"; - source: "event"; - action: SIGNAL_EMIT "elm,mouse,in" "elm"; - } - program { name: "mouse,out"; - signal: "mouse,out"; - source: "event"; - action: SIGNAL_EMIT "elm,mouse,out" "elm"; - } - program { name: "disable"; - signal: "elm,state,disabled"; - source: "elm"; - script { - set_int(item_state, ITEM_STATE_DISABLED); - set_state(PART:"bg", "disabled", 0.0); - set_state(PART:"elm.text.clipper", "disabled", 0.0); - set_state(PART:"elm.icon.clipper", "disabled", 0.0); - run_program(PROGRAM:"label_set,animation,done"); - run_program(PROGRAM:"icon_set,animation,done"); - } - } - program { name: "enable"; - signal: "elm,state,enabled"; - source: "elm"; - script { - set_int(item_state, ITEM_STATE_ENABLED); - set_state(PART:"bg", "default", 0.0); - set_state(PART:"elm.text.clipper", "default", 0.0); - set_state(PART:"elm.icon.clipper", "default", 0.0); - run_program(PROGRAM:"label_set,animation,done"); - run_program(PROGRAM:"icon_set,animation,done"); - } - } - program { name: "label_set,animation,forward"; - signal: "elm,state,label_set,forward"; - source: "elm"; - after: "label_set,animation"; - } - program { name: "label_set,animation,backward"; - signal: "elm,state,label_set,backward"; - source: "elm"; - after: "label_set,animation"; - } - program { name: "label_set,animation"; - signal: "elm,state,label_set"; - source: "elm"; - action: STATE_SET "animation" 0.0; - target: "elm.text.clipper"; - target: "elm.text_new.clipper"; - transition: LINEAR 0.2; - after: "label_set,animation,done"; - } - program { name: "label_set,animation,done"; - action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; - } - program { name: "label,reset"; - signal: "elm,state,label,reset"; - source: "elm"; - script { - set_state(PART:"elm.text_new.clipper", "default", 0.0); - if (get_int(item_state) != ITEM_STATE_DISABLED) - set_state(PART:"elm.text.clipper", "default", 0.0); - else - set_state(PART:"elm.text.clipper", "disabled", 0.0); - } - } - program { name: "icon_set,animation,forward"; - signal: "elm,state,icon_set,forward"; - source: "elm"; - after: "icon_set,animation"; - } - program { name: "icon_set,animation,backward"; - signal: "elm,state,icon_set,backward"; - source: "elm"; - after: "icon_set,animation"; - } - program { name: "icon_set,animation"; - signal: "elm,state,icon_set"; - source: "elm"; - action: STATE_SET "animation" 0.0; - target: "elm.icon.clipper"; - target: "elm.icon_new.clipper"; - transition: LINEAR 0.2; - after: "icon_set,animation,done"; - } - program { name: "icon_set,animation,done"; - action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; - } - program { name: "icon,reset"; - signal: "elm,state,icon,reset"; - source: "elm"; - script { - set_state(PART:"elm.icon_new.clipper", "default", 0.0); - if (get_int(item_state) != ITEM_STATE_DISABLED) - set_state(PART:"elm.icon.clipper", "default", 0.0); - else - set_state(PART:"elm.icon.clipper", "disabled", 0.0); - } - } - program { name: "text_show"; - signal: "elm,state,text,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.icon", st, 30, vl); - if (!strcmp(st, "icononly")) - { - set_state(PART:"elm.swallow.icon", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - } - set_state(PART:"elm.text", "visible", 0.0); - } - } - program { name: "text_hide"; - signal: "elm,state,text,hidden"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.icon", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.icon", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - } - set_state(PART:"elm.text", "default", 0.0); - } - } - program { name: "icon_show"; - signal: "elm,state,icon,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.icon", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - } - else - { - set_state(PART:"elm.swallow.icon", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - } - } - } - } -} - -group { name: "elm/toolbar/item/music/item_horizontal"; - inherit: "elm/toolbar/item/music/default"; - script { - public item_state = ITEM_STATE_ENABLED; - } - parts { - part { name: "icon_rect"; - description { state: "default" 0.0; - fixed: 1 0; - align: 0.0 0.5; - } - description { state: "visible" 0.0; - fixed: 1 0; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - align: 0.0 0.5; - } - } - part { name: "padding_after_icon"; - description { state: "default" 0.0; //when only icon or no icon is there - rel1.relative: 1.0 0.0; - fixed: 1 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - min: 6 0; - } - } - part { name: "padding_before_text"; - description { state: "default" 0.0; //when only icon or no icon is there - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "elm.text"; - to_y: "padding_left_top"; - } - rel2 { - to_x: "elm.text"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - min: 6 0; - } - } - part { name: "elm.swallow.icon"; - description { state: "default" 0.0; - align: 0.0 0.5; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "padding_before_text"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_before_text"; - to_y: "padding_right_bottom"; - } - aspect_preference: VERTICAL; - } - description { state: "icononly" 0.0; - aspect_preference: VERTICAL; - } - } - part { name: "elm.swallow.icon_new"; - description { state: "default" 0.0; - align: 0.0 0.5; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "padding_before_text"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_before_text"; - to_y: "padding_right_bottom"; - } - aspect_preference: VERTICAL; - } - description { state: "icononly" 0.0; - aspect_preference: VERTICAL; - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - description { state: "default" 0.0; - rel1 { - relative: 1.0 1.0; - to_x: "padding_after_icon"; - to_y: "padding_left_top"; - } - text { - style: "toolbar_style"; - min: 1 0; - max: 1 0; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text_new"; - type: TEXTBLOCK; - description { state: "default" 0.0; - rel1 { - relative: 1.0 1.0; - to_x: "padding_after_icon"; - to_y: "padding_left_top"; - } - text { - style: "toolbar_style"; - min: 1 0; - max: 1 0; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - } -} - -group { name: "elm/toolbar/separator/music/default"; - images { - image: "separator_v.png" COMP; - } - parts { - part { name: "separator"; // separator group - description { state: "default" 0.0; - min: 2 2; - max: 2 9999; - rel1.offset: 4 4; - rel2.offset: -5 -5; - image { - normal: "separator_v.png"; - } - fill { - smooth: 0; - } - } - } - } -} - -group { name: "elm/toolbar/object/music/default"; - parts { - part { name: "elm.swallow.object"; // object group - type: SWALLOW; - description { - state: "default" 0.0; - } - } - } -} - -group { name: "elm/toolbar/base/music/tabbar"; - images { - image: "T02_navigation_tabbar_bg.png" COMP; - } - - parts { - part { name: "base"; - mouse_events: 1; - description { state: "default" 0.0; - image.normal: "T02_navigation_tabbar_bg.png"; - } - } - part { name: "clipper"; - type: RECT; - mouse_events: 0; - description { - state: "default" 0.0; - rel1 { - to: "base"; - offset: 2 2; - } - rel2 { - to: "base"; - offset: -3 -3; - } - } - } - part { name: "elm.swallow.content"; - clip_to: "clipper"; - type: SWALLOW; - description { - state: "default" 0.0; - rel1.to: "clipper"; - rel2.to: "clipper"; - } - } - part { name: "event"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - } -} - -group { name: "elm/toolbar/item/music/tabbar"; - alias: "elm/toolbar/item/music/tabbar/item_horizontal"; - images { - image: "T02_navigation_tabbar_focus.png" COMP; - } - - data.item: "transition_animation_on" "1"; - script { - public item_state = ITEM_STATE_ENABLED; - } - parts { - part { name: "bg"; - mouse_events: 0; - description { state: "default" 0.0; - visible: 0; - color: 255 255 255 0; - image { - normal: "T02_navigation_tabbar_focus.png"; - } - image.middle: SOLID; - fill.smooth: 0; - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - color: 255 255 255 255; - } - description { state: "disabled" 0.0; - inherit: "default" 0.0; - visible: 0; - color: 255 255 255 0; - } - } - part { name: "padding_left_top"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 0.0 0.0; - rel2.relative: 0.0 0.0; - min: 10 8; - fixed: 1 1; - visible: 1; - color: 0 0 0 0; - } - } - part { name: "padding_right_bottom"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 1.0 1.0; - rel1.relative: 1.0 1.0; - min: 10 5; - fixed: 1 1; - visible: 1; - color: 0 0 0 0; - } - } - part { - name: "icon_rect"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - min: 0 0; - fixed: 0 1; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - align: 0.5 0.0; - color: 0 0 0 0; - } - description { state: "visible" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - fixed: 0 1; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - align: 0.5 0.0; - color: 0 0 0 0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { name: "padding_after_icon"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.0 0.0; - rel1 { - relative: 0.0 1.0; - to: "icon_rect"; - } - rel2.to: "icon_rect"; - fixed: 0 1; - min: 0 0; - color: 0 0 0 0; - } - description { state: "visible" 0.0; - align: 0.0 0.0; - rel1 { - relative: 0.0 1.0; - to: "icon_rect"; - } - rel2.to: "icon_rect"; - fixed: 0 1; - min: 0 0; - color: 0 0 0 0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - } - part { name: "padding_before_text"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.5 1.0; - rel1 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "elm.text"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "elm.text"; - } - fixed: 0 1; - min: 0 0; - color: 0 0 0 0; - } - } - part { name: "elm.swallow.icon"; - type: SWALLOW; - scale: 1; - clip_to: "elm.icon.clipper"; - description { state: "default" 0.0; - visible: 0; - align: 0.5 0.0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - fixed: 0 1; - } - description { state: "visible" 0.0; - fixed: 0 1; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "padding_before_text"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - description { state: "icononly" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - } - part { name: "elm.swallow.icon_new"; - type: SWALLOW; - scale: 1; - clip_to: "elm.icon_new.clipper"; - description { state: "default" 0.0; - visible: 0; - align: 0.5 0.0; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 1.0; - to_x: "padding_right_bottom"; - to_y: "padding_left_top"; - } - fixed: 0 1; - } - description { state: "visible" 0.0; - fixed: 0 1; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_right_bottom"; - to_y: "padding_before_text"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - description { state: "icononly" 0.0; - min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; - rel1 { - relative: 1.0 1.0; - to: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - aspect: 1.0 1.0; - aspect_preference: HORIZONTAL; - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - mouse_events: 0; - scale: 1; - clip_to: "elm.text.clipper"; - description { state: "default" 0.0; - visible: 1; - rel1 { - relative: 1.0 1.0; - to_x: "padding_left_top"; - to_y: "padding_after_icon"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; - fixed: 1 1; - text { - style: "toolbar_style"; - min: 0 1; - max: 0 1; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text_new"; - type: TEXTBLOCK; - mouse_events: 0; - scale: 1; - clip_to: "elm.text_new.clipper"; - description { state: "default" 0.0; - visible: 1; - rel1 { - relative: 1.0 1.0; - to_x: "padding_left_top"; - to_y: "padding_after_icon"; - } - rel2 { - relative: 0.0 0.0; - to: "padding_right_bottom"; - } - color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; - fixed: 1 1; - text { - style: "toolbar_style"; - min: 0 1; - max: 0 1; - } - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 255; - } - description { state: "animation" 0.0; - color: 255 255 255 0; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "elm.text_new.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 0; - } - description { state: "animation" 0.0; - color: 255 255 255 255; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "elm.icon.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 255; - } - description { state: "animation" 0.0; - color: 255 255 255 0; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "elm.icon_new.clipper"; - type: RECT; - description { state: "default" 0.0; - color: 255 255 255 0; - } - description { state: "animation" 0.0; - color: 255 255 255 255; - } - description { state: "disabled" 0.0; - color: 255 255 255 153; - } - } - part { name: "event"; - type: RECT; - mouse_events: 1; - ignore_flags: ON_HOLD; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - } - programs { - program { name: "go_active"; - signal: "elm,state,selected"; - source: "elm"; - action: STATE_SET "selected" 0.0; - target: "bg"; - transition: LINEAR 0.2; - } - program { name: "go_passive"; - signal: "elm,state,unselected"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "bg"; - transition: LINEAR 0.1; - }/* - program { name: "pressed"; - signal: "mouse,down,1"; - source: "event"; - action: STATE_SET "selected" 0.0; - target: "bg"; - target: "elm.text"; - target: "elm.text_new"; - transition: LINEAR 0.2; - } - program { name: "unpressed"; - signal: "mouse,up,1"; - source: "event"; - action: STATE_SET "default" 0.0; - target: "bg"; - target: "elm.text"; - target: "elm.text_new"; - transition: LINEAR 0.1; - }*/ - program { name: "go"; - signal: "mouse,up,1"; - source: "event"; - action: SIGNAL_EMIT "elm,action,click" "elm"; - } - program { name: "mouse,in"; - signal: "mouse,in"; - source: "event"; - action: SIGNAL_EMIT "elm,mouse,in" "elm"; - } - program { name: "mouse,out"; - signal: "mouse,out"; - source: "event"; - action: SIGNAL_EMIT "elm,mouse,out" "elm"; - } - program { name: "disable"; - signal: "elm,state,disabled"; - source: "elm"; - script { - set_int(item_state, ITEM_STATE_DISABLED); - set_state(PART:"bg", "disabled", 0.0); - set_state(PART:"elm.text.clipper", "disabled", 0.0); - set_state(PART:"elm.icon.clipper", "disabled", 0.0); - run_program(PROGRAM:"label_set,animation,done"); - run_program(PROGRAM:"icon_set,animation,done"); - } - } - program { name: "enable"; - signal: "elm,state,enabled"; - source: "elm"; - script { - set_int(item_state, ITEM_STATE_ENABLED); - set_state(PART:"bg", "default", 0.0); - set_state(PART:"elm.text.clipper", "default", 0.0); - set_state(PART:"elm.icon.clipper", "default", 0.0); - run_program(PROGRAM:"label_set,animation,done"); - run_program(PROGRAM:"icon_set,animation,done"); - } - } - program { name: "label_set,animation,forward"; - signal: "elm,state,label_set,forward"; - source: "elm"; - after: "label_set,animation"; - } - program { name: "label_set,animation,backward"; - signal: "elm,state,label_set,backward"; - source: "elm"; - after: "label_set,animation"; - } - program { name: "label_set,animation"; - signal: "elm,state,label_set"; - source: "elm"; - action: STATE_SET "animation" 0.0; - target: "elm.text.clipper"; - target: "elm.text_new.clipper"; - transition: LINEAR 0.2; - after: "label_set,animation,done"; - } - program { name: "label_set,animation,done"; - action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; - } - program { name: "label,reset"; - signal: "elm,state,label,reset"; - source: "elm"; - script { - set_state(PART:"elm.text_new.clipper", "default", 0.0); - if (get_int(item_state) != ITEM_STATE_DISABLED) - set_state(PART:"elm.text.clipper", "default", 0.0); - else - set_state(PART:"elm.text.clipper", "disabled", 0.0); - } - } - program { name: "icon_set,animation,forward"; - signal: "elm,state,icon_set,forward"; - source: "elm"; - after: "icon_set,animation"; - } - program { name: "icon_set,animation,backward"; - signal: "elm,state,icon_set,backward"; - source: "elm"; - after: "icon_set,animation"; - } - program { name: "icon_set,animation"; - signal: "elm,state,icon_set"; - source: "elm"; - action: STATE_SET "animation" 0.0; - target: "elm.icon.clipper"; - target: "elm.icon_new.clipper"; - transition: LINEAR 0.2; - after: "icon_set,animation,done"; - } - program { name: "icon_set,animation,done"; - action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; - } - program { name: "icon,reset"; - signal: "elm,state,icon,reset"; - source: "elm"; - script { - set_state(PART:"elm.icon_new.clipper", "default", 0.0); - if (get_int(item_state) != ITEM_STATE_DISABLED) - set_state(PART:"elm.icon.clipper", "default", 0.0); - else - set_state(PART:"elm.icon.clipper", "disabled", 0.0); - } - } - program { name: "text_show"; - signal: "elm,state,text,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.icon", st, 30, vl); - if (!strcmp(st, "icononly")) - { - set_state(PART:"elm.swallow.icon", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - } - set_state(PART:"elm.text", "visible", 0.0); - } - } - program { name: "text_hide"; - signal: "elm,state,text,hidden"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.icon", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.icon", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - } - set_state(PART:"elm.text", "default", 0.0); - } - } - program { name: "icon_show"; - signal: "elm,state,icon,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.text", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.icon", "visible", 0.0); - set_state(PART:"icon_rect", "visible", 0.0); - set_state(PART:"padding_after_icon", "visible", 0.0); - } - else - { - set_state(PART:"elm.swallow.icon", "icononly", 0.0); - set_state(PART:"icon_rect", "icononly", 0.0); - set_state(PART:"padding_after_icon", "icononly", 0.0); - } - } - } - } -} - -group { name: "elm/toolbar/item/music/tabbar/item_horizontal"; - inherit: "elm/toolbar/item/music/tabbar"; - script { - public item_state = ITEM_STATE_ENABLED; - } - parts { - part { name: "icon_rect"; - description { state: "default" 0.0; - fixed: 1 0; - align: 0.0 0.5; - } - description { state: "visible" 0.0; - fixed: 1 0; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - align: 0.0 0.5; - } - } - part { name: "padding_after_icon"; - description { state: "default" 0.0; //when only icon or no icon is there - rel1.relative: 1.0 0.0; - fixed: 1 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - min: 6 0; - } - } - part { name: "padding_before_text"; - description { state: "default" 0.0; //when only icon or no icon is there - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "elm.text"; - to_y: "padding_left_top"; - } - rel2 { - to_x: "elm.text"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - min: 6 0; - } - } - part { name: "elm.swallow.icon"; - description { state: "default" 0.0; - align: 0.0 0.5; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "padding_before_text"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_before_text"; - to_y: "padding_right_bottom"; - } - aspect_preference: VERTICAL; - } - description { state: "icononly" 0.0; - aspect_preference: VERTICAL; - } - } - part { name: "elm.swallow.icon_new"; - description { state: "default" 0.0; - align: 0.0 0.5; - rel2 { - relative: 1.0 0.0; - to_x: "padding_left_top"; - to_y: "padding_right_bottom"; - } - fixed: 1 0; - } - description { state: "visible" 0.0; - fixed: 1 0; - align: 1.0 0.5; - rel1 { - relative: 0.0 1.0; - to_x: "padding_before_text"; - to_y: "padding_left_top"; - } - rel2 { - relative: 0.0 0.0; - to_x: "padding_before_text"; - to_y: "padding_right_bottom"; - } - aspect_preference: VERTICAL; - } - description { state: "icononly" 0.0; - aspect_preference: VERTICAL; - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - description { state: "default" 0.0; - rel1 { - relative: 1.0 1.0; - to_x: "padding_after_icon"; - to_y: "padding_left_top"; - } - text { - style: "toolbar_style"; - min: 1 0; - max: 1 0; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - part { name: "elm.text_new"; - type: TEXTBLOCK; - description { state: "default" 0.0; - rel1 { - relative: 1.0 1.0; - to_x: "padding_after_icon"; - to_y: "padding_left_top"; - } - text { - style: "toolbar_style"; - min: 1 0; - max: 1 0; - } - } - description { state: "selected" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - description { state: "clicked" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - description { state: "focused" 0.0; - inherit: "default" 0.0; - visible: 1; - color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; - } - } - } -} - -group { name: "elm/toolbar/base/music/naviframe"; - parts { - part { name: "base"; - mouse_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - part { name: "clipper"; - type: RECT; - mouse_events: 0; - description { - state: "default" 0.0; - rel1 { - to: "base"; - offset: 2 2; - } - rel2 { - to: "base"; - offset: -3 -3; - } - } - } - part { name: "elm.swallow.content"; - clip_to: "clipper"; - type: SWALLOW; - description { - state: "default" 0.0; - rel1.to: "clipper"; - rel2.to: "clipper"; - } - } - part { name: "event"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - color: 0 0 0 0; - } - } - } -} - -group { name: "elm/toolbar/object/music/naviframe"; - parts { - part { name: "elm.swallow.object"; // object group - type: SWALLOW; - description { - state: "default" 0.0; - rel1.offset: 5 0; - rel2.offset: -6 -1; - } - } - } -} - -group { name: "elm/toolbar/item/music/naviframe"; - inherit: "elm/toolbar/item/music/default"; - images { - image: "00_winset_toolbar_press.png" COMP; - } - - script { - public item_state = ITEM_STATE_ENABLED; - } -} - - + +#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC 28 +#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC "#f9f9f9" +#define BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC 56 56 +#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255 +#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255 + +#define ITEM_STATE_ENABLED 0 +#define ITEM_STATE_DISABLED 1 + +group { name: "elm/toolbar/base/music/default"; + images { + image: "00_winset_control_toolbar_bg.png" COMP; + } + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + image.normal: "00_winset_control_toolbar_bg.png"; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/item/music/default"; + images { + image: "00_winset_toolbar_press.png" COMP; + } + styles{ + style { name: "toolbar_style"; + base: "font=SLP:style=Medium font_size="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC" align=center color="BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC" wrap=mixed ellipsis=1"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "hilight" "+ font=SLP:style=Bold"; + tag: "b" "+ font=SLP:style=Bold"; + tag: "tab" "\t"; + } + } + + data.item: "transition_animation_on" "1"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "bg"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + image { + normal: "00_winset_toolbar_press.png"; + border: 3 3 3 3; + } + image.middle: SOLID; + fill.smooth: 0; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: 10 8; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: 10 5; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.5 1.0; + rel1 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "elm.text"; + } + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.swallow.icon_new"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon_new.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + max: 0 1; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text_new.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + max: 0 1; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.text_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + } + part { name: "elm.icon.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "event2"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "pressed"; + signal: "mouse,down,1"; + source: "event"; + script { + if (get_int(item_state) != ITEM_STATE_DISABLED) + set_state(PART:"bg", "selected", 0.0); + } + transition: LINEAR 0.2; + } + program { name: "unpressed"; + signal: "mouse,up,1"; + source: "event2"; + action: STATE_SET "default" 0.0; + target: "bg"; + transition: LINEAR 0.1; + } + program { name: "go"; + signal: "mouse,up,1"; + source: "event"; + action: SIGNAL_EMIT "elm,action,click" "elm"; + } + program { name: "mouse,in"; + signal: "mouse,in"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,in" "elm"; + } + program { name: "mouse,out"; + signal: "mouse,out"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,out" "elm"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "bg"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.text", "disabled_visible", 0.0); + set_state(PART:"elm.text_new", "disabled_visible", 0.0); + } + else + { + set_state(PART:"elm.text", "disabled", 0.0); + set_state(PART:"elm.text_new", "disabled", 0.0); + } + set_state(PART:"elm.text.clipper", "disabled", 0.0); + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + set_int(item_state, ITEM_STATE_DISABLED); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + { + set_state(PART:"elm.text", "visible", 0.0); + set_state(PART:"elm.text_new", "visible", 0.0); + } + else + { + set_state(PART:"elm.text", "default", 0.0); + set_state(PART:"elm.text_new", "default", 0.0); + } + set_state(PART:"elm.text.clipper", "default", 0.0); + set_state(PART:"elm.icon.clipper", "default", 0.0); + set_int(item_state, ITEM_STATE_ENABLED); + } + } + program { name: "label_set,animation,forward"; + signal: "elm,state,label_set,forward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation,backward"; + signal: "elm,state,label_set,backward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation"; + signal: "elm,state,label_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.text.clipper"; + target: "elm.text_new.clipper"; + transition: LINEAR 0.2; + after: "label_set,animation,done"; + } + program { name: "label_set,animation,done"; + action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; + } + program { name: "label,reset"; + signal: "elm,state,label,reset"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text.clipper"; + target: "elm.text_new.clipper"; + } + program { name: "icon_set,animation,forward"; + signal: "elm,state,icon_set,forward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation,backward"; + signal: "elm,state,icon_set,backward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation"; + signal: "elm,state,icon_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.icon.clipper"; + target: "elm.icon_new.clipper"; + transition: LINEAR 0.2; + after: "icon_set,animation,done"; + } + program { name: "icon_set,animation,done"; + action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; + } + program { name: "icon,reset"; + signal: "elm,state,icon,reset"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.icon.clipper"; + target: "elm.icon_new.clipper"; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + } + } + } +} + +group { name: "elm/toolbar/item/music/item_horizontal"; + inherit: "elm/toolbar/item/music/default"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "icon_rect"; + description { state: "default" 0.0; + fixed: 1 0; + align: 0.0 0.5; + } + description { state: "visible" 0.0; + fixed: 1 0; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + } + part { name: "padding_after_icon"; + description { state: "default" 0.0; //when only icon or no icon is there + rel1.relative: 1.0 0.0; + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: 6 0; + } + } + part { name: "padding_before_text"; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: 6 0; + } + } + part { name: "elm.swallow.icon"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.swallow.icon_new"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + max: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + max: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + } +} + +group { name: "elm/toolbar/separator/music/default"; + images { + image: "separator_v.png" COMP; + } + parts { + part { name: "separator"; // separator group + description { state: "default" 0.0; + min: 2 2; + max: 2 9999; + rel1.offset: 4 4; + rel2.offset: -5 -5; + image { + normal: "separator_v.png"; + } + fill { + smooth: 0; + } + } + } + } +} + +group { name: "elm/toolbar/object/music/default"; + parts { + part { name: "elm.swallow.object"; // object group + type: SWALLOW; + description { + state: "default" 0.0; + } + } + } +} + +group { name: "elm/toolbar/base/music/tabbar"; + images { + image: "T02_navigation_tabbar_bg.png" COMP; + } + + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + image.normal: "T02_navigation_tabbar_bg.png"; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/item/music/tabbar"; + alias: "elm/toolbar/item/music/tabbar/item_horizontal"; + images { + image: "T02_navigation_tabbar_focus.png" COMP; + } + + data.item: "transition_animation_on" "1"; + parts { + part { name: "bg"; + mouse_events: 0; + description { state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + image { + normal: "T02_navigation_tabbar_focus.png"; + } + image.middle: SOLID; + fill.smooth: 0; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + } + part { name: "padding_left_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: 10 8; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { name: "padding_right_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: 10 5; + fixed: 1 1; + visible: 1; + color: 0 0 0 0; + } + } + part { + name: "icon_rect"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 0; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + align: 0.5 0.0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_after_icon"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "icon_rect"; + } + rel2.to: "icon_rect"; + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + } + } + part { name: "padding_before_text"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there + align: 0.5 1.0; + rel1 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "elm.text"; + } + fixed: 0 1; + min: 0 0; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.icon"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.swallow.icon_new"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon_new.clipper"; + description { state: "default" 0.0; + visible: 0; + align: 0.5 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "padding_right_bottom"; + to_y: "padding_left_top"; + } + fixed: 0 1; + } + description { state: "visible" 0.0; + fixed: 0 1; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_right_bottom"; + to_y: "padding_before_text"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + description { state: "icononly" 0.0; + min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + aspect: 1.0 1.0; + aspect_preference: HORIZONTAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + max: 0 1; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "elm.text_new.clipper"; + description { state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + to_x: "padding_left_top"; + to_y: "padding_after_icon"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC; + fixed: 1 1; + text { + style: "toolbar_style"; + min: 0 1; + max: 0 1; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.text_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + } + part { name: "elm.icon.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "animation" 0.0; + color: 255 255 255 0; + } + description { state: "disabled" 0.0; + color: 255 255 255 153; + } + } + part { name: "elm.icon_new.clipper"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 0; + } + description { state: "animation" 0.0; + color: 255 255 255 255; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg"; + transition: LINEAR 0.2; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + transition: LINEAR 0.1; + }/* + program { name: "pressed"; + signal: "mouse,down,1"; + source: "event"; + action: STATE_SET "selected" 0.0; + target: "bg"; + target: "elm.text"; + target: "elm.text_new"; + transition: LINEAR 0.2; + } + program { name: "unpressed"; + signal: "mouse,up,1"; + source: "event"; + action: STATE_SET "default" 0.0; + target: "bg"; + target: "elm.text"; + target: "elm.text_new"; + transition: LINEAR 0.1; + }*/ + program { name: "go"; + signal: "mouse,up,1"; + source: "event"; + action: SIGNAL_EMIT "elm,action,click" "elm"; + } + program { name: "mouse,in"; + signal: "mouse,in"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,in" "elm"; + } + program { name: "mouse,out"; + signal: "mouse,out"; + source: "event"; + action: SIGNAL_EMIT "elm,mouse,out" "elm"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "bg"; + after: "disable_text"; + } + program { name: "disable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.text", "disabled_visible", 0.0); + set_state(PART:"elm.text_new", "disabled_visible", 0.0); + } + else + { + set_state(PART:"elm.text", "disabled", 0.0); + set_state(PART:"elm.text_new", "disabled", 0.0); + } + set_state(PART:"elm.text.clipper", "disabled", 0.0); + set_state(PART:"elm.icon.clipper", "disabled", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg"; + after: "enable_text"; + } + program { name: "enable_text"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled_visible")) + { + set_state(PART:"elm.text", "visible", 0.0); + set_state(PART:"elm.text_new", "visible", 0.0); + } + else + { + set_state(PART:"elm.text", "default", 0.0); + set_state(PART:"elm.text_new", "default", 0.0); + } + set_state(PART:"elm.text.clipper", "default", 0.0); + set_state(PART:"elm.icon.clipper", "default", 0.0); + } + } + program { name: "label_set,animation,forward"; + signal: "elm,state,label_set,forward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation,backward"; + signal: "elm,state,label_set,backward"; + source: "elm"; + after: "label_set,animation"; + } + program { name: "label_set,animation"; + signal: "elm,state,label_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.text.clipper"; + target: "elm.text_new.clipper"; + transition: LINEAR 0.2; + after: "label_set,animation,done"; + } + program { name: "label_set,animation,done"; + action: SIGNAL_EMIT "elm,state,label_set,done" "elm"; + } + program { name: "label,reset"; + signal: "elm,state,label,reset"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text.clipper"; + target: "elm.text_new.clipper"; + } + program { name: "icon_set,animation,forward"; + signal: "elm,state,icon_set,forward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation,backward"; + signal: "elm,state,icon_set,backward"; + source: "elm"; + after: "icon_set,animation"; + } + program { name: "icon_set,animation"; + signal: "elm,state,icon_set"; + source: "elm"; + action: STATE_SET "animation" 0.0; + target: "elm.icon.clipper"; + target: "elm.icon_new.clipper"; + transition: LINEAR 0.2; + after: "icon_set,animation,done"; + } + program { name: "icon_set,animation,done"; + action: SIGNAL_EMIT "elm,state,icon_set,done" "elm"; + } + program { name: "icon,reset"; + signal: "elm,state,icon,reset"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.icon.clipper"; + target: "elm.icon_new.clipper"; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_after_icon", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"icon_rect", "icononly", 0.0); + set_state(PART:"padding_after_icon", "icononly", 0.0); + } + } + } + } +} + +group { name: "elm/toolbar/item/music/tabbar/item_horizontal"; + inherit: "elm/toolbar/item/music/tabbar"; + script { + public item_state = ITEM_STATE_ENABLED; + } + parts { + part { name: "icon_rect"; + description { state: "default" 0.0; + fixed: 1 0; + align: 0.0 0.5; + } + description { state: "visible" 0.0; + fixed: 1 0; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + align: 0.0 0.5; + } + } + part { name: "padding_after_icon"; + description { state: "default" 0.0; //when only icon or no icon is there + rel1.relative: 1.0 0.0; + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: 6 0; + } + } + part { name: "padding_before_text"; + description { state: "default" 0.0; //when only icon or no icon is there + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "elm.text"; + to_y: "padding_left_top"; + } + rel2 { + to_x: "elm.text"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + min: 6 0; + } + } + part { name: "elm.swallow.icon"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.swallow.icon_new"; + description { state: "default" 0.0; + align: 0.0 0.5; + rel2 { + relative: 1.0 0.0; + to_x: "padding_left_top"; + to_y: "padding_right_bottom"; + } + fixed: 1 0; + } + description { state: "visible" 0.0; + fixed: 1 0; + align: 1.0 0.5; + rel1 { + relative: 0.0 1.0; + to_x: "padding_before_text"; + to_y: "padding_left_top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "padding_before_text"; + to_y: "padding_right_bottom"; + } + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + max: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + part { name: "elm.text_new"; + type: TEXTBLOCK; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "padding_after_icon"; + to_y: "padding_left_top"; + } + text { + style: "toolbar_style"; + min: 1 0; + max: 1 0; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + visible: 1; + color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC; + } + } + } +} + +group { name: "elm/toolbar/base/music/naviframe"; + parts { + part { name: "base"; + mouse_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "clipper"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "base"; + offset: 2 2; + } + rel2 { + to: "base"; + offset: -3 -3; + } + } + } + part { name: "elm.swallow.content"; + clip_to: "clipper"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1.to: "clipper"; + rel2.to: "clipper"; + } + } + part { name: "event"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } +} + +group { name: "elm/toolbar/object/music/naviframe"; + parts { + part { name: "elm.swallow.object"; // object group + type: SWALLOW; + description { + state: "default" 0.0; + rel1.offset: 5 0; + rel2.offset: -6 -1; + } + } + } +} + + diff --git a/layout/mp_genlist_define.edc b/layout/mp_genlist_define.edc index 70cb48f..7c5aa1d 100755 --- a/layout/mp_genlist_define.edc +++ b/layout/mp_genlist_define.edc @@ -1,19 +1,3 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - #define GENLIST_HEIGHT_1_INC 1 #define GENLIST_HEIGHT_16_INC 16 @@ -126,6 +110,6 @@ #define GENLIST_SIZE_576_INC 576 #define GENLIST_SIZE_672_INC 672 -#define GENLIST_PART_LIST_PRESS_COLOR_INC 0 140 210 255 -#define GENLIST_PART_LIST_BG_COLOR_INC 0 0 0 255 +#define GENLIST_PART_LIST_PRESS_COLOR_INC 42 137 194 255 +#define GENLIST_PART_LIST_BG_COLOR_INC 249 249 249 255 diff --git a/layout/mp_genlist_macro.edc b/layout/mp_genlist_macro.edc index ae04a42..6b7a0a1 100755 --- a/layout/mp_genlist_macro.edc +++ b/layout/mp_genlist_macro.edc @@ -1,96 +1,75 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - #define FONT_STYLE_ROMAN "SLP:style=Roman" #define FONT_STYLE_MEDIUM "SLP:style=Medium" #define FONT_STYLE_BOLD "SLP:style=Bold" -#define GENLIST_PART_EXPANDABLE2_NOSHADOW_BASE( param_item_height ) \ - part { name: "base"; \ - type: RECT; \ - repeat_events: 1; \ - scale: 1; \ - description { state: "default" 0.0; \ - min: 0 param_item_height; \ - color: 230 228 215 255; \ - } \ - } - -#define GENLIST_PART_EXPANDABLE3_NOSHADOW_BASE( param_item_height ) \ - part { name: "base"; \ - type: RECT; \ - repeat_events: 1; \ - scale: 1; \ - description { state: "default" 0.0; \ - min: 0 param_item_height; \ - color: 213 212 195 255; \ - } \ - } - -#define GENLIST_PART_BG_EXPANDABLE_IMAGE \ - part { name: "bg_image"; \ - clip_to: "disclip"; \ - mouse_events: 0; \ - description { state: "default" 0.0; \ - image { \ - normal: "00_list_expandable_bg.png"; \ - border: 0 0 12 6; \ - border_scale: 1; \ - } \ - } \ - description { state: "selected" 0.0; \ - inherit: "default" 0.0; \ - image.normal: "00_list_bar_press_1x80.png"; \ - } \ - } - -#define GENLIST_PART_BG_EXPANDABLE2_IMAGE \ - part { name: "bg_image"; \ - clip_to: "disclip"; \ - mouse_events: 0; \ - description { state: "default" 0.0; \ - image { \ - normal: "00_list_expandable_2_bg.png"; \ - border: 0 0 12 6; \ - border_scale: 1; \ - } \ - } \ - description { state: "selected" 0.0; \ - inherit: "default" 0.0; \ - image.normal: "00_list_bar_press_1x80.png"; \ - } \ - } - -#define GENLIST_PART_BG_EXPANDABLE3_NOSHADOW_IMAGE \ - part { name: "bg_image"; \ - clip_to: "disclip"; \ - mouse_events: 0; \ - description { state: "default" 0.0; \ - image { \ - normal: "00_list_expandable_2_noshadow_bg.png"; \ - border: 0 0 0 6; \ - border_scale: 1; \ - } \ - } \ - description { state: "selected" 0.0; \ - inherit: "default" 0.0; \ - image.normal: "00_list_bar_press_1x80.png"; \ - } \ - } -#define MP_GENLIST_BG_COLOR 37 37 37 255; +#define MP_LIST_THUMBNAIL_INNER_LINE \ + part { name: "innerline.top";\ + type: RECT;\ + scale: 1;\ + mouse_events: 0;\ + clip_to: "disclip";\ + description { state: "default" 0.0;\ + visible: 1;\ + fixed: 1 1;\ + align: 0 0;\ + min: 1 1;\ + rel1 {relative: 0.0 0.0; to, "elm.icon";}\ + rel2 {relative: 1.0 0.0; to, "elm.icon";}\ + color: 0 0 0 255;\ + }\ + GENLIST_DESCRIPTION_FLIP_ENABLED\ + }\ + part { name: "innerline.bottom";\ + type: RECT;\ + scale: 1;\ + mouse_events: 0;\ + clip_to: "disclip";\ + description { state: "default" 0.0;\ + visible: 1;\ + fixed: 1 1;\ + align: 0 0;\ + min: 1 1;\ + rel1 {relative: 0.0 1.0; to, "elm.icon";}\ + rel2 {relative: 1.0 1.0; to, "elm.icon";}\ + color: 0 0 0 255;\ + }\ + GENLIST_DESCRIPTION_FLIP_ENABLED\ + }\ + part { name: "innerline.left";\ + type: RECT;\ + scale: 1;\ + mouse_events: 0;\ + clip_to: "disclip";\ + description { state: "default" 0.0;\ + visible: 1;\ + fixed: 1 1;\ + align: 0 0;\ + min: 1 1;\ + rel1 {relative: 0.0 0.0; to, "elm.icon";}\ + rel2 {relative: 0.0 1.0; to, "elm.icon";}\ + color: 0 0 0 255;\ + }\ + GENLIST_DESCRIPTION_FLIP_ENABLED\ + }\ + part { name: "innerline.right";\ + type: RECT;\ + scale: 1;\ + mouse_events: 0;\ + clip_to: "disclip";\ + description { state: "default" 0.0;\ + visible: 1;\ + fixed: 1 1;\ + align: 0 0;\ + min: 1 1;\ + rel1 {relative: 1.0 0.0; to, "elm.icon";}\ + rel2 {relative: 1.0 1.0; to, "elm.icon";}\ + color: 0 0 0 255;\ + }\ + GENLIST_DESCRIPTION_FLIP_ENABLED\ + }\ + + +#define MP_GENLIST_BG_COLOR 236 240 242 255; #define GENLIST_PART_BASE( param_item_height ) \ part { name: "base"; \ type: RECT; \ @@ -102,425 +81,10 @@ } \ } -#define GENLIST_PART_BG_SELECTED_COLOR_INC 50 65 74 255 +#define GENLIST_PART_BG_SELECTED_COLOR_INC 42 137 194 255 #define GENLIST_PART_BG_UNSELECTED_COLOR_INC 0 0 0 0 -#define GENLIST_PART_BG_IMAGE \ - part { name: "bg_image"; \ - type: RECT; \ - clip_to: "disclip"; \ - mouse_events: 0; \ - description { state: "default" 0.0; \ - color: GENLIST_PART_BG_UNSELECTED_COLOR_INC; \ - } \ - description { state: "selected" 0.0; \ - inherit: "default" 0.0; \ - color: GENLIST_PART_BG_SELECTED_COLOR_INC; \ - } \ - } -#define MP_BOTTOM_LINE_COLOR 82 82 82 255; -#define GENLIST_PART_BOTTOM_LINE \ - part { name: "bottom_line"; \ - type: RECT; \ - clip_to: "disclip"; \ - mouse_events: 0; \ - description { state: "default" 0.0; \ - min: 0 1; \ - fixed: 0 1; \ - visible: 1; \ - color: MP_BOTTOM_LINE_COLOR; \ - rel1 { \ - relative: 0.0 1.0; \ - offset: 0 -1; \ - } \ - } \ - } - -#define GENLIST_PART_PADDING_TOP( param_padding_size ) \ - part { name: "elm.padding.top"; \ - type: RECT; \ - scale: 1; \ - description { \ - state: "default" 0.0; \ - min: 0 param_padding_size; \ - fixed: 0 1; \ - visible: 0; \ - rel2.relative: 1.0 0.0; \ - align: 0.0 0.0; \ - } \ - } - -#define GENLIST_PART_PADDING_TEXT_TOP( param_padding_size ) \ - part { name: "elm.padding.text.top"; \ - type: RECT; \ - scale: 1; \ - description { \ - state: "default" 0.0; \ - min: 0 param_padding_size; \ - fixed: 0 1; \ - visible: 0; \ - rel2.relative: 1.0 0.0; \ - align: 0.0 0.0; \ - } \ - } - -#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \ - part { name: "elm.padding.bottom"; \ - type: RECT; \ - scale: 1; \ - description { \ - state: "default" 0.0; \ - min: 0 param_padding_size; \ - fixed: 0 1; \ - visible: 0; \ - rel1.relative: 0.0 1.0; \ - align: 0.0 1.0; \ - } \ - } - -#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \ - part { name: "elm.padding.left"; \ - type: RECT; \ - scale: 1; \ - description { \ - state: "default" 0.0; \ - min: param_padding_size 0; \ - fixed: 1 0; \ - visible: 0; \ - rel2.relative: 0.0 1.0; \ - align: 0.0 0.0; \ - } \ - } - -#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \ - part { name: "elm.padding.right"; \ - type: RECT; \ - scale: 1; \ - description { state: "default" 0.0; \ - min: param_padding_size 0; \ - fixed: 1 0; \ - visible: 0; \ - rel1.relative: 1.0 0.0; \ - align: 1.0 0.0; \ - } \ - } - -#define GENLIST_PART_PADDING_LEFT_RENAME( param_padding_size ) \ - part { name: "elm.padding.left.rename"; \ - type: RECT; \ - scale: 1; \ - description { \ - state: "default" 0.0; \ - min: param_padding_size 0; \ - fixed: 1 0; \ - visible: 0; \ - rel2.relative: 0.0 1.0; \ - align: 0.0 0.0; \ - } \ - } - -#define GENLIST_PART_PADDING_RIGHT_RENAME( param_padding_size ) \ - part { name: "elm.padding.right.rename"; \ - type: RECT; \ - scale: 1; \ - description { state: "default" 0.0; \ - min: param_padding_size 0; \ - fixed: 1 0; \ - visible: 0; \ - rel1.relative: 1.0 0.0; \ - align: 1.0 0.0; \ - } \ - } - -#define BEAT_GENLIST_PART_DISCLIP \ - part { name: "disclip"; \ - type: RECT; \ - description { state: "default" 0.0; \ - rel1.to: "base"; \ - rel2.to: "base"; \ - } \ - description { state: "disabled" 0.0; \ - inherit: "default" 0.0; \ - color: 255 255 255 64; \ - } \ - } - -#define SWEEP_PROGRAMS \ - program { name: "go_slide_right";\ - signal: "elm,state,slide,right";\ - source: "elm";\ - action: STATE_SET "hide" 0.0;\ - target: "slide_base";\ - target: "base.disclip";\ - after: "slide_right_step1";\ - }\ - program { name: "slide_right_step1";\ - action: STATE_SET "hide" 0.1;\ - target: "slide_base";\ - target: "base.disclip";\ - transition: LINEAR 0.3;\ - after: "slide_right_step2";\ - }\ - program { name: "slide_right_step2";\ - action: STATE_SET "hide" 0.2;\ - target: "slide_base";\ - target: "base.disclip";\ - transition: LINEAR 0.3;\ - after: "slide_right_step3";\ - }\ - program { name: "slide_right_step3";\ - action: STATE_SET "hide" 0.3;\ - target: "slide_base";\ - target: "base.disclip";\ - transition: LINEAR 0.3;\ - after: "slide_right_step4";\ - }\ - program { name: "slide_right_step4";\ - action: STATE_SET "repeat_events" 0.0;\ - target: "elm.between.layer";\ - }\ - program { name: "go_slide_left";\ - signal: "elm,state,slide,left";\ - source: "elm";\ - action: STATE_SET "hide" 0.3;\ - target: "slide_base";\ - target: "base.disclip";\ - after: "slide_left_step1";\ - }\ - program { name: "slide_left_step1";\ - action: STATE_SET "default" 0.0;\ - target: "elm.between.layer";\ - after: "slide_left_step2";\ - }\ - program { name: "slide_left_step2";\ - action: STATE_SET "hide" 0.2;\ - target: "slide_base";\ - target: "base.disclip";\ - transition: LINEAR 0.3;\ - after: "slide_left_step3";\ - }\ - program { name: "slide_left_step3";\ - action: STATE_SET "hide" 0.1;\ - target: "slide_base";\ - target: "base.disclip";\ - transition: LINEAR 0.3;\ - after: "slide_left_step4";\ - }\ - program { name: "slide_left_step4";\ - action: STATE_SET "hide" 0.0;\ - target: "slide_base";\ - target: "base.disclip";\ - transition: LINEAR 0.3;\ - after: "slide_left_step5";\ - }\ - program { name: "slide_left_step5";\ - action: STATE_SET "default" 0.0;\ - target: "slide_base";\ - transition: LINEAR 0.3;\ - after: "slide_left_finish";\ - }\ - program { name: "slide_left_finish";\ - action: SIGNAL_EMIT "elm,action,sweep,left,finish" "elm";\ - }\ - -#define SWEEP_DISCLIP \ - part { name: "base.disclip";\ - type: RECT;\ - description { state: "default" 0.0;\ - rel1.to: "base";\ - rel2.to: "base";\ - color: 255 255 255 0;\ - }\ - description { state: "base_show" 0.0;\ - inherit: "default" 0.0;\ - color: 255 255 255 255;\ - }\ - description { state: "hide" 0.0;\ - inherit: "default" 0.0;\ - color: 255 255 255 0; \ - }\ - description { state: "hide" 0.1; \ - inherit: "default" 0.0;\ - color: 255 255 255 70;\ - }\ - description { state: "hide" 0.2;\ - inherit: "default" 0.0;\ - color: 255 255 255 160; \ - }\ - description { state: "hide" 0.3;\ - inherit: "default" 0.0;\ - color: 255 255 255 255;\ - }\ - } - -#define SWEEP_TEXT \ - part { name: "elm.base.text";\ - type: TEXT;\ - clip_to: "base.disclip";\ - mouse_events: 0;\ - scale: 1;\ - description { state: "default" 0.0;\ - min: 0 36;\ - fixed: 0 1;\ - align: 0.5 0;\ - rel1 {\ - relative: 1 0;\ - to_x: "elm.padding.left";\ - to_y: "base";\ - }\ - rel2 {\ - relative: 0 0;\ - to_x: "elm.padding.right";\ - to_y: "base";\ - }\ - color: 255 255 255 255;\ - text {\ - font: "SLP:style=Roman";\ - size: 22;\ - min: 0 1;\ - align: 0.5 0.5;\ - }\ - }\ - } - -#define SWEEP_TRANSPARENT \ - part { name: "elm.between.layer";\ - type: RECT;\ - clip_to: "disclip";\ - mouse_events: 1;\ - description { state: "default" 0.0;\ - rel1.to: "base";\ - rel2.to: "base";\ - color: 0 0 0 0;\ - }\ - description { state: "repeat_events" 0.0;\ - inherit: "default" 0.0;\ - visible: 0;\ - }\ - } - -#define SWEEP_SLIDABLE_BASE_PARTS \ - part { name: "slide_base";\ - type: RECT;\ - clip_to: "disclip";\ - scale: 1;\ - description { state: "default" 0.0;\ - color: 0 0 0 0;\ - rel1.to: "base";\ - rel2.to: "base";\ - }\ - description { state: "hide" 0.0;\ - inherit: "default" 0.0;\ - rel1 { relative: 0.025 0.0; }\ - rel2 { relative: 1.025 1.0; }\ - }\ - description { state: "hide" 0.1; \ - inherit: "default" 0.0;\ - rel1 { relative: 0.13 0.0; }\ - rel2 { relative: 1.13 1.0; }\ - }\ - description { state: "hide" 0.2;\ - inherit: "default" 0.0;\ - rel1 { relative: 0.5 0.0; }\ - rel2 { relative: 1.5 1.0; }\ - }\ - description { state: "hide" 0.3;\ - inherit: "default" 0.0;\ - rel1 { relative: 1.0 0.0; }\ - rel2 { relative: 2.0 1.0; }\ - }\ - }\ - part { name: "slide_base.bg_image";\ - clip_to: "disclip";\ - description { state: "default" 0.0;\ - visible: 0;\ - image.normal: "00_list_bar_press_1x80.png";\ - rel1.to: "slide_base";\ - rel2.to: "slide_base";\ - }\ - description { state: "selected" 0.0;\ - inherit: "default" 0.0;\ - visible: 1;\ - }\ - }\ - part { name: "slide_base.padding.left";\ - type: RECT;\ - clip_to: "disclip";\ - mouse_events: 0;\ - scale: 1;\ - description { state: "default" 0.0;\ - min: 15 0;\ - fixed: 1 0;\ - visible: 0;\ - rel1.to: "slide_base";\ - rel2 {\ - relative: 0 1;\ - to: "slide_base";\ - }\ - }\ - }\ - part { name: "slide_base.padding.right";\ - type: RECT;\ - clip_to: "disclip";\ - mouse_events: 0;\ - scale: 1;\ - description { state: "default" 0.0;\ - min: 15 0;\ - fixed: 1 0;\ - visible: 0;\ - rel1 {\ - relative: 1 0;\ - to: "slide_base";\ - }\ - rel2.to: "slide_base";\ - }\ - }\ - -#define GENLIST_PART_RENAME \ - part { name: "elm.edit.rename"; \ - clip_to: "disclip"; \ - type: SWALLOW; \ - mouse_events: 1; \ - scale: 1; \ - description { state: "default" 0.0; \ - visible: 0; \ - fixed: 1 1; \ - rel1 { \ - relative: 1.0 0.5; \ - to_x: "elm.padding.left"; \ - } \ - rel2 { \ - relative: 0.0 0.5; \ - to_x: "elm.padding.right"; \ - } \ - } \ - description { state: "rename_enabled" 0.0; \ - inherit: "default" 0.0; \ - visible: 1; \ - } \ - } - -#define GENLIST_DESCRIPTION_RENAME_ENABLED \ - description { state: "rename_enabled" 0.0; \ - inherit: "default" 0.0; \ - visible: 0; \ - } - -#define GENLIST_PROGRAM_RENAME_1TEXT \ - program { name: "rename_enabled"; \ - signal: "elm,state,rename,enabled"; \ - source: "elm"; \ - action: STATE_SET "rename_enabled" 0.0; \ - target: "elm.text"; \ - target: "elm.edit.rename"; \ - } \ - program { name: "rename_disabled"; \ - signal: "elm,state,rename,disabled"; \ - source: "elm"; \ - action: STATE_SET "default" 0.0; \ - target: "elm.text"; \ - target: "elm.edit.rename"; \ - } +#define MP_BOTTOM_LINE_COLOR 169 169 169 255; #define GENLIST_PART_PADDING_TOP( param_padding_size ) \ part { name: "elm.padding.top"; \ @@ -589,10 +153,10 @@ } \ } -#define GENLIST_EDIT_SELECT_ALL_BG_COLOR_INC 0 0 0 255 -#define GENLIST_PART_TEXT_COLOR_INC 249 249 249 255 +#define GENLIST_EDIT_SELECT_ALL_BG_COLOR_INC 215 225 232 255 +#define GENLIST_PART_TEXT_COLOR_INC 0 0 0 255 #define GENLIST_PART_TEXT_SELECTED_COLOR_INC 249 249 249 255 -#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 64 +#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 110 #define GENLIST_PART_BOTTOM_LINE \ part { name: "bottom_line"; \ @@ -767,6 +331,12 @@ } \ } +#define MP_INNERLINE_TARGETS \ + target: "innerline.top";\ + target: "innerline.bottom";\ + target: "innerline.left";\ + target: "innerline.right";\ + #define GENLIST_PROGRAM_FLIP_1TEXT \ program { name: "flip_enabled"; \ signal: "elm,state,flip,enabled"; \ @@ -791,6 +361,7 @@ target: "elm.text"; \ target: "elm.icon"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -799,6 +370,7 @@ target: "elm.text"; \ target: "elm.icon"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } #define GENLIST_PROGRAM_FLIP_1TEXT_2ICON \ @@ -810,6 +382,7 @@ target: "elm.icon.1"; \ target: "elm.icon.2"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -819,6 +392,7 @@ target: "elm.icon.1"; \ target: "elm.icon.2"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } #define GENLIST_PROGRAM_FLIP_1TEXT_3ICON \ @@ -831,6 +405,7 @@ target: "elm.icon.2"; \ target: "elm.icon.3"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -841,6 +416,7 @@ target: "elm.icon.2"; \ target: "elm.icon.3"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } #define GENLIST_PROGRAM_FLIP_2TEXT \ @@ -869,11 +445,8 @@ target: "elm.text.1"; \ target: "elm.text.2"; \ target: "elm.icon"; \ - target: "innerline.top"; \ - target: "innerline.bottom"; \ - target: "innerline.left"; \ - target: "innerline.right"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -882,11 +455,8 @@ target: "elm.text.1"; \ target: "elm.text.2"; \ target: "elm.icon"; \ - target: "innerline.top"; \ - target: "innerline.bottom"; \ - target: "innerline.left"; \ - target: "innerline.right"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } #define GENLIST_PROGRAM_FLIP_2TEXT_2ICON \ @@ -899,6 +469,7 @@ target: "elm.icon.1"; \ target: "elm.icon.2"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -909,6 +480,7 @@ target: "elm.icon.1"; \ target: "elm.icon.2"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } #define GENLIST_PROGRAM_FLIP_2TEXT_3ICON \ @@ -922,6 +494,7 @@ target: "elm.icon.2"; \ target: "elm.icon.3"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -933,6 +506,7 @@ target: "elm.icon.2"; \ target: "elm.icon.3"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } #define GENLIST_PROGRAM_FLIP_3TEXT \ @@ -965,6 +539,7 @@ target: "elm.text.3"; \ target: "elm.icon"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -975,6 +550,7 @@ target: "elm.text.3"; \ target: "elm.icon"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } #define GENLIST_PROGRAM_FLIP_3TEXT_2ICON \ @@ -988,6 +564,7 @@ target: "elm.icon.1"; \ target: "elm.icon.2"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -999,6 +576,7 @@ target: "elm.icon.1"; \ target: "elm.icon.2"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } #define GENLIST_PROGRAM_FLIP_3TEXT_3ICON \ @@ -1013,6 +591,7 @@ target: "elm.icon.2"; \ target: "elm.icon.3"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } \ program { name: "flip_disabled"; \ signal: "elm,state,flip,disabled"; \ @@ -1025,6 +604,7 @@ target: "elm.icon.2"; \ target: "elm.icon.3"; \ target: "elm.flip.content"; \ + MP_INNERLINE_TARGETS\ } diff --git a/layout/music.edc b/layout/music.edc index f11b17f..6424006 100755 --- a/layout/music.edc +++ b/layout/music.edc @@ -1,28 +1,22 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - #include "mp-defines.h" collections { #include "mp-play-view.edc" + #include "mp-play-vew-landscape.edc" #include "mp-play-control.edc" #include "mp-play-menu.edc" #include "mp-play-progress.edc" #include "mp-play-info.edc" #include "mp-play-current-playing.edc" #include "mp-rich-info.edc" + #include "mp-lrc.edc" + #include "mp-play-mini-app.edc" +#ifdef MP_3D_FEATURE + #include "mp-3d-view.edc" +#endif + +#ifdef MP_SQUARE_FEATURE + #include "mp-square-view.edc" +#endif } diff --git a/org.tizen.music-player.xml b/org.tizen.music-player.xml new file mode 100755 index 0000000..56b1b59 --- /dev/null +++ b/org.tizen.music-player.xml @@ -0,0 +1,63 @@ + + + + Hyungmin Kim + Music player + + + org.tizen.music-player.png + + + + + + + + + + + + + + + + + + + + + + org.tizen.sound-player.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/org.tizen.music-player.spec b/packaging/org.tizen.music-player.spec index 60adcf7..99a6df2 100644 --- a/packaging/org.tizen.music-player.spec +++ b/packaging/org.tizen.music-player.spec @@ -1,36 +1,38 @@ Name: org.tizen.music-player Summary: music player application -Version: 0.1.3 +Version: 0.1.62 Release: 1 Group: TO_BE/FILLED_IN -License: Flora Software License +License: Flora Source0: %{name}-%{version}.tar.gz -BuildRequires: pkgconfig(appcore-efl) -BuildRequires: pkgconfig(appsvc) -BuildRequires: pkgconfig(devman_haptic) -BuildRequires: pkgconfig(dlog) -BuildRequires: pkgconfig(ecore) -BuildRequires: pkgconfig(ecore-file) -BuildRequires: pkgconfig(ecore-imf) -BuildRequires: pkgconfig(ecore-input) -BuildRequires: pkgconfig(ecore-x) -BuildRequires: pkgconfig(edje) -BuildRequires: pkgconfig(eina) -BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(evas) -BuildRequires: pkgconfig(libmedia-service) -BuildRequires: pkgconfig(libxml-2.0) -BuildRequires: pkgconfig(mm-fileinfo) -BuildRequires: pkgconfig(mm-player) -BuildRequires: pkgconfig(mm-session) -BuildRequires: pkgconfig(mm-sound) -BuildRequires: pkgconfig(pmapi) -BuildRequires: pkgconfig(svi) -BuildRequires: pkgconfig(syspopup-caller) -BuildRequires: pkgconfig(ui-gadget) -BuildRequires: pkgconfig(utilX) -BuildRequires: pkgconfig(vconf) -BuildRequires: libug-contacts-devel +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(ecore) +BuildRequires: pkgconfig(capi-media-sound-manager) +BuildRequires: pkgconfig(capi-media-player) +BuildRequires: pkgconfig(capi-media-metadata-extractor) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(drm-client) +BuildRequires: pkgconfig(ui-gadget-1) +BuildRequires: pkgconfig(syspopup-caller) +BuildRequires: pkgconfig(capi-system-power) +BuildRequires: pkgconfig(vconf) +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(eina) +BuildRequires: pkgconfig(ecore-imf) +BuildRequires: pkgconfig(ecore-x) +BuildRequires: pkgconfig(ecore-file) +BuildRequires: pkgconfig(ecore-input) +BuildRequires: pkgconfig(libcrypto) +BuildRequires: pkgconfig(edje) +BuildRequires: pkgconfig(capi-appfw-app-manager) +BuildRequires: pkgconfig(evas) +BuildRequires: pkgconfig(capi-system-haptic) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(minicontrol-provider) +BuildRequires: pkgconfig(capi-system-media-key) +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-content-media-content) BuildRequires: cmake BuildRequires: prelink BuildRequires: edje-tools @@ -39,61 +41,67 @@ BuildRequires: gettext-tools %description music player application. +%package -n org.tizen.sound-player +Summary: Sound player +Group: TO_BE/FILLED_IN +Requires: %{name} = %{version}-%{release} +%description -n org.tizen.sound-player +Description: sound player application %prep %setup -q %define PREFIX /opt/apps/org.tizen.music-player +%define SP_PREFIX /opt/apps/org.tizen.sound-player %build -cmake . -DCMAKE_INSTALL_PREFIX="%{PREFIX}" +cmake . -DCMAKE_INSTALL_PREFIX="%{PREFIX}" -DCMAKE_DESKTOP_ICON_DIR="/opt/share/icons/default/small" make %{?jobs:-j%jobs} %install +rm -rf %{buildroot} %make_install execstack -c %{buildroot}%{PREFIX}/bin/music-player -%find_lang music-player - +%pre +if [ -n "`env|grep SBOX`" ]; then + echo "postinst: sbox installation" +else + PID=`/bin/pidof music-player` + if [ -n "$PID" ]; then + echo "preinst: kill current music-player app" + /usr/bin/killall -9 music-player + fi +fi -%post -/usr/bin/vconftool set -t int db/setting/music-player/menu 7 -g 6514 2> /dev/null -/usr/bin/vconftool set -t bool db/setting/music-player/se_change 1 -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool db/setting/music-player/menu_change 1 -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool db/setting/music-player/surround_ch_state 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_val 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/effect_val 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_1 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_2 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_3 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_4 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_5 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_6 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_7 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_8 0 -g 6518 2> /dev/null -/usr/bin/vconftool set -t int memory/music/state 0 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t int memory/music/process_state 0 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t int memory/music/album_art 0 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t string memory/music/pos "00:00" -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t double memory/music/progress_pos 0.0 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool memory/music/play_clicked 1 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool memory/music/pause_clicked 1 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool memory/music/prev_pressed 1 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool memory/music/prev_released 1 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool memory/music/next_pressed 1 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool memory/music/next_released 1 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t bool db/music/menu/shuffle 1 -i -g 6518 2> /dev/null -/usr/bin/vconftool set -t int db/music/menu/repeat 0 -i -g 6518 2> /dev/null +%post +mkdir -p %{PREFIX}/data chown -R 5000:5000 %{PREFIX}/data -%files -f music-player.lang -/opt/share/applications/org.tizen.music-player.desktop -%{PREFIX}/data +/usr/bin/vconftool set -t int memory/music/state 0 -i -g 5000 +/usr/bin/vconftool set -t string memory/music/album_art "" -i -g 5000 +/usr/bin/vconftool set -t int db/setting/music-player/menu 7 -g 5000 +/usr/bin/vconftool set -t string memory/private/org.tizen.music-player/pos "00:00" -i -g 5000 +/usr/bin/vconftool set -t double memory/private/org.tizen.music-player/progress_pos 0.0 -i -g 5000 +/usr/bin/vconftool set -t double memory/private/org.tizen.music-player/position_changed 0.0 -i -g 5000 +/usr/bin/vconftool set -t bool db/private/org.tizen.music-player/shuffle 1 -g 5000 +/usr/bin/vconftool set -t int db/private/org.tizen.music-player/repeat 0 -g 5000 +/usr/bin/vconftool set -t int memory/private/org.tizen.music-player/playing_pid 0 -i -g 5000 + +%files +/opt/share/packages/org.tizen.music-player.xml +/opt/share/icons/default/small/org.tizen.music-player.png /opt/share/miregex/music-player.uri %{PREFIX}/bin/music-player +%{PREFIX}/res/locale/*/LC_MESSAGES/*.mo %{PREFIX}/res/icons/* %{PREFIX}/res/edje/*.edj +#/usr/share/packages/org.tizen.sound-player.xml +/opt/share/icons/default/small/org.tizen.sound-player.png +%{SP_PREFIX}/bin/sound-player +%{SP_PREFIX}/res/locale/*/LC_MESSAGES/*.mo + diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index 42e0d75..cb673ca 100755 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,21 +1,45 @@ # for i18n SET(POFILES + ar.po + bg.po + ca.po + cs.po + da.po de_DE.po el_GR.po en.po + en_US.po es_ES.po + fi.po fr_FR.po + he.po + hi.po + hu.po + id.po it_IT.po + ja_JP.po ko_KR.po + lt.po + lv.po + ms.po nl_NL.po + no.po + pl.po pt_PT.po + ro.po ru_RU.po + sk.po + sl.po + sr.po + sv.po + th.po tr_TR.po + uk.po + vi.po zh_CN.po zh_HK.po zh_TW.po - ja_JP.po ) SET(MSGFMT "/usr/bin/msgfmt") diff --git a/po/ar.po b/po/ar.po new file mode 100755 index 0000000..31f396a --- /dev/null +++ b/po/ar.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "قد تضر مستويات الصوت العالية بسمعك إذا استمعت إليها لفترة طويلة" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "غير قابل على الإضافة" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "لا توجد كلمات" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "تعذر تغيير المؤثرات الصوتية عند استخدام القناة 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "العثور على علامة" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "مؤثر صوت القناة 5.1 يعمل في وضع سماعة الأذن فقط" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "يمكن تنشيط القناة 5.1 فقط عند إيقاف المؤثرات الصوتية" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "يتعذر إنشاء قائمة تشغيل" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "يتعذر الحصول على رمز" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "مجلدات" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "تتعذر إزالة العنصر" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "غير قادر على إضافة أكثر من %d ملف موسيقى" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "يتعذر التشغيل أثناء المكالمة" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "الألبوم" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "الألبومات" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "المؤلف" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "حقوق النسخ" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "إنشاء قائمة تشغيل" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "الشرح" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "المفضلة" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "هيئة" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "غير ممكن" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "الموقع" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "لا توجد قوائم تشغيل" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "رقم الأغنية" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "النوع" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "مجهول" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "حذف" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "تمت الإضافة" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "مسح؟" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "تمت إزالة %s" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "تم الحذف" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "حذف؟" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "ضبط كنغمة رنين لمتصل" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "تتعذر إعادة تسمية قائمة التشغيل" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "تعذر ضبطه كنغمة رنين" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "يتعذر مشاركة ملف DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "الألبومات" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "سيرة" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "الإعتمادات" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "معلومات الوسائط" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "جمع الاسطوانات وتصنيفها" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "كلمات الأغنية" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "الاسم طويل" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "التصنيف الأصلي" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "ممكن" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "إعادة عرض" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "قائمة المسارات" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "تمت إضافته بالفعل" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 القناة" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "إضافة إلى قائمة التشغيل" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "الفنان" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "الفنانون" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "تلقائي" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "الاستخدامات المتوفرة" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "تعزيز الصوت الجهير" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "الكورال" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "كلاسيك" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "المؤلف" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "المؤلفون" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "قاعة الحفلة" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "ضبط مخصص" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "رقص" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "معلومات الوسائط" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "ديناميكي" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "مؤثر" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "المعادل" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "موسيقى مجسمة" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "التحويل" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "النوع" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "الانواع" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "الجاز" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "مباشر" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "أكثر ما تم عرضه" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "نقاء صوت الموسيقى" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "قائمة الموسيقى" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "إعدادات الموسيقى" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "ألبوم الفن" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "قوائم التشغيل" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "البوب" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "المضاف حديثا" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "المعروض حديثا" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "الروك" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "مدة الأغنية" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "الصلاحية" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "عريض" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "سنوات" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "غير فعال" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "لا توجد أغاني" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "أغاني" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "إضافة قائمة تشغيل" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "نغمة المكالمة" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "إنشاء قائمة تشغيل" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "تعديل العنوان" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "المحفوظات" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "حذف" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "تغيير الاسم" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "إعادة ترتيب" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "حفظ كقائمة تشغيل" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "نغمة المنبه" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "نغمة رنين المتصل" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "تمت الإضافة إلى %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "تم فصل البلوتوث" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "تم تحديد أقصى عدد للعناصر (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "لا شيء محدد" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "يتعذر الحذف. يتم تشغيل الموسيقى المحددة" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "تعذر التشغيل. حدث خطأ" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "يتعذر التشغيل. نوع ملف غير مدعوم" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "إضافة" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "مشاركة" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "الكل" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "الفنانون" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "المؤلفون" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "القادة" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "الانواع" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "بودكاست" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "أعوام" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "تحديد جهاز" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "عدم العرض مرة أخرى" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "يمكنك بث الموسيقى إلى الأجهزة باستخدام AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "عرض كـ" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "عادي" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "المستخدم" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "لفظي" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "تحسين صوت الجهير" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "تحسين الصوت الثلاثي" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "مقهى" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "القناة الافتراضية 7.1" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "بعد 15 دقيقة" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "بعد 30 دقيقة" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "بعد ساعة" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "بعد ساعة واحدة و30 دقيقة" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "بعد ساعتين" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "إيقاف الموسيقى التلقائي" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "مؤثر الصوت هذا يعمل في وضعي سماعة الأذن وسماعة البلوتوث فقط" + diff --git a/po/bg.po b/po/bg.po new file mode 100755 index 0000000..ba788e7 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Голямата сила на звука може да увреди слуха ви, ако слушате дълго" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Не може да се добави" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Няма текст" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Звуковите ефекти не може да се сменят, когато се използват 5.1 канала" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Намиране на таг" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-каналният звуков ефект работи само в режим на слушалки" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1 канала може да се активират само когато звуковите ефекти са изключени" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Не може да се създаде списък за изпълнение" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Не може да се получи таг" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Папки" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Елементът не може да се премахне" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Не могат да се добавят повече от %d музикални файла" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Не може да се възпроизведе по време на разговор" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Албум" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Албуми" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Автор" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Авторски права" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Създаване на списък за изпълнение" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Описание" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Предпочитани" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Формат" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Невъзможно" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Позиция" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Няма списъци с песни" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Песента номер" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Тип" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Неизвестно" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Изтриване" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Добавен" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Изтриване?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s извадена" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Премахнат" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Премахване?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Задай като тон звънене" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Списъкът за изпълнение не може да се преименува" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Не може да се зададе за тон на звънене" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Не може да се сподели файл с DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Албуми" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Биография" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Благодарение на" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Мултимедийна информация" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Дискография" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Текст" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Името е твърде дълго" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Родителска оценка" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Lъзможно" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Преглед" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Списък със записи" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Вече е добавено" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 канала" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Добавяне в списък за възпроизвеждане" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Изпълнител" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Изпълнители" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Авто" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Налични употреби" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Подобряване на баса" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Хор" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Класическа" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Композитор" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Композитор" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Концертна зала" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "По избор" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Танц" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Мултимедийна информация" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Динамично" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Ефект" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Еквалайзер" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Открито пространство" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Препращане" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Жанр" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Жанрове" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Джаз" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "На живо" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Най-изпълнявани" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Чистота на звука" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Меню музика" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Настройки за музика" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Корица албум" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Плейлиста" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Поп" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Последно добавени" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Последно изпълнени" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Рок" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Песента дължина" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Тремоло" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Валидност" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Уа-уа" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Панор." + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Години" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Изключи" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Няма песни" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Песни" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Добави плейлиста" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Тон за звънене" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Създаване на списък за изпълнение" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Редактиране на заглавие" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Хронология" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Премаxване" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Преименуване" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Пренареждане" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Запиши като списък за изпълнение" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Тон аларма" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Тон за звънене за повикващ" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Добавено в %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth е прекъснат" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Достигнат е максималният брой избрани елементи (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Нищо не е избрано" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Не може да се изтрие. Избраната музика се възпроизвежда" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Не може да се възпроизведе. Възникна грешка" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Не може да се възпроизведе. Неподдържан вид файл" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Добави" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Споделяне" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Всички" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Изпълнители" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Композ." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Диригент" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Жанрове" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Подкасти" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Години" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Избор на устр-во" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Не показвай отново" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Можете да предавате поточно музиката си до устройства с помощта на AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Пр. като" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Нормален" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Потребител" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Вокали" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Усилване на басите" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Усилване на високите" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Кафе" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Виртуален 7.1 кан" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "След 15 мин" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "След 30 мин." + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "След 1 час" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "След 1 час и 30 мин" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "След 2 часа" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Авто изключване на музика" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Този звуков ефект работи само в режими на слушалка и Bluetooth слушалки" + diff --git a/po/ca.po b/po/ca.po new file mode 100755 index 0000000..95f0c0c --- /dev/null +++ b/po/ca.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Volums elevats poden malmetre la seva oïda si els escolta durant molt temps" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "No es pot afegir" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Sense lletra" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "No es poden canviar els efectes de so quan s'utilitza el canal 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Buscar etiqueta" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "L'efecte de so del canal 5.1 només funciona en mode auricular" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Només es pot activar el canal 5.1 quan es desactiven els efectes de so" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "No es pot crear llista de reproducció" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "No es pot obtenir l'etiqueta" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Carpetes" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "No es pot extraure l'element" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "No es poden afegir més de %d fitxers de música" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "No es pot reproduir durant la trucada" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Àlbum" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Àlbums" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autor" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Copyright" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Crear llista de reproducció" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Descripció" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Preferits" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "No és possible" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Ubicació" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "No hi ha llistes de reproducció" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Número de pista" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Tipus" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Desconegut" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Esborrar" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Afegit" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Esborrar?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s eliminat" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Eliminat" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Eliminar?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Definir com a melodia de la persona que truca" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "No es pot canviar el nom de la llista de reproducció" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "No es pot definir com a melodia" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "No es pot compartir un fitxer DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Àlbums" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografia" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Crèdits" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Info multimèdia" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Discografia" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Lletra" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Nom massa llarg" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Classificació dels pares" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Possible" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Revisar" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Llista de pistes" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Ja s'ha afegit" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "Canal 5.1" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Afegir a llista de reproducció" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Artista" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Artistes" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Auto" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Usos disponibles" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Millora dels baixos" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Cor" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Clàssica" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Compositor" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Compositors" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Sala de concerts" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Personalitzat" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Info multimèdia" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinàmica" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efecte" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Equalitzador" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalització" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Reenviant" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Gènere" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Gèneres" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Directe" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "El més reproduït" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Claredat musical" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Menú Música" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Ajustaments de música" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Caràtula àlbum" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Llistes de reproducció" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Afegides recentment" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Escoltades recentment" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Durada de pista" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Validesa" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Ample" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Anys" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Desactiv" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Cap cançó" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Cançons" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Afegir llista de reproducció" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Melodia de trucada" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Crear llista de reproducció" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Editar títol" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Historial" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Eliminar" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Canviar nom" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Tornar a ordenar" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Desar com a llista de reproducció" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "To d'alarma" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Melodia de la persona que truca" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Afegit a %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth desconnectat" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "S'ha seleccionat el nombre màxim d'elements (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "No s'ha seleccionat res" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "No es pot esborrar. La musica seleccionada s'està reproduint" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "No es pot reproduir. S'ha produït un error" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "No es pot reproduir. No s'admet el tipus de fitxer" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Afegir" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Compartir" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Tot" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Artistes" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Composit" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Directors" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Gèneres" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcasts" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Anys" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Seleccioni dispositiu" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "No tornar a mostrar" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Pot reproduir la seva música en dispositius mitjançant AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Veure com" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Usuari" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Accentuació de baixos" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Accentuació d'aguts" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Cafè" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "7.1 canals virtuals" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Després de 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Després de 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Després d'1 hora" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Després d'1 hora 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Després de 2 hores" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Música automàtica desactivada" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Aquest efecte de so només funciona en els modes auricular i auriculars Bluetooth" + diff --git a/po/cs.po b/po/cs.po new file mode 100755 index 0000000..66525a3 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Dlouhodobý poslech velmi hlasité reprodukce může poškodit sluch" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Nelze přidat" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Bez textu" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Při použití režimu kanálu 5.1 nelze změnit zvukové efekty" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Najít značku" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Zvukový efekt 5.1 kanál funguje pouze v režimu sluchátka" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Režim 5.1 kanál lze aktivovat pouze když jsou vypnuté zvukové efekty" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Nelze vytvořit seznam skladeb" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Značku nelze získat" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Složky" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Položku nelze odebrat" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Nelze přidat více hudebních souborů než %d" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Nelze přehrát během hovoru" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Alba" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autor" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Copyright" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Vytvořit seznam skladeb" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Popis" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Oblíbené" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Formát" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Nemožné" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Místo" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Žádné seznamy skladeb" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Číslo dráhy" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Typ" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Neznámý" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Odstranit" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Přidáno" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Odstranit?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s byla odebrána" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Odstraněno" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Odstranit?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Nastavit jako vyzváněcí tón volajícího" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Seznam skladeb nelze přejmenovat" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Nelze nastavit jako vyzváněcí tón" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Soubor DRM nelze sdílet" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Alba" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Životopis" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Kredity" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Informace o médiu" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografie" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Text" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Jméno je příliš dlouhé" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Obecné hodnocení" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Možné" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Kontrola" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Seznam skladeb" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Již přidáno" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 kanál" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Přidat do přehrávaného seznamu" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Interpret" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Interpreti" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automaticky" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Počet použití k dispozici" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Zvýraznění basů" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Sbor" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasika" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Skladatel" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Skladatelé" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Koncertní sál" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Vlastní" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Tanec" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Informace o médiu" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamicky" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efekt" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Ekvalizér" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalizace" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Předání" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Žánr" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Žánry" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Živě" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Nejčastěji přehrávané" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Čistý zvuk" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Nabídka Hudba" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Nastavení hudby" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Obal alba" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Seznamy skladeb" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Poslední přidané" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Poslední přehrané" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Délka skladby" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Platnost" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Bum bum" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Široký" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Roky" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Vypnout" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Žádné skladby" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Skladby" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Přidat seznam skladeb" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Vyzváněcí tón hovoru" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Vytvořit seznam skladeb" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Upravit název" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Historie" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Odstranit" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Přejmenovat" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Změnit uspořádání" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Uložit jako seznam skladeb" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Tón upozornění" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Zvonění volajícího" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Přidáno do %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth odpojeno" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Byl vybrán maximální počet položek (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Není nic vybráno" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Nelze odstranit. Vybraná hudba se přehrává" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Nelze přehrát. Došlo k chybě" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Nelze přehrát. Nepodporovaný typ souboru" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Přid." + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Sdílet" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Vše" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Interpreti" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Skladat." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirigenti" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Žánry" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcasty" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Roky" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Zvolte umístění" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Znovu nezobrazovat" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Pomocí AllShare lze vysílat datový proud hudby do zařízení" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Zob. jako" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normální" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Uživatel" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokály" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Zesílení basů" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Zesílení výšek" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kavárna" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuální 7.1 kan." + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Za 15 min." + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Za 30 minut" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Za 1 hodinu" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Za 1 hodinu 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Za 2 hodiny" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Automatické vypnutí hudby" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Tento zvukový efekt funguje pouze se sluchátky a se sluchátky Bluetooth" + diff --git a/po/da.po b/po/da.po new file mode 100755 index 0000000..0b10346 --- /dev/null +++ b/po/da.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Høj musik kan skade din hørelse, hvis du lytter i for lang tid" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Der kan ikke tilføjes" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Ingen lyrik" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Kan ikke ændre lydeffekter ved brug af 5.1 kanal" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Find Kode" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 effekten kanallyd fungerer kun i tilstanden høretelefoner" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1 kanal kan kun aktiveres, når lydeffekter er fra" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Afspilningslisten kan ikke oprettes" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Kunne ikke hente tag" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Mapper" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Elementet kunne ikke fjernes" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Kunne ikke tilføje mere end %d musikfil" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Kunne ikke afspille under opkald" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Forfatter" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Ophavsret" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Opret afspilningsliste" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Beskrivelse" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Favoritter" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Ikke mulig" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Placering" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Ingen afspilningslister" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Spor-nummer" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Type" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Ukendt" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Slet" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Tilføjet" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Slet?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s er fjernet" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Fjernet" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Fjern?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Indstil som opkaldsringetone" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Afspilningslisten kan ikke omdøbes" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Kan ikke indstille som ringetone" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "DRM-fil kan ikke deles" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografi" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Anerkendelse" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Medieoplysninger" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografi" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Lyrik" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Navnet er for langt" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Forældrebedømmelse" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Muligt" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Visning" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Afspilningsliste" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Allerede tilføjet" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 kanal" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Føj til afspilningsliste" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Kunstner" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Kunstnere" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Auto" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Gange tilbage" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Basforbedring" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Kor" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klassisk" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Komponist" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Komponister" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Koncertsal" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Brugerdefineret" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Medieoplysninger" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamisk" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Effekt" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Equalizer" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Eksternalisering" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Viderestiller" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Genre" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Genrer" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Direkte" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Mest afspillede" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Musikklarhed" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Musikmenu" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Musikindstillinger" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Albumcover" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Afspilningslister" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Tilføjet for nylig" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Afspillet for nylig" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Sporets længde" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Gyldighed" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Bred" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "År" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Fra" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Ingen sange" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Sange" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Tilføj afspilningsliste" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Telefonringetone" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Opret afspilningsliste" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Rediger titel" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Oversigt" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Fjern" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Omdøb" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Skift rækkefølge" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Gem som afspilningsliste" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Alarmtone" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Kontakt ringetone" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Føjet til %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth-forbindelse afbrudt" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Det maksimale elementer (%d) valgt" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Intet er valgt" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Kan ikke slette. Valgt musik afspilles" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Kan ikke afspille. Der opstod en fejl" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Kan ikke afspille. Filtypen understøttes ikke" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Tilføj" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Del" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Alle" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Kunstnere" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Kompon." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirigent" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Genrer" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcasts" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "År" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Vælg enhed" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Vis ikke igen" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Du kan streame din musik til enheder ved hjælp af AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Vis som" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Bruger" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Basforstærkning" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Diskantforstærkning" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Cafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuel 7.1-kan" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Efter 15 min." + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Efter 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Efter 1 time" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Efter 1 time og 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Efter 2 timer" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Automatisk musik fra" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Denne lydeffekt fungerer kun i tilstandene høretelefon og Bluetooth-høretelefon" + diff --git a/po/de_DE.po b/po/de_DE.po index 696784d..156023e 100755 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Das Hören lauter Musik über einen längeren Zeitraum kann sich schädlich auf Ihr Gehör auswirken." + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Hinzufügen nicht möglich" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Keine\nLyrics" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Soundeffekte können nicht geändert werden, wenn Kanal 5.1 verwendet wird." + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Tag finden" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-Sound-Effekte nur im Kopfhörer-Modus möglich" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Kanal 5.1 kann nur aktiviert werden, wenn die Soundeffekte ausgeschaltet sind." + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Erstellen der Wiedergabeliste nicht möglich" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Tag kann nicht abgerufen werden" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Ordner" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Element kann nicht entfernt werden" @@ -328,3 +358,57 @@ msgstr "Podcasts" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Jahre" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Gerät auswählen" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Nicht mehr anzeigen" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Sie können Ihre Musik mit AllShare auf Geräte streamen." + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Ansicht" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Benutzer" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Bass Boost" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Treblebooster" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Café" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "7.1 Kanäle virtuell" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Nach 15 Min." + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Nach 30 Minuten" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Nach 1 Stunde" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Nach 1 Stunde und 30 Minuten" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Nach 2 Stunden" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Musik-Auto aus" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Dieser Sound-Effekt funktioniert nur im Kopfhörer- und Bluetooth-Headset-Modus." + diff --git a/po/el_GR.po b/po/el_GR.po index ac57305..5a3a835 100755 --- a/po/el_GR.po +++ b/po/el_GR.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Η ακρόαση μουσικής σε υψηλή ένταση για μεγάλο χρονικό διάστημα μπορεί να βλάψει την ακοή σας" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Δεν είναι δυνατή η προσθήκη" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Χωρίς στίχους" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Δεν είναι δυνατή η αλλαγή των ηχητικών εφέ κατά τη χρήση του καναλιού 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Αναζήτηση ετικέτας" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Τo εφέ ήχων του καναλιού 5.1 εκτελείται μόνο στη λειτουργία ακουστικών" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Το κανάλι 5.1 μπορεί να ενεργοποιηθεί μόνο όταν τα ηχητικά εφέ είναι απενεργοποιημένα" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Δεν είναι δυνατή η δημιουργία λίστας αναπαραγωγής" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Δεν είναι δυνατή η λήψη φράσης" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Φάκελοι" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Δεν είναι δυνατή η αφαίρεση του στοιχείου" @@ -328,3 +358,57 @@ msgstr "Podcasts" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Έτη" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Επιλογή συσκευής" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Να μην εμφανιστεί ξανά" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Μπορείτε να ακούσετε τη μουσική σας μέσω ροής σε συσκευές χρησιμοποιώντας το AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Προβ. ως" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Κανονικό" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Χρήστης" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Φωνητικά" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Ενίσχυση μπάσων" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Ενίσχυση πρίμων" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Καφετέρια" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Εικονικό κανάλι 7.1" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Μετά από 15 λεπτά" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Μετά από 30 λεπτά" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Μετά από 1 ώρα" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Μετά από 1 ώρα 30 λεπτά" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Μετά από 2 ώρες" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Αυτόματη απενεργοποίηση μουσικής" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Αυτό το εφέ ήχων εκτελείται μόνο στη λειτουργία ακουστικών και Bluetooth" + diff --git a/po/en.po b/po/en.po index eae3f90..5df2de2 100755 --- a/po/en.po +++ b/po/en.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "High volumes may harm your hearing if you listen for a long time" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Unable to add" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "No lyrics" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Unable to change sound effects when using 5.1 channel" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Find tag" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 channel sound effect works in earphone mode only" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1 channel can only be activated when sound effects are off" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Unable to create playlist" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Unable to get tag" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Folders" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Unable to remove item" @@ -328,3 +358,57 @@ msgstr "Podcasts" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Years" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Select device" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Do not show again" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "You can stream your music to devices using AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "View as" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "User" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Bass boost" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Treble boost" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Cafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtual 7.1 ch" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "After 15 mins" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "After 30 mins" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "After 1 hour" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "After 1 hour 30 mins" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "After 2 hours" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Music auto off" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "This sound effect works in earphone and Bluetooth headset modes only" + diff --git a/po/en_US.po b/po/en_US.po new file mode 100755 index 0000000..3beab2d --- /dev/null +++ b/po/en_US.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "High volumes may harm your hearing if you listen for a long time" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Unable to add" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "No lyrics" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Unable to change sound effects when using 5.1 channel" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Find tag" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 channel sound effect works in earphone mode only" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1 channel can only be activated when sound effects are off" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Unable to create playlist" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Unable to get tag" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Folders" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Unable to remove item" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Unable to add more than %d music file" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Unable to play during call" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albums" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Author" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Copyright" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Create playlist" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Description" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Favorites" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Impossible" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Location" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "No playlists" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Track number" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Type" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Unknown" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Delete" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Added" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Delete?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s removed" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Removed" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Remove?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Set as caller ringtone" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Unable to rename playlist" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Unable to set as ringtone" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Unable to share DRM file" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albums" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biography" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Credits" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Media info" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Discography" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Lyric" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Name too long" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Parent rating" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Possible" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Review" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Track list" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Already added" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 channel" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Add to playlist" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Artist" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Artists" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Auto" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Available uses" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Bass enhancement" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Chorus" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Classic" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Composer" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Composers" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Concert hall" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Custom" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Media info" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamic" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Effect" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Equalizer" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalization" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Forwarding" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Genre" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Genres" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Live" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Most played" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Music clarity" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Music menu" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Music settings" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Album art" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Playlists" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Recently added" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Recently played" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Track length" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Validity" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Wide" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Years" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Off" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "No songs" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Songs" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Add playlist" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Call ringtone" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Create playlist" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Edit title" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "History" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Remove" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Rename" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Reorder" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Save as playlist" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Alarm tone" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Caller ringtone" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Added to %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth disconnected" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Maximum number of items (%d) selected" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Nothing selected" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Unable to delete. Selected music is playing" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Unable to play. Error occurred" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Unable to play. Unsupported file type" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Add" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Share" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "All" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Artists" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Composers" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Conductors" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Genres" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcasts" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Years" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Select device" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Do not show again" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "You can stream your music to devices using AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "View as" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "User" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Bass boost" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Treble boost" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Cafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtual 7.1 ch" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "After 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "After 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "After 1 hour" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "After 1 hour 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "After 2 hours" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Music auto off" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "This sound effect works in earphone and Bluetooth headset modes only" + diff --git a/po/es_ES.po b/po/es_ES.po index 99a6189..9271184 100755 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "El volumen alto durante un tiempo prolongado puede dañar sus oídos" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "No se puede añadir" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Sin letra" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "No se pueden cambiar los efectos de sonido con el canal 5.1 en uso" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Buscar etiqueta" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "El efecto de sonido del canal 5.1 sólo funciona en modo auricular" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "El canal 5.1 sólo puede activarse con efectos de sonido desactivados" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "No se puede crear la lista de reproducción" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "No se puede obtener etiqueta" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Carpetas" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "No se puede quitar elemento" @@ -266,7 +296,7 @@ msgid "IDS_MUSIC_OPT_REMOVE" msgstr "Eliminar" msgid "IDS_MUSIC_OPT_RENAME" -msgstr "Cambiar nombre" +msgstr "Renombrar" msgid "IDS_MUSIC_OPT_REORDER" msgstr "Reordenar" @@ -328,3 +358,57 @@ msgstr "Podcasts" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Años" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Seleccione dispositivo" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "No mostrar de nuevo" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Puede transmitir su música en dispositivos usando AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Ver como" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Usuario" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Ecualizar graves" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Ecualizar agudos" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Café" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Canales 7.1 virtuales" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Después de 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Después de 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Después de 1 hora" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Después de 1 hora 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Después de 2 horas" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Música automática desactivada" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Este efecto de sonido sólo funciona en los modos de auricular y auricular Bluetooth" + diff --git a/po/fi.po b/po/fi.po new file mode 100755 index 0000000..41eace7 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Suuri äänenvoimakkuus vaurioittaa kuuloasi pitkäaikaisen kuuntelun aikana" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Lisääminen ei onnistu" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Ei sa-noitusta" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Äänitehosteita ei voi muuttaa, kun 5.1-kanava on käytössä" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Etsi tunniste" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-kanavainen äänitehoste toimii vain kuuloketilassa" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1-kanava voidaan aktivoida vain silloin, kun äänitehosteet on poistettu käytöstä" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Soittolistan luonti epäonnistui" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Tunnistetta ei voi hakea" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Kansiot" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Kohdetta ei voi poistaa" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Yli %d musiikkitiedostoa ei voi lisätä" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Puhelun aikana ei voi toistaa" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumit" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Tekijä" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Tekijänoikeus" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Luo soittolista" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Kuvaus" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Suosikit" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Muoto" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Mahdoton" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Paikka" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Ei soittolistoja" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Kappaleen numero" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Tyyppi" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Tuntematon" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Poista" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Lisätty" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Poistetaanko?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s poistettu" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Poistettu" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Poistetaanko?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Aseta soittajan soittoääneksi" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Soittolistan nimeäminen uudelleen epäonnistui" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Ei voi asettaa soittoääneksi" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "DRM-tiedostoa ei voi jakaa" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumit" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografia" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Tekijät" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Median tiedot" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografia" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Sanoitus" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Nimi on liian pitkä" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Aikuisluokitus" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Mahdollinen" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Tarkista" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Kappaleluettelo" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "On jo lisätty" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1-kanavainen" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Lisää toistoluetteloon" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Esittäjä" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Esittäjät" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automaattinen" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Jäljellä olevat käyttökerrat" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Basson korostus" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Kuoro" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klassinen" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Säveltäjä" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Säveltäjät" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Konserttisali" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Mukautettu" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Tanssi" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Median tiedot" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynaaminen" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Tehoste" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Taajuuskorjain" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Ulkoistaminen" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Edelleenlähetys" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Tyylilaji" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Tyylilajit" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Suora" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Eniten soitetut" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Musiikin selkeys" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Musiikkivalikko" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Musiikkiasetukset" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Kansitaide" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Soittolistat" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Viimeksi lisätyt" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Viimeksi soitetut" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Kappaleen pituus" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Kelpoisuus" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wah-wah" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Leveä" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Vuosi" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Pois päältä" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Ei kappaleita" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Kappaleet" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Lisää soittolista" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Puhelun soittoääni" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Luo soittolista" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Muokkaa otsikkoa" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Historia" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Poista" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Nimeä uudelleen" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Järjestä uudestaan" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Tallenna soittolistana" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Hälytysääni" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Soittajan soittoääni" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Lisätty kohteeseen %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth-yhteys on katkennut" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Valittujen kohteiden enimmäismäärä (%d) saavutettu" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Mitään ei valittu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Ei voi poistaa. Valittu musiikki soi" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Ei voi toistaa. Tapahtui virhe" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Toisto ei onnistu. Tiedostotyyppiä ei tueta" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Lisää" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Jaa" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Kaikki" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Esittäjät" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Sävelt." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Kap.m." + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Tyylilajit" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcast" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Vuodet" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Valitse laite" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Älä näytä uudestaan" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Voit virtauttaa musiikin AllShare-laitteisiin" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "N.tapa" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normaali" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Käyttäjä" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Laulu" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Bassokorostus" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Diskanttikorostus" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kahvila" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuaalinen 7.1-kanava" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15 min kuluttua" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30 min kuluttua" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1 tunnin kuluttua" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1 h 30 min kuluttua" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2 tunnin kuluttua" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Automaattinen musiikin lopetus" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Tämä äänitehoste toimii vain kuuloke- ja Bluetooth-kuuloketiloissa" + diff --git a/po/fr_FR.po b/po/fr_FR.po index 62ce42f..57bd4c7 100755 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr " L'écoute prolongée de musique à un volume élevé risque d'endommager votre audition" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Impossible à ajouter" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Aucune parole" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Modification des effets sonores impossible lors de l'utilisation du canal 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Rechercher tag" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "L'effet sonore 5.1 ne fonctionne qu'en mode Ecouteur uniquement" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Le canal 5.1 ne peut être activé que si les effets sonores sont désactivés" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Impossible de créer la liste de lecture" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Impossible d'obtenir le libellé" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Dossiers" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Impossible de retirer l'élément" @@ -131,7 +161,7 @@ msgid "IDS_MUSIC_BODY_ARTISTS" msgstr "Artistes" msgid "IDS_MUSIC_BODY_AUTO" -msgstr "Auto" +msgstr "Auto." msgid "IDS_MUSIC_BODY_AVAILABLE_USES" msgstr "Utilisations disponibles" @@ -215,7 +245,7 @@ msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" msgstr "Ajoutés récemment" msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" -msgstr "Ecoutés récemment" +msgstr "Écoutés récemment" msgid "IDS_MUSIC_BODY_ROCK" msgstr "Rock" @@ -239,7 +269,7 @@ msgid "IDS_MUSIC_BODY_YEARS" msgstr "Années" msgid "IDS_MUSIC_BUTTON_OFF" -msgstr "Désactiver" +msgstr "Désactivé" msgid "IDS_MUSIC_HEADER_NO_SONGS" msgstr "Aucun titre" @@ -275,10 +305,10 @@ msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" msgstr "Enregistrer comme liste de lecture" msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" -msgstr "Tonalité alarme" +msgstr "Tonalité de l'alarme" msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" -msgstr "Sonnerie personnalisée" +msgstr "Sonnerie d'appelant" msgid "IDS_MUSIC_POP_ADDED_TO_PS" msgstr "Ajouté à %s" @@ -328,3 +358,57 @@ msgstr "Podcasts" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Années" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Sélectionnez le périphérique" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Ne plus afficher" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Vous pouvez diffuser votre musique sur des périphériques via AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Affichage" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Utilisateur" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Chant" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Amplification des basses" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Amplification des aigus" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Café" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Canal 7.1 virtuel" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Après 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Après 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Après 1 heure" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Après 1 heure 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Après 2 heures" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Arrêt auto de la musique" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "L'effet sonore fonctionne uniquement avec le mode Ecouteur et le casque Bluetooth" + diff --git a/po/he.po b/po/he.po new file mode 100755 index 0000000..e0e9535 --- /dev/null +++ b/po/he.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "עוצמות קול גבוהות עלולות לפגוע בשמיעה אם מאזינים להן למשך זמן רב" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "לא ניתן להוסיף" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "ללא מילים" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "לא ניתן שלנות אפקטי צליל בזמן שימוש ב-5.1 ערוצים" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "חפש תג" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "אפקט הקול 5.1 ערוצים פועל במצב אוזניה בלבד" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "ניתן להפעיל 5.1 ערוצים רק כאשר אפקטי צליל כבויים" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "לא ניתן ליצור רשימת השמעה חדשה" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "לא ניתן לקבל תגית" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "תיקיות" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "לא ניתן להסיר פריט" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "לא ניתן להוסיף פריט בנפח של יותר מ-%d KB" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "לא ניתן להפעיל במהלך שיחה" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "גלריה" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "אלבומים" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "מחבר" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "זכויות יוצרים" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "צור רשימת השמעה" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "תיאור" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "מועדפים" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "פורמט" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "לא אפשרי" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "מיקום" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "אין רשימות השמעה" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "מספר רצועה" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "סוג" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "לא ידוע" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "מחק" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "נוסף" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "למחוק?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s הוסר" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "הוסר" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "להסיר?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "הגדר כצלצול מתקשר" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "לא ניתן לשנות שם של רשימת השמעה" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "לא ניתן להגדיר כצלצול" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "לא ניתן לשתף קובץ DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "אלבומים" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "ביוגרפיה" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "קרדיטים" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "פרטי מדיה" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "דיסקוגרפיה" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "לירי" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "השם ארוך מדי" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "דירוג ההורים" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "אפשרי" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "סקירה" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "רשימת הרצועות" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "כבר נוסף" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 ערוצים" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "הוסף לרשימת השמעה" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "אמן" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "אמנים" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "אוטומטי" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "שימושים זמינים" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "הגברת בסים" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "מקהלה" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "קלאסי" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "מלחין" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "יוצרים" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "אולם קונצרטים" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "תפריט מותאם" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "דאנס" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "פרטי מדיה" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "דינאמי" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "אפקט" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "אקוולייזר" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "החצנה" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "העברה" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "ז'אנר" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "ז'אנרים" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "ג'אז" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "הופעה חיה" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "הושמע הכי הרבה" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "צלילות המוסיקה" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "תפריט מוסיקה" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "הגדרות מוסיקה" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "תמונת אלבום" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "רשימות השמעה" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "פופ" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "נוסף לאחרונה" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "הושמע לאחרונה" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "רוק" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "אורך רצועה" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "תקפות" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "רחב" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "שנה" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "כבוי" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "אין שירים" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "שירים" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "הוסף רשימת השמעה" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "צלצול שיחה" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "צור רשימת השמעה" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "ערוך כותרת" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "היסטוריה" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "הסר" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "שנה שם" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "סדר מחדש" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "שמור כרשימת השמעה" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "צליל התראה" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "צלצול מתקשר" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "התווסף ל-%s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth מנותק" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "נבחר המספר המרבי של פריטים (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "אין פריט נבחר" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "לא ניתן למחוק. המוסיקה שנבחרה מושמעת" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "לא ניתן להפעיל. אירעה שגיאה" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "לא ניתן להפעיל. סוג קובץ לא נתמך" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "הוספה" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "שתף" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "הכל" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "אמנים" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "יוצרים" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "מוליכים" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "ז'אנרים" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "פודקאסט" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "שנה" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "בחר התקן" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "אל תציג שוב" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "ניתן להזרים מוסיקה להתקנים בעזרת AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "הצג בתור" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "רגיל" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "משתמש" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "שירה" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "מגביר בס" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "מגביר טרבל" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "קפה" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "ערוץ 7.1 וירטואלי" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "לאחר 15 דקות" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "לאחר 30 דק'" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "לאחר שעה" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "לאחר שעה ו-30 דקות" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "לאחר שעתיים" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "כיבוי אוטומטי של מוסיקה" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "אפקט קול זה פועל רק במצב אוזניה ואוזניית Bluetooth" + diff --git a/po/hi.po b/po/hi.po new file mode 100755 index 0000000..c46465a --- /dev/null +++ b/po/hi.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "उच्च वॉल्यूम से आपके सुनने में नुकसान हो सकता है यदि आप लंबे समय तक उसे सुनते हैं" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "जोड़ने में अक्षम" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "गीत नहीं" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "5.1 चैनल का उपयोग करने पर साउंड इफेक्ट्स बदलने में अक्षम" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "टैग ढूँढें" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 चैनल ध्वनि प्रभाव सिर्फ़ इयरफोन अवस्था में ही काम करता है" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "ध्वनि प्रभाव बंद होने पर केवल 5.1 चैनल सक्रिय हो सकता है" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "प्‍लेलिस्‍ट्स बनाने में अक्षम" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "टैग प्राप्त करने में अक्षम" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "फ़ोल्‍डर्स" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "आइटम रिमूव करने में अक्षम" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "%d से अधिक संगीत फ़ाइल जोड़ने में अक्षम" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "कॉल के दौरान चलाने में असमर्थ" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "एल्बम" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "एल्बम" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "लेखक" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "कॉपीराइट" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "प्लेसूची बनाएँ" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "विवरण" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "पसंदीदा" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "फॉर्मेट" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "असंभव" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "स्थान" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "प्‍लेसूचियाँ नहीं है" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "ट्रैक नंबर" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "प्रकार" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "अज्ञात" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "हटाएँ" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "जोड़ा गया" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "हटाएँ?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s हटाया गया" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "हटाया" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "हटाएँ?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "कॉलर रिंगटोन के रूप में सेट करें" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "प्‍लेलिस्‍ट का नाम बदलने में अक्षम" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "रिंगटोन के रूप में सेट करने में अक्षम" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "DRM फ़ाइल साझा करने में अक्षम" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "अल्बम" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "जीवनी" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "क्रेडिट्स" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "मीडिया सूचना" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "डिस्कोग्राफ़ी" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "बोल" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "नाम काफी लम्बा है" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "पैरेंट रेटिंग" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "संभव" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "समीक्षा" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "ट्रैक सुची" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "पहले ही ज़ोड दिया है" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 चैनल" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "प्लेसूची में जोड़ें" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "कलाकार" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "कलाकार" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "स्वतः" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "उपलब्ध उपयोग" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "बास एन्हेंसमेंट" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "समूहगायक" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "शास्त्रीय" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "कंपोज़र" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "संगीतकार" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "कॉन्‍सर्ट हॉल" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "कस्‍टम" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "नृत्य" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "मीडिया सूचना" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "डायनामिक" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "प्रभाव" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "इक्वेलाईजर" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "बाह्यकरण" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "अग्रेषण" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "शैली" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "शैली" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "जैज़" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "लाइव" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "अधिकांश चलायें हुए" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "संगीत स्पष्टता" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "संगीत मेन्यू" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "म्यूज़िक सेटिंग्स" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "एल्बम कला" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "प्लेसूचियाँ" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "पॉप" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "हाल में जोड़ा गया" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "हाल में चलाया गया" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "रॉक" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "ट्रैक की लंबाई" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "ट्रेमोलो" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "वैधता" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "व्‍हा-व्‍हा" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "वाइड" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "वर्ष" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "बंद" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "कोई गाने नहीं" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "गाने" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "प्लेसूची जोड़ें" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "कॉल रिंगटोन" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "प्लेसूची बनाएँ" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "शीर्षक सम्पादित करें" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "इतिहास" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "हटाएँ" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "पुन: नाम दें" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "पुन: क्रम" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "प्लेसूची के रूप में सुरक्षित करें" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "अलार्म स्वर" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "कॉलर रिंगटोन" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "%s में जोड़ा गया" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "ब्‍लूटूथ डिस्‍कनेक्‍ट हो गया है" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "मदों की अधिकतम संख्‍या (%d) चयनित" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "कुछ चयनित नहीं" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "हटाने में अक्षम। चयनित म्यूज़िक चल रहा है" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "चलाने में अक्षम। त्रुटि पाई गई" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "चलाने में अक्षम. असमर्थित फ़ाइल प्रकार" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "जोड़ें" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "शेयर" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "सभी" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "कलाकार" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "कम्पोजर्स" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "कंडक्टर" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "जेन्रेस" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "पॉडकास्ट्स" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "वर्ष" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "डिवाइस चुनें" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "दुबारा न दिखाएँ" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "ऑलशेयर का उपयोग करते हुए आप आपका म्यूज़िक डिवाइसेस में स्‍ट्रीम कर सकते हैं" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "के रूप में देखें" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "सामान्‍य" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "उपयोक्ता" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "मौखिक" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "बास बूस्‍ट" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "ट्रेबल बूस्‍ट" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "जलपानगृह" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "वर्चुअल 7.1 ch" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15 मिनट बाद" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30 मिनट बाद" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1 घंटे बाद" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1 घंटा 30 मिनट के बाद" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2 घंटे बाद" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "संगीत स्वत: बंद" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "यह ध्वनि प्रभाव केवल इयरफ़ोन और Bluetooth headset मोड्स में काम करता है" + diff --git a/po/hr.po b/po/hr.po new file mode 100755 index 0000000..fc5efb9 --- /dev/null +++ b/po/hr.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Velika glasnoća može oštetiti sluh pri dugom slušanju" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Nije moguće dodati" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Nema tekstova" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "U načinu zvuka 5.1 kanala nije moguća promjena zvučnih efekata" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Info pjesme" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Zvučni efekt 5.1 kanala radi samo u načinu slušalice" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5,1-kanalni zvuk radi samo kada su zvučni efekti isključeni" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Nije moguće napraviti popis pjesama" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Oznaka nedostupna" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Mape" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Nemoguće premještanje" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Moguće dodati najviše %d pjesama" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Nemoguće reprod. tijekom poziva" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autor" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Autorsko pravo" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Novi popis pjesama" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Opis" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Favoriti" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Nemoguće" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Lokacija" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Nema popisa pjesama" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Broj pjesme" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Vrsta" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Nepoznato" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Obriši" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Dodano" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Obrisati?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s uklonjen" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Uklonjeno" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Ukloniti?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Postavi za ton pozivatelja" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Nije moguće preimenovati popis pjesama" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Nemoguće postaviti za ton zvona" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Nemoguće dijeliti zaštićenu datoteku" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografija" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Zasluge" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Podaci o mediju" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografija" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Tekst" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Predugačko ime" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Roditeljska zaštita" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Moguće" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Pregled" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Popis pjesama" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Već dodano" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 kanal" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Dodaj na popis za reprodukciju" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Izvođač" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Izvođači" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Auto" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Preostalo upotreba" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Pojačanje basa" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Chorus" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasično" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Kompozitor" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Skladatelji" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Koncertna dvorana" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Prilagođeno" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Podaci o mediju" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinamično" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efekt" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Equaliser" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Vanjski zvuk" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Prosljeđivanje" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Žanr" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Žanrovi" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Uživo" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Najslušanije" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Čistoća glazbe" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Glazbeni meni" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Postavke glazbe" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Omot albuma" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Popisi pjesama" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Nedavno dodano" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Posljednje" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Trajanje zapisa" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Valjanost" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Široko" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Godine" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Isključeno" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Nema pjesama" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Pjesme" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Dodaj popis" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Melodija zvona" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Novi popis pjesama" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Uredi naslov" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Povijest" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Ukloni" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Preimenuj" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Poredaj" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Spremi kao popis pjesama" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Ton alarma" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Ton pozivatelja" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Dodano u %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth isključen" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Maks. broj (%d) odabranih stavki" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Ništa odabrano" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Nemoguće obrisati. Reproducira se odabrana glazba" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Greška reprodukcije" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Ne može se reproducirati. Nepodržana vrsta datoteke" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Dodaj" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Dijeli" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Sve" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Izvođači" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Skladatelji" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirigenti" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Žanrovi" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcast" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Godine" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Odaberite uređaj" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Ne prikazuj više" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Možete puštati svoju glazbu na uređajima pomoću AllSharea" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Prikaži kao" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normalno" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Korisnik" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Pojačanje basa" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Pojačanje visokih tonova" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kafić" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtualni 7.1 kanal" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Nakon 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Nakon 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Nakon 1 sat" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Nakon 1 sata i 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Nakon 2 sata" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Auto. isključivanje glazbe" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Ovaj zvučni efekt radi samo u načinu slušalice i Bluetooth slušalice" + diff --git a/po/hu.po b/po/hu.po new file mode 100755 index 0000000..cdbc36e --- /dev/null +++ b/po/hu.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Ha sokáig hallgat nagy hangerőn zenét vagy egyebet, akkor károsodhat a hallása" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Nem adható hozzá" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Nincs dalszöv." + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Az 5.1 csatorna használata közben a hangeffektusok nem módosíthatók" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Címke keresése" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Az 5.1 csatorna hangeffektus csak fülhallgatós üzemmódban működik" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Az 5.1 csatorna térhatás csak akkor aktiválható, ha a hangeffektusok ki vannak kapcsolva" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Nem hozható létre lejátszási lista" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Nem sikerült lekérni a címkét" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Mappák" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "A tétel nem távolítható el" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Legfeljebb %d zenei fájl adható hozzá" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Hívás közben nem lehet lejátszani" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumok" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Szerző" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Szerzői jog" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Új lejátszási lista" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Leírás" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Kedvencek" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Formátum" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Nem lehetséges" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Hely" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Nincs lejátszási lista" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Szám száma" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Típus" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Ismeretlen" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Töröl" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Hozzáadva" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Törli?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s eltávolítva" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Törölve" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Törli?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Beállítás hívó csengőhangként" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "A lejátszási listát nem lehet átnevezni" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Nem állítható be csengőhangként" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "A DRM-fájl nem osztható meg" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumok" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Életrajz" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Közreműködők" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Média adatai" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diszkográfia" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Dalszöveg" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "A név túl hosszú" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Szülői értékelés" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Lehetséges" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Előnézet" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Számlista" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Már hozzáadva" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 csatorna" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Lejátszási listára" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Előadó" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Előadók" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Auto." + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Lehetséges felhasználás" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Bass enhancement" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Kórus" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Classic" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Zeneszerző" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Szerzők" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Concert hall" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Egyedi" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Média adatai" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamic" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Effektus" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Ekvalizer" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalisation" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Továbbítás" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Műfaj" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Műfajok" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Live" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Leggyakrabban játszott" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Music clarity" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Zene menü" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Zenebeállítások" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Lemezborító" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Lejátszási listák" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Legutóbb hozzáadott" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Legutóbb lejátszott" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Szám hossza" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremoló" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Érvényesség" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Wide" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Év" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Ki" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Nincs szám" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Számok" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Lejátszási lista hozzáadása" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Hívás csengőhangja" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Új lejátszási lista" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Név szerkesztése" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Előzmények" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Eltávolít" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Átnevez" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Átrendezés" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Mentés lejátszási listaként" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Jelzőhang" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Hívó csengőhangja" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Hozzáadás a következőhöz: %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth szétkapcsolva" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Maximális számú (%d) tétel van kiválasztva" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Semmi nincs kiválasztva" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Nem lehet törölni. Zene lejátszása folyamatban" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Nem játszható le. Hiba történt" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Nem játszható le. Nem támogatott fájltípus" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Hozzáad" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Megosztás" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Mind" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Előadók" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Szerzők" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Kar- mesterek" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Műfajok" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Pod- castok" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Évek" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Válasszon eszközt" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Ne jelenjen meg ismét" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Az AllShare segítségével adatfolyamként küldhet zenét az eszközökre" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Nézet" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normál" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Felhasználó" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Mély hangok kiemelése" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Magas hangok kiemelése" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Cafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuális 7.1 csatorna" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15 perc múlva" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30 perc múlva" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1 óra múlva" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1 óra 30 perc múlva" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2 óra múlva" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Lejátszó automatikus kikapcsolása" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "A hangeffektus csak fülhallgatós és Bluetooth-fejhallgatós üzemmódban működik" + diff --git a/po/id.po b/po/id.po new file mode 100755 index 0000000..646efee --- /dev/null +++ b/po/id.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Volume tinggi dapat membahayakan pendengaran Anda jika Anda mendengarkannya dalam waktu yang lama" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Tidak bisa menambah" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Tidak ada lirik" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Tidak dapat mengubah efek suara saat menggunakan saluran 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Temukan tag" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "efek suara saluran 5.1 hanya bekerja pada mode earphone saja" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Saluran 5.1 hanya dapat diaktifkan saat efek suara tdk aktif" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Tidak bisa membuat daftar putar" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Tidak bisa mendapatkan tag" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Folder" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Tidak bisa menghapus item" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Tidak bisa menambahkan lebih dari %d file lagu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Tidak bisa memutar selama panggilan" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Pencipta" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Hak Cipta" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Buat daftar putar" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Penggambaran" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Favorit" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Tdk memungkinkan" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Lokasi" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Tanpa daftar putar" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Nomor track" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Tipe" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Tidak diketahui" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Hapus" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Ditambahkan" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Hapus?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s dihapus" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Dihapus" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Hapus?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Atur sebagai nada dering pemanggil" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Gagal menamai ulang daftar putar" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Tidak bisa menetapkan sebagai nada dering" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Tidak bisa membagi file DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografi" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Kredit" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Info media" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografi" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Lirik" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Nama terlalu panjang" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Peringkat orang tua" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Memungkinkan" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Tinjauan" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Daftar trek" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Sudah ditambahkan" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 Saluran" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Tambahkan ke daftar putar" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Artis" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Artis" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Otomatis" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Tersedia utk digunakan" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Penambahan bass" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Chorus" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasik" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Composer" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Pencipta" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Aula konser" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Kustomisasi" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dansa" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Info media" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinamis" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efek" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Equalizer" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Eksternalisasi" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Meneruskan" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Aliran" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Aliran" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Langsung" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Paling sering diputar" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Kejelasan lagu" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Menu musik" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Pengaturan pemutar musik" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Seni album" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Daftar putar" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Baru ditambahkan" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Terakhir diputar" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Panjang track" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Berlaku" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Lebar" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Tahun" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Tdk aktif" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Tdk ada lagu" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Lagu" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Tambah daftar putar" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Nada dering panggilan" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Buat daftar putar" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Edit judul" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Histori" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Hapus" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Ganti nama" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Urut ulang" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Simpan sebagai daftar putar" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Nada alarm" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Nada dering pemanggil" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Ditambahkan ke %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth terputus" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Jumlah maksimum item (%d) yang dipilih" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Tidak ada yang dipilih" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Tidak bisa menghapus. Musik yang dipilih sedang diputar" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Tidak bisa memutar. Terjadi kesalahan" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Tidak bisa memutar. Tipe file tak didukung" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Tambahkn" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Bagi" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Semua" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Artis" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Komposer" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Konduktor" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Aliran" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcast" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Tahun" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Pilih perangkat" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Jangan tampilkan lagi" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Anda dapat mengalirkan musik ke perangkat yang menggunakan AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Lht sbg" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Pemakai" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Bass boost" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Treble boost" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Saluran 7.1 virtual" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Setelah 15 mnt" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Setelah 30 mnt" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Setelah 1 jam" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Setelah 1 jam 30 menit" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Setelah 2 jam" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Lagu otomatis berhenti" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Efek suara ini berfungsi pada mode earphone dan headset Bluetooth saja" + diff --git a/po/it_IT.po b/po/it_IT.po index e8376af..c2c5a53 100755 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Volumi troppo alti possono danneggiare l'udito in caso di ascolto prolungato" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Impossibile aggiungere" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Senza testo" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Impossibile modificare gli effetti sonori con 5.1 canali attivo" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Trova tag" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "L'effetto sonoro a 5.1 canali funziona solo in modalità auricolare" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "È possibile attivare il canale 5.1 solo se gli effetti sonori sono disattivati" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Impossibile creare playlist" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Impossibile ottenere tag" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Cartelle" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Impossibile rimuovere elemento" @@ -128,10 +158,10 @@ msgid "IDS_MUSIC_BODY_ARTIST" msgstr "Artista" msgid "IDS_MUSIC_BODY_ARTISTS" -msgstr "Artista" +msgstr "Artisti" msgid "IDS_MUSIC_BODY_AUTO" -msgstr "Auto" +msgstr "Automatica" msgid "IDS_MUSIC_BODY_AVAILABLE_USES" msgstr "Usi disponibili" @@ -203,7 +233,7 @@ msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" msgstr "Impostazioni musica" msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" -msgstr "Album Art" +msgstr "Copertina album" msgid "IDS_MUSIC_BODY_PLAYLISTS" msgstr "Playlist" @@ -328,3 +358,57 @@ msgstr "Podcast" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Anni" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Seleziona dispositivo" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Non mostrare più" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Potete eseguire lo streaming della musica sui dispositivi tramite AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Vis. come" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normale" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Utente" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocale" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Bass boost" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Treble boost" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Caffè" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Canale virtuale 7.1" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Dopo 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Dopo 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Dopo 1 ora" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Dopo 1 ora e 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Dopo 2 ore" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Musica autom. disattivata" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Questo effetto sonoro funziona solo in modalità auricolare e Bluetooth" + diff --git a/po/ja_JP.po b/po/ja_JP.po index ce0308c..7a407ea 100755 --- a/po/ja_JP.po +++ b/po/ja_JP.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr " ​長時間​​大音量​​で​​聴き​​続ける​​と、​​聴力​​を​​損傷​​する​​可能性​​が​​あります" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "追加​できません" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "歌詞​なし" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "5.1​チャンネル​使用​中​は\n​サウンドエフェクトを​使用​できません。" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "タグ​を​探す" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1​チャンネル​は、​イヤホン​モード​で​のみ​使用​でき​ます。" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1​チャンネル​は、サウンド​エフェクトとイコライザー​が​標準​の​とき​のみ使用できます。" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "プレイリスト​を​作成​できません" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "タグ​を​取得​できません" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "フォルダ" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "アイテム​を​消去​できません" @@ -5,7 +35,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" msgstr "ミュージック​ファイル​は​%d​以上​追加​できません" msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" -msgstr "通話中​は​再生​できません" +msgstr "通話中​に​再生​でき​ません。" msgid "IDS_MUSIC_BODY_ALBUM" msgstr "アルバム" @@ -29,7 +59,7 @@ msgid "IDS_MUSIC_BODY_FAVOURITES" msgstr "お気に入り" msgid "IDS_MUSIC_BODY_FORMAT" -msgstr "ファイル形式" +msgstr "ファイル​形式" msgid "IDS_MUSIC_BODY_IMPOSSIBLE" msgstr "不可" @@ -38,7 +68,7 @@ msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" msgstr "保存先" msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" -msgstr "プレイリスト​がありません" +msgstr "プレイリスト​がありません。" msgid "IDS_MUSIC_BODY_TRACK_NUMBER" msgstr "トラック​番号" @@ -53,7 +83,7 @@ msgid "IDS_MUSIC_OPT_DELETE" msgstr "削除" msgid "IDS_MUSIC_POP_ADDED" -msgstr "追加しました。" +msgstr "追加​しました。" msgid "IDS_MUSIC_POP_DELETE_Q" msgstr "削除しますか?" @@ -86,7 +116,7 @@ msgid "IDS_MUSIC_BODY_ADD_TO_HOME" msgstr "Add to home" msgid "IDS_MUSIC_BODY_BIOGRAPHY" -msgstr "バイオグラフィー" +msgstr "アーティスト" msgid "IDS_MUSIC_BODY_CREDITS" msgstr "クレジット" @@ -95,22 +125,22 @@ msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" msgstr "メディア​情報" msgid "IDS_MUSIC_BODY_DISCOGRAPHY" -msgstr "ディスコグラフィー" +msgstr "アルバム" msgid "IDS_MUSIC_BODY_LYRIC" msgstr "歌詞" msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" -msgstr "名前​が​長すぎ​ます" +msgstr "名前が長すぎます。" msgid "IDS_MUSIC_BODY_PARENT_RATING" -msgstr "親​レーティング" +msgstr "保護者の指導が必要" msgid "IDS_MUSIC_BODY_POSSIBLE" msgstr "可能" msgid "IDS_MUSIC_BODY_REVIEW" -msgstr "プレビュー表示設定" +msgstr "プレビュー​表示" msgid "IDS_MUSIC_HEADER_TRACK_LIST" msgstr "トラック​リスト" @@ -149,7 +179,7 @@ msgid "IDS_MUSIC_BODY_COMPOSER" msgstr "作曲者" msgid "IDS_MUSIC_BODY_COMPOSERS" -msgstr "作曲家" +msgstr "作曲者" msgid "IDS_MUSIC_BODY_CONCERT_HALL" msgstr "コンサート​ホール" @@ -167,7 +197,7 @@ msgid "IDS_MUSIC_BODY_DYNAMIC" msgstr "ダイナミック" msgid "IDS_MUSIC_BODY_EFFECT" -msgstr "効果" +msgstr "エフェクト" msgid "IDS_MUSIC_BODY_EQUALISER" msgstr "イコライザー" @@ -248,7 +278,7 @@ msgid "IDS_MUSIC_HEADER_SONGS" msgstr "曲" msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" -msgstr "プレイリスト​に​追加" +msgstr "プレイリストを追加" msgid "IDS_MUSIC_OPT_CALL_RINGTONE" msgstr "着信音" @@ -266,7 +296,7 @@ msgid "IDS_MUSIC_OPT_REMOVE" msgstr "クイックリストから削除" msgid "IDS_MUSIC_OPT_RENAME" -msgstr "名前を変更" +msgstr "名前​を​変更" msgid "IDS_MUSIC_OPT_REORDER" msgstr "並べ替え" @@ -281,10 +311,10 @@ msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" msgstr "個別​着信音" msgid "IDS_MUSIC_POP_ADDED_TO_PS" -msgstr "%sに追加しました。" +msgstr "「%s」に追加しました。" msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" -msgstr "Bluetooth​が​切断​され​ました" +msgstr "Bluetooth​が​切断​され​ました。" msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" msgstr "アイテム​の​最大​選択​数​(​%d​)​を選択しました" @@ -293,10 +323,10 @@ msgid "IDS_MUSIC_POP_NOTHING_SELECTED" msgstr "何も​選択​されて​いません" msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" -msgstr "選択した曲は​再生中のため削除​できません" +msgstr "削除できません。選択した音楽は再生中です。" msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" -msgstr "再生​​​​​できません。​​​エラー​​​が​​​発生しました​​" +msgstr "再生できません。エラーが発生しました。" msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" msgstr "再生​でき​ません。​未対応​の​ファイル​です" @@ -323,8 +353,62 @@ msgid "IDS_MUSIC_TAB4_GENRES" msgstr "ジャンル" msgid "IDS_MUSIC_TAB4_PODCASTS" -msgstr "Podcast" +msgstr "ポッドキャスト" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "年" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "デバイス​​選択​" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "今後​​表示​​しない" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "AllShareを使って端末で音楽をストリーミング再生できます。" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "表示" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "標準" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "ユーザ​ー" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "ボーカル" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "低音強調" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "高音​強調" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "カフェ" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "バーチャル​7.1ch" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15分​後" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30分​後" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1時間​後" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1時間30分後" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2時間​後" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "音楽自動停止" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "この​音響​効果​は​、​イヤホン​および​ Bluetooth ​ヘッド​セット ​モード​で​のみ​機能​します" + diff --git a/po/ko_KR.po b/po/ko_KR.po index 675a3c5..edffab5 100755 --- a/po/ko_KR.po +++ b/po/ko_KR.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "오랫동안 큰 소리로 음악을 들으면 청각이 손상될 수 있습니다" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "추가할 수 없습니다" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "가사 없음" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "5.1채널이 사용 중인 경우에는 음향 효과를 변경할 수 없습니다" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "태그 검색" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1채널 음향효과는 이어폰 연결 시에 적용됩니다" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "음향 효과가 꺼져 있을 경우에만 5.1 채널을 실행할 수 있습니다" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "재생 목록을 추가할 수 없습니다" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "태그를 가져올 수 없습니다" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "폴더" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "항목을 삭제할 수 없습니다" @@ -86,7 +116,7 @@ msgid "IDS_MUSIC_BODY_ADD_TO_HOME" msgstr "홈에 추가" msgid "IDS_MUSIC_BODY_BIOGRAPHY" -msgstr "약력" +msgstr "아티스트" msgid "IDS_MUSIC_BODY_CREDITS" msgstr "크레디트" @@ -328,3 +358,57 @@ msgstr "팟캐스트" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "연도" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "기기 선택" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "다시 표시 안 함" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "AllShare를 사용하여 음악을 디바이스로 스트리밍할 수 있습니다" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "보기 방식" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "일반" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "사용자" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "보컬" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "중저음 강화" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "고음 강화" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "카페" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "가상 7.1채널" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15분 후" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30분 후" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1시간 후" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1시간 30분 후" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2시간 후" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "음악 자동 종료" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "이 음향 효과는 이어폰과 블루투스 헤드셋 모드에서만 작동합니다" + diff --git a/po/lt.po b/po/lt.po new file mode 100755 index 0000000..600d4c8 --- /dev/null +++ b/po/lt.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Jei klausysitės garsiai ilgą laiką, gali būti pažeista klausa" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Negalima pridėti" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Dainų žodž. nėra" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Neįmanoma keisti garso efektų, kai naudojamas 5.1 kanalas" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Rasti žymę" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 kanalo garso efektas veikia tik ausinių režimu" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1 kanalai gali būti naudojami tik išjungus garso efektus" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Negalima sukurti grojaraščio" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Neįmanoma gauti žymos" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Aplankai" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Negalima pašalinti elemento" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Negalima pridėti daugiau kaip %d muzikos failo (-ų)" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Negalima paleisti skambučio metu" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Albumas" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumai" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autorius" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Autorių teisės" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Sukurti grojaraštį" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Aprašas" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Mėgstamiausieji" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Formatas" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Neįmanoma" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Vieta" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Nėra grojaraščių" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Įrašo numeris" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Tipas" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Nežinomas" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Trinti" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Pridėta" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Ar trinti?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s pašalintas" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Pašalinta" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Ar šalinti?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Nustatyti kaip skambintojo melodiją" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Negalima pakeisti grojaraščio pavadinimo" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Neįmanoma nustatyti kaip skambėjimo tono" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Neįmanoma bendrinti DRM failo" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumai" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografija" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Naudinga informacija" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Informacija apie mediją" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Įrašų sąrašas" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Lyrinė" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Pavadinimas per ilgas" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Tėvų vertinimas" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Įmanoma" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Peržiūrėti" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Takelių sąrašas" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Jau įtraukta" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 kanalas" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Pridėti prie grojaraščio" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Atlikėjas" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Atlikėjai" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automatinis" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Galimi panaudojimai" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Žemų dažnių garsų stiprinimas" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Choro efektas" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasika" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Kompozitorius" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Kompozitoriai" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Koncertų salė" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Pasirinktinis" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Šokis" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Informacija apie mediją" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinaminis" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efektas" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Ekvalaizeris" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Išorinis garsas" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Persiuntimas" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Žanras" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Žanrai" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Džiazas" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Gyvai" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Dažniausiai grojami" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Muzikos aiškumas" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Muzikos meniu" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Muzikos nustatymai" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Albumų menas" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Grojaraščiai" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Popmuzika" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Neseniai pridėti" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Neseniai groti" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rokas" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Įrašo ilgis" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Galiojimas" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Ua-ua" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Platus" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Metai" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Išjungti" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Dainų nėra" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Dainos" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Pridėti grojaraštį" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Skambučio tonas" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Sukurti grojaraštį" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Redaguoti antraštę" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Istorija" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Šalinti" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Pervardyti" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Pertvarkyti" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Išsaugoti kaip grojaraštį" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Signalo tonas" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Skambintojo skambėjimo tonas" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Pridėta prie %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "„Bluetooth“ atjungta" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Pasirinktas didžiausias elementų skaičius (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Niekas nepasirinkta" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Neįmanoma ištrinti. Pasirinkta muzika jau leidžiama" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Neįmanoma paleisti. Įvyko klaida" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Negalima paleisti. Nepalaikomas failo tipas" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Įtrauk." + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Bendrinti" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Visos" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Atlikėjai" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Kompozitoriai" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirigentai" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Žanrai" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Interneto trans." + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Metai" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Pasirinkite įrenginį" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Daugiau nerodyti" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Galite siųsti savo muzikos įrašus į įrenginius naudojančius „AllShare“" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Žr.kaip" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Įprastas" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Vartotojas" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokalinė" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Žemųjų dažnių stiprinimas" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Aukštųjų dažnių stiprin." + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kavinė" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtualus 7.1 kan." + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Po 15 min." + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Po 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Po 1 val." + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Po 1 val. 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Po 2 val." + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Automatinis muzikos išjungimas" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Šis garso efektas veikia tik ausinių ir „Bluetooth“ ausinių režimu" + diff --git a/po/lv.po b/po/lv.po new file mode 100755 index 0000000..a04120e --- /dev/null +++ b/po/lv.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Ilgstoša skaļas mūzikas klausīšanās var izraisīt dzirdes traucējumus" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Nevar pievienot" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Nav vārdu" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "5.1 kanāla lietošanas laikā nevar mainīt skaņas efektus" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Atrast atzīmi" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 kanālu skaņas efekts darbojas tikai austiņu režīmā" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1 kanālu režīmu var aktivizēt tikai tad, ja ir izslēgti skaņas efekti" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Nevar izveidot atskaņojumu sarakstu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Nevar iegūt atzīmi" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Mapes" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Nevar noņemt vienumu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Nevar pievienot vairāk kā %d mūzikas failus" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Sarunas laikā nevar veikt atskaņošanu" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Albums" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autors" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Autortiesības" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Izveidot atskaņošanas sarakstu" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Apraksts" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Izlases" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Formāts" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Nav iespējams" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Atrašanās vieta" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Nav atskaņojumu sarakstu" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Ieraksta numurs" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Veids" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Nezināms" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Dzēst" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Pievienots" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Vai dzēst?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s noņemts" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Noņemts" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Vai noņemt?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Iestatīt kā zvanītāja signālu" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Nevar pārdēvēt atskaņojumu sarakstu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Nevar iestatīt kā zvana signālu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "DRM failu nevar koplietot" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biogrāfija" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Albuma veidotāji" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Multivides informācija" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskogrāfija" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Dziesmu vārdi" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Nosaukums par garu" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Vecāku novērtējums" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Iespējams" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Pārskatīt" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Ierakstu saraksts" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Jau pievienots" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 kanāls" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Piev. atsk. sar." + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Izpildītājs" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Izpildītāji" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automātiski" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Atlikušās lietošanas reizes" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Zemo frekvenču skaņas pastiprināšana" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Koris" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasiskais" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Komponists" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Komponisti" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Koncertzāle" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Pielāgot" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Deju mūzika" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Multivides informācija" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinamisks" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efekts" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Ekvalaizers" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Eksternalizācija" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Pārsūtīšana" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Žanrs" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Žanri" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Džezs" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Dzīvā mūzika" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Visvairāk atskaņotie" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Mūzikas dzidrums" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Mūzikas izvēlne" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Mūzikas iestatījumi" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Albuma attēls" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Atskaņošanas saraksti" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Popmūzika" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Nesen pievienotie" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Nesen atskaņotie" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Roks" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Ieraksta ilgums" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Derīgums" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Va-va" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Plašs" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Gadi" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Izslēgt" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Nav dziesmu" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Dziesmas" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Piev. atsk. sar." + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Zvana signāls" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Izveidot atskaņošanas sarakstu" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Rediģēt nosaukumu" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Vēsture" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Noņemt" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Pārdēvēt" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Pārkārtot" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Saglabāt kā atskaņošanas sarakstu" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Atgādinājuma signāls" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Zvanītāja zvana signāls" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Pievienots atskaņošanas sarakstam %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth atvienots" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Izvēlēts maksimālais objektu skaits (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Nekas nav izvēlēts" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Nevar izdzēst. Izvēlētā mūzika tiek atskaņota" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Nevar atskaņot. Radās kļūda" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Nevar atskaņot. Neatbalstīts faila tips." + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Pievien." + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Koplietot" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Visas" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Izpildītāji" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Komponist." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Diriģ." + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Žanri" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Aplādes" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Gadi" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Atlasīt ierīci" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Nerādīt vēlreiz" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Varat straumēt mūziku uz ierīcēm, izmantojot programmu AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Skatīt kā" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Parasts" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Lietotājs" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokāls" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Basu pastiprināšana" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Diskantu pastiprināšana" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kafejnīca" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuālais 7.1 kan." + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Pēc 15 minūtēm" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Pēc 30 minūtēm" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Pēc 1 stundas" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Pēc 1 h 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Pēc 2 stundām" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Mūzika autom. izslēgta" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Šis skaņas efekts darbojas tikai austiņu un Bluetooth austiņas režīmā" + diff --git a/po/ms.po b/po/ms.po new file mode 100755 index 0000000..7a8ac16 --- /dev/null +++ b/po/ms.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Kelantangan tinggi mungkin merosakkan pendengaran anda jika anda mendengar untuk masa yang lama" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Tidak boleh menambah" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Tiada lirik" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Tidak boleh mengubah kesan bunyi apabila menggunakan saluran 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Cari tag" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Kesan bunyi saluran 5.1 berfungsi dalam mod fon telinga sahaja" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Saluran 5.1 hanya boleh diaktifkan apabila kesan bunyi dimatikan" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Tidak boleh mencipta senarai main" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Tidak boleh mendapatkan teg" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Pelipat" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Tidak boleh mengalih keluar item" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Tdk dpt menambah lebih dpd %d fail muzik" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Tdk dpt memainkan semasa panggilan" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Pengarang" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Hak cipta" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Reka senarai main" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Deskripsi" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Kegemaran" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Mustahil" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Lokasi" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Tiada senarai mainan" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Nombor lagu" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Jenis" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Tidak diketahui" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Padam" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Ditambahkan" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Padam?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s dialih keluar" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Dikeluarkan" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Alihkan?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Tetapkan sebagai nada dering pemanggil" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Tidak boleh menamakan semula senarai main" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Tidak boleh menetapkan sebagai nada dering" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Tidak boleh berkongsi fail DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografi" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Penghargaan" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Maklumat media" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografi" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Lirik" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Nama terlalu panjang" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Penilaian ibu bapa" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Mungkin" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Lihat semula" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Senarai lagu" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Telah ditambahkan" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "Saluran 5.1" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Tambah ke senarai main" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Artis" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Artis" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automatik" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Kegunaan boleh didpti" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Peningkatan bes" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Korus" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasik" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Composer" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Pengarang" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Dewan konsert" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Langganan" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Tarian" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Maklumat media" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinamik" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Kesan" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Penyama" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Peluaran" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Memajukan" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Aliran" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Aliran" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Siaran Langsung" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Paling kerap dimain" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Kejelasan muzik" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Menu muzik" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Aturan muzik" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Seni album" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Senarai main" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Ditambah baru-baru ini" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Dimain baru-baru ini" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Panjang lagu" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Kesahan" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Luas" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Tahun" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Matikan" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Tiada lagu" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Lagu" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Tambah senarai main" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Nada dering panggilan" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Reka senarai main" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Sunting tajuk" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Sejarah" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Keluarkan" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Namakan semula" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Susun semula" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Simpan sebagai senarai main" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Nada penggera" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Nada dering pemanggil" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Ditambah ke %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth diputuskan sambungan" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Bilangan maksimum perkara (%d) dipilih" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Tiada apa-apa dipilih" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Tidak boleh memadam. Muzik yang dipilih dimainkan" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Tidak boleh memainkan. Ralat berlaku" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Tidak boleh memainkan. Jenis fail yang tidak disokong" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Tambah" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Kongsi" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Semua" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Artis" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Pengarang" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Pemimpin" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Aliran" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcast" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Tahun" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Pilih peranti" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Jangan tunjuk lagi" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Anda boleh menstrimkan muzik anda kepada peranti menggunakan AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Lihat sbg" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Biasa" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Pengguna" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Tambah bes" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Tambah trebel" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Saluran maya 7.1" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Selepas 15 minit" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Selepas 30 minit" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Selepas 1 jam" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Selepas 1 jam 30 minit" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Selepas 2 jam" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Muzik diauto matikan" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Kesan bunyi ini bekerja di fon telinga dan mod set kepala Bluetooth sahaja" + diff --git a/po/nl_NL.po b/po/nl_NL.po index a6aa9e0..1f45503 100755 --- a/po/nl_NL.po +++ b/po/nl_NL.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Hoog volume kan uw gehoor beschadigen wanneer u er lang naar luistert" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Kan niet toevoegen" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Geen songtkst" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Kan geluidseffecten niet wijzigen bij gebruik van 5.1-kanaals" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Tag zoeken" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-kanaals geluidseffect werkt alleen met oortelefoonstand" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1-kanaal kan alleen worden geactiveerd wanneer geluidseffecten zijn uitgeschakeld" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Kan de afspeellijst niet maken" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Kan tag niet ophalen" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Mappen" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Kan het item niet wissen" @@ -23,7 +53,7 @@ msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" msgstr "Afspeellijst maken" msgid "IDS_MUSIC_BODY_DESCRIPTION" -msgstr "Beschrijving" +msgstr "Omschrijving" msgid "IDS_MUSIC_BODY_FAVOURITES" msgstr "Favorieten" @@ -56,7 +86,7 @@ msgid "IDS_MUSIC_POP_ADDED" msgstr "Toegevoegd" msgid "IDS_MUSIC_POP_DELETE_Q" -msgstr "Wissen?" +msgstr "Verwijderen?" msgid "IDS_MUSIC_POP_PS_REMOVED" msgstr "%s verwijderd" @@ -131,7 +161,7 @@ msgid "IDS_MUSIC_BODY_ARTISTS" msgstr "Artiesten" msgid "IDS_MUSIC_BODY_AUTO" -msgstr "Automa-\ntisch" +msgstr "Automatisch" msgid "IDS_MUSIC_BODY_AVAILABLE_USES" msgstr "Aantal keer dat het gebruikt mag worden" @@ -257,7 +287,7 @@ msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" msgstr "Afspeellijst maken" msgid "IDS_MUSIC_OPT_EDIT_TITLE" -msgstr "Titel wijzigen" +msgstr "Titel bewerken" msgid "IDS_MUSIC_OPT_HISTORY" msgstr "Geschiedenis" @@ -328,3 +358,57 @@ msgstr "Podcasts" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Jaren" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Apparaat selecteren" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Niet meer laten zien" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Gebruik AllShare voor streaming van muziek naar apparaten" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Weergave" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normaal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Gebruiker" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Zang" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Basboost" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Hoge-tonenboost" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Café" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtueel 7.1 kanaals" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Na 15 min." + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Na 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Na 1 uur" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Na 1 uur 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Na 2 uur" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Muziek automatisch uit" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Dit geluidseffect werkt alleen in de oortelefoon- en Bluetooth-headsetstand" + diff --git a/po/no.po b/po/no.po new file mode 100755 index 0000000..1cad687 --- /dev/null +++ b/po/no.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Høy lydstyrke kan skade hørselen din hvis du lytter til det over lengre perioder" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Kan ikke legge til" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Ingen tekster" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Kan ikke endre lydeffekter ved bruk av 5.1-kanal" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Finn tagg" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-kanals lydeffekt virker bare i høretelefonmodus" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1-kanal kan bare aktiveres når lydeffekter er av" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Kan ikke opprette spilleliste" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Kan ikke hente tagg" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Mapper" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Kan ikke fjerne element" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Kan ikke legge til mer enn %d musikkfiler" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Kan ikke spille av under samtale" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Forfatter" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Copyright" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Opprett spilleliste" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Beskrivelse" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Favoritter" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Umulig" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Plassering" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Ingen spillelister" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Spornummer" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Type" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Ukjent" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Slett" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Lagt til" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Slette?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s er fjernet" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Fjernet" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Fjerne?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Angi som anropsringetone" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Kan ikke gi spillelisten nytt navn" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Kan ikke angi som ringetone" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Kan ikke dele DRM-fil" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografi" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Medvirkende" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Medieinformasjon" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografi" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Tekster" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Navnet er for langt" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Aldersgrense" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Mulig" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Gjennomgang" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Avspillingsliste" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Allerede lagt til" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1-kanal" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Legg til i spilleliste" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Artist" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Artist" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Auto" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Kan brukes antall ganger" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Bassforsterkning" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Kor" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klassisk" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Forfatter" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Komponister" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Concert Hall" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Egendefinert" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dans" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Medieinformasjon" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamisk" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Effekt" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Equalizer" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Eksternalisering" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Videresending" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Sjanger" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Sjangre" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Live" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Mest spilt" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Musikklarhet" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Musikkmeny" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Musikkinnstillinger" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Albumomslag" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Spillelister" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Nylig lagt til" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Nylig avspilt" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Sporlengde" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Gyldighet" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Bred" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "År" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Av" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Ingen sanger" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Sanger" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Legg til spilleliste" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Ringetone for samtale" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Opprett spilleliste" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Rediger tittel" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Historikk" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Fjerne" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Endre navn" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Omordne" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Lagre som spilleliste" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Alarmtone" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Anropsringetone" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Lagt til %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth koblet fra" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Maksimalt antall elementer (%d) nådd" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Ingenting valgt" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Kan ikke slette. Valgt musikk spilles av" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Kan ikke spille av. Det oppstod en feil" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Kan ikke spilles av. Ikke støttet filtype" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Tilføy" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Del" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Alle" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Artist" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Kompon." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirig." + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Sjangre" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcasts" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "År" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Velg enhet" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Ikke vis igjen" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Du kan streame musikken din til andre enheter med AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Vis som" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Bruker" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Bassheving" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Diskantheving" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kafé" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuell 7.1 kanal" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Etter 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Etter 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Etter 1 time" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Etter 1 time 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Etter 2 timer" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Musikk auto av" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Denne lydeffekten virker bare i høretelefon- og Bluetooth headset-moduser" + diff --git a/po/pl.po b/po/pl.po new file mode 100755 index 0000000..ffc5aa8 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Słuchanie muzyki przy wysokim ustawieniu głośności przez długi czas może spowodować uszkodzenie słuchu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Nie można dodać" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Brak tekstu" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Nie można zmienić efektów dźwiękowych, gdy włączony jest dźwięk przestrzenny 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Znajdź tag" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Podłącz słuchawki, aby korzystać z dźwięku przestrzennego 5.1" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Dźwięk przestrzenny 5.1 można włączyć tylko wtedy, gdy efekty dźwiękowe są wyłączone" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Nie można utworzyć listy odtwarzania" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Nie można pobrać etykiety" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Katalogi" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Nie można usunąć elementu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Nie można dodać więcej utworów muzycznych niż %d" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Niedozwolone podczas połączenia" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumy" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autor" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Copyright" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Utwórz listę odtwarzania" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Opis" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Ulubione" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Niemożliwe" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Miejsce" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Brak list odtwarzania" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Numer utworu" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Typ" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Nieznany" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Usuń" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Dodano" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Usunąć?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "Usunięto: %s" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Usunięto" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Usunąć?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Ustaw jako dzwonek rozmówcy" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Nie można zmienić nazwy listy odtwarzania" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Nie można ustawić jako dzwonek" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Nie można udostępnić pliku DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumy" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografia" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Kredyty" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Multimedia" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Dyskografia" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Tekst" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Zbyt długa nazwa" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Ocena rodzica" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Możliwe" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Podgląd zdjęcia" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Lista utworów" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Już dodano" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "Dźwięk przestrzenny 5.1" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Dodaj do listy odtwarzania" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Wykonawca" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Artyści" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automatyczny" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Dostępne zastosowania" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Podbicie basów" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Chór" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Classic" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Kompozytor" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Kompozytorzy" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Sala koncertowa" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Niestand." + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Multimedia" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamiczny" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efekty" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Equalizer" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Na zewnątrz" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Przesyłanie" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Rodzaj" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Rodzaje" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Live" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Najczęściej odtwarzane" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Muzyka" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Elementy menu muzyka" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Ustawienia muzyki" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Okładka" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Listy odtwarzania" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Ostatnio dodane" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Ostatnio odtwarzane" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Długość utworu" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Ważność" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Wide" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Rok" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Wył." + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Brak utworów" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Piosenki" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Dodaj listę odtwarzania" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Dźwięk dzwonka" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Utwórz listę odtwarzania" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Edytuj tytuł" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Historia" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Usuń" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Zmień nazwę" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Zmień kolejność" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Zapisz jako listę odtwarzania" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Sygnał alarmu" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Dzwonek kontaktu" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Dodano do %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Przerwano połączenie Bluetooth" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Wybrano maksymalną liczbę elementów (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Niczego nie zaznaczono" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Nie można usunąć. Wybrana muzyka jest odtwarzana" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Nie można odtworzyć. Wystąpił błąd" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Nie można odtworzyć. Nieobsługiwany typ pliku" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Dodaj" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Udostęp." + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Wszystkie" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Artyści" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Kompoz." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dyrygenci" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Rodzaje" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcasty" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Lata" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Wybierz urządzenie" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Nie wyświetlaj ponownie" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Możesz przesyłać muzykę strumieniowo do urządzeń przez AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Widok" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Wył." + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Użytkownik" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Śpiew" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Podbicie basów" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Podbicie tonów wysokich" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kawiarnia" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtual 7.1 ch" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Po 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Po 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Po 1 godz." + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Po 1 godz. 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Po 2 godz." + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Auto-wył. odtwarzacza" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "To ustawienie jest dostępne tylko w trybie słuchawek przewodowych lub Bluetooth" + diff --git a/po/pt_PT.po b/po/pt_PT.po index 21411cb..3c78359 100755 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "O volume de som elevado pode prejudicar a sua audição se a expuser a este durante muito tempo" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Impossível adicionar" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Nenhumas letras" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Impossível alterar efeitos de som durante a utilização do canal 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Localizar etiqueta" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "O efeito de som do canal 5.1 funciona apenas no modo de auricular" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "O canal 5.1 só pode ser activado quando os efeitos de som estão desligados" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Impossível criar lista de reprodução" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Impossível obter etiqueta" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Pastas" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Impossível remover item" @@ -328,3 +358,57 @@ msgstr "Podcasts" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Anos" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Seleccionar dispositivo" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Não mostrar novamente" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Pode efectuar o streaming da sua música para dispositivo utilizando AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Ver" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Utilizador" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Amplificação de baixos" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Amplificação de agudos" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Café" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Canal virtual 7.1" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Após 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Após 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Após 1 hora" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Após 1 hora e 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Após 2 horas" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Desligar música automaticamente" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Este efeito de som funciona apenas nos modos de auricular e auricular Bluetooth" + diff --git a/po/ro.po b/po/ro.po new file mode 100755 index 0000000..d328453 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Sunetele la volum ridicat pot afecta auzul, dacă le ascultaţi timp îndelungat" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Imposibil de adăugat" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Fără versuri" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Imposibil de modificat efectele sonore în timpul utilizării sistemului pe 5.1 canale" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Căutare etichetă" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Efectul sonor pentru 5.1 canale funcţionează numai în modul cască" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Sistemul pe 5.1 canale poate fi activat numai când efectele sonore sunt dezactivate" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Imposibil de creat lista de redare" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Imposibil de obţinut eticheta" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Foldere" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Imposibil de eliminat elementul" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Imposibil de adăugat mai mult de %d fişier muzical" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Imposibil de redat în timpul unui apel" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albume" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autor" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Drept de autor" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Creare listă de redare" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Descriere" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Favorite" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Imposibil" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Locaţie" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Nici o listă de redare" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Număr piesă" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Tip" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Necunoscut" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Ştergere" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Adăugat" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Ştergeţi?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s a fost eliminat" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Eliminat" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Eliminare?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Setare ca ton de sonerie apelant" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Imposibil de redenumit lista de redare" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Imposibil de setat ca ton de sonerie" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Imposibil de partajat fişierul DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albume" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografie" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Credite" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Informaţii media" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Discografie" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Versuri" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Nume prea lung" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Evaluare părinte" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Posibil" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Examinare" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Listă de melodii" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Deja adăugat" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 canale" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Adăugare la lista de redare" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Artist" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Artişti" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automat" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Utilizări disponibile" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Accentuare başi" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Cor" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Clasic" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Compozitor" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Compozitori" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Sală de concert" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Particularizat" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Informaţii media" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinamic" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efect" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Egalizator" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalizare" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Redirecţionare" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Gen" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Genuri" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Live" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Cea mai redată" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Claritate muzică" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Meniu muzică" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Setări muzică" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Grafică album" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Liste de redare" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Adăugat recent" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Redate recent" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Lungime piesă" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Valabilitate" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Larg" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Ani" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Oprit" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Nu există melodii" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Melodii" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Adăugare listă de redare" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Ton sonerie apel" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Creare listă de redare" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Editare titlu" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Istoric" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Eliminare" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Redenumire" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Reordonare" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Salvare ca listă de redare" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Ton alarmă" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Ton sonerie apelant" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Adăugate la %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth deconectat" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "A fost selectat numărul maxim de elemente (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Nimic selectat" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Imposibil de şters. Muzica selectată este în curs de redare" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Imposibil de redat. A avut loc o eroare" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Imposibil de redat. Tip fişier neacceptat" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Adăug." + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Partajare" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Toate" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Artişti" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Compoz." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirijori" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Genuri" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcast." + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Ani" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Selectare dispozitiv" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Nu se mai afişează" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Puteţi reda în flux muzica pe dispozitive utilizând AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Viz. ca" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Utilizator" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocală" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Accentuare başi" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Accentuare înalte" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Cafenea" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "7.1 canale virtuale" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "După 15 minute" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "După 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "După 1 oră" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "După 1 oră 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "După 2 ore" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Oprire automată muzică" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Acest efect de sunet funcţionează numai în modurile cască şi cască Bluetooth" + diff --git a/po/ru_RU.po b/po/ru_RU.po index e428013..3ce2ea5 100755 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Прослушивание громкой музыки в течение продолжительного времени может привести к ухудшению слуха" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Не удалось добавить" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Нет текста песни" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Невозможно изменить звуковые эффекты при использовании 5.1-канального звука" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Поиск тегов" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-канальный звуковой эффект доступен только в режиме наушников" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1-канальный звук можно использовать только тогда, когда звуковые эффекты отключены" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Невозможно создать список воспроизведения" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Не удается получить тег" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Папки" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Невозможно удалить элемент" @@ -20,7 +50,7 @@ msgid "IDS_MUSIC_BODY_COPYRIGHT" msgstr "Авторские права" msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" -msgstr "Создать список воспроизведения" +msgstr "Создать список" msgid "IDS_MUSIC_BODY_DESCRIPTION" msgstr "Описание" @@ -41,7 +71,7 @@ msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" msgstr "Нет списков воспроизведения" msgid "IDS_MUSIC_BODY_TRACK_NUMBER" -msgstr "Номер трека" +msgstr "Номер композиции" msgid "IDS_MUSIC_BODY_TYPE_CNOUN" msgstr "Тип" @@ -146,7 +176,7 @@ msgid "IDS_MUSIC_BODY_CLASSIC" msgstr "Классика" msgid "IDS_MUSIC_BODY_COMPOSER" -msgstr "Композитор" +msgstr "Сообщение" msgid "IDS_MUSIC_BODY_COMPOSERS" msgstr "Композиторы" @@ -155,7 +185,7 @@ msgid "IDS_MUSIC_BODY_CONCERT_HALL" msgstr "Концертный зал" msgid "IDS_MUSIC_BODY_CUSTOM" -msgstr "Другое" +msgstr "Создать" msgid "IDS_MUSIC_BODY_DANCE" msgstr "Танец" @@ -212,7 +242,7 @@ msgid "IDS_MUSIC_BODY_POP" msgstr "Поп" msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" -msgstr "Последние добавления" +msgstr "Недавно добавленные" msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" msgstr "Последние файлы" @@ -254,7 +284,7 @@ msgid "IDS_MUSIC_OPT_CALL_RINGTONE" msgstr "Мелодия звонка" msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" -msgstr "Создать список воспроизведения" +msgstr "Создать список" msgid "IDS_MUSIC_OPT_EDIT_TITLE" msgstr "Изменить заголовок" @@ -328,3 +358,57 @@ msgstr "Подкасты" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Годы" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Выберите устройство" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Не показывать снова" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Можно передавать музыку на устройства с помощью AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Вид" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Обычный" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Пользователь" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Вокал" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Усиление низких частот" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Усиление высоких частот" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Кафе" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Виртуальная 7.1-канальная система" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Через 15 мин" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Через 30 мин" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Через 1 час" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Через 1 час 30 мин" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Через 2 часа" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Автоотключение музыки" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Этот звуковой эффект доступен только в режимах наушников и гарнитуры Bluetooth" + diff --git a/po/sk.po b/po/sk.po new file mode 100755 index 0000000..ab525e2 --- /dev/null +++ b/po/sk.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Vysoká hlasitosť môže pri dlhodobom počúvaní poškodiť sluch" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Nedá sa pridať" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Žiadny text" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Pri používaní 5.1-kanálového zvuku sa nedajú zmeniť zvukové efekty" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Hľadať značku" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5,1-kanálový zvukový efekt funguje iba v režime slúchadiel" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1-kanálový zvuk môžete aktivovať iba po vypnutí zvukových efektov" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Zoznam skladieb sa nedá vytvoriť" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Nedá sa získať značka" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Priečinky" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Položka sa nedá odstrániť" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Nemôžete pridať viac hudobných súborov ako %d" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Počas hovoru sa nedá prehrávať" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumy" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autor" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Autorské práva" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Vytvoriť zoznam skladieb" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Popis" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Obľúbené" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Formát" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Nemožné" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Umiestnenie" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Žiadne zoznamy skladieb" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Číslo skladby" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Typ" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Neznáma" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Odstrániť" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Pridané" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Odstrániť?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s bol odstránený" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Odstránené" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Odstrániť?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Nastaviť ako zvonenie volajúceho" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Zoznam skladieb sa nedá premenovať" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Nedá sa nastaviť ako vyzváňací tón" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Súbor DRM sa nedá zdieľať" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumy" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Životopis" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Poďakovanie" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Informácie o médiách" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografia" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Text" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Názov je príliš dlhý" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Rodičovské hodnotenie" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Možné" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Prezrieť" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Zoznam skladieb" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Už pridané" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5,1-kanálový" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Pridať do zoznamu skladieb" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Interpret" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Interpreti" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automaticky" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Počet použití k dispozícii" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Zvýraznenie basov" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Zbor" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasika" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Skladateľ" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Skladatelia" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Koncertná sieň" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Vlastné" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Tanec" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Informácie o médiách" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamické" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efekt" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Ekvalizér" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalizácia" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Preposlanie" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Žáner" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Žánre" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Naživo" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Najčastejšie prehrávané" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Čistota hudby" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Hudobné menu" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Nastavenia hudby" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Obal albumu" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Zoznamy skladieb" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Posledne pridané" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Posledne prehrávané" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Dĺžka skladby" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Platnosť" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Široký" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Roky" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Vyp." + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Žiadne skladby" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Piesne" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Pridať zoznam skladieb" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Zvonenie hovoru" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Vytvoriť zoznam skladieb" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Upraviť názov" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "História" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Odstrániť" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Premenovať" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Zmeniť poradie" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Uložiť ako zoznam skladieb" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Tón budíka" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Zvonenie volajúceho" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Pridané do %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth je odpojený" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Vybrali ste maximálny počet položiek (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Nič nie je vybrané" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Nedá sa vymazať. Vybratá hudba sa prehráva" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Nedá sa prehrať. Vyskytla sa chyba" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Nedá sa prehrať. Nepodporovaný typ súboru" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Pridať" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Zdieľať" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Všetko" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Interpreti" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Skladat." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirigen." + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Žánre" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcasty" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Roky" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Vyberte zariadenie" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Už nezobrazovať" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Použitím funkcie AllShare môžete prenášať hudbu cez streaming do zariadení" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Zobr. ako" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normálny" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Používateľ" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Reč" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Zvýraznenie basov" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Zvýraznenie výšok" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kaviareň" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuálny 7.1-kanálový zvuk" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Po 15 min." + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Po 30 min." + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Po 1 hodine" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Po 1 hodine a 30 minútach" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Po 2 hodinách" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Automatické vypnutie hudby" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Tento zvukový efekt funguje iba v režime slúchadiel a v režime náhlavnej súpravy Bluetooth" + diff --git a/po/sl.po b/po/sl.po new file mode 100755 index 0000000..9f8ecac --- /dev/null +++ b/po/sl.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Če glasno glasbo poslušate daljši čas, lahko to škoduje vašem sluhu" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Ni mogoče dodati." + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Ni besedila" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Med uporabo postaje 5.1 ni mogoče spremeniti zvočnih učinkov" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Poišči oznako" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-kanalni zvočni učinek deluje samo v načinu slušalk" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Postajo 5.1 lahko vklopite samo, če so zvočni učinki izklopljeni" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Seznama za predvajanje ni mogoče ustvariti" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Ni mogoče pridobiti oznake" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Mape" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Predmeta ni mogoče odstraniti" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Ni mogoče dodati več kot %d glasbenih datotek" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Ni mogoče predvajati med klicem" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Avtor" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Avtorske pravice" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Ustvari seznam predvajanja" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Opis" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Priljubljene" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Nemogoče" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Lokacija" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Ni seznama predvajanja" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Številka skladbe" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Vrsta" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Neznano" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Izbriši" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Dodano" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Izbrišem?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s je odstranjeno" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Odstranjeno" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Odstranim?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Nastavi kot zvonjenje kličočega" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Seznama za predvajanje ni mogoče preimenovati" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Ni mogoče nastaviti za melodijo zvonjenja" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Datoteke DRM ni mogoče souporabljati" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Življenjepis" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Zasluge" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Informacije o mediju" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografija" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Besedilo" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Ime je predolgo" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Starševska ocena" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Mogoče" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Pregled" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Seznam skladb" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Že dodano" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1-kanalno" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Dodaj na seznam predvajanja" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Izvajalec" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Izvajalci" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Samodejno" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Število uporab" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Izboljšani basi" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Zbor" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasično" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Skladatelj" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Skladatelji" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Koncertna dvorana" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Osebne" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Ples" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Informacije o mediju" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinamično" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Učinek" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Izenačevalnik" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Eksternalizacija" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Posredovanje" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Zvrst" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Zvrsti" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "V živo" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Najpogosteje predvajano" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Jasnost glasbe" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Glasbeni meni" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Glasbene nastavitve" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Slika albuma" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Seznami predvajanja" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Dodano pred kratkim" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Nazadnje predvajano" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Dolžina skladbe" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Veljavnost" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Va-va" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Široko" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Let" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Izključ." + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Ni skladb" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Skladbe" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Dodaj seznam predvajanja" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Zvonjenje za klic" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Ustvari seznam predvajanja" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Uredi naslov" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Zgodovina" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Odstrani" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Preimenuj" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Spremeni zaporedje" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Shrani kot seznam predvajanja" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Ton alarma" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Melodija kličočega" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Dodano v %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Povezava Bluetooth je prekinjena" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Izbrano je največje število elementov (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Nič ni izbrano" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Ni mogoče zbrisati. Izbrana glasba se predvaja" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Ni mogoče predvajati. Prišlo je do napake" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Predvajanje ni mogoče. Nepodprta vrsta datoteke" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Dodaj" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Souporab." + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Vse" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Izvajalci" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Skladat." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirigent" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Zvrsti" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Spletne oddaje" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Leta" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Izberite napravo" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Ne kaži več" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "S programom AllShare lahko svojo glasbo pretočno predvajate v napravah" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Prik. kot" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normalno" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Uporabnik" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Poudari base" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Poudari visoke tone" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Barska" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Zvočna kartica Virtual 7.1 ch" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Po 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Čez 30 minut" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Čez 1 uro" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Po 1 h in 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Čez 2 uri" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Samodejna izklj. glasbe" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Ta zvočni učinek deluje samo v načinu slušalk in v načinu slušalk Bluetooth" + diff --git a/po/sr.po b/po/sr.po new file mode 100755 index 0000000..0eb2e74 --- /dev/null +++ b/po/sr.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Velika jačina zvuka može da ošteti sluh ukoliko tako slušate duže vreme" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Nemoguće dodati" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Nema stihova" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Nije moguće menjati zvučne efekte kad se koristi 5.1-kanalni sistem" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Nađi oznaku" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-kanalni zvuk je dostupan samo u režimu slušalice" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1-kanalni sistem se može uključiti samo kad su zvučni efekti isključeni" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Nemoguće kreirati listu za reprodukciju" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Nemoguće dobiti oznaku" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Folderi" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Nemoguće ukloniti stavku" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Nemoguće dodati više od %d muzičkih fajlova" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Nemoguće reprodukovati tokom poziva" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Autor" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Autorska prava" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Kreiraj listu za reprodukciju" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Opis" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Omiljeni" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Nemoguće" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Lokacija" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Nema listi za reprodukciju" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Broj numere" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Tip" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Nepoznato" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Obriši" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Dodato" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Obriši?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s uklonjeno" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Uklonjeno" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Ukloni?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Postavi kao ton zvona pozivaoca" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Nemoguće preimenovati listu za reprodukciju" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Nemoguće postaviti kao ton zvona" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Nemoguće deliti DRM fajl" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albumi" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografija" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Zahvalnice" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Informacije o mediju" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografija" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Stihovi" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Ime predugačko" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Roditeljski rejting" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "moguće" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Pregled" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Lista numera" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Već dodato" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1-kanalni zvuk" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Dodaj u listu za reprodukciju" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Umetnik" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Umetnici" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Automatski" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Moguće upotrebe" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Pojačanje basova" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Hor" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klasika" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Kompozitor" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Kompozitori" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Koncertna dvorana" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Prilagođeno" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dens" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Informacije o mediju" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dinamička" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Efekat" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Ekvilajzer" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Eksternalizacija" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Prosleđivanje" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Žanr" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Žanrovi" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Džez" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Uživo" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Najčešće puštano" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Razgovetnost muzike" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Muzički meni" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Podešavanja muzike" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Omoti albuma" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Liste za reprodukciju" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Nedavno dodato" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Nedavno puštano" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rok" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Dužina numere" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Važenje" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Va-va" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Široko" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Godina" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Isključ." + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Nema pesama" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Pesme" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Dodaj listu za reprodukciju" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Ton zvona" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Kreiraj listu za reprodukciju" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Izmeni naslov" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Istorija" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Ukloni" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Preimenuj" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Preuredi" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Sačuvaj kao listu za reprodukciju" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Ton alarma" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Ton zvona pozivaoca" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Dodato u %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth veza otkačena" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Izabran maksimalan broj stavki (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Ništa nije izabrano" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Nemoguće obrisati. Izabrana muzika se reprodukuje" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Nemoguće reprodukovati. Nastala je greška" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Nemoguće reprodukovati. Nepodržani tip fajla" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Dodaj" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Podeli" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Sve" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Umetnici" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Kompoz." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirigenti" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Žanrovi" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podkasti" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Godine" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Izaberi uređaj" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Ne prikazuj ponovo" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Možeš strimovati muziku na uređaju pomoću AllShare-a" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Prik. kao" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normalno" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Korisnik" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokalna" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Pojačanje basova" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Pojačanje visokih tonova" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kafić" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuelni 7.1 kanal" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Nakon 15 min." + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Nakon 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Nakon jednog sata" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Nakon jednog sata i 30 minuta" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Nakon 2 sata" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Muzika automatski isključena" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Ovaj zvučni efekat je dostupan samo u režimu slušalice i režimu Bluetooth slušalica" + diff --git a/po/sv.po b/po/sv.po new file mode 100755 index 0000000..2372b76 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Hög volym kan skada din hörsel om du lyssnar för länge" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Det går inte att lägga till" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Ingen text" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Kan inte ändra ljudeffekter när 5.1-kanalen används" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Sök efter etikett" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-kanalsljudeffekten fungerar bara i hörlursläge" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1-kanal kan bara aktiveras om ljudeffekterna är av" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Det går inte att skapa spellista" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Det går inte att hämta taggen" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Mappar" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Det går inte att ta bort objekt" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Kan inte lägga till fler än %d musikfiler" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Kan inte spela upp under samtal" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Författare" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Copyright" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Skapa spellista" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Beskrivning" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Favoriter" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Format" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Ej möjlig" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Plats" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Inga spellistor" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Spårnummer" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Typ" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Okänd" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Radera" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Tillagd" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Radera?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s borttagen" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Borttagen" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Ta bort?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Anv. som ringsignal" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Det går inte att byta namn på spellistan" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Det går inte att ange som ringsignal" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Det går inte att dela DRM-fil" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Biografi" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Medverkande" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Mediainfo" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Diskografi" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Lyrik" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Namnet är för långt" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Förälderrankning" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Möjlig" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Granska" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Spårlista" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Redan tillagd" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1-kanal" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Lägg till i spellista" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Artist" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Artister" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Auto" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Tillgängliga tillämpningar" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Basförstärkning" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Korus" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Klassisk" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Kompositör" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Kompositörer" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Konserthus" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Egen" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dans" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Mediainfo" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamisk" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Effekt" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Equalizer" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalisering" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Vidarebefordra" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Genre" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Genre" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Live" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Mest spelade" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Klarhet" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Musikmeny" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Musikinställningar" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Albumomslag" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Spellistor" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Senast tillagda" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Senast spelade" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Spårlängd" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Tremolo" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Giltighet" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Bred" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "År" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Av" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Inga låtar" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Låtar" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Lägg till spellista" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Ringsignal för samtal" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Skapa spellista" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Redigera rubrik" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Tidigare" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Ta bort" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Byt namn" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Ändra ordningsföljd" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Spara som spellista" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Larmsignal" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Ringsignal till Foto-ID" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Tillagt till %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth frånkopplat" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Högsta tillåtna antal objekt (%d) har valts" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Inget markerat" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Kan inte radera. Den valda musiken spelas" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Det går inte att spela upp. Ett fel inträffade" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Det går inte att spela. Filtypen stöds inte" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Lägg till" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Dela" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Alla" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Artister" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Komp." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Dirigenter" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Genre" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podsändn" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "År" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Välj enhet" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Visa inte igen" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Du kan strömma musik till enheter med AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Visa som" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Användare" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Sång" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Basförstärkning" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Diskantförstärkning" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Café" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtuellt 7.1-kanal" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Efter 15 min" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Efter 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Efter 1 timme" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Efter 1 timme och 30 min" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Efter 2 timmar" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Musik auto av" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Den här ljudeffekten fungerar bara i hörlurs- och Bluetooth-headsetläge" + diff --git a/po/th.po b/po/th.po new file mode 100755 index 0000000..e5b701e --- /dev/null +++ b/po/th.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "ระดับ​เสียง​ที่​สูง​อาจ​เป็น​อันตราย​ต่อ​การ​ฟัง​ของ​คุณ​ได้ หาก​คุณ​ฟัง​เป็น​เวลา​นาน" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "ไม่​สามารถ​เพิ่ม" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "ไม่​มี​เนื้อ​เพลง" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "ไม่​สามารถ​เปลี่ยน​เอ​ฟเฟ็กต์​เสียง​ได้​เมื่อ​ใช้ 5.1 แชนแนล" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "ค้น​หา​แท็ก" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "เอฟเฟ็กส์เสียง 5.1 แชนแนลทำงานในโหมดหูฟัง\nเท่านั้น" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "สามารถ​เปิด​ใช้​งาน 5.1 ​ช่อง​ทาง​ได้​เฉพาะ​เมื่อ​เอ​ฟเฟ็กต์​เสียง​ปิด​อยู่​เท่า​นั้น" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "สร้างรายการเพลงไม่​ได้" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "ไม่​สา​มา​รถ​รับ​แท็ก​ได้" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "โฟลเดอร์" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "ไม่​สามารถ​ลบ​รายการ" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "ไม่​สามารถ​เพิ่ม​ไฟล์​เพลง​ได้​มากกว่า %d ​ไฟล์" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "เล่น​ไม่​ได้ ขณะ​โทร" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "อัลบั้ม" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "อัลบั้ม" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "ผู้​ประพันธ์" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "ลิขสิทธิ์" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "สร้าง​รายการ​เพลง" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "ลักษณะ" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "รายชื่อ\nที่ชอบ" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "ฟอร์แมต" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "ไม่​ได้" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "ตำแหน่ง" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "ไม่​มี​รายการ​เพลง" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "หมาย​เลข​แทร็ก" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "ชนิด" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "ไม่​รู้จัก" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "ลบ" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "เพิ่ม​แล้ว" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "ลบ?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s ​ถูกลบ​แล้ว" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "ลบ​เรียบ​ร้อย" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "ลบ?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "ตั้ง​​เป็น​เสียง​เรียก\n​เข้า​ผู้​โทร" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "ไม่​สามารถ​เปลี่ยน​ชื่อ​รายการเพลง" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "ไม่​สามารถ​ตั้ง​เป็น​เสียง​เรียก​เข้า" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "ไม่​สามารถ​ใช้​ไฟล์ DRM ​ร่วม​กัน​ได้" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "อัลบั้ม" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "ชีวประวัติ" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "เครดิต" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "ข้อ​มูล​มี​เดีย" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "ดิสโก้​กรา​ฟี" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "เนื้อ​เพลง" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "ชื่อ​ยาว​เกิน​ไป" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "เรต​หลัก" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "ได้" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "แสดง" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "ราย​การ​แทร็ก" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "เพิ่ม​แล้ว" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1 ​แชนแนล" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "เพิ่ม​ในรายการ​เพลง" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "ศิลปิน" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "ศิลปิน" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "อัตโนมัติ" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "อนุญาต​ใช้" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Bass enhancement" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "ลูก​คู่" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Classic" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Composer" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "ผู้​แต่ง" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Concert ​hall" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "กำหนด​เอง" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "ข้อ​มูล​มี​เดีย" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Dynamic" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "เอ​ฟเฟ็ก​ต์" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "อี​ควอ​ไล​เซอร์" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalisation" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "ส่ง​ต่อ" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "ประเภท" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "ประเภท" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Live" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "เล่น​บ่อย​ที่​สุด" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Music clarity" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "เมนู​เพลง" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "การ​ตั้ง​ค่า​เพลง" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "อัลบั้ม​อา​ร์ท" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "รายการ​เพลง" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "ที่​เพิ่ม​เร็วๆ นี้" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "ที่เล่นไม่นานมานี้" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "ความ​ยาว​แทร็ก" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "เสียง​สั่น" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "การอนุมัติ" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Wide" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "ปี" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "ปิด" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "ไม่​มี​เพลง" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "เพลง" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "เพิ่ม​รายการเพลง" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "เสียง​เรียก​เข้า" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "สร้าง​รายการ​เพลง" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "แก้ไข​ชื่อ" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "ประวัติ" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "ลบ" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "เปลี่ยน​ชื่อ" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "เรียง​ลำดับ​ใหม่" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "บัน​ทึก​เป็นรายการเพลง" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "เสียง​เตือน" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "เสียง​เรียก​เข้า​ผู้​โทร" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "เพิ่ม​ไป​ที่ %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "หยุด​เชื่อม​ต่อ​กับบลูทูธ​แล้ว" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "เลือก​จำนวน​รายการ​สูง​สุด (%d) ​แล้ว" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "ไม่​ได้​เลือก​อะไร​เลย" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "ลบ​ไม่​ได้ กำลัง​เล่น​เพลง​ที่​เลือก" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "เล่น​ไม่​ได้ มี​ข้อ​ผิด​พลาด​เกิด​ขึ้น" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "เล่น​ไม่​ได้ ไม่​รอง​รับ​ชนิด​ไฟล์" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "เพิ่ม" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "แชร์" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "ทั้ง​หมด" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "ศิลปิน" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "ตัว​เขียน" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "ผู้ควบคุม" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "ประเภท" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "พอดแคสต์" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "ปี" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "เลือก​อุปกรณ์" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "ห้าม​แสดง​อีก" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "คุณ​สามารถ​สต​รีม​เพลง​ของ​คุณ​กับ​อุปกรณ์​โดย​ใช้ AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "แสดงเป็น" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "ปกติ" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "ผู้​ใช้" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vocal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "เพิ่ม​เสียง​เบส" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "เพิ่ม​เสียง​สูง" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Cafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtual 7.1 ch" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "หลัง​จาก 15 ​นาที" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "หลัง​จาก 30 ​นาที" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "หลัง​จาก 1 ​ชั่วโมง" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "หลัง​จาก 1 ​ชั่วโมง 30 ​นาที" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "หลัง​จาก 2 ​ชั่วโมง" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "ปิด​เพลง​อัตโนมัติ" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "เอฟเฟ็กต์เสียงนี้จะใช้งานได้\nในโหมดหูฟังและโหมด\nหูฟังบลูทูธเท่านั้น" + diff --git a/po/tr_TR.po b/po/tr_TR.po index 1a87672..e5418f1 100755 --- a/po/tr_TR.po +++ b/po/tr_TR.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Yüksek ses düzeyi, uzun süre dinlemeniz durumunda işitme duyunuza zarar verebilir" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Eklenemiyor" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Söz yok" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "5.1 kanalı kullanılırken ses efektleri değiştirilemiyor" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Etiket bul" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 kanal ses efekti sadece kulaklık modunda çalışır" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1 kanalı sadece ses efektleri kapalı olduğunda etkinleştirilebilir" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Parça listesi oluşturulamıyor" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "İm alınamıyor" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Klasörler" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "Öğe kaldırılamıyor" @@ -328,3 +358,57 @@ msgstr "Pod cast’ler" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "Yıl" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Cihaz seçin" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Bir daha gösterme" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "AllShare kullanarak, müziğinizi cihazlara yayınlayabilirsiniz" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Göster" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Normal" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Kullanıcı" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Vokal" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Bas güçlendirme" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Tiz güçlendirme" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Kafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtual 7.1 ch" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15 dak. sonra" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30 dakika sonra" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1 saat sonra" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1 saat 30 dakika sonra" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2 saat sonra" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Müziği otomatik kapat" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Bu ses efekti sadece kulaklık ve Bluetooth kulaklık modlarında çalışır" + diff --git a/po/uk.po b/po/uk.po new file mode 100755 index 0000000..a804a82 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Тривале прослуховування за високого рівня гучності може призвести до погіршення слуху" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Неможливо додати" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Без тексту" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Неможливо змінити звукові ефекти під час використання 5.1-канального звуку" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Пошук тегів" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1-канальний звуковий ефект працює лише в режимі навушників" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1-канальний звук доступний лише за вимкнених звукових ефектів" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Неможливо створити список відтворення" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Неможливо отримати тег" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Папки" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Неможливо вилучити об’єкт" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Неможливо додати більше %d музичних файлів" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Неможливо відтворити під час виклику" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Альбом" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Альбоми" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Автор" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Авторське право" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Створити список відтворення" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Опис" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Обране" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Формат" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Неможливо" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Розташування" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Немає списків відтворення" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Номер запису" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Тип" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Невідома" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Видалити" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Додано" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Видалити?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s видалено" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Видалено" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Видалити?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Встановити як звук дзвінка абонента" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Неможливо перейменувати список відтворення" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Неможливо встановити як звук дзвінка" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Неможливо відкрити спільний доступ до файла DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Альбоми" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Біографія" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Титри" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Інформація про медіадані" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Дискографія" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Лірика" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Задовге ім'я" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Основний рейтинг" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Можливо" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Огляд" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Список записів" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Вже додано" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "5.1-канальний" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Додати до списку" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Виконавець" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Виконавці" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Авто" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Доступні використання" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Підсилення басів" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Хор" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Класика" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Композитор" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Композитори" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Концертний зал" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Особливий" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Танцювальний" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Інформація про медіадані" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Динамічний" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Ефект" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Еквалайзер" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Уособлення" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Переадресація" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Жанр" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Жанри" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Джаз" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Пряма трансляція" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "Найчастіше відтворювані" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Ясність музики" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Музичне меню" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Установки музики" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Альбом зображень" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "Списки відтворення" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Поп-музика" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Останні додані" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Останні відтворені" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Рок" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Тривалість запису" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Тремоло" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Термін дії" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Вау-ва" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Широкий діапазон" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Роки" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Вимкнено" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Немає композицій" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Пісні" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Додати список відтворення" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Звук дзвінка" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Створити список відтворення" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Редагувати назву" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Історія" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Видалити" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Перейменувати" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Упорядкувати" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Зберегти як список відтворення" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Сигнал будильника" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Звук дзвінка абонента" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Додано до %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth відключено" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Вибрано максимальну кількість об’єктів: %d" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Нічого не вибрано" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Неможливо видалити. Вибрана музика відтворюється" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Неможливо відтворити. Сталася помилка" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Неможливо відтворити. Формат не підтримується" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Додати" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Відкр.д-п" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Всі" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Виконавці" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Композ." + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Дириг." + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Жанри" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Подкасти" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Роки" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Вибрати пристрій" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Більше не показувати" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Можна здійснити потокову передачу музики на пристрій за допомогою AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Перег. як" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Звичайний" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Користувач" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Вокальна" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Підсилення баса" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Підсилення сопрано" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Для кафе" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Віртуальний 7.1" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Через 15 хв." + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Через 30 хв." + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Через 1 годину" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Через 1 год. 30 хв." + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Через 2 години" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Автоматичне вимк. музики" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Цей звуковий ефект працює лише в режимах навушників і гарнітури Bluetooth" + diff --git a/po/vi.po b/po/vi.po new file mode 100755 index 0000000..af812b2 --- /dev/null +++ b/po/vi.po @@ -0,0 +1,414 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "Nghe âm lượng to trong thời gian dài có thể làm hại thính giác của bạn" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "Không thể thêm" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "Không có lời" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "Không thể thay đổi hiệu ứng âm thanh khi đang sử hiệu ứng 5.1" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "Tìm tag" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "Hiệu ứng âm thanh 5.1 chỉ hoạt động khi gắn tai nghe" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "Hiệu ứng kênh 5.1 chỉ có thể được kích hoạt khi tắt hiệu ứng âm thanh" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "Không thể tạo ra Danh sách nhạc" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "Không thể lấy tag" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "Thư mục" + +msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" +msgstr "Không thể xóa khoản mục" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE" +msgstr "Không thể thêm nhiều hơn %d file nhạc" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" +msgstr "Không thể phát khi đang gọi" + +msgid "IDS_MUSIC_BODY_ALBUM" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_ALBUMS" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_AUTHOR" +msgstr "Tác giả" + +msgid "IDS_MUSIC_BODY_COPYRIGHT" +msgstr "Bản quyền" + +msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST" +msgstr "Tạo danh sách" + +msgid "IDS_MUSIC_BODY_DESCRIPTION" +msgstr "Mô tả" + +msgid "IDS_MUSIC_BODY_FAVOURITES" +msgstr "Yêu thích" + +msgid "IDS_MUSIC_BODY_FORMAT" +msgstr "Định dạng" + +msgid "IDS_MUSIC_BODY_IMPOSSIBLE" +msgstr "Không thể được" + +msgid "IDS_MUSIC_BODY_MUSIC_LOCATION" +msgstr "Vị trí" + +msgid "IDS_MUSIC_BODY_NO_PLAYLISTS" +msgstr "Không có danh sách" + +msgid "IDS_MUSIC_BODY_TRACK_NUMBER" +msgstr "Số của bài hát" + +msgid "IDS_MUSIC_BODY_TYPE_CNOUN" +msgstr "Loại" + +msgid "IDS_MUSIC_BODY_UNKNOWN" +msgstr "Không biết" + +msgid "IDS_MUSIC_OPT_DELETE" +msgstr "Xóa" + +msgid "IDS_MUSIC_POP_ADDED" +msgstr "Đã thêm" + +msgid "IDS_MUSIC_POP_DELETE_Q" +msgstr "Xóa?" + +msgid "IDS_MUSIC_POP_PS_REMOVED" +msgstr "%s đã xóa" + +msgid "IDS_MUSIC_POP_REMOVED" +msgstr "Đã xóa" + +msgid "IDS_MUSIC_POP_REMOVE_Q" +msgstr "Xóa?" + +msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE" +msgstr "Đặt như nhạc chuông người gọi" + +msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST" +msgstr "Không thể đổi tên Danh sách nhạc" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" +msgstr "Không thể đặt làm nhạc chuông" + +msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" +msgstr "Không thể chia sẻ file DRM" + +msgid "IDS_MUSIC_TAB4_ALBUMS" +msgstr "Albums" + +msgid "IDS_MUSIC_BODY_ADD_TO_HOME" +msgstr "Add to home" + +msgid "IDS_MUSIC_BODY_BIOGRAPHY" +msgstr "Tiểu sử" + +msgid "IDS_MUSIC_BODY_CREDITS" +msgstr "Tín dụng" + +msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO" +msgstr "Thông tin media" + +msgid "IDS_MUSIC_BODY_DISCOGRAPHY" +msgstr "Danh sách đĩa hát" + +msgid "IDS_MUSIC_BODY_LYRIC" +msgstr "Lời nhạc" + +msgid "IDS_MUSIC_BODY_NAME_TOO_LONG" +msgstr "Tên quá dài" + +msgid "IDS_MUSIC_BODY_PARENT_RATING" +msgstr "Đề cử" + +msgid "IDS_MUSIC_BODY_POSSIBLE" +msgstr "Có thể" + +msgid "IDS_MUSIC_BODY_REVIEW" +msgstr "Xem trước" + +msgid "IDS_MUSIC_HEADER_TRACK_LIST" +msgstr "Danh sách bài hát" + +msgid "IDS_MUSIC_ALREADY_ADDED" +msgstr "Đã thêm" + +msgid "IDS_MUSIC_BODY_51_CHANNEL" +msgstr "Kênh 5.1" + +msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST" +msgstr "Thêm vào danh sách" + +msgid "IDS_MUSIC_BODY_ARTIST" +msgstr "Nghệ sĩ" + +msgid "IDS_MUSIC_BODY_ARTISTS" +msgstr "Nghệ sĩ" + +msgid "IDS_MUSIC_BODY_AUTO" +msgstr "Tự động" + +msgid "IDS_MUSIC_BODY_AVAILABLE_USES" +msgstr "Các ứng dụng" + +msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT" +msgstr "Bass enhancement" + +msgid "IDS_MUSIC_BODY_CHOROUS" +msgstr "Dàn hợp xướng" + +msgid "IDS_MUSIC_BODY_CLASSIC" +msgstr "Classic" + +msgid "IDS_MUSIC_BODY_COMPOSER" +msgstr "Composer" + +msgid "IDS_MUSIC_BODY_COMPOSERS" +msgstr "Nhạc sĩ" + +msgid "IDS_MUSIC_BODY_CONCERT_HALL" +msgstr "Concert hall" + +msgid "IDS_MUSIC_BODY_CUSTOM" +msgstr "Tùy chọn" + +msgid "IDS_MUSIC_BODY_DANCE" +msgstr "Dance" + +msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO" +msgstr "Thông tin media" + +msgid "IDS_MUSIC_BODY_DYNAMIC" +msgstr "Sống động" + +msgid "IDS_MUSIC_BODY_EFFECT" +msgstr "Hiệu ứng" + +msgid "IDS_MUSIC_BODY_EQUALISER" +msgstr "Bộ chỉnh âm" + +msgid "IDS_MUSIC_BODY_EXTERNALISATION" +msgstr "Externalisation" + +msgid "IDS_MUSIC_BODY_FORWARDING" +msgstr "Chuyển tiếp" + +msgid "IDS_MUSIC_BODY_GENRE" +msgstr "Thể loại" + +msgid "IDS_MUSIC_BODY_GENRES" +msgstr "Thể loại" + +msgid "IDS_MUSIC_BODY_JAZZ" +msgstr "Jazz" + +msgid "IDS_MUSIC_BODY_LIVE" +msgstr "Live" + +msgid "IDS_MUSIC_BODY_MOST_PLAYED" +msgstr "D.sách nghe nhiều nhất" + +msgid "IDS_MUSIC_BODY_MUSIC_CLARITY" +msgstr "Music clarity" + +msgid "IDS_MUSIC_BODY_MUSIC_MENU" +msgstr "Menu nhạc" + +msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS" +msgstr "Cài đặt nhạc" + +msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART" +msgstr "Album" + +msgid "IDS_MUSIC_BODY_PLAYLISTS" +msgstr "D.sách nhạc" + +msgid "IDS_MUSIC_BODY_POP" +msgstr "Pop" + +msgid "IDS_MUSIC_BODY_RECENTLY_ADDED" +msgstr "Đã thêm gần đây" + +msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED" +msgstr "Những bài vừa nghe" + +msgid "IDS_MUSIC_BODY_ROCK" +msgstr "Rock" + +msgid "IDS_MUSIC_BODY_TRACK_LENGTH" +msgstr "Độ dài bài hát" + +msgid "IDS_MUSIC_BODY_TREMOLO" +msgstr "Âm rung" + +msgid "IDS_MUSIC_BODY_VALIDITY" +msgstr "Hiệu lực" + +msgid "IDS_MUSIC_BODY_WHA_WHA" +msgstr "Wha-wha" + +msgid "IDS_MUSIC_BODY_WIDE" +msgstr "Wide" + +msgid "IDS_MUSIC_BODY_YEARS" +msgstr "Năm" + +msgid "IDS_MUSIC_BUTTON_OFF" +msgstr "Tắt" + +msgid "IDS_MUSIC_HEADER_NO_SONGS" +msgstr "Không có bài hát" + +msgid "IDS_MUSIC_HEADER_SONGS" +msgstr "Bài hát" + +msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" +msgstr "Thêm danh sách" + +msgid "IDS_MUSIC_OPT_CALL_RINGTONE" +msgstr "Nhạc chuông cuộc gọi" + +msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" +msgstr "Tạo danh sách" + +msgid "IDS_MUSIC_OPT_EDIT_TITLE" +msgstr "Sửa tiêu đề" + +msgid "IDS_MUSIC_OPT_HISTORY" +msgstr "Nhật ký" + +msgid "IDS_MUSIC_OPT_REMOVE" +msgstr "Xóa" + +msgid "IDS_MUSIC_OPT_RENAME" +msgstr "Đổi tên" + +msgid "IDS_MUSIC_OPT_REORDER" +msgstr "Sắp xếp lại" + +msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST" +msgstr "Lưu làm danh sách phát" + +msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE" +msgstr "Âm báo thức" + +msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE" +msgstr "Chuông người gọi" + +msgid "IDS_MUSIC_POP_ADDED_TO_PS" +msgstr "Đã thêm vào %s" + +msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED" +msgstr "Bluetooth đã ngắt kết nối" + +msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED" +msgstr "Đã chọn số mục tối đa (%d)" + +msgid "IDS_MUSIC_POP_NOTHING_SELECTED" +msgstr "Chưa chọn" + +msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING" +msgstr "Không thể xóa. Nhạc đã chọn đang phát" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED" +msgstr "Không thể phát. Đã xảy ra lỗi" + +msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" +msgstr "Không thể phát. Loại File không hỗ trợ" + +msgid "IDS_MUSIC_SK_ADD_LITE" +msgstr "Thêm" + +msgid "IDS_MUSIC_SK_SHARE" +msgstr "Chia sẻ" + +msgid "IDS_MUSIC_TAB4_ALL" +msgstr "Tất cả" + +msgid "IDS_MUSIC_TAB4_ARTISTS" +msgstr "Nghệ sĩ" + +msgid "IDS_MUSIC_TAB4_COMPOSERS" +msgstr "Soạn giả" + +msgid "IDS_MUSIC_TAB4_CONDUCTORS" +msgstr "Người chỉ đạo" + +msgid "IDS_MUSIC_TAB4_GENRES" +msgstr "Thể loại" + +msgid "IDS_MUSIC_TAB4_PODCASTS" +msgstr "Podcast" + +msgid "IDS_MUSIC_TAB4_YEARS" +msgstr "Năm" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "Chọn thiết bị" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "Không hiện lại" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "Bạn có thể truyền nhạc đến các thiết bị thông qua AllShare" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "Xem" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "Bình thường" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "Người dùng" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "Giọng hát" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "Tăng âm trầm" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "Tăng âm cao" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "Cafe" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Kênh 7.1 ảo" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "Sau 15 phút" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "Sau 30 phút" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "Sau 1 giờ" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "Sau 1 giờ 30 phút" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "Sau 2 giờ" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "Tự tắt nhạc" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "Hiệu ứng âm thanh này chỉ hoạt động khi dùng tai nghe và bộ tai nghe Bluetooth" + diff --git a/po/zh_CN.po b/po/zh_CN.po index 505cefe..f1951fa 100755 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "如果长时间用高音量收听,可能会损坏听力" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "无法添加" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "没有歌词" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "使用5.1声道时无法更改声音效果" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "查找标签" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 声道声音效果只适用于耳机模式" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1声道仅在关闭声音效果时才能激活" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "无法创建播放列表" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "无法获取标签" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "文件夹" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "无法移除项目" @@ -11,7 +41,7 @@ msgid "IDS_MUSIC_BODY_ALBUM" msgstr "专辑" msgid "IDS_MUSIC_BODY_ALBUMS" -msgstr "唱片" +msgstr "专辑" msgid "IDS_MUSIC_BODY_AUTHOR" msgstr "作者" @@ -26,7 +56,7 @@ msgid "IDS_MUSIC_BODY_DESCRIPTION" msgstr "说明" msgid "IDS_MUSIC_BODY_FAVOURITES" -msgstr "我的最爱" +msgstr "我的收藏" msgid "IDS_MUSIC_BODY_FORMAT" msgstr "格式" @@ -80,7 +110,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" msgstr "无法共享DRM文件" msgid "IDS_MUSIC_TAB4_ALBUMS" -msgstr "唱片" +msgstr "专辑" msgid "IDS_MUSIC_BODY_ADD_TO_HOME" msgstr "Add to home" @@ -251,7 +281,7 @@ msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" msgstr "添加播放列表" msgid "IDS_MUSIC_OPT_CALL_RINGTONE" -msgstr "来电铃声" +msgstr "手机铃声" msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST" msgstr "新建播放列表" @@ -326,5 +356,59 @@ msgid "IDS_MUSIC_TAB4_PODCASTS" msgstr "播客" msgid "IDS_MUSIC_TAB4_YEARS" -msgstr "年" +msgstr "年代" + +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "选择设备" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "不要再显示" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "您可使用 AllShare 将您的音乐导入至设备" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "查看" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "普通" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "用户" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "声乐" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "低音增强" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "高音增强" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "咖啡馆" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "虚拟7.1 声道" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15 分钟后" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30分钟后" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1小时后" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1 小时 30 分钟后" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2小时后" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "音乐自动关" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "此声音效果仅在耳机和蓝牙耳机模式下有效" diff --git a/po/zh_HK.po b/po/zh_HK.po index 14c1736..300c97f 100755 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "長期聆聽高音量會損害您的聽力" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "無法加入" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "無歌詞" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "當使用 5.1 頻道時無法更改音效" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "尋找標籤" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 聲道音效只適用於耳機模式" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "只有在關閉音效時,才可啟動 5.1 聲道" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "無法建立播放清單" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "無法取得標籤" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "資料夾" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "無法移除項目" @@ -47,7 +77,7 @@ msgid "IDS_MUSIC_BODY_TYPE_CNOUN" msgstr "類型" msgid "IDS_MUSIC_BODY_UNKNOWN" -msgstr "不明" +msgstr "未知" msgid "IDS_MUSIC_OPT_DELETE" msgstr "刪除" @@ -77,7 +107,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE" msgstr "無法設定為鈴聲" msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE" -msgstr "無法共享DRM檔案" +msgstr "無法分享 DRM 檔案" msgid "IDS_MUSIC_TAB4_ALBUMS" msgstr "專輯" @@ -328,3 +358,57 @@ msgstr "Podcasts" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "年" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "選擇裝置" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "不再顯示" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "您可以使用 AllShare 將音樂串流至裝置" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "檢視方式" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "正常" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "用戶" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "聲樂" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "低音增強" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "高音增強" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "咖啡廳" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtual 7.1 聲道" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15 分鐘後" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30 分鐘後" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1 小時後" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1小時30分鐘後" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2 小時後" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "音樂自動關" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "此音效只在耳筒及藍牙耳機模式中有效" + diff --git a/po/zh_TW.po b/po/zh_TW.po index 3f6e297..a28118c 100755 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1,3 +1,33 @@ +msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME" +msgstr "長期聆聽過大音量會損害您的聽力" + +msgid "IDS_MUSIC_POP_UNABLE_TO_ADD" +msgstr "無法加入" + +msgid "IDS_MUSIC_SK3_NO_LYRICS" +msgstr "沒有歌詞" + +msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL" +msgstr "當使用5.1聲道時無法改變聲音效果" + +msgid "IDS_MUSIC_OPT_FIND_TAG" +msgstr "尋找標籤" + +msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY" +msgstr "5.1 聲道音效只適用於耳機模式" + +msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF" +msgstr "5.1聲道只能關閉音效時啟動" + +msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST" +msgstr "無法建立播放清單" + +msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG" +msgstr "無法取得標籤" + +msgid "IDS_MUSIC_TAB4_FOLDERS" +msgstr "資料夾" + msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE" msgstr "無法移除項目" @@ -8,7 +38,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL" msgstr "通話期間無法播放" msgid "IDS_MUSIC_BODY_ALBUM" -msgstr "專輯" +msgstr "相簿" msgid "IDS_MUSIC_BODY_ALBUMS" msgstr "專輯" @@ -248,7 +278,7 @@ msgid "IDS_MUSIC_HEADER_SONGS" msgstr "歌曲" msgid "IDS_MUSIC_OPT_ADD_PLAYLIST" -msgstr "加入播放清單" +msgstr "新增播放清單" msgid "IDS_MUSIC_OPT_CALL_RINGTONE" msgstr "來電鈴聲" @@ -302,7 +332,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE" msgstr "無法播放。不支援的檔案類型" msgid "IDS_MUSIC_SK_ADD_LITE" -msgstr "加入" +msgstr "新增" msgid "IDS_MUSIC_SK_SHARE" msgstr "分享" @@ -328,3 +358,57 @@ msgstr "播客" msgid "IDS_MUSIC_TAB4_YEARS" msgstr "年" +msgid "IDS_MUSIC_HEADER_SELECT_DEVICE" +msgstr "選擇裝置" + +msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN" +msgstr "不再顯示" + +msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE" +msgstr "您可以使用數位連結將音樂串流至裝置" + +msgid "IDS_MUSIC_SK_VIEW_AS" +msgstr "檢視方式" + +msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL" +msgstr "正常" + +msgid "IDS_MUSIC_BODY_USER" +msgstr "使用者" + +msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT" +msgstr "聲樂" + +msgid "IDS_MUSIC_MBODY_BASS_BOOST" +msgstr "低音增強" + +msgid "IDS_MUSIC_MBODY_TREBLE_BOOST" +msgstr "高音增強" + +msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT" +msgstr "咖啡廳" + +msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH" +msgstr "Virtual 7.1 聲道" + +msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB" +msgstr "15 分鐘後" + +msgid "IDS_MUSIC_BODY_AFTER_30_MIN" +msgstr "30 分鐘後" + +msgid "IDS_MUSIC_BODY_AFTER_1_HOUR" +msgstr "1 小時後" + +msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN" +msgstr "1小時30分鐘後" + +msgid "IDS_MUSIC_BODY_AFTER_2_HOURS" +msgstr "2 小時後" + +msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF" +msgstr "音樂自動關閉" + +msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY" +msgstr "音效只適用耳機或是藍牙耳機模式" + diff --git a/sound-player/CMakeLists.txt b/sound-player/CMakeLists.txt new file mode 100755 index 0000000..4cb1d61 --- /dev/null +++ b/sound-player/CMakeLists.txt @@ -0,0 +1,144 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +SET(PROJECT_NAME sound-player) +PROJECT(${PROJECT_NAME} C CXX) + +SET(VENDOR "tizen") +SET(PACKAGE ${PROJECT_NAME}) +SET(PKGNAME "org.${VENDOR}.${PACKAGE}") +SET(PREFIX "/opt/apps/${PKGNAME}") +SET(BINDIR "${PREFIX}/bin") +SET(RESDIR "${PREFIX}/res") +SET(DATADIR "${PREFIX}/data") +SET(LOCALEDIR "${RESDIR}/locale") +SET(ICONDIR "${RESDIR}/icons/default/small") +SET(EDJDIR "${RESDIR}/edje") + +IF("${CMAKE_BUILD_TYPE}" STREQUAL "") + SET(CMAKE_BUILD_TYPE "Release") +ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") +MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") + + +INCLUDE(FindPkgConfig) +pkg_check_modules(sp_pkgs REQUIRED + elementary + ecore + dlog + edbus + drm-client + ui-gadget-1 + syspopup-caller + capi-system-power + vconf + libxml-2.0 + eina + ecore-imf + ecore-x + ecore-file + ecore-input + libcrypto + edje + evas + capi-appfw-application + capi-appfw-app-manager + capi-media-player + capi-media-sound-manager + capi-media-metadata-extractor + capi-system-haptic + capi-system-media-key + capi-content-media-content + minicontrol-provider +) + +INCLUDE_DIRECTORIES( + ${GLOBAL_INCLUDE} + ${CMAKE_SOURCE_DIR}/src/include + ${CMAKE_SOURCE_DIR}/src/common/include + ${CMAKE_SOURCE_DIR}/src/core/include + ${CMAKE_SOURCE_DIR}/src/view/include + ${CMAKE_SOURCE_DIR}/src/widget/include + + ${CMAKE_CURRENT_SOURCE_DIR}/src/include +) + +SET(SRCS + ${CMAKE_SOURCE_DIR}/src/mp-main.c + + ${CMAKE_SOURCE_DIR}/src/core/mp-file-tag-info.c + ${CMAKE_SOURCE_DIR}/src/core/mp-player-control.c + ${CMAKE_SOURCE_DIR}/src/core/mp-player-mgr.c + ${CMAKE_SOURCE_DIR}/src/core/mp-player-drm.c + ${CMAKE_SOURCE_DIR}/src/core/mp-setting-ctrl.c + ${CMAKE_SOURCE_DIR}/src/core/mp-play-list.c + ${CMAKE_SOURCE_DIR}/src/core/mp-streaming-mgr.c + ${CMAKE_SOURCE_DIR}/src/core/mp-http-mgr.c + + ${CMAKE_SOURCE_DIR}/src/common/mp-item.c + ${CMAKE_SOURCE_DIR}/src/common/mp-ta.c + ${CMAKE_SOURCE_DIR}/src/common/mp-menu.c + ${CMAKE_SOURCE_DIR}/src/common/mp-ug-launch.c + ${CMAKE_SOURCE_DIR}/src/common/mp-widget.c + ${CMAKE_SOURCE_DIR}/src/common/mp-util.c + ${CMAKE_SOURCE_DIR}/src/common/mp-play.c + ${CMAKE_SOURCE_DIR}/src/common/mp-app.c + ${CMAKE_SOURCE_DIR}/src/common/mp-media-info.c + + ${CMAKE_SOURCE_DIR}/src/view/mp-play-view.c + + ${CMAKE_SOURCE_DIR}/src/widget/mp-smart-event-box.c + ${CMAKE_SOURCE_DIR}/src/widget/mp-popup.c + ${CMAKE_SOURCE_DIR}/src/widget/mp-minicontroller.c +# ${CMAKE_SOURCE_DIR}/src/widget/mp-mini-player.c + + ${CMAKE_SOURCE_DIR}/src/core/mp-language-mgr.c + # sound-player only + ${CMAKE_CURRENT_SOURCE_DIR}/src/sp-view-manager.c +) + + +FOREACH(flag ${sp_pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") + +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fpie") +SET(CMAKE_C_FLAGS_RELEASE "-O2 -fpie") + +ADD_DEFINITIONS("-DMP_SOUND_PLAYER") +ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"") +#ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"") +#ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"") +#ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"") +#ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") +#ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"") +#ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"") + +if("${CMAKE_SYSTEM_VERSION}" STREQUAL "arm" OR "${CMAKE_SYSTEM_VERSION}" STREQUAL "armv7l") +ADD_DEFINITIONS("-D__ARM__") +endif() + +#SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") +SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -pie") +SET(CMAKE_LDFLAGS "-Wl,-zdefs" ) + +ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${sp_pkgs_LDFLAGS} -lm) + + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR}) +INSTALL(DIRECTORY DESTINATION ${DATADIR}) + +# install desktop file & icon +#CONFIGURE_FILE(${PKGNAME}.desktop.in ${PKGNAME}.desktop) +#INSTALL(FILES ${PKGNAME}.desktop DESTINATION /opt/share/applications) + +# install xml file +#INSTALL(FILES ${PKGNAME}.xml DESTINATION /usr/share/packages) + +#INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/target_images/music_player DESTINATION ${RESDIR}/icons) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.png DESTINATION ${CMAKE_DESKTOP_ICON_DIR}) + +ADD_SUBDIRECTORY(res/locale) + diff --git a/sound-player/org.tizen.sound-player.desktop.in b/sound-player/org.tizen.sound-player.desktop.in new file mode 100755 index 0000000..49e1bec --- /dev/null +++ b/sound-player/org.tizen.sound-player.desktop.in @@ -0,0 +1,28 @@ +Name=Sound Player +Name[en_US]=Sound Player +Name[nl_NL]=Sound Player +Name[de_DE]=Sound Player +Name[zh_HK]=Sound Player +Name[zh_CN]=Sound Player +Name[ru_RU]=Sound Player +Name[zh_TW]=Sound Player +Name[ja_JP]=Sound Player +Name[es_ES]=Sound Player +Name[el_GR]=Sound Player +Name[it_IT]=Sound Player +Name[tr_TR]=Sound Player +Name[pt_PT]=Sound Player +Name[fr_FR]=Sound Player +Name[ko_KR]=사운드 플레이어 +Type=Application +Exec=${PREFIX}/bin/sound-player +Icon=org.tizen.sound-player.png +Network=TRUE +Version=0.1.0 +Comment=sound-player +X-Tizen-TaskManage=True +X-Tizen-Multiple=False +X-Tizen-Removable=False +MimeType=audio/x-flac;audio/mpeg; audio/aac; audio/AMR; audio/AMR-WB; audio/ac3; audio/x-ms-wma; audio/ogg; audio/vorbis; audio/x-wav; audio/imelody; audio/iMelody; audio/rmf; audio/x-rmf; application/x-smaf; application/vnd.smaf; audio/x-xmf; audio/mobile-xmf; audio/mid; audio/vnd.ms-playready.media.pya; audio/imy; audio/m4a; audio/melody; audio/midi; audio/mmf; audio/mp3; audio/mp4; audio/MP4A-LATM; audio/mpeg3; audio/mpeg4; audio/mpg; audio/mpg3; audio/smaf; audio/sp-midi; audio/wav; audio/wave; audio/wma; audio/xmf; audio/amr; audio/amr-wb; audio/x-amr; audio/x-mid; audio/x-midi; audio/x-mp3; audio/-mpeg; audio/x-mpeg3; audio/x-mpegaudio; audio/x-mpg; audio/x-ms-asf; audio/x-wave; application/ogg +X-Tizen-SVC=http://tizen.org/appsvc/operation/view|NULL|audio/*;http://tizen.org/appsvc/operation/view|http|audio/*;http://tizen.org/appsvc/operation/view|https|audio/*;http://tizen.org/appsvc/operation/view|NULL|text/x-iMelody;http://tizen.org/appsvc/operation/view|NULL|application/x-smaf;http://tizen.org/appsvc/operation/view|http|text/x-iMelody;http://tizen.org/appsvc/operation/view|http|application/x-smaf +Nodisplay=TRUE diff --git a/sound-player/org.tizen.sound-player.png b/sound-player/org.tizen.sound-player.png new file mode 100755 index 0000000000000000000000000000000000000000..0ea172ef001adeb91fd683fc943c73b7745c011f GIT binary patch literal 18297 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 literal 0 HcmV?d00001 diff --git a/sound-player/org.tizen.sound-player.xml b/sound-player/org.tizen.sound-player.xml new file mode 100755 index 0000000..937ce08 --- /dev/null +++ b/sound-player/org.tizen.sound-player.xml @@ -0,0 +1,35 @@ + + + + Hyungmin Kim + Sound player + + + org.tizen.sound-player.png + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sound-player/res/locale/CMakeLists.txt b/sound-player/res/locale/CMakeLists.txt new file mode 100755 index 0000000..30749fb --- /dev/null +++ b/sound-player/res/locale/CMakeLists.txt @@ -0,0 +1,40 @@ +# for i18n + +SET(POFILES + de_DE.po + el_GR.po + en.po + es_ES.po + fr_FR.po + it_IT.po + ko_KR.po + nl_NL.po + pt_PT.po + ru_RU.po + tr_TR.po + zh_CN.po + zh_HK.po + zh_TW.po + ja_JP.po +) +SET(MSGFMT "/usr/bin/msgfmt") + +FOREACH(pofile ${POFILES}) + SET(pofile ${CMAKE_SOURCE_DIR}/po/${pofile}) + MESSAGE("PO: ${pofile}") + GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) + GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) + SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) + ADD_CUSTOM_COMMAND( + OUTPUT ${moFile} + COMMAND ${MSGFMT} -o ${moFile} ${absPofile} + DEPENDS ${absPofile} + ) + INSTALL(FILES ${moFile} + DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) + SET(moFiles ${moFiles} ${moFile}) +ENDFOREACH(pofile) + +MESSAGE(".mo files: ${moFiles}") +ADD_CUSTOM_TARGET(sound-player_po ALL DEPENDS ${moFiles}) + diff --git a/sound-player/src/include/sp-view-manager.h b/sound-player/src/include/sp-view-manager.h new file mode 100755 index 0000000..398297a --- /dev/null +++ b/sound-player/src/include/sp-view-manager.h @@ -0,0 +1,42 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __SP_VIEW_MANAGER_H__ +#define __SP_VIEW_MANAGER_H__ + +#include + +typedef struct _Sp_View_Manager Sp_View_Manager; + +typedef enum { + SP_VIEW_TYPE_DEFAULT, + SP_VIEW_TYPE_PLAY, + SP_VIEW_TYPE_INFO, + SP_VIEW_TYPE_NUM, +} Sp_View_Type; + +Sp_View_Manager* sp_view_mgr_create(Evas_Object *navi); +void sp_view_mgr_destroy(Sp_View_Manager* view_mgr); +Evas_Object* sp_view_mgr_get_naviframe(Sp_View_Manager *view_mgr); +void sp_view_mgr_push_view_content(Sp_View_Manager *view_mgr, Evas_Object *content, Sp_View_Type type); +void sp_view_mgr_pop_view_content(Sp_View_Manager *view_mgr, bool pop_to_first); +void sp_view_mgr_pop_view_to(Sp_View_Manager *view_mgr, Sp_View_Type type); +Elm_Object_Item * sp_view_mgr_get_play_view_navi_item(Sp_View_Manager *view_mgr); +void sp_view_mgr_play_view_title_label_set(Sp_View_Manager *view_mgr, const char *title); +void sp_view_mgr_set_title_label(Sp_View_Manager *view_mgr, const char *title); +void sp_view_mgr_set_back_button(Sp_View_Manager *view_mgr, Evas_Smart_Cb cb, void *data); + +#endif /* __SP_VIEW_MANAGER_H__ */ diff --git a/sound-player/src/sp-view-manager.c b/sound-player/src/sp-view-manager.c new file mode 100755 index 0000000..8193b05 --- /dev/null +++ b/sound-player/src/sp-view-manager.c @@ -0,0 +1,218 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mp-define.h" +#include "sp-view-manager.h" +#include "mp-widget.h" + +struct _Sp_View_Manager { + Evas_Object *navi; + GList *view_history; +}; + +typedef struct { + int index; + Elm_Object_Item *navi_item; + Sp_View_Type type; +} Sp_View_Data; + + +Sp_View_Manager* +sp_view_mgr_create(Evas_Object *navi) +{ + startfunc; + MP_CHECK_NULL(navi); + + Sp_View_Manager *view_mgr = (Sp_View_Manager *)calloc(1, sizeof(Sp_View_Manager)); + mp_assert(view_mgr); + + view_mgr->navi = navi; + + return view_mgr; +} + +void +sp_view_mgr_destroy(Sp_View_Manager* view_mgr) +{ + startfunc; + MP_CHECK(view_mgr); + + if (view_mgr->view_history) { + GList *current = view_mgr->view_history; + while(current) { + IF_FREE(current->data); + current = current->next; + } + + g_list_free(view_mgr->view_history); + view_mgr->view_history = NULL; + } + + + IF_FREE(view_mgr); +} + +Evas_Object* +sp_view_mgr_get_naviframe(Sp_View_Manager *view_mgr) +{ + MP_CHECK_NULL(view_mgr); + return view_mgr->navi; +} + +void +sp_view_mgr_push_view_content(Sp_View_Manager *view_mgr, Evas_Object *content, Sp_View_Type type) +{ + startfunc; + MP_CHECK(view_mgr); + MP_CHECK(view_mgr->navi); + MP_CHECK(content); + + Sp_View_Data *view_data = calloc(1, sizeof(Sp_View_Data)); + mp_assert(view_data); + + view_data->navi_item = elm_naviframe_item_push(view_mgr->navi, NULL, NULL, NULL, content, "1line/music"); + view_data->type = type; + view_data->index = g_list_length(view_mgr->view_history); + + view_mgr->view_history = g_list_append(view_mgr->view_history, view_data); +} + +void +sp_view_mgr_pop_view_content(Sp_View_Manager *view_mgr, bool pop_to_first) +{ + startfunc; + MP_CHECK(view_mgr); + MP_CHECK(view_mgr->navi); + + GList *last = g_list_last(view_mgr->view_history); + MP_CHECK(last); + Sp_View_Data *view_data = last->data; + MP_CHECK(view_data); + + if (pop_to_first) { + Elm_Object_Item *bottom_item = elm_naviframe_bottom_item_get(view_mgr->navi); + if (bottom_item) + elm_naviframe_item_pop_to(bottom_item); + + while(view_data && view_data->index > 0) { + SAFE_FREE(view_data); + view_mgr->view_history = g_list_delete_link(view_mgr->view_history, last); + last = g_list_last(view_mgr->view_history); + if (last) + view_data = last->data; + } + } else { + elm_naviframe_item_pop(view_mgr->navi); + IF_FREE(view_data); + view_mgr->view_history = g_list_delete_link(view_mgr->view_history, last); + } + + if (g_list_length(view_mgr->view_history) == 0) { + g_list_free(view_mgr->view_history); + view_mgr->view_history = NULL; + } +} + +void +sp_view_mgr_pop_view_to(Sp_View_Manager *view_mgr, Sp_View_Type type) +{ + MP_CHECK(view_mgr); + MP_CHECK(view_mgr->view_history); + + GList *last = g_list_last(view_mgr->view_history); + MP_CHECK(last); + Sp_View_Data *view_data = last->data; + MP_CHECK(view_data); + + while(view_data) { + if (view_data->type == type) + break; + + SAFE_FREE(view_data); + view_mgr->view_history = g_list_delete_link(view_mgr->view_history, last); + last = g_list_last(view_mgr->view_history); + if (last) + view_data = last->data; + } + + if (view_data->navi_item) + elm_naviframe_item_pop_to(view_data->navi_item); +} + +Elm_Object_Item* +sp_view_mgr_get_play_view_navi_item(Sp_View_Manager *view_mgr) +{ + MP_CHECK_NULL(view_mgr); + MP_CHECK_NULL(view_mgr->view_history); + + GList *current = view_mgr->view_history; + Sp_View_Data *view_data = NULL; + while(current) { + view_data = current->data; + if (view_data && view_data->type == SP_VIEW_TYPE_PLAY) + return view_data->navi_item; + + current = current->next; + } + + return NULL; +} + +void +sp_view_mgr_play_view_title_label_set(Sp_View_Manager *view_mgr, const char *title) +{ + MP_CHECK(view_mgr); + + Elm_Object_Item *navi_item = sp_view_mgr_get_play_view_navi_item(view_mgr); + if (navi_item) + elm_object_item_text_set(navi_item, title); +} + +void +sp_view_mgr_set_title_label(Sp_View_Manager *view_mgr, const char *title) +{ + MP_CHECK(view_mgr); + + Evas_Object *navi = sp_view_mgr_get_naviframe(view_mgr); + MP_CHECK(navi); + + Elm_Object_Item *navi_item = elm_naviframe_top_item_get(navi); + if (navi_item) + elm_object_item_text_set(navi_item, title); +} + +void +sp_view_mgr_set_back_button(Sp_View_Manager *view_mgr, Evas_Smart_Cb cb, void *data) +{ + MP_CHECK(view_mgr); + + Evas_Object *navi = view_mgr->navi; + MP_CHECK(navi); + Elm_Object_Item *navi_item = elm_naviframe_top_item_get(navi); + MP_CHECK(navi_item); + + Evas_Object *button = NULL; + if(cb) + { + button = mp_widget_create_button(navi, "naviframe/back_btn/default", NULL, NULL, cb, data); + elm_object_item_part_content_set(navi_item, ELM_NAVIFRAME_ITEM_PREV_BTN, button); + } + else + { + elm_object_item_part_content_set(navi_item, ELM_NAVIFRAME_ITEM_PREV_BTN, NULL); + } +} + diff --git a/src/common/include/mp-app.h b/src/common/include/mp-app.h index 34c7e29..00d3de1 100755 --- a/src/common/include/mp-app.h +++ b/src/common/include/mp-app.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,10 +15,12 @@ */ + #ifndef __MP_APP_H__ #define __MP_APP_H__ #include +#include typedef enum _mp_inotify_event { @@ -28,6 +30,8 @@ typedef enum _mp_inotify_event MP_INOTI_MODIFY, // IN_MODIFY MP_INOTI_MOVE_OUT, // IN_MOVED_FROM MP_INOTI_MOVE_IN, // IN_MOVED_TO + //MP_INOTI_DELETE_SELF, // IN_DELETE_SELF + //MP_INOTI_MOVE_SELF, // IN_MOVE_SELF MP_INOTI_MAX, } mp_inotify_event; @@ -41,8 +45,10 @@ int mp_app_inotify_init(void *data); void mp_app_inotify_finalize(struct appdata *ad); int mp_app_inotify_add_watch(const char *path, mp_inotify_cb callback, void *user_data); int mp_app_inotify_rm_watch(int index); - -Eina_Bool mp_app_hard_key_down_cb(void *data, int type, void *event_info); -Eina_Bool mp_app_hard_key_up_cb(void *data, int type, void *event_info); +Eina_Bool mp_app_mouse_event_cb(void *data, int type, void *event); +bool mp_app_grab_mm_keys(void *data); +void mp_app_ungrab_mm_keys(); +void mp_app_live_box_init(struct appdata *ad); +void mp_app_live_box_deinit(struct appdata *ad); #endif // __MP_APP_H__ diff --git a/src/common/include/mp-common.h b/src/common/include/mp-common.h index f48473e..c23b55a 100755 --- a/src/common/include/mp-common.h +++ b/src/common/include/mp-common.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,7 +14,6 @@ * limitations under the License. */ - #ifndef __mp_common_H__ #define __mp_common_H__ @@ -22,27 +21,18 @@ #include "music.h" #include "mp-view-layout.h" -#define _EDJ(obj) elm_layout_edje_get(obj) /**< get evas object from elm layout */ - struct text_part { char *part; char *msgid; }; -Evas_Object *mp_create_win(const char *name); -Evas_Object *mp_get_main_win(void); -int mp_check_battery_available(void); - -inline Evas_Object *mp_common_load_edj(Evas_Object * parent, const char *file, const char *group); - char *mp_common_track_list_label_get(void *data, Evas_Object * obj, const char *part); Evas_Object *mp_common_track_list_icon_get(void *data, Evas_Object * obj, const char *part); Evas_Object *mp_common_create_editfield_layout(Evas_Object * parent, struct appdata *ad, char *text); void mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info); -int mp_check_mass_storage_mode(void); int mp_check_db_initializing(void); -int mp_commmon_check_rotate_lock(void); + void mp_common_hide_search_ise_context(view_data_t * view_data); void mp_common_search_button_cb(void *data, Evas_Object * obj, void *event_info); void mp_common_edit_button_cb(void *data, Evas_Object * obj, void *event_info); @@ -50,7 +40,6 @@ void mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info); void mp_common_item_check_changed_cb(void *data, Evas_Object * obj, void *event_info); void mp_common_set_title_button_sensitivity(mp_layout_data_t * layout_data, int selected_count); void mp_common_change_item_class(Evas_Object * genlist, Elm_Genlist_Item_Class * itc); -bool mp_common_track_get_aa_index(int index, mp_layout_data_t *layout_data, Elm_Object_Item *gli, bool is_item_del); void mp_common_navigationbar_finish_effect(void *data, Evas_Object * obj, void *event_info); #endif // __mp_common_H__ diff --git a/src/common/include/mp-item.h b/src/common/include/mp-item.h index 82edba1..7655fdc 100755 --- a/src/common/include/mp-item.h +++ b/src/common/include/mp-item.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,13 +14,35 @@ * limitations under the License. */ - - #ifndef __MP_ITEM_H_ #define __MP_ITEM_H_ #include #include -bool mp_item_update_db(MediaSvcHandle *media_svc_handle, char *fid); +bool mp_item_update_db(char *fid); + +int mp_item_share_by_bt(const char *formed_path, int file_cnt); + +#define AS_IPC_REQUEST_METHOD "Request" + +typedef struct +{ + int param1; //Allshare_opp_req_t type + int param2; //the number of files + char *param3; //file path +} Allshare_para_info_t; + +typedef enum +{ + AS_OPP_REQ_FILE_PLAY +} Allshare_opp_req_t; + +#define mp_object_free(obj) \ +do { \ + if(obj != NULL) { \ + g_free(obj); \ + obj = NULL; \ + } \ +}while(0) #endif diff --git a/src/common/include/mp-media-info.h b/src/common/include/mp-media-info.h new file mode 100755 index 0000000..1f9477a --- /dev/null +++ b/src/common/include/mp-media-info.h @@ -0,0 +1,162 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __MP_MEDIA_INFO_H__ +#define __MP_MEDIA_INFO_H__ + +#include + +#define MAX_FILTER_LEN 1024 + +typedef struct mp_media_list_s *mp_media_list_h; +typedef struct mp_media_info_s *mp_media_info_h; +typedef struct filter_s *mp_filter_h; +typedef struct playlist_s *mp_playlist_h; + +typedef bool(* mp_media_info_cb)(mp_media_info_h media, void *user_data); + + +typedef enum +{ + MP_MEDIA_CONTENT_COLLATE_DEFAULT = 0, /**< default collation BINARY */ + MP_MEDIA_CONTENT_COLLATE_NOCASE = 1, /**< collation NOCASE, not case sensitive */ + MP_MEDIA_CONTENT_COLLATE_RTRIM = 2, /**< collation RTRIM, trailing space characters are ignored */ +} mp_media_content_collation_e; + +typedef enum +{ + MP_MEDIA_TYPE_MUSIC, + MP_MEDIA_TYPE_SOUND, +}mp_media_type_e; + +typedef enum{ + MP_TRACK_ALL, /**< All tracks*/ + MP_TRACK_BY_ALBUM, /**< Album tracks*/ + MP_TRACK_BY_ARTIST_ALBUM, /** < Albums which has special artist condition */ + MP_TRACK_BY_ARTIST, /**< Artist tracks*/ + MP_TRACK_BY_ARTIST_GENRE, /**< Genre tracks which has special artist condition*/ + MP_TRACK_BY_GENRE, /**< Genre tracks*/ + MP_TRACK_BY_FOLDER, /**< Genre tracks*/ + MP_TRACK_BY_YEAR, /**< Year tracks*/ + MP_TRACK_BY_COMPOSER, /**< Author tracks*/ + MP_TRACK_BY_FAVORITE, /**< Toprating tracks*/ + MP_TRACK_BY_PLAYED_TIME, /**< Recently played tracks*/ + MP_TRACK_BY_ADDED_TIME, /**< Recently added tracks*/ + MP_TRACK_BY_PLAYED_COUNT, /**< Most played tracks*/ + MP_TRACK_BY_PLAYLIST, /**< User playlist tracks*/ +}mp_track_type_e; + +typedef enum{ + MP_GROUP_BY_ALBUM, /**< Group by album*/ + MP_GROUP_BY_ARTIST, /**< Group by artist*/ + MP_GROUP_BY_ARTIST_ALBUM, /**< Group by album which has special artist condition*/ + MP_GROUP_BY_GENRE, /**< Group by genre*/ + MP_GROUP_BY_FOLDER, /**< Group by folder*/ + MP_GROUP_BY_YEAR, /**< Group by year*/ + MP_GROUP_BY_COMPOSER, /**< Group by author*/ + MP_GROUP_BY_PLAYLIST, + MP_GROUP_BY_SYS_PLAYLIST, + MP_GROUP_NONE +}mp_group_type_e; + +typedef enum{ + MP_SYS_PLST_MOST_PLAYED = -3, + MP_SYS_PLST_RECENTELY_ADDED = -2, + MP_SYS_PLST_RECENTELY_PLAYED = -1, + MP_SYS_PLST_QUICK_LIST = 0, +}mp_sys_playlsit_id; + +/*connection*/ +int mp_media_info_connect(void); +int mp_media_info_disconnect(void); + +/*filter*/ +int mp_media_filter_create(mp_filter_h *filter); +int mp_media_filter_destory(mp_filter_h filter); +int mp_media_filter_set_offset(mp_filter_h filter, int offset, int count); +int mp_media_filter_set_order(mp_filter_h filter, bool asc, const char *order_keyword, mp_media_content_collation_e collation); +int mp_media_filter_set_condition(mp_filter_h filter, const char *condition, mp_media_content_collation_e collation ); + +/*media infomation*/ +int mp_media_info_get_media_id(mp_media_info_h media, char **media_id); +int mp_media_info_get_file_path(mp_media_info_h media, char **path); +int mp_media_info_get_thumbnail_path(mp_media_info_h media, char **path); +int mp_media_info_get_favorite(mp_media_info_h media, bool *favorite); +int mp_media_info_is_drm(mp_media_info_h media, bool *drm); +int mp_media_info_get_title(mp_media_info_h media, char **title); +int mp_media_info_get_album(mp_media_info_h media, char **album); +int mp_media_info_get_genre(mp_media_info_h media, char **genre); +int mp_media_info_get_artist(mp_media_info_h media, char **artist); +int mp_media_info_get_composer(mp_media_info_h media, char **composer); +int mp_media_info_get_year(mp_media_info_h media, char **year); +int mp_media_info_get_copyright(mp_media_info_h media, char **copyright); +int mp_media_info_get_track_num(mp_media_info_h media, char **track_num); +int mp_media_info_get_format(mp_media_info_h media, char **format); +int mp_media_info_get_media_type(mp_media_info_h media, int *media_type); +int mp_media_info_get_bit_rate(mp_media_info_h media, int *bitrate); +int mp_media_info_get_sample_rate(mp_media_info_h media, int *sample_rate); +int mp_media_info_get_duration(mp_media_info_h media, int *duration); +int mp_media_info_get_played_time(mp_media_info_h media, time_t *time); +int mp_media_info_get_played_count(mp_media_info_h media, int *count); +int mp_media_info_get_playlist_member_id(mp_media_info_h media, int *member_id); + +int mp_media_info_set_favorite(mp_media_info_h media, bool favorite); +int mp_media_info_set_played_time(mp_media_info_h media, time_t time); +int mp_media_info_set_played_count(mp_media_info_h media, int count); +int mp_media_info_set_added_time(mp_media_info_h media, time_t time); + +/*media*/ +int mp_media_info_create(mp_media_info_h *media_list, const char *media_id); +int mp_media_info_create_by_path(mp_media_info_h *media_info, const char *file_path); +int mp_media_info_destroy(mp_media_info_h media_info); + +/*media list*/ +int mp_media_info_list_count(mp_track_type_e track_type, const char *type_string,const char *type_string2, const char *filter_string, int playlist_id, int *count); +int mp_media_info_list_count_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, int *count); +int mp_media_info_list_create(mp_media_list_h *media_list, mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int offset, int count); +int mp_media_info_list_create_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, mp_media_list_h *media_list); +int mp_media_info_list_destroy(mp_media_list_h media_list); +mp_media_info_h mp_media_info_list_nth_item(mp_media_list_h media_list, int index); + +/*group list*/ +int mp_media_info_group_list_count(mp_group_type_e group_type, const char *type_string, const char *filter_string, int *count); +int mp_media_info_group_list_count_w_filter(mp_group_type_e group_type, mp_filter_h filter, int *count); +int mp_media_info_group_list_create(mp_media_list_h *media_list, mp_group_type_e group_type, const char *type_string, const char *filter_string, int offset, int count); +int mp_media_info_group_list_create_w_filter(mp_filter_h filter, mp_group_type_e group_type, mp_media_list_h *media_list); +int mp_media_info_group_list_destroy(mp_media_list_h media_list); +mp_media_info_h mp_media_info_group_list_nth_item(mp_media_list_h media_list, int index); + +int mp_media_info_group_get_main_info(mp_media_info_h media, char **main_info); +int mp_media_info_group_get_sub_info(mp_media_info_h media, char **sub_info); +int mp_media_info_group_get_playlist_id(mp_media_info_h media, int *playlist_id); +int mp_media_info_group_get_folder_id(mp_media_info_h media, char **folder_id); +int mp_media_info_group_get_thumbnail_path(mp_media_info_h media, char **path); + +/*playlist list*/ +int mp_media_info_playlist_get_id_by_name(const char *playlist_name, int *playlist_id); +int mp_media_info_playlist_insert_to_db(const char * name, int *playlist_id, mp_playlist_h *playlist_handle); +int mp_media_info_playlist_handle_destroy(mp_playlist_h playlist_handle); +int mp_media_info_playlist_delete_from_db(int playlist_id); +int mp_media_info_playlist_add_media(int playlist_id, const char *media_id); +int mp_media_info_playlist_remove_media(mp_media_info_h playlist, int memeber_id); +int mp_media_info_playlist_set_play_order(mp_media_info_h playlist, int memeber_id, int play_order); +int mp_media_info_playlist_is_exist(const char *playlist_name, bool *exist); +int mp_media_info_playlist_unique_name(const char *orig_name, char *unique_name, size_t max_unique_name_length); +int mp_media_info_playlist_rename(mp_media_info_h playlist, const char *new_name); +int mp_media_info_playlist_get_play_order(mp_media_info_h playlist, int playlist_member_id, int * play_order); + +#endif + diff --git a/src/common/include/mp-menu.h b/src/common/include/mp-menu.h index d765666..0de9c72 100755 --- a/src/common/include/mp-menu.h +++ b/src/common/include/mp-menu.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,15 +15,34 @@ */ - #ifndef __MP_MENU_H_ #define __MP_MENU_H_ +void mp_menu_share_list_select_cb(void *data, Evas_Object * obj, void *event_info); +void mp_menu_share_select_cb(void *data, Evas_Object * obj, void *event_info); +void mp_menu_set_as_select_cb(void *data, Evas_Object * obj, void *event_info); +void mp_menu_share_cb(void *data, Evas_Object * obj, void *event_info); +void mp_menu_set_cb(void *data, Evas_Object * obj, void *event_info); +#ifndef MP_SOUND_PLAYER void mp_menu_delete_cb(void *data, Evas_Object * obj, void *event_info); void mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info); -audio_svc_track_type_e mp_menu_get_track_type_by_group(audio_svc_group_type_e group_type); +mp_track_type_e mp_menu_get_track_type_by_group(mp_group_type_e group_type); void mp_menu_add_to_play_list_cancel_create_cb(void *data, Evas_Object * obj, void *event_info); void mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *event_info); +#endif void mp_util_create_notify(void *data, const char *noti_msg); +#define ADD_TO_HOME ("IDS_MUSIC_BODY_ADD_TO_HOME") +#define CALLER_RINGTONE ("IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE") +#define ALARM_TONE ("IDS_MUSIC_OPT_SETAS_ALARM_TONE") +#define CALL_RINGTONE ("IDS_MUSIC_OPT_CALL_RINGTONE") + +//system string +#define BLUETOOTH_SYS GET_SYS_STR("IDS_COM_BODY_BLUETOOTH") +#define ALLSHARE_SYS GET_SYS_STR("IDS_COM_BODY_ALLSHARE") +#define EMAIL_SYS GET_SYS_STR("IDS_COM_BODY_EMAIL") +#define MESSAGE_SYS GET_SYS_STR("IDS_COM_BODY_MESSAGE") +#define WIFI_SYS GET_SYS_STR("IDS_COM_BODY_WI_FI") +#define NFC_SYS GET_SYS_STR("IDS_COM_BODY_NFC") + #endif // __MP_MENU_H_ diff --git a/src/common/include/mp-play.h b/src/common/include/mp-play.h index 47ed31d..98b00d7 100755 --- a/src/common/include/mp-play.h +++ b/src/common/include/mp-play.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #ifndef __MP_PLAY_H_ #define __MP_PLAY_H_ diff --git a/src/common/include/mp-ta.h b/src/common/include/mp-ta.h new file mode 100755 index 0000000..32be6b1 --- /dev/null +++ b/src/common/include/mp-ta.h @@ -0,0 +1,133 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _MP_TA_H_ +#define _MP_TA_H_ + +#include "mp-define.h" + +#define ENABLE_MP_TA +#ifdef ENABLE_MP_TA + +// defs. +#define MP_TA_MAX_CHECKPOINT 500 +#define MP_TA_MAX_ACCUM 500 + +typedef struct _mp_ta_checkpoint +{ + unsigned long timestamp; + char *name; +} mp_ta_checkpoint; + +typedef struct _mp_ta_accum_item +{ + unsigned long elapsed_accum; + unsigned long num_calls; + unsigned long elapsed_min; + unsigned long elapsed_max; + unsigned long first_start; + unsigned long last_end; + + char *name; + + unsigned long timestamp; + int on_estimate; + int num_unpair; +} mp_ta_accum_item; + +#define MP_TA_SHOW_STDOUT 0 +#define MP_TA_SHOW_STDERR 1 +#define MP_TA_SHOW_FILE 2 +#define MP_TA_ENABLE_FILE MP_INI_DIR"/ta" +#define MP_TA_RESULT_FILE MP_INI_DIR"/mp-ta.log" + +///////////////////////////// +// COMMON +int mp_ta_init(void); +int mp_ta_release(void); +void mp_ta_set_enable(int enable); +char *mp_ta_fmt(const char *fmt, ...); + +///////////////////////////// +// CHECK POINT +int mp_ta_add_checkpoint(char *name, int show, char *filename, int line); +void mp_ta_show_checkpoints(void); +void mp_ta_show_diff(char *name1, char *name2); + +int mp_ta_get_numof_checkpoints(); +unsigned long mp_ta_get_diff(char *name1, char *name2); +//char* mp_ta_get_name(int idx); + + +///////////////////////////// +// ACCUM ITEM +int mp_ta_accum_item_begin(char *name, int show, char *filename, int line); +int mp_ta_accum_item_end(char *name, int show, char *filename, int line); +void mp_ta_accum_show_result(int direction); + +// macro. +#define MP_TA_INIT() ( mp_ta_init() ) +#define MP_TA_RELEASE() ( mp_ta_release() ) +#define MP_TA_SET_ENABLE(enable) ( mp_ta_set_enable(enable) ) + +// checkpoint handling +#define MP_TA_ADD_CHECKPOINT(name,show) ( mp_ta_add_checkpoint(name,show,__FILE__,__LINE__) ) +#define MP_TA_SHOW_CHECKPOINTS() ( mp_ta_show_checkpoints() ) +#define MP_TA_SHOW_DIFF(name1, name2) ( mp_ta_show_diff(name1, name2) ) +#define MP_TA_GET_NUMOF_CHECKPOINTS() ( mp_ta_get_numof_checkpoints() ) +#define MP_TA_GET_DIFF(name1, name2) ( mp_ta_get_diff(name1, name2) ) +//#define MP_TA_GET_NAME(idx) ( mp_ta_get_name(idx) ) + +// accum item handling +#define MP_TA_ACUM_ITEM_BEGIN(name,show) ( mp_ta_accum_item_begin(name,show,__FILE__,__LINE__) ) +#define MP_TA_ACUM_ITEM_END(name,show) ( mp_ta_accum_item_end(name,show,__FILE__,__LINE__) ) +#define MP_TA_ACUM_ITEM_SHOW_RESULT() ( mp_ta_accum_show_result(MP_TA_SHOW_STDOUT) ) +#define MP_TA_ACUM_ITEM_SHOW_RESULT_TO(x) ( mp_ta_accum_show_result(x) ) +/* +#define __mp_ta__(name, x) \ +MP_TA_ACUM_ITEM_BEGIN(name, 0); \ +x \ +MP_TA_ACUM_ITEM_END(name, 0); + +#define __mm_tafmt__(fmt, args...) ( mp_ta_fmt(fmt, ##args) ) +*/ + +#else //#ifdef ENABLE_MP_TA + +#define MP_TA_INIT() +#define MP_TA_RELEASE() +#define MP_TA_SET_ENABLE(enable) + +// checkpoint handling +#define MP_TA_ADD_CHECKPOINT(name,show) +#define MP_TA_SHOW_CHECKPOINTS() +#define MP_TA_SHOW_DIFF(name1, name2) +#define MP_TA_GET_NUMOF_CHECKPOINTS() +#define MP_TA_GET_DIFF(name1, name2) +//#define MP_TA_GET_NAME(idx) + +// accum item handling +#define MP_TA_ACUM_ITEM_BEGIN(name,show) +#define MP_TA_ACUM_ITEM_END(name,show) +#define MP_TA_ACUM_ITEM_SHOW_RESULT() +#define MP_TA_ACUM_ITEM_SHOW_RESULT_TO(x) +/* +#define __mp_ta__(name, x) +#define __mm_tafmt__(fmt, args...) +*/ +#endif //#ifdef ENABLE_MP_TA + +#endif // _MP_TA_H_ diff --git a/src/common/include/mp-ug-launch.h b/src/common/include/mp-ug-launch.h new file mode 100755 index 0000000..3049853 --- /dev/null +++ b/src/common/include/mp-ug-launch.h @@ -0,0 +1,33 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef __MP_ug_launch_H_ +#define __MP_ug_launch_H_ + +int mp_ug_email_attatch_file(const char *filepath, void *user_data); +int mp_ug_bt_attatch_file(const char *filepath, int count, void *user_data); +int mp_ug_message_attatch_file(const char *filepath, void *user_data); +int mp_ug_contact_user_sel(const char *filepath, void *user_data); +void mp_ug_send_message(struct appdata *ad, mp_ug_message_t message); +#ifdef MP_FEATURE_WIFI_SHARE +int mp_ug_wifi_attatch_file(const char *filepath, int count, void *user_data); +#endif +void mp_ug_destory_current(struct appdata *ad); +void mp_ug_destory_all(struct appdata *ad); +bool mp_ug_active(struct appdata *ad); + +#endif // __MP_ug_launch_H_ diff --git a/src/common/include/mp-util.h b/src/common/include/mp-util.h index 121751f..6c71376 100755 --- a/src/common/include/mp-util.h +++ b/src/common/include/mp-util.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #ifndef __MP_UTIL_H_ #define __MP_UTIL_H_ @@ -33,25 +31,23 @@ typedef enum bool mp_util_check_uri_available(const char *uri); bool mp_check_file_exist (const char *path); void mp_util_format_duration(char *time, int ms); -bool mp_util_add_to_playlist_by_key(MediaSvcHandle *handle, int plst_id, char *key_id); +bool mp_util_add_to_playlist_by_key(int playlist_id, char *key_id); Evas_Object * mp_util_create_thumb_icon(Evas_Object *obj, const char *path, int w, int h); const char* mp_util_get_index(const char *p); const char* mp_util_get_second_index(const char *p); void mp_util_create_selectioninfo_with_count(void* data, int count); -char * mp_util_get_new_playlist_name (MediaSvcHandle *handle); -bool mp_util_add_selected_items_to_playlist(Evas_Object *genlist, int playlist_id); +char * mp_util_get_new_playlist_name (void); mp_file_delete_err_t mp_util_delete_track(void *data, char *fid, char *file_path, bool show_popup); -Eina_Bool mp_util_is_item_in_playlist (MediaSvcHandle *handle, gint plst_id, char *key_id); -bool mp_util_check_item_exist_in_playlist (MediaSvcHandle *handle, gint plst_id, char *key_id); +int mp_util_share_via_bt(const char *formed_path, int file_cnt); int mp_util_file_is_in_phone_memory(const char *path); -char* mp_util_get_playlist_thumbpath(MediaSvcHandle *handle, AudioHandleType *plst); -char *mp_util_get_fid_by_handle(mp_layout_data_t *layout_data, AudioHandleType *record); -char* mp_util_get_path_by_handle(mp_layout_data_t *layout_data , AudioHandleType *record); -Elm_Object_Item * mp_util_get_genlist_item_by_item_handle(Evas_Object *genlist, AudioHandleType *handle); +char *mp_util_get_fid_by_handle(mp_layout_data_t *layout_data, mp_media_info_h record); +char* mp_util_get_path_by_handle(mp_layout_data_t *layout_data , mp_media_info_h record); char* mp_util_isf_get_edited_str(Evas_Object *isf_entry, bool permit_first_blank); - int mp_util_create_playlist(struct appdata *ad, char *name); + int mp_util_create_playlist(struct appdata *ad, char *name, mp_playlist_h *playlist_handle); + +bool mp_util_set_screen_mode(void *data , int mode); bool mp_util_launch_browser(const char *url, struct appdata *ad); @@ -69,7 +65,6 @@ do { \ gchar *mp_util_get_utf8_initial(const char *name); gchar * mp_get_new_playlist_name (void); gchar *mp_parse_get_title_from_path (const gchar *path); -char *mp_util_item_get_value_by_type(audio_svc_track_data_type_e item_type,struct music_list_item *item); char *mp_util_get_title_from_path (const char *path); bool mp_util_is_playlist_name_valid(char *name); bool mp_util_get_recent_play_data(mp_layout_data_t *layout_data, int *index, char **path); @@ -77,18 +72,19 @@ bool mp_util_get_playlist_data(mp_layout_data_t *layout_data, int *index, const bool mp_util_get_list_data(mp_layout_data_t *layout_data); void mp_util_set_library_controlbar_items(void *data); -bool mp_util_get_uri_from_app_svc(bundle * b, struct appdata *ad, char **path); +bool mp_util_get_uri_from_app_svc(service_h service, struct appdata *ad, char **path); void mp_util_reset_genlist_mode_item(Evas_Object *genlist); +#ifndef MP_SOUND_PLAYER view_data_t * mp_util_get_view_data(struct appdata *ad); mp_layout_data_t* mp_util_get_layout_data(Evas_Object* obj); +#endif bool mp_util_is_image_valid(Evas *evas, const char *path); char *mp_util_shorten_path(char *path_info); -void mp_util_grab_mm_keys(struct appdata *ad); -void mp_util_ungrab_mm_keys(struct appdata *ad); - +#ifndef MP_SOUND_PLAYER void mp_util_unset_rename(mp_layout_data_t * layout_data); +#endif bool mp_util_is_db_updating(void); void mp_util_stop_vibration(struct appdata *ad); bool mp_util_play_vibration(struct appdata *ad, float duration); @@ -99,9 +95,15 @@ void mp_util_get_sound_path(mp_snd_path *snd_path); const char * mp_util_search_markup_keyword(const char *string, char *searchword, bool *result); -inline Elm_Object_Item *mp_util_toolbar_append_object(Evas_Object *toolbar, Evas_Object *obj, int sel); -bool mp_util_toolbar_item_valid_check(Elm_Object_Item *item); +bool mp_util_is_other_player_playing(); + +int mp_commmon_check_rotate_lock(void); +int mp_check_battery_available(void); +int mp_check_mass_storage_mode(void); +bool mp_util_sleep_lock_set(bool lock); +bool mp_util_toolbar_item_valid_check(Elm_Object_Item *item); +void mp_util_strncpy_safe(char *x_dst, const char *x_src, int max_len); #endif //__MP_UTIL_H_ diff --git a/src/common/include/mp-view-manager.h b/src/common/include/mp-view-manager.h index 7096f24..d41e336 100755 --- a/src/common/include/mp-view-manager.h +++ b/src/common/include/mp-view-manager.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,7 +14,6 @@ * limitations under the License. */ - #ifndef __MP_VIEW_MANAGER_H_ #define __MP_VIEW_MANAGER_H_ @@ -55,7 +54,7 @@ Evas_Object *mp_view_manager_get_view_layout(struct appdata *ad, mp_view_content int mp_view_manager_count_view_content(view_data_t * view_data); bool mp_view_manager_is_play_view(struct appdata *ad); void mp_view_manager_update_list_contents(view_data_t * view_data, bool update_edit_list); -void mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void *data); +void mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *text_ID, void *data); void mp_view_manager_set_now_playing(view_data_t * view_data, bool show); void mp_view_manager_freeze_progress_timer(struct appdata *ad); @@ -64,6 +63,7 @@ void mp_view_manager_thaw_progress_timer(struct appdata *ad); Elm_Object_Item *mp_view_manager_get_edit_controlbar_item(struct appdata *ad); Elm_Object_Item *mp_view_manager_get_search_controlbar_item(struct appdata *ad); Elm_Object_Item *mp_view_manager_get_cancel_controlbar_item(struct appdata * ad); +Elm_Object_Item *mp_view_manager_get_navi_item(struct appdata * ad); Elm_Object_Item *mp_view_manager_get_controlbar_item(struct appdata *ad, mp_navi_control_button_type type); void mp_view_manager_play_view_title_label_set(struct appdata *ad, const char *title); @@ -72,7 +72,10 @@ void mp_view_manager_pop_play_view(struct appdata *ad); void mp_view_manager_unswallow_info_ug_layout(struct appdata *ad); -void mp_view_manager_set_option_header_visible(Elm_Object_Item *navi_item, mp_view_content_t content_type); Elm_Object_Item * mp_view_manager_get_play_view_navi_item(struct appdata *ad); +void mp_view_manager_clear(struct appdata *ad); +void mp_view_manager_set_controlbar_visible(Elm_Object_Item *navi_item, bool visible); + + #endif //__MP_VIEW_MANAGER_H_ diff --git a/src/common/include/mp-widget.h b/src/common/include/mp-widget.h index 57e7540..4441ecc 100755 --- a/src/common/include/mp-widget.h +++ b/src/common/include/mp-widget.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,13 +14,13 @@ * limitations under the License. */ - - #ifndef __MP_WIDGET_H_ #define __MP_WIDGET_H_ #include "music.h" +#define _EDJ(obj) elm_layout_edje_get(obj) /**< get evas object from elm layout */ + Evas_Object *mp_widget_navigation_new(Evas_Object * parent, struct appdata *ad); Evas_Object *mp_widget_genlist_create(struct appdata *ad, Evas_Object * parent, bool homogeneous); bool mp_widget_check_lowbattery(void *data, Evas_Object * parent); @@ -33,4 +33,9 @@ Evas_Object *mp_widget_create_button(Evas_Object * parent, char *style, char *ca Evas_Object * mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt, struct appdata *ad); Evas_Object * mp_widget_editfield_entry_get(Evas_Object *editfield); Evas_Object * mp_widget_create_title_btn(Evas_Object *parent, const char *text, const char * icon_path, Evas_Smart_Cb func, void *data); +Evas_Object * mp_widget_create_layout_main(Evas_Object * parent); +inline Evas_Object *mp_common_load_edj(Evas_Object * parent, const char *file, const char *group); +Evas_Object *mp_create_win(const char *name); +Evas_Object *mp_get_main_win(void); + #endif diff --git a/src/common/mp-app.c b/src/common/mp-app.c index 81f8a97..ecd0fce 100755 --- a/src/common/mp-app.c +++ b/src/common/mp-app.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,31 +15,37 @@ */ +#include "mp-ta.h" #include "music.h" -#include "mp-library.h" #include "mp-setting-ctrl.h" #include "mp-item.h" #include "mp-player-control.h" #include "mp-play-view.h" -#include "mp-common.h" #include "mp-play-list.h" -#include "mp-group-view.h" #include -#include #include #include #include "mp-player-mgr.h" #include "mp-player-debug.h" -#include #include #include +#include +#include "mp-minicontroller.h" #include "mp-play.h" #include "mp-app.h" +#include "mp-ug-launch.h" #include "ui-gadget.h" #include "mp-widget.h" #include "mp-util.h" +#include "mp-edit-view.h" + +#ifndef MP_SOUND_PLAYER +#include "mp-library.h" +#include "mp-common.h" +#include "mp-group-view.h" +#endif static void _mp_add_inofity_refresh_watch(struct appdata *ad); @@ -59,7 +65,13 @@ _mp_app_ear_key_timer_cb(void *data) else if (ad->player_state == PLAY_STATE_PAUSED) { ad->paused_by_user = FALSE; - mp_player_mgr_resume(ad); + if(mp_player_mgr_resume(ad)) + { + vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid()); + if (ad->player_state == PLAY_STATE_PAUSED) + mp_play_resume(ad); + ad->player_state = PLAY_STATE_PLAYING; + } } else if (ad->player_state == PLAY_STATE_READY) { @@ -106,8 +118,10 @@ _mp_app_noti_changed_cb(keynode_t * node, void *data) if (mp_play_list_get_current_item(ad->playing_list) && strstr(mp_play_list_get_current_item(ad->playing_list)->filename, MP_MMC_ROOT_PATH)) mp_play_stop_and_updateview(ad, TRUE); +#ifndef MP_SOUND_PLAYER else mp_library_update_view(ad); +#endif _mp_add_inofity_refresh_watch(ad); } } @@ -152,6 +166,20 @@ _mp_app_noti_changed_cb(keynode_t * node, void *data) { mp_play_view_update_snd_path(ad); } + else if (strcmp(keyname, MP_VCONFKEY_PLAYING_PID) == 0) + { + int playing_pid = vconf_keynode_get_int(node); + if (playing_pid != getpid()) + { + DEBUG_TRACE("other player activated : [pid:%d]", playing_pid); + if (ad->player_state == PLAY_STATE_PLAYING) { + ad->paused_by_other_player = TRUE; + mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); + } + + mp_minicontroller_destroy(ad); + } + } } bool @@ -184,6 +212,11 @@ mp_app_noti_init(void *data) ERROR_TRACE("Fail to register VCONFKEY_SYSMAN_EARJACK key callback"); res = FALSE; } + if (vconf_notify_key_changed(MP_VCONFKEY_PLAYING_PID, _mp_app_noti_changed_cb, ad) < 0) + { + ERROR_TRACE("Fail to register MP_VCONFKEY_PLAYING_PID key callback"); + res = FALSE; + } return res; } @@ -216,9 +249,15 @@ mp_app_noti_ignore(void) return TRUE; } +#define AUDIO_SVC_DATABASE_NAME "/opt/dbspace/.music.db" + +//#define MP_WATCH_FLAGS IN_CREATE | IN_DELETE | IN_CLOSE_WRITE | IN_MODIFY #define MP_WATCH_FLAGS IN_CREATE | IN_DELETE | IN_DELETE_SELF | IN_CLOSE_WRITE | IN_MOVED_TO + #define MP_EVENT_SIZE (sizeof (struct inotify_event)) +/** reasonable guess as to size of 1024 events */ #define MP_EVENT_BUF_LEN (1024 * (MP_EVENT_SIZE + 16)) +#define INOTI_FOLDER_COUNT_MAX 1024 typedef struct _mp_inotify_t { @@ -306,7 +345,7 @@ _mp_app_inotify_watch_thread(gpointer user_data) len = read(handle->fd, event_buff, sizeof(event_buff) - 1); if (len <= 0 || len > sizeof(event_buff) - 1) { - ERROR_TRACE("Fail to read() -fd : %d, len : %d", handle->fd, len); + } while (i < len) @@ -318,11 +357,29 @@ _mp_app_inotify_watch_thread(gpointer user_data) { s_event = MP_INOTI_NONE; } - else if (pevent->mask & IN_ISDIR) + else if (pevent->mask & IN_ISDIR) //directory { + /* + if (pevent->mask & IN_DELETE_SELF) + s_event = MP_INOTI_DELETE_SELF; + if (pevent->mask & IN_MOVE_SELF) + s_event = MP_INOTI_MOVE_SELF; + + if (pevent->mask & IN_CREATE) + s_event = MP_INOTI_CREATE; + + if (pevent->mask & IN_DELETE) + s_event = MP_INOTI_DELETE; + + if (pevent->mask & IN_MOVED_FROM) + s_event = MP_INOTI_MOVE_OUT; + + if (pevent->mask & IN_MOVED_TO) + s_event = MP_INOTI_MOVE_IN; + */ } - else + else //file { if (pevent->mask & IN_CREATE) { @@ -409,8 +466,9 @@ _mp_app_inotify_timer_cb(void *data) } } +#ifndef MP_SOUND_PLAYER mp_library_update_view(ad); - +#endif _g_inotyfy_timer = NULL; return EINA_FALSE; } @@ -468,7 +526,7 @@ _mp_app_pipe_cb(void *data, void *path, unsigned int nbyte) mp_retm_if(ad == NULL, "appdata is NULL"); DEBUG_TRACE("%s modified..", path); - mp_retm_if(ad->prohibit_aul_relaunch, "Do not refresh list"); + mp_retm_if(ad->app_is_foreground, "Do not refresh list"); if (_g_inotyfy_timer) ecore_timer_del(_g_inotyfy_timer); @@ -669,6 +727,32 @@ mp_app_inotify_finalize(struct appdata *ad) return; } + +Eina_Bool +mp_app_mouse_event_cb(void *data, int type, void *event) +{ + Ecore_Event_Mouse_Button *ev = event; + struct appdata *ad = data; + + if (type == ECORE_EVENT_MOUSE_BUTTON_DOWN) { + if (!ad->mouse.downed) { + ad->mouse.downed = TRUE; + ad->mouse.sx = ev->x; + ad->mouse.sy = ev->y; + } + } + else if (type == ECORE_EVENT_MOUSE_BUTTON_UP) { + ad->mouse.sx = 0; + ad->mouse.sy = 0; + ad->mouse.downed = FALSE; + ad->mouse.moving = FALSE; + } + else if (type == ECORE_EVENT_MOUSE_MOVE) { + } + + return 0; +} + void mp_app_exit(void *data) { @@ -682,130 +766,68 @@ mp_app_exit(void *data) #define CTR_EDJ_SIG_SRC "ctrl_edj" -Eina_Bool -mp_app_hard_key_down_cb(void *data, int type, void *event_info) +void +_mp_app_media_key_event_cb(media_key_e key, media_key_event_e event, void *user_data) { - Ecore_Event_Key *ev = event_info; - struct appdata *ad = (struct appdata *)data; + struct appdata *ad = (struct appdata *)user_data; + MP_CHECK(ad); - DEBUG_TRACE("%s", ev->keyname); + mp_debug("key [%d], event [%d]", key, event); + bool released = false; + if (event == MEDIA_KEY_STATUS_RELEASED) + released = true; - if (!strcmp(ev->keyname, KEY_END)) - { - DEBUG_TRACE("KEY_END"); - mp_app_exit(ad); - return ECORE_CALLBACK_DONE; - } - else if(!strcmp(ev->keyname, KEY_NEXTSONG)) - { - mp_play_control_ff_cb(data, NULL, "ff_btn_down", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(ev->keyname, KEY_PREVIOUSSONG)) - { - mp_play_control_rew_cb(data, NULL, "rew_btn_down", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(ev->keyname, "XF86AudioForward")) - { - mp_play_control_ff_cb(data, NULL, "ff_btn_down", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(ev->keyname, KEY_REWIND)) - { - mp_play_control_rew_cb(data, NULL, "rew_btn_down", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(ev->keyname, KEY_SELECT)) - { - mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); + if (event == MEDIA_KEY_STATUS_UNKNOWN) { + mp_debug("unknown key status"); + return; } - return ECORE_CALLBACK_PASS_ON; -} -Eina_Bool -mp_app_hard_key_up_cb(void *data, int type, void *event_info) -{ - Ecore_Event_Key *ev = event_info; - struct appdata *ad = (struct appdata *)data; - - DEBUG_TRACE("%s", ev->keyname); + const char *signal = NULL; - if (!strcmp(ev->keyname, KEY_END)) - { - DEBUG_TRACE("KEY_END"); - return ECORE_CALLBACK_DONE; - } - else if(!strcmp(ev->keyname, KEY_NEXTSONG)) - { - mp_play_control_ff_cb(data, NULL, "ff_btn_up", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(ev->keyname, KEY_PREVIOUSSONG)) - { - mp_play_control_rew_cb(data, NULL, "rew_btn_up", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(ev->keyname, KEY_PAUSECD) || !strcmp(ev->keyname, KEY_PLAYCD)) - { - if (ad->player_state != PLAY_STATE_PLAYING) - { - mp_play_control_play_cb(ad, NULL, SIGNAL_PLAY, NULL); - } - else - { - mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); + switch (key) { + case MEDIA_KEY_PLAY: + case MEDIA_KEY_PAUSE: + if (released) { + if (ad->player_state != PLAY_STATE_PLAYING) + mp_play_control_play_cb(ad, NULL, SIGNAL_PLAY, NULL); + else + mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); } - } - else if(!strcmp(ev->keyname, KEY_FASTFORWARD)) - { - mp_play_control_ff_cb(data, NULL, "ff_btn_up", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(ev->keyname, KEY_REWIND)) - { - mp_play_control_rew_cb(data, NULL, "rew_btn_up", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(ev->keyname, KEY_SELECT)) - { - mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); - } - return ECORE_CALLBACK_PASS_ON; -} - -void -_mp_app_ext_control_key_changed_cb(keynode_t * node, void *data) -{ - struct appdata *ad = (struct appdata *)data; + break; - char *keyname = vconf_keynode_get_name(node); + case MEDIA_KEY_PREVIOUS: + case MEDIA_KEY_REWIND: + signal = (released) ? "rew_btn_up" : "rew_btn_down"; + mp_play_control_rew_cb(ad, NULL, signal, CTR_EDJ_SIG_SRC); + break; - DEBUG_TRACE("key changed: %s", keyname); + case MEDIA_KEY_NEXT: + case MEDIA_KEY_FASTFORWARD: + signal = (released) ? "ff_btn_up" : "ff_btn_down"; + mp_play_control_ff_cb(ad, NULL, signal, CTR_EDJ_SIG_SRC); + break; - if (strcmp(keyname, MP_EXT_PLAY_CLICKED) == 0 ||strcmp(keyname, MP_EXT_PAUSE_CLICKED) == 0 ) - { - if (ad->player_state != PLAY_STATE_PLAYING) - { - mp_play_control_play_cb(ad, NULL, SIGNAL_PLAY, NULL); - } - else - { - mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); - } + default: + mp_debug("Undefined key"); + break; } - else if(!strcmp(keyname, MP_EXT_NEXT_PRESSED)) - { - ad->seek_off = true; - mp_play_control_ff_cb(data, NULL, "ff_btn_down", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(keyname, MP_EXT_PREV_PRESSED)) - { - ad->seek_off = true; - mp_play_control_rew_cb(data, NULL, "rew_btn_down", CTR_EDJ_SIG_SRC); - } - else if(!strcmp(keyname, MP_EXT_NEXT_RELEASED)) - { - mp_play_control_ff_cb(data, NULL, "ff_btn_up", CTR_EDJ_SIG_SRC); - ad->seek_off = false; - } - else if(!strcmp(keyname, MP_EXT_PREV_RELEASED)) - { - mp_play_control_rew_cb(data, NULL, "rew_btn_up", CTR_EDJ_SIG_SRC); - ad->seek_off = false; +} + +bool +mp_app_grab_mm_keys(void *data) +{ + int err = media_key_reserve(_mp_app_media_key_event_cb, data); + if (err != MEDIA_KEY_ERROR_NONE) { + mp_error("media_key_reserve().. [0x%x]", err); + return false; } + + return true; } +void +mp_app_ungrab_mm_keys() +{ + media_key_release(); +} diff --git a/src/common/mp-common.c b/src/common/mp-common.c index 310fb58..0c3ab5c 100755 --- a/src/common/mp-common.c +++ b/src/common/mp-common.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,19 +14,16 @@ * limitations under the License. */ - - #include #include #include #include -#include #include #include "mp-common.h" #include "mp-player-debug.h" -#include "audio-svc.h" +#include "mp-media-info.h" #include "mp-view-layout.h" #include "mp-util.h" #include "mp-menu.h" @@ -37,147 +34,33 @@ #include "mp-view-manager.h" #include "mp-widget.h" #include "mp-library.h" -#include "mp-player-control.h" - -static Evas_Object *g_main_win; - -static void -_mp_common_win_del(void *data, Evas_Object * obj, void *event) -{ - elm_exit(); -} - -Evas_Object * -mp_create_win(const char *name) -{ - Evas_Object *eo; - int w, h; - - if (g_main_win) - return g_main_win; - - g_main_win = eo = elm_win_add(NULL, name, ELM_WIN_BASIC); - if (eo) - { - elm_win_title_set(eo, name); - elm_win_borderless_set(eo, EINA_TRUE); - evas_object_smart_callback_add(eo, "delete,request", _mp_common_win_del, NULL); - ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); - evas_object_resize(eo, w, h); - } - - return eo; -} - -Evas_Object * -mp_get_main_win(void) -{ - if (!g_main_win) - ERROR_TRACE("main_win is NULL, create it first!!!!!"); - return g_main_win; -} - -int -mp_commmon_check_rotate_lock(void) -{ - int lock = FALSE; - lock = -1; - if (!vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &lock)) - { - mp_debug("lock state: %d", lock); - return lock; - } - else - return -1; -} - - -int -mp_check_battery_available(void) -{ - int batt_state = -1; - - if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &batt_state)) - { - /* low battery status - * VCONFKEY_SYSMAN_BAT_WARNING_LOW = 15 % - * VCONFKEY_SYSMAN_BAT_CRITICAL_LOW = 5 % - * VCONFKEY_SYSMAN_BAT_POWER_OFF = 1 % - * since 2011. 03. 02 - */ - if (batt_state <= VCONFKEY_SYSMAN_BAT_POWER_OFF) //VCONFKEY_SYSMAN_BAT_POWER_OFF - 1% remaninging - { - WARN_TRACE("batt_state: %d", batt_state); - return -1; - } - } - else - { - ERROR_TRACE("Fail to get battery status"); - } - return 0; -} - -int -mp_check_mass_storage_mode(void) -{ - int mass_storage = -1; - - if (!vconf_get_int(VCONFKEY_USB_STORAGE_STATUS, &mass_storage)) - { - DEBUG_TRACE("current mass_storage : %d", mass_storage); - if (mass_storage != VCONFKEY_USB_STORAGE_STATUS_OFF) - return -1; - } - else - { - ERROR_TRACE("Fail to get status"); - } - return 0; -} - -inline Evas_Object * -mp_common_load_edj(Evas_Object * parent, const char *file, const char *group) -{ - Evas_Object *eo = NULL; - int r = -1; - - eo = elm_layout_add(parent); - if (eo) - { - r = elm_layout_file_set(eo, file, group); - if (!r) - { - evas_object_del(eo); - return NULL; - } - evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_show(eo); - } - - return eo; -} char * mp_common_track_list_label_get(void *data, Evas_Object * obj, const char *part) { mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; MP_CHECK_NULL(item); - AudioHandleType *track = (AudioHandleType *) (item->handle); + mp_media_info_h track = (mp_media_info_h) (item->handle); mp_retvm_if(!track, NULL, "data is null"); mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); MP_CHECK_NULL(layout_data); MP_CHECK_LAYOUT_DATA(layout_data); - if (!strcmp(part, "elm.text.1")) + if (layout_data->track_type == MP_TRACK_BY_FOLDER && !g_strcmp0(part, "elm.text.1")) + { + char *pathname = NULL; + mp_media_info_get_file_path(track, &pathname); + mp_retv_if(!pathname, NULL); + const char *fileanme = ecore_file_file_get(pathname); + + return g_strdup(fileanme); + } + else if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1")) { char *title = NULL; - int size = 0; - if (layout_data->playlist_id < 0) - audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_TITLE, &title, &size, -1); - else - audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE, &title, &size, -1); + + mp_media_info_get_title(track, &title); mp_retv_if(!title, NULL); if(layout_data->filter_str) @@ -188,77 +71,35 @@ mp_common_track_list_label_get(void *data, Evas_Object * obj, const char *part) if(res) return strdup(markup_name); } - return elm_entry_utf8_to_markup(title); + else if (!strcmp(part, "elm.text.1")) + { + char *markup = elm_entry_utf8_to_markup(title); + return markup; + } + else + return g_strdup(title); } - else if (!strcmp(part, "elm.text.2")) + else if (!strcmp(part, "elm.text.2") && layout_data->track_type != MP_TRACK_BY_FOLDER) { char *artist = NULL; - int size = 0; - if (layout_data->playlist_id < 0) - audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1); - else - audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_ARTIST, &artist, &size, -1); + mp_media_info_get_artist(track, &artist); mp_retv_if(!artist, NULL); - return strdup(artist); + return g_strdup(artist); } - else if (!strcmp(part, "elm.text.3")) + else if (!strcmp(part, "elm.text.3") || + (layout_data->track_type == MP_TRACK_BY_FOLDER && !g_strcmp0(part, "elm.text.2"))) { int duration; char time[16] = ""; - if (layout_data->playlist_id < 0) - audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_DURATION, &duration, -1); - else - audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_DURATION, &duration, -1); + mp_media_info_get_duration(track, &duration); mp_util_format_duration(time, duration); time[15] = '\0'; - return strdup(time); + return g_strdup(time); } return NULL; } -bool mp_common_track_get_aa_index(int index, mp_layout_data_t *layout_data, Elm_Object_Item *gli, bool is_item_del) -{ - MP_CHECK_FALSE(layout_data); - MP_CHECK_FALSE(gli); - MP_CHECK_FALSE(index >= 0); - - if (!is_item_del) { - index = 0; - Elm_Object_Item *gli2 = elm_genlist_first_item_get(layout_data->genlist); - DEBUG_TRACE("gli=%p,gli2=%p", gli,gli2); - while (gli2) { - if(gli2 == gli) - break; - gli2 = elm_genlist_item_next_get(gli2); - DEBUG_TRACE("gli=%p,gli2=%p", gli,gli2); - index++; - } - } - - int group_index = 0; - int sub_index = 0; - int item_count = 0; - int selected_index = 0; - for (; group_index < layout_data->aa_group_count; group_index++) { - item_count = layout_data->aa_item_count[group_index]; - if(item_count > 0) - index--; - for (sub_index = 0; sub_index < item_count; sub_index++) { - index--; - if (index < 0) { - layout_data->selected_index = selected_index; - layout_data->selected_group_index = group_index; - layout_data->selected_album_sub_index = sub_index; - return TRUE; - } - selected_index++; - } - } - - return FALSE; -} - static Eina_Bool _mp_common_update_view_idler_cb(void *data) { @@ -311,7 +152,6 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info) elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked); } - //elm_genlist_item_update(item->it); elm_genlist_item_fields_update(item->it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT); mp_util_create_selectioninfo_with_count(layout_data->ad, layout_data->checked_count); mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count); @@ -326,25 +166,38 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info) } mp_util_reset_genlist_mode_item(layout_data->genlist); + /* If genlist item removed by sweep menu or editing, + * layout_data->svc_handle can not be used for creating playlist.. + * update layout again before start play from list view. + */ + MP_TA_ACUM_ITEM_BEGIN("Selected_Item_to_Playing_View", 0); + MP_TA_ACUM_ITEM_BEGIN("Selected_Item_to_play_start_cb", 0); int index = 0; if(layout_data->is_item_del) { gli2 = elm_genlist_first_item_get(layout_data->genlist); - while(gli2) + if (MP_TRACK_BY_ARTIST == layout_data->track_type) { + while(gli2) + { + if(gli2 == gli) + break; + if(elm_genlist_item_parent_get(gli2)) + index++; + gli2 = elm_genlist_item_next_get(gli2); + } + } + else { - if(gli2 == gli) - break; - gli2 = elm_genlist_item_next_get(gli2); - index++; + while(gli2) + { + if(gli2 == gli) + break; + gli2 = elm_genlist_item_next_get(gli2); + index++; + } } - if (AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) { - bool ret_val = FALSE; - ret_val = mp_common_track_get_aa_index(index, layout_data, gli, layout_data->is_item_del); - if (ret_val) { - index = layout_data->selected_index; - } - } else if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) { + if (MP_TRACK_BY_ALBUM == layout_data->track_type) { --index; } @@ -364,6 +217,8 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info) if(!mp_play_view_load_by_index(layout_data, index, FALSE)) mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED")); + MP_TA_ACUM_ITEM_END("Selected_Item_to_Playing_View", 0); + MP_TA_ACUM_ITEM_BEGIN("navi_frame_transition_time", 0); return; } @@ -372,7 +227,7 @@ mp_common_track_list_icon_get(void *data, Evas_Object * obj, const char *part) { mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; MP_CHECK_NULL(item); - AudioHandleType *track = (AudioHandleType *) (item->handle); + mp_media_info_h track = item->handle; mp_retvm_if(!track, NULL, "data is null"); mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); mp_retvm_if(!layout_data, NULL, "list_data is null!!"); @@ -381,22 +236,83 @@ mp_common_track_list_icon_get(void *data, Evas_Object * obj, const char *part) if (!strcmp(part, "elm.icon")) { char *thumbpath = NULL; - int size = 0; - if (layout_data->playlist_id < 0) - audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_THUMBNAIL_PATH, &thumbpath, &size, - -1); - else - audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_THUMBNAIL_PATH, &thumbpath, - &size, -1); - return mp_util_create_thumb_icon(obj, thumbpath, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE); + Evas_Object *icon; + mp_media_info_get_thumbnail_path(track, &thumbpath); + icon = mp_util_create_thumb_icon(obj, thumbpath, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE); + return icon; + } + + Evas_Object *button; + + if (!strcmp(part, "elm.slide.swallow.3")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/multiline"); + elm_object_text_set(button, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"); + evas_object_smart_callback_add(button, "clicked", mp_menu_add_to_playlist_cb, track); + evas_object_data_set(button, "layout_data", layout_data); + return button; + } + else if (!strcmp(part, "elm.slide.swallow.1")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/multiline"); + elm_object_text_set(button, GET_SYS_STR("IDS_COM_BUTTON_SHARE")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_BUTTON_SHARE"); + evas_object_smart_callback_add(button, "clicked", mp_menu_share_cb, track); + evas_object_data_set(button, "layout_data", layout_data); + return button; + } + else if (!strcmp(part, "elm.slide.swallow.2")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/multiline"); + elm_object_text_set(button, GET_SYS_STR("IDS_COM_SK_SET")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_SK_SET"); + evas_object_smart_callback_add(button, "clicked", mp_menu_set_cb, track); + evas_object_data_set(button, "layout_data", layout_data); + return button; + } + else if (!strcmp(part, "elm.slide.swallow.4")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/delete"); + MP_CHECK_NULL(layout_data->view_data); + elm_object_text_set(button, GET_SYS_STR("IDS_COM_OPT_DELETE")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_OPT_DELETE"); + evas_object_smart_callback_add(button, "clicked", mp_menu_delete_cb, track); + evas_object_data_set(button, "layout_data", layout_data); + return button; + } + else if (!g_strcmp0(part, "elm.icon.storage")) + { + char *folder = NULL; + int ret = mp_media_info_get_file_path(track, &folder); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + if (folder) { + const char *icon_path = NULL; + if (g_strstr_len(folder, strlen(MP_PHONE_ROOT_PATH), MP_PHONE_ROOT_PATH)) + icon_path = MP_ICON_STORAGE_PHONE; + else if (g_strstr_len(folder, strlen(MP_MMC_ROOT_PATH), MP_MMC_ROOT_PATH)) + icon_path = MP_ICON_STORAGE_MMC; + else + icon_path = MP_ICON_STORAGE_EXTERNAL; + + Evas_Object *icon = elm_icon_add(obj); + MP_CHECK_NULL(icon); + elm_icon_file_set(icon, icon_path, NULL); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + return icon; + } } Evas_Object *check = NULL; if (elm_genlist_decorate_mode_get(obj) || layout_data->ad->b_add_tracks) - { + { // if edit mode if (!strcmp(part, "elm.edit.icon.1")) - { + { // swallow checkbox or radio button check = elm_check_add(obj); elm_check_state_pointer_set(check, &item->checked); evas_object_smart_callback_add(check, "changed", mp_common_item_check_changed_cb, item); @@ -418,8 +334,10 @@ _mp_common_gl_icon_get(void *data, Evas_Object * obj, const char *part) if (!strcmp(part, "elm.icon")) { ad->editfiled_new_playlist = editfield = - mp_widget_create_editfield(obj, AUDIO_SVC_PLAYLIST_NAME_SIZE - 1, ad->new_playlist_name, ad); - + mp_widget_create_editfield(obj, MP_PLAYLIST_NAME_SIZE - 1, NULL, ad); + Evas_Object *entry = mp_widget_editfield_entry_get(editfield); + elm_entry_entry_set(entry, ad->new_playlist_name); + elm_entry_cursor_end_set(entry); evas_object_show(editfield); return editfield; @@ -434,26 +352,36 @@ mp_common_create_editfield_layout(Evas_Object * parent, struct appdata * ad, cha Evas_Object *genlist = NULL; Elm_Object_Item *item = NULL; static Elm_Genlist_Item_Class itc; + Evas_Object *layout = NULL; MP_CHECK_NULL(parent); MP_CHECK_NULL(ad); + layout = elm_layout_add(parent); + elm_layout_file_set(layout, EDJ_NAME, "create_playlist"); + IF_FREE(ad->new_playlist_name); if (text) ad->new_playlist_name = strdup(text); - itc.item_style = "music/1icon"; + itc.version = ELM_GENGRID_ITEM_CLASS_VERSION; + itc.refcount = 0; + itc.delete_me = EINA_FALSE; + itc.item_style = "1icon"; itc.func.text_get = NULL; itc.func.content_get = _mp_common_gl_icon_get; itc.func.state_get = NULL; itc.func.del = NULL; - genlist = elm_genlist_add(parent); + genlist = elm_genlist_add(layout); item = elm_genlist_item_append(genlist, &itc, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); elm_object_scroll_freeze_push(genlist); - return genlist; + elm_object_part_content_set(layout, "elm.swallow.content", genlist); + evas_object_show(layout); + + return layout; } void @@ -478,6 +406,7 @@ _mp_common_search_layout_del_cb(void *data, Evas * e, Evas_Object * eo, void *ev view_data_t *view_data = (view_data_t *) data; MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); + //view_data->view_mode = MP_VIEW_MODE_DEFAULT; } @@ -500,13 +429,14 @@ mp_common_search_button_cb(void *data, Evas_Object * obj, void *event_info) mp_layout_data_t *layout_data = evas_object_data_get(top_view, "layout_data"); MP_CHECK_LAYOUT_DATA(layout_data); + // list must be updated. label changed callback does not called any more... mp_view_layout_update(layout); mp_view_manager_push_view_content(view_data, layout, MP_VIEW_CONTENT_SEARCH); evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _mp_common_search_layout_del_cb, view_data); - mp_view_manager_set_title_and_buttons(view_data, GET_SYS_STR("IDS_COM_SK_SEARCH"), mp_util_get_layout_data(layout)); + mp_view_manager_set_title_and_buttons(view_data, "IDS_COM_SK_SEARCH", mp_util_get_layout_data(layout)); } @@ -541,6 +471,8 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info) MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); + bool b_play_all = false; + struct appdata *ad = view_data->ad; MP_CHECK(ad); mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress"); @@ -550,19 +482,27 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info) if (layout_data && layout_data->search_bar) { Evas_Object *en = mp_search_entry_get(layout_data->search_bar); Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en); + /* hide SIP */ if (imf_context) ecore_imf_context_input_panel_hide(imf_context); - elm_object_focus_allow_set (en, EINA_FALSE); + /* set the entry object not be focused */ + elm_object_focus_allow_set(en, EINA_FALSE); } if(mp_view_manager_count_view_content(view_data) == 1) { DEBUG_TRACE("First view. go to background"); - mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); elm_win_lower(ad->win_main); return; } + /* get the flag if the playing view is created by playall */ + if (ad->playing_view != NULL) + { + b_play_all = ad->playing_view->b_play_all; + ad->playing_view->b_play_all = false; + } + mp_view_manager_pop_view_content(view_data, FALSE, FALSE); evas_object_smart_callback_del(obj, "clicked", mp_common_back_button_cb); @@ -579,6 +519,12 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info) mp_view_layout_update(top_view); } } + else if (b_play_all) + { + /* when back from play view which created by playall option, the layout_data is NULL */ + Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad); + mp_view_layout_update(top_view); + } } void @@ -605,6 +551,7 @@ mp_common_item_check_changed_cb(void *data, Evas_Object * obj, void *event_info) else layout_data->checked_count--; + // update select all check button if (layout_data->select_all_layout) { if (layout_data->item_count == layout_data->checked_count) @@ -654,9 +601,6 @@ mp_common_set_title_button_sensitivity(mp_layout_data_t * layout_data, int selec if(selected_count > 0) disable = false; - //item = mp_view_manager_get_controlbar_item(layout_data->ad, 0); - //elm_object_item_disabled_set(item, false); - for (i = 0; i < MP_NAVI_CONTROL_BUTTON_MAX; i++) //Cancel button always enabled. { item = mp_view_manager_get_controlbar_item(layout_data->ad, i); @@ -696,7 +640,7 @@ mp_common_set_title_button_sensitivity(mp_layout_data_t * layout_data, int selec else { bool disable_option = true; - audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_ALL, NULL, NULL, NULL, NULL, &all_track_count); + mp_media_info_list_count(MP_TRACK_ALL, NULL, NULL, NULL, 0, &all_track_count); if(all_track_count > 0) disable_option = false; edit_item = mp_view_manager_get_edit_controlbar_item(layout_data->ad); @@ -726,15 +670,13 @@ mp_common_navigationbar_finish_effect(void *data, Evas_Object * obj, void *event ad->navi_effect_in_progress = FALSE; - int cnt = mp_view_manager_count_view_content(mp_util_get_view_data(ad)); - if(cnt == 1) - { - DEBUG_TRACE("show controlbar"); - mp_library_controlbar_visible_set(ad, true); + if(!elm_naviframe_prev_btn_auto_pushed_get(ad->naviframe)) + elm_naviframe_prev_btn_auto_pushed_set(ad->naviframe, EINA_TRUE); + + if (ad->editfiled_new_playlist) { + Evas_Object *entry = mp_widget_editfield_entry_get(ad->editfiled_new_playlist); + elm_object_focus_set(entry, EINA_TRUE); } - MP_CHECK(ad->library); - if(!elm_naviframe_prev_btn_auto_pushed_get(ad->library->cur_view)) - elm_naviframe_prev_btn_auto_pushed_set(ad->library->cur_view, EINA_TRUE); mp_layout_data_t * layout_data = mp_util_get_layout_data(mp_view_manager_get_last_view_layout(ad)); MP_CHECK(layout_data); diff --git a/src/common/mp-item.c b/src/common/mp-item.c index a59c21d..3c7e019 100755 --- a/src/common/mp-item.c +++ b/src/common/mp-item.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,9 +14,7 @@ * limitations under the License. */ - #include -#include #include #include #include @@ -24,34 +22,30 @@ #include "music.h" #include "mp-item.h" #include "mp-menu.h" +#include "mp-ug-launch.h" #include "mp-player-debug.h" #include "mp-group-view.h" bool -mp_item_update_db(MediaSvcHandle *media_svc_handle, char *fid) +mp_item_update_db(char *fid) { - MP_CHECK_FALSE(media_svc_handle); - AudioHandleType *item = NULL; + mp_media_info_h media; int count = 0; bool ret = FALSE; - ret = audio_svc_item_new(&item); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, FALSE, "error to get item"); - - ret = audio_svc_get_item_by_audio_id(media_svc_handle, fid, item); - if (ret != AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_create(&media, fid); + if (ret != 0) { - audio_svc_item_free(item); return false; } - audio_svc_item_get_val(item, AUDIO_SVC_TRACK_DATA_PLAYED_COUNT, &count, -1); + mp_media_info_get_played_count(media, &count); - audio_svc_update_item_metadata(media_svc_handle, fid, AUDIO_SVC_TRACK_DATA_PLAYED_COUNT, ++count, - AUDIO_SVC_TRACK_DATA_PLAYED_TIME, time(NULL), -1); + mp_media_info_set_played_count(media, ++count); + mp_media_info_set_played_time(media, time(NULL)); - audio_svc_item_free(item); + mp_media_info_destroy(media); return TRUE; } diff --git a/src/common/mp-media-info.c b/src/common/mp-media-info.c new file mode 100755 index 0000000..c527f79 --- /dev/null +++ b/src/common/mp-media-info.c @@ -0,0 +1,1724 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include "mp-media-info.h" +#include "mp-player-debug.h" +#include "mp-define.h" + +#define PRINT_STR(s) //DEBUG_TRACE("%s", s); +#define PRINT_INT(i) //DEBUG_TRACE("%d", i); + +#define MP_MEDIA_TYPE "(MEDIA_TYPE=3)" + +struct mp_media_list_s +{ + GList *list; + int count; + mp_group_type_e group_type; +}; + +struct mp_minfo_s +{ + char *media_id; + char *title; + char *artist; + char *album; + char *genre; + char *composer; + char *year; + char *copyright; + char *track_num; + char *format; + char *file_path; + char *thumbnail_path; + int playlist_member_id; +}; + +struct mp_ginfo_s +{ + char *main_info; + char *sub_info; + char *thumb_path; +}; + +struct mp_media_info_s +{ + union{ + media_info_h media; //media_info_h + void *group; //handle for group item like media_playlist_h, media_album_h, media_folder_h... + }h; + + union{ + audio_meta_h meta; //audio_meta_h for a media + mp_group_type_e group_type; + }s; + + union { + struct mp_minfo_s *minfo; //media info + struct mp_ginfo_s *ginfo; //group info + }i; +}; + +#define STRNCAT_LEN(dest) (sizeof(dest)-1-strlen(dest)) + +static bool __mp_media_info_cb(media_info_h media, void *user_data) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + mp_media_list_h media_list = user_data; + mp_media_info_h media_info = NULL; + media_info_h m = NULL; + MP_CHECK_FALSE(media_list); + + res = media_info_clone(&m, media); + MP_CHECK_VAL (res == MEDIA_CONTENT_ERROR_NONE, true); + MP_CHECK_VAL(m, true); + + media_info = calloc(1, sizeof(struct mp_media_info_s)); + MP_CHECK_FALSE(media_info); + + media_info->i.minfo = calloc(1, sizeof(struct mp_minfo_s)); + MP_CHECK_FALSE(media_info->i.minfo); + + media_info->h.media = m; + media_list->list = g_list_prepend(media_list->list, media_info); + + res = media_info_get_audio(m, &media_info->s.meta); + MP_CHECK_VAL (res == MEDIA_CONTENT_ERROR_NONE, true); + + return true; +} + +static bool __mp_playlist_media_info_cb(int playlist_member_id, media_info_h media, void *user_data) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + mp_media_list_h media_list = user_data; + mp_media_info_h media_info = NULL; + media_info_h m = NULL; + MP_CHECK_FALSE(media_list); + + res = media_info_clone(&m, media); + MP_CHECK_FALSE (res == MEDIA_CONTENT_ERROR_NONE); + MP_CHECK_FALSE(m); + + media_info = calloc(1, sizeof(struct mp_media_info_s)); + MP_CHECK_FALSE(media_info); + + media_info->i.minfo = calloc(1, sizeof(struct mp_minfo_s)); + MP_CHECK_FALSE(media_info->i.minfo); + media_info->i.minfo->playlist_member_id = playlist_member_id; + + media_info->h.media = m; + media_list->list = g_list_prepend(media_list->list, media_info); + + res = media_info_get_audio(m, &media_info->s.meta); + MP_CHECK_FALSE (res == MEDIA_CONTENT_ERROR_NONE); + + return true; +} + +static bool __mp_media_album_cb(media_album_h album, void *user_data) +{ + mp_media_info_h media_info = NULL; + mp_media_list_h media_list = user_data; + MP_CHECK_FALSE(media_list); + + media_info = calloc(1, sizeof(struct mp_media_info_s)); + MP_CHECK_FALSE(media_info); + + media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s)); + MP_CHECK_FALSE(media_info->i.ginfo); + + media_album_clone((media_album_h *)&media_info->h.group, album); + media_info->s.group_type = media_list->group_type; + + media_list->list = g_list_prepend(media_list->list, media_info); + + return true; +} + +static bool __mp_media_folder_cb(media_folder_h folder, void *user_data) +{ + mp_media_info_h media_info = NULL; + mp_media_list_h media_list = user_data; + MP_CHECK_FALSE(media_list); + + media_info = calloc(1, sizeof(struct mp_media_info_s)); + MP_CHECK_FALSE(media_info); + + media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s)); + MP_CHECK_FALSE(media_info->i.ginfo); + + media_folder_clone((media_folder_h *)&media_info->h.group, folder); + media_info->s.group_type = media_list->group_type; + + media_list->list = g_list_prepend(media_list->list, media_info); + + return true; +} + +static bool __mp_media_playlist_cb(media_playlist_h playlist, void *user_data) +{ + mp_media_info_h media_info = NULL; + mp_media_list_h media_list = user_data; + MP_CHECK_FALSE(media_list); + + media_info = calloc(1, sizeof(struct mp_media_info_s)); + MP_CHECK_FALSE(media_info); + + media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s)); + MP_CHECK_FALSE(media_info->i.ginfo); + + media_playlist_clone((media_playlist_h *)&media_info->h.group, playlist); + media_info->s.group_type = media_list->group_type; + + media_list->list = g_list_prepend(media_list->list, media_info); + + return true; +} + +static bool __mp_media_group_cb(const char* name, void *user_data) +{ + mp_media_info_h media_info = NULL; + mp_media_list_h media_list = user_data; + MP_CHECK_FALSE(media_list); + + media_info = calloc(1, sizeof(struct mp_media_info_s)); + MP_CHECK_FALSE(media_info); + + media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s)); + MP_CHECK_FALSE(media_info->i.ginfo); + + media_info->h.group = g_strdup(name); + media_info->s.group_type = media_list->group_type; + + media_list->list = g_list_prepend(media_list->list, media_info); + + return true; +} + +static void __mp_media_info_destory(void *data) +{ + mp_media_info_destroy(data); +} + +static void __mp_media_group_destory(void *data) +{ + mp_media_info_h media_info = data; + MP_CHECK(media_info); + + if(media_info->s.group_type == MP_GROUP_BY_FOLDER) + media_folder_destroy(media_info->h.group); + else if(media_info->s.group_type == MP_GROUP_BY_ALBUM) + media_album_destroy(media_info->h.group); + else if(media_info->s.group_type == MP_GROUP_BY_PLAYLIST) + media_playlist_destroy(media_info->h.group); + else + IF_FREE(media_info->h.group); + + if(media_info->i.ginfo) + { + IF_FREE(media_info->i.ginfo->main_info); + IF_FREE(media_info->i.ginfo->sub_info); + IF_FREE(media_info->i.ginfo->thumb_path); + free(media_info->i.ginfo); + } + + free(media_info); +} + + +static void __mp_media_info_set_group_filter(mp_filter_h filter, mp_group_type_e group_type, const char *type_string, const char *filter_string) +{ + char cond[MAX_FILTER_LEN] = {0,}; + if(group_type != MP_GROUP_BY_PLAYLIST) + strncat(cond, MP_MEDIA_TYPE, STRNCAT_LEN(cond)); + else + strncat(cond, "((MEDIA_TYPE=3 and MEDIA_COUNT>0) or MEDIA_COUNT=0)", STRNCAT_LEN(cond)); + switch(group_type) + { + case MP_GROUP_BY_ALBUM: + if(filter_string) + { + strncat(cond, " AND MEDIA_ALBUM like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_GROUP_BY_ARTIST: + if(filter_string) + { + strncat(cond, " AND MEDIA_ARTIST like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_GROUP_BY_ARTIST_ALBUM: + MP_CHECK(type_string && strlen(type_string)); + if(filter_string) + { + strncat(cond, " AND MEDIA_ALBUM like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\" AND ", STRNCAT_LEN(cond)); + } + strncat(cond, " AND MEDIA_ARTIST = \"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_GROUP_BY_GENRE: + if(filter_string) + { + strncat(cond, " AND MEDIA_GENRE like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_GENRE, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_GROUP_BY_FOLDER: + if(filter_string) + { + strncat(cond, " AND FOLDER_PATH like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, FOLDER_NAME, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_GROUP_BY_YEAR: + if(filter_string) + { + strncat(cond, " AND MEDIA_YEAR like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_YEAR, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_GROUP_BY_COMPOSER: + if(filter_string) + { + strncat(cond, " AND MEDIA_COMPOSER like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_COMPOSER, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_GROUP_BY_PLAYLIST: + if(filter_string) + { + strncat(cond, " AND PLAYLIST_NAME like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE); + break; + default: + WARN_TRACE("Unhandled type: %d", group_type); + break; + } + if(strlen(cond)) + { + DEBUG_TRACE("cond: %s", cond); + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE); + } + +} + +static void __mp_media_info_set_filter(filter_h filter, mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string) +{ + char cond[MAX_FILTER_LEN] = {0,}; + strncat(cond, MP_MEDIA_TYPE, STRNCAT_LEN(cond)); + switch (track_type) + { + case MP_TRACK_ALL: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_TRACK_BY_ALBUM: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + if(type_string) + { + strncat(cond, " AND MEDIA_ALBUM=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + } + else + { + strncat(cond, " AND MEDIA_ALBUM is null", STRNCAT_LEN(cond)); + } + break; + case MP_TRACK_BY_ARTIST: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_ALBUM, MEDIA_TITLE", MEDIA_CONTENT_COLLATE_NOCASE); + if(type_string) + { + strncat(cond, " AND MEDIA_ARTIST=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + } + else + { + strncat(cond, " AND MEDIA_ARTIST is null", STRNCAT_LEN(cond)); + } + break; + case MP_TRACK_BY_GENRE: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + if(type_string) + { + strncat(cond, " AND MEDIA_GENRE=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + } + else + { + strncat(cond, " AND MEDIA_GENRE is null", STRNCAT_LEN(cond)); + } + break; + case MP_TRACK_BY_FOLDER: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + break; + case MP_TRACK_BY_YEAR: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + if(type_string) + { + strncat(cond, " AND MEDIA_YEAR=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + } + else + { + strncat(cond, " AND MEDIA_YEAR is null", STRNCAT_LEN(cond)); + } + break; + case MP_TRACK_BY_COMPOSER: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + if(type_string) + { + strncat(cond, " AND MEDIA_COMPOSER=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + } + else + { + strncat(cond, " AND MEDIA_COMPOSER is null", STRNCAT_LEN(cond)); + } + break; + case MP_TRACK_BY_ARTIST_ALBUM: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + if(type_string) + { + strncat(cond, " AND MEDIA_ALBUM=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + } + else + { + strncat(cond, " AND MEDIA_ALBUM is null", STRNCAT_LEN(cond)); + } + if(type_string2) + { + strncat(cond, " AND MEDIA_ARTIST=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string2, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + } + else + { + strncat(cond, " AND MEDIA_ARTIST is null", STRNCAT_LEN(cond)); + } + break; + case MP_TRACK_BY_FAVORITE: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + strncat(cond, " AND MEDIA_FAVORITE=1", STRNCAT_LEN(cond)); + break; + case MP_TRACK_BY_PLAYED_TIME: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_LAST_PLAYED_TIME, MEDIA_CONTENT_COLLATE_NOCASE); + strncat(cond, " AND MEDIA_LAST_PLAYED_TIME>0", STRNCAT_LEN(cond)); + break; + case MP_TRACK_BY_ADDED_TIME: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_ADDED_TIME, MEDIA_CONTENT_COLLATE_NOCASE); + strncat(cond, " AND MEDIA_ADDED_TIME>0", STRNCAT_LEN(cond)); + break; + case MP_TRACK_BY_PLAYED_COUNT: + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PLAYED_COUNT, MEDIA_CONTENT_COLLATE_NOCASE); + strncat(cond, " AND MEDIA_PLAYED_COUNT>0", STRNCAT_LEN(cond)); + break; + case MP_TRACK_BY_PLAYLIST: + //media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE); + break; + default: + WARN_TRACE("Unhandled type: %d", track_type); + break; + } + + if(filter_string && strlen(filter_string)) + { + strncat(cond, " AND MEDIA_TITLE like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + + DEBUG_TRACE("cond: %s", cond); + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE); + +} + + +int mp_media_info_connect(void) +{ + int res = media_content_connect(); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error: media_content_connect"); + + return res; +} +int mp_media_info_disconnect(void) +{ + int res = media_content_disconnect(); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error: media_content_disconnect"); + + return res; +} + +/*filter*/ +int mp_media_filter_create(mp_filter_h *filter) +{ + startfunc; + int res = media_filter_create(filter); + if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res); + return res; +} +int mp_media_filter_destory(mp_filter_h filter) +{ + startfunc; + int res = media_filter_destroy(filter); + if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res); + return res; +} +int mp_media_filter_set_offset(mp_filter_h filter, int offset, int count) +{ + startfunc; + int res = media_filter_set_offset(filter, offset, count); + if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res); + return res; +} +int mp_media_filter_set_order(mp_filter_h filter, bool descending, const char *order_keyword, mp_media_content_collation_e collation) +{ + startfunc; + int res = media_filter_set_order(filter, descending, order_keyword, collation); + if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res); + return res; +} +int mp_media_filter_set_condition(mp_filter_h filter, const char *condition, mp_media_content_collation_e collation ) +{ + startfunc; + int res = media_filter_set_condition(filter, condition, collation); + if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res); + return res; +} + +/*media infomation*/ +int mp_media_info_list_count_w_filter(mp_track_type_e track_type, const char * folder_id, int playlist_id, mp_filter_h filter, int *count) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + if(track_type == MP_TRACK_BY_FOLDER) + res = media_folder_get_media_count_from_db(folder_id, filter, count); + else if(track_type == MP_TRACK_BY_PLAYLIST) + res = media_playlist_get_media_count_from_db(playlist_id, filter, count); + else + res = media_info_get_media_count_from_db(filter, count); + if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_list_count(mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int *count) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + filter_h filter = NULL; + + DEBUG_TRACE("track_type: %d, type_str: %s, type_str2: %s, filter: %s, id: %d", track_type, type_string, type_string2, filter_string, playlist_id); + + res = media_filter_create(&filter); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + __mp_media_info_set_filter(filter, track_type, type_string, type_string2, filter_string); + + res = mp_media_info_list_count_w_filter(track_type, type_string, playlist_id, filter, count); + media_filter_destroy(filter); + + return res; +} + +int mp_media_info_list_create_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, mp_media_list_h *media_list) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(media_list, -1); + + *media_list = calloc(1, sizeof(struct mp_media_list_s)); + MP_CHECK_VAL(*media_list, -1); + (*media_list)->group_type = MP_GROUP_NONE; + + if(track_type == MP_TRACK_BY_FOLDER) + res = media_folder_foreach_media_from_db(folder_id, filter, __mp_media_info_cb, *media_list); + else if(track_type == MP_TRACK_BY_PLAYLIST) + { + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE); + res = media_playlist_foreach_media_from_db(playlist_id, filter, __mp_playlist_media_info_cb, *media_list); + } + else + res = media_info_foreach_media_from_db(filter, __mp_media_info_cb, *media_list); + + if(res != MEDIA_CONTENT_ERROR_NONE) + { + ERROR_TRACE("Error code 0x%x", res); + free(*media_list); + return res; + } + + (*media_list)->list = g_list_reverse((*media_list)->list); + (*media_list)->count = g_list_length((*media_list)->list); + + DEBUG_TRACE("count : %d", (*media_list)->count); + return res; +} + +int mp_media_info_list_create(mp_media_list_h *out_list, + mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int offset, int count) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + filter_h filter = NULL; + + + res = media_filter_create(&filter); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + + res = media_filter_set_offset(filter, offset, count); + DEBUG_TRACE("track_type: %d, type_str: %s, type_str2: %s, filter: %s, playlist_id: %d", track_type, type_string, type_string2, filter_string, playlist_id); + DEBUG_TRACE("offset: %d, count: %d", offset, count); + __mp_media_info_set_filter(filter, track_type, type_string, type_string2, filter_string); + + res = mp_media_info_list_create_w_filter(track_type, type_string, playlist_id, filter, out_list); + media_filter_destroy(filter); + + return res; +} + +int mp_media_info_list_destroy(mp_media_list_h media_list) +{ + startfunc; + MP_CHECK_VAL(media_list, -1); + + if(media_list->list) + g_list_free_full(media_list->list, __mp_media_info_destory); + free(media_list); + + return 0; +} + +mp_media_info_h mp_media_info_list_nth_item(mp_media_list_h media_list, int index) +{ + MP_CHECK_NULL(media_list); + MP_CHECK_NULL(index < media_list->count); + + return g_list_nth_data(media_list->list, index); +} + +int mp_media_info_create(mp_media_info_h *media_info, const char *media_id) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + *media_info = calloc(1, sizeof(struct mp_media_info_s)); + + (*media_info)->i.minfo = calloc(1, sizeof(struct mp_minfo_s)); + MP_CHECK_VAL((*media_info)->i.minfo, -1); + + res = media_info_get_media_from_db(media_id, &(*media_info)->h.media); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + + res = media_info_get_audio((*media_info)->h.media, &(*media_info)->s.meta); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + + return res; +} + +int mp_media_info_create_by_path(mp_media_info_h *media_info, const char *file_path) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + mp_filter_h filter = NULL; + char *cond = NULL; + mp_media_list_h list = NULL; + + res = media_filter_create(&filter); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + cond = g_strdup_printf("MEDIA_PATH = \"%s\"", file_path); + + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_DEFAULT); + IF_FREE(cond); + + media_filter_set_offset(filter, 0, 1); + + res = mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list); + media_filter_destroy(filter); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + MP_CHECK_VAL(list, -1); + MP_CHECK_VAL(list->count > 0, -1); + + list->list = g_list_nth(list->list, 0); + MP_CHECK_VAL(list->list, res); + *media_info = list->list->data; + list->list = g_list_delete_link(list->list, list->list); + + mp_media_info_list_destroy(list); + + return res; +} + +int mp_media_info_destroy(mp_media_info_h media_info) +{ + MP_CHECK_VAL(media_info, -1); + + audio_meta_destroy(media_info->s.meta); + media_info_destroy(media_info->h.media); + + if(media_info->i.minfo) + { + IF_FREE(media_info->i.minfo->media_id); + IF_FREE(media_info->i.minfo->title); + IF_FREE(media_info->i.minfo->album); + IF_FREE(media_info->i.minfo->artist); + IF_FREE(media_info->i.minfo->genre); + IF_FREE(media_info->i.minfo->composer); + IF_FREE(media_info->i.minfo->year); + IF_FREE(media_info->i.minfo->file_path); + IF_FREE(media_info->i.minfo->thumbnail_path); + free(media_info->i.minfo); + } + + free(media_info); + return 0; +} + + +int mp_media_info_get_media_id(mp_media_info_h media, char **media_id) +{ + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->i.minfo, -1); + int res = MEDIA_CONTENT_ERROR_NONE; + + if(!media->i.minfo->media_id) + { + res = media_info_get_media_id(media->h.media, &media->i.minfo->media_id); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *media_id = media->i.minfo->media_id; + PRINT_STR(*media_id); + + return res; +} + +int mp_media_info_get_file_path(mp_media_info_h media, char **path) +{ + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->i.minfo, -1); + int res = MEDIA_CONTENT_ERROR_NONE; + + if(!media->i.minfo->file_path) + { + res = media_info_get_file_path(media->h.media, &media->i.minfo->file_path); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *path = media->i.minfo->file_path; + PRINT_STR(*path); + return res; +} +int mp_media_info_get_thumbnail_path(mp_media_info_h media, char **path) +{ + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->i.minfo, -1); + int res = MEDIA_CONTENT_ERROR_NONE; + + if(!media->i.minfo->thumbnail_path) + { + res = media_info_get_thumbnail_path(media->h.media, &media->i.minfo->thumbnail_path); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *path = media->i.minfo->thumbnail_path; + PRINT_STR(*path); + return res; +} +int mp_media_info_get_favorite(mp_media_info_h media, bool *favorite) +{ + MP_CHECK_VAL(media, -1); + + int res = media_info_get_favorite(media->h.media, favorite); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_is_drm(mp_media_info_h media, bool *drm) +{ + MP_CHECK_VAL(media, -1); + int res = media_info_is_drm(media->h.media, drm); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_get_media_type(mp_media_info_h media, int *media_type) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->h.media, -1); + + media_content_type_e mtype; + + res = media_info_get_media_type(media->h.media, &mtype); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + + if(mtype == MEDIA_CONTENT_TYPE_SOUND) + *media_type = MP_MEDIA_TYPE_SOUND; + else + *media_type = MP_MEDIA_TYPE_MUSIC; + + return res; +} + +int mp_media_info_get_title(mp_media_info_h media, char **title) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + if(!media->i.minfo->title) + { + res = audio_meta_get_title(media->s.meta, &media->i.minfo->title); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *title = media->i.minfo->title; + PRINT_STR(*title); + return res; +} +int mp_media_info_get_album(mp_media_info_h media, char **album) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + if(!media->i.minfo->album) + { + res = audio_meta_get_album(media->s.meta, &media->i.minfo->album); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *album = media->i.minfo->album; + PRINT_STR(*album); + return res; +} +int mp_media_info_get_artist(mp_media_info_h media, char **artist) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + if(!media->i.minfo->artist) + { + res = audio_meta_get_artist(media->s.meta, &media->i.minfo->artist); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *artist = media->i.minfo->artist; + PRINT_STR(*artist); + return res; +} + +int mp_media_info_get_genre(mp_media_info_h media, char **genre) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + if(!media->i.minfo->genre) + { + res = audio_meta_get_genre(media->s.meta, &media->i.minfo->genre); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *genre = media->i.minfo->genre; + PRINT_STR(*genre); + return res; +} + +int mp_media_info_get_composer(mp_media_info_h media, char **composer) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + if(!media->i.minfo->composer) + { + res = audio_meta_get_composer(media->s.meta, &media->i.minfo->composer); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *composer = media->i.minfo->composer; + PRINT_STR(*composer); + return res; +} +int mp_media_info_get_year(mp_media_info_h media, char **year) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + if(!media->i.minfo->year) + { + res = audio_meta_get_composer(media->s.meta, &media->i.minfo->year); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *year = media->i.minfo->year; + PRINT_STR(*year); + return res; +} +int mp_media_info_get_copyright(mp_media_info_h media, char **copyright) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + if(!media->i.minfo->copyright) + { + res = audio_meta_get_copyright(media->s.meta, &media->i.minfo->copyright); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *copyright = media->i.minfo->copyright; + PRINT_STR(*copyright); + return res; +} + +int mp_media_info_get_track_num(mp_media_info_h media, char **track_num) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + if(!media->i.minfo->track_num) + { + res = audio_meta_get_track_num(media->s.meta, &media->i.minfo->track_num); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + } + *track_num = media->i.minfo->track_num; + PRINT_STR(*track_num); + return res; +} + +int mp_media_info_get_format(mp_media_info_h media, char **format) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + int bit_rate = 0; + int sample_rate = 0; + int channel = 0; + + if(!media->i.minfo->format) + { + res = audio_meta_get_sample_rate(media->s.meta, &sample_rate); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + res = audio_meta_get_bit_rate(media->s.meta, &bit_rate); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + res = audio_meta_get_channel(media->s.meta, &channel); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + + media->i.minfo->format = g_strdup_printf("%dkbps %dHz %dch", bit_rate, sample_rate, channel); + } + *format = media->i.minfo->track_num; + PRINT_STR(*format); + return res; +} + +int mp_media_info_get_bit_rate(mp_media_info_h media, int *bitrate) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + + res = audio_meta_get_bit_rate(media->s.meta, bitrate); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} +int mp_media_info_get_sample_rate(mp_media_info_h media, int *sample_rate) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + + res = audio_meta_get_sample_rate(media->s.meta, sample_rate); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} +int mp_media_info_get_duration(mp_media_info_h media, int *duration) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + + res = audio_meta_get_duration(media->s.meta, duration); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_get_played_time(mp_media_info_h media, time_t *time) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + + res = audio_meta_get_played_time(media->s.meta, time); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_get_played_count(mp_media_info_h media, int *count) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + + res = audio_meta_get_played_count(media->s.meta, count); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_get_playlist_member_id(mp_media_info_h media, int *member_id) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->i.minfo, -1); + + *member_id = media->i.minfo->playlist_member_id; + return res; +} + +int mp_media_info_set_favorite(mp_media_info_h media, bool favorite) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->h.media, -1); + if(res != MEDIA_CONTENT_ERROR_NONE) + { + ERROR_TRACE("Error code 0x%x", res); + return res; + } + + res = media_info_set_favorite(media->h.media, favorite); + if(res != MEDIA_CONTENT_ERROR_NONE) + { + ERROR_TRACE("Error code 0x%x", res); + return res; + } + + res = media_info_update_to_db(media->h.media); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_set_played_time(mp_media_info_h media, time_t time) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + + res = audio_meta_set_played_time(media->s.meta, time); + if(res != MEDIA_CONTENT_ERROR_NONE) + { + ERROR_TRACE("Error code 0x%x", res); + return res; + } + res = audio_meta_update_to_db(media->s.meta); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} +int mp_media_info_set_played_count(mp_media_info_h media, int count) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.meta, -1); + + res = audio_meta_set_played_count(media->s.meta, count); + if(res != MEDIA_CONTENT_ERROR_NONE) + { + ERROR_TRACE("Error code 0x%x", res); + return res; + } + res = audio_meta_update_to_db(media->s.meta); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_set_added_time(mp_media_info_h media, time_t time) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->h.media, -1); + + res = media_info_set_added_time(media->h.media, time); + if(res != MEDIA_CONTENT_ERROR_NONE) + { + ERROR_TRACE("Error code 0x%x", res); + return res; + } + res = media_info_update_to_db(media->h.media); + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + return res; +} + +int mp_media_info_group_list_count(mp_group_type_e group_type, const char *type_string, const char *filter_string, int *count) +{ + startfunc; + mp_filter_h filter = NULL; + int res = MEDIA_CONTENT_ERROR_NONE; + + res = media_filter_create(&filter); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + DEBUG_TRACE("group_type: %d, type_string:s, filter_string:%s", group_type, type_string, filter_string); + + __mp_media_info_set_group_filter(filter, group_type, type_string, filter_string); + + res = mp_media_info_group_list_count_w_filter(group_type, filter, count); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + + media_filter_destroy(filter); + + return res; +} +int mp_media_info_group_list_count_w_filter(mp_group_type_e group_type, mp_filter_h filter, int *count) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + switch(group_type) + { + case MP_GROUP_BY_ALBUM: + case MP_GROUP_BY_ARTIST_ALBUM: + res = media_album_get_album_count_from_db(filter, count); + break; + case MP_GROUP_BY_ARTIST: + res = media_group_get_group_count_from_db(filter, MEDIA_CONTENT_GROUP_ARTIST, count); + break; + case MP_GROUP_BY_GENRE: + res = media_group_get_group_count_from_db(filter, MEDIA_CONTENT_GROUP_GENRE, count); + break; + case MP_GROUP_BY_FOLDER: + res = media_folder_get_folder_count_from_db(filter, count); + break; + case MP_GROUP_BY_YEAR: + res = media_group_get_group_count_from_db(filter, MEDIA_CONTENT_GROUP_YEAR, count); + break; + case MP_GROUP_BY_COMPOSER: + res = media_group_get_group_count_from_db(filter, MEDIA_CONTENT_GROUP_COMPOSER, count); + break; + case MP_GROUP_BY_PLAYLIST: + res = media_playlist_get_playlist_count_from_db(filter, count); + break; + default: + WARN_TRACE("Unhandled type: %d", group_type); + res = -1; + break; + } + if(res != MEDIA_CONTENT_ERROR_NONE) + ERROR_TRACE("Error code 0x%x", res); + + return res; +} + +#define STR_MP_MOST_PLAYED ("IDS_MUSIC_BODY_MOST_PLAYED") +#define STR_MP_RECENTLY_ADDED ("IDS_MUSIC_BODY_RECENTLY_ADDED") +#define STR_MP_RECENTLY_PLAYED ("IDS_MUSIC_BODY_RECENTLY_PLAYED") +#define STR_MP_QUICK_LIST ("IDS_MUSIC_BODY_FAVOURITES") + +int mp_media_info_group_list_create(mp_media_list_h *media_list, mp_group_type_e group_type, const char *type_string, const char *filter_string, int offset, int count) +{ + startfunc; + mp_filter_h filter = NULL; + int res = MEDIA_CONTENT_ERROR_NONE; + + if(group_type != MP_GROUP_BY_SYS_PLAYLIST) + { + res = media_filter_create(&filter); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + media_filter_set_offset(filter, offset, count); + + __mp_media_info_set_group_filter(filter, group_type, type_string, filter_string); + + res = mp_media_info_group_list_create_w_filter(filter, group_type, media_list); + media_filter_destroy(filter); + MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res); + } + else + { + + int i; + mp_media_info_h media_info = NULL; + *media_list = calloc(1, sizeof(struct mp_media_list_s)); + MP_CHECK_VAL(*media_list, -1); + (*media_list)->group_type = group_type; + + char names[][50] = + { STR_MP_MOST_PLAYED, STR_MP_RECENTLY_ADDED, STR_MP_RECENTLY_PLAYED, STR_MP_QUICK_LIST }; + char thumb[][4096]= + { THUMBNAIL_MOST_PLAYED, THUMBNAIL_RECENTLY_PLAYED, THUMBNAIL_RECENTLY_ADDED, THUMBNAIL_QUICK_LIST}; + + for(i=0; i< 4; i++) + { + media_info = calloc(1, sizeof(struct mp_media_info_s)); + MP_CHECK_FALSE(media_info); + + media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s)); + MP_CHECK_FALSE(media_info->i.ginfo); + + media_info->i.ginfo->main_info = g_strdup(names[i]); + media_info->i.ginfo->thumb_path= g_strdup(thumb[i]); + media_info->s.group_type = group_type; + (*media_list)->list = g_list_append((*media_list)->list, media_info); + } + (*media_list)->count = g_list_length((*media_list)->list); + + } + return res; +} + +int mp_media_info_group_list_create_w_filter(mp_filter_h filter, mp_group_type_e group_type, mp_media_list_h *media_list) +{ + startfunc; + MP_CHECK_VAL(media_list, -1); + + *media_list = calloc(1, sizeof(struct mp_media_list_s)); + MP_CHECK_VAL(*media_list, -1); + (*media_list)->group_type = group_type; + + int res = MEDIA_CONTENT_ERROR_NONE; + switch(group_type) + { + case MP_GROUP_BY_ALBUM: + case MP_GROUP_BY_ARTIST_ALBUM: + res = media_album_foreach_album_from_db(filter, __mp_media_album_cb, *media_list); + break; + case MP_GROUP_BY_ARTIST: + res = media_group_foreach_group_from_db(filter, MEDIA_CONTENT_GROUP_ARTIST, __mp_media_group_cb, *media_list); + break; + case MP_GROUP_BY_GENRE: + res = media_group_foreach_group_from_db(filter, MEDIA_CONTENT_GROUP_GENRE, __mp_media_group_cb, *media_list); + break; + case MP_GROUP_BY_FOLDER: + res = media_folder_foreach_folder_from_db(filter, __mp_media_folder_cb, *media_list); + break; + case MP_GROUP_BY_YEAR: + res = media_group_foreach_group_from_db(filter, MEDIA_CONTENT_GROUP_YEAR, __mp_media_group_cb, *media_list); + break; + case MP_GROUP_BY_COMPOSER: + res = media_group_foreach_group_from_db(filter, MEDIA_CONTENT_GROUP_COMPOSER, __mp_media_group_cb, *media_list); + break; + case MP_GROUP_BY_PLAYLIST: + res = media_playlist_foreach_playlist_from_db(filter, __mp_media_playlist_cb, *media_list); + break; + default: + WARN_TRACE("Unhandled type: %d", group_type); + res = -1; + break; + } + if(res != MEDIA_CONTENT_ERROR_NONE) + { + ERROR_TRACE("Error code 0x%x", res); + free(*media_list); + } + else + { + (*media_list)->list = g_list_reverse((*media_list)->list); + (*media_list)->count = g_list_length((*media_list)->list); + } + + return res; +} + +int mp_media_info_group_list_destroy(mp_media_list_h media_list) +{ + startfunc; + MP_CHECK_VAL(media_list, -1); + g_list_free_full(media_list->list, __mp_media_group_destory); + free(media_list); + return 0; +} +mp_media_info_h mp_media_info_group_list_nth_item(mp_media_list_h media_list, int index) +{ + MP_CHECK_NULL(media_list); + MP_CHECK_NULL(index < media_list->count); + + return g_list_nth_data(media_list->list, index); +} + +int mp_media_info_group_get_main_info(mp_media_info_h media, char **main_info) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(main_info, -1); + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->i.ginfo, -1); + if(!media->i.ginfo->main_info && media->s.group_type != MP_GROUP_BY_SYS_PLAYLIST) + { + if(media->s.group_type == MP_GROUP_BY_FOLDER) + res = media_folder_get_name(media->h.group, &media->i.ginfo->main_info); + else if(media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM) + res = media_album_get_name(media->h.group, &media->i.ginfo->main_info); + else if(media->s.group_type == MP_GROUP_BY_PLAYLIST) + res = media_playlist_get_name(media->h.group, &media->i.ginfo->main_info); + else + media->i.ginfo->main_info = g_strdup(media->h.group); + } + *main_info = media->i.ginfo->main_info; + PRINT_STR(*main_info); + return res; +} + +int mp_media_info_group_get_sub_info(mp_media_info_h media, char **sub_info) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(sub_info, -1); + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->i.ginfo, -1); + if(!media->i.ginfo->sub_info && media->s.group_type != MP_GROUP_BY_SYS_PLAYLIST) + { + if(media->s.group_type == MP_GROUP_BY_FOLDER) + res = media_folder_get_path(media->h.group, &media->i.ginfo->sub_info); + else if(media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM) + res = media_album_get_artist(media->h.group, &media->i.ginfo->sub_info); + } + *sub_info = media->i.ginfo->sub_info; + PRINT_STR(*sub_info); + return res; +} + +int mp_media_info_group_get_playlist_id(mp_media_info_h media, int *playlist_id) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(playlist_id, -1); + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.group_type == MP_GROUP_BY_PLAYLIST || media->s.group_type == MP_GROUP_BY_SYS_PLAYLIST, -1); + + if(media->s.group_type == MP_GROUP_BY_SYS_PLAYLIST) + { + if(!g_strcmp0(media->i.ginfo->main_info, STR_MP_QUICK_LIST)) + *playlist_id = MP_SYS_PLST_QUICK_LIST; + else if(!g_strcmp0(media->i.ginfo->main_info, STR_MP_RECENTLY_PLAYED)) + *playlist_id = MP_SYS_PLST_RECENTELY_PLAYED; + else if(!g_strcmp0(media->i.ginfo->main_info, STR_MP_RECENTLY_ADDED)) + *playlist_id = MP_SYS_PLST_RECENTELY_ADDED; + else + *playlist_id = MP_SYS_PLST_MOST_PLAYED; + } + else + res = media_playlist_get_playlist_id(media->h.group, playlist_id); + PRINT_INT(*playlist_id); + return res; +} + +int mp_media_info_group_get_folder_id(mp_media_info_h media, char **folder_id) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(folder_id, -1); + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->s.group_type == MP_GROUP_BY_FOLDER, -1); + + res = media_folder_get_folder_id(media->h.group, folder_id); + PRINT_INT(*folder_id); + return res; +} + +int mp_media_info_group_get_thumbnail_path(mp_media_info_h media, char **path) +{ + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(path, -1); + MP_CHECK_VAL(media, -1); + MP_CHECK_VAL(media->i.ginfo, -1); + if(!media->i.ginfo->thumb_path) + { + + if(media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM) + res = media_album_get_album_art(media->h.group, &media->i.ginfo->thumb_path); + else{ + filter_h filter; + mp_media_list_h list = NULL; + mp_media_info_h minfo = NULL; + char *type_string = NULL; + char cond[MAX_FILTER_LEN] = {0,}; + int count = 0; + + mp_media_info_group_get_main_info(media, &type_string); + + media_filter_create(&filter); + strncat(cond, MP_MEDIA_TYPE, STRNCAT_LEN(cond)); + if(media->s.group_type == MP_GROUP_BY_PLAYLIST) + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE); + else + media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + + if(media->s.group_type == MP_GROUP_BY_ARTIST){ + strncat(cond, " AND MEDIA_ARTIST=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\" AND MEDIA_THUMBNAIL_PATH is not null", STRNCAT_LEN(cond)); + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE); + + mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count); + if(count>0) + { + media_filter_set_offset(filter, 0, 1); + mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list); + } + + }else if(media->s.group_type == MP_GROUP_BY_GENRE){ + strncat(cond, " AND MEDIA_GENRE=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\" AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond)); + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE); + + mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count); + if(count>0) + { + media_filter_set_offset(filter, 0, 1); + mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list); + } + }else if(media->s.group_type == MP_GROUP_BY_FOLDER){ + char *folde_id = NULL; + mp_media_info_group_get_folder_id(media, &folde_id); + + strncat(cond, " AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond)); + + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE); + mp_media_info_list_count_w_filter(MP_TRACK_BY_FOLDER, folde_id, 0, filter, &count); + if(count>0) + { + media_filter_set_offset(filter, 0, 1); + mp_media_info_list_create_w_filter(MP_TRACK_BY_FOLDER, folde_id, 0, filter, &list); + } + }else if(media->s.group_type == MP_GROUP_BY_YEAR){ + strncat(cond, " AND MEDIA_YEAR=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\" AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond)); + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE); + + mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count); + if(count>0) + { + media_filter_set_offset(filter, 0, 1); + mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list); + } + }else if(media->s.group_type == MP_GROUP_BY_COMPOSER){ + strncat(cond, " AND MEDIA_COMPOSER=\"", STRNCAT_LEN(cond)); + strncat(cond, type_string, STRNCAT_LEN(cond)); + strncat(cond, "\" AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond)); + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE); + + mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count); + if(count>0) + { + media_filter_set_offset(filter, 0, 1); + mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list); + } + }else if(media->s.group_type == MP_GROUP_BY_PLAYLIST){ + int playlist_id = 0; + mp_media_info_group_get_playlist_id(media, &playlist_id); + + strncat(cond, " AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond)); + + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE); + mp_media_info_list_count_w_filter(MP_TRACK_BY_PLAYLIST, NULL, playlist_id, filter, &count); + if(count>0) + { + media_filter_set_offset(filter, 0, 1); + mp_media_info_list_create_w_filter(MP_TRACK_BY_PLAYLIST, NULL, playlist_id, filter, &list); + } + }else{ + WARN_TRACE("Unhandled type: %d", media->s.group_type); + media_filter_destroy(filter); + goto END; + } + WARN_TRACE("count: %d", count); + + if(list) + { + char *thumb_path = NULL; + minfo = mp_media_info_list_nth_item(list, 0); + MP_CHECK_VAL(minfo, -1); + mp_media_info_get_thumbnail_path(minfo, &thumb_path); + media->i.ginfo->thumb_path = g_strdup(thumb_path); + mp_media_info_list_destroy(list); + } + media_filter_destroy(filter); + } + + } + END: + *path = media->i.ginfo->thumb_path; + PRINT_STR(*path); + return res; +} + + +int mp_media_info_playlist_get_id_by_name(const char *playlist_name, int *playlist_id) +{ + startfunc; + mp_filter_h filter; + mp_media_list_h list; + mp_media_info_h media; + char *cond = NULL; + int res = MEDIA_CONTENT_ERROR_NONE; + + res = mp_media_filter_create(&filter); + MP_CHECK_VAL(res == 0, res); + cond = g_strdup_printf("PLAYLIST_NAME = \"%s\"", playlist_name); + MP_CHECK_VAL(cond, -1); + res = mp_media_filter_set_condition(filter, cond, MP_MEDIA_CONTENT_COLLATE_DEFAULT); + free(cond); + MP_CHECK_VAL(res == 0, res); + res = mp_media_filter_set_offset(filter, 0, 1); + MP_CHECK_VAL(res == 0, res); + + res = mp_media_info_group_list_create_w_filter(filter, MP_GROUP_BY_PLAYLIST, &list); + mp_media_filter_destory(filter); + MP_CHECK_VAL(res == 0, res); + MP_CHECK_VAL(list, -1); + + media = mp_media_info_group_list_nth_item(list, 0); + MP_CHECK_VAL(media, -1); + + res = mp_media_info_group_get_playlist_id(media, playlist_id); + mp_media_info_group_list_destroy(list); + + return res; +} + +int mp_media_info_playlist_insert_to_db(const char * name, int *playlist_id, mp_playlist_h *playlist_handle) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + media_playlist_h playlist = NULL; + + res = media_playlist_insert_to_db(name, &playlist); + MP_CHECK_VAL(res == 0, res); + + res = media_playlist_get_playlist_id(playlist, playlist_id); + DEBUG_TRACE("name: %s, playlist_id: %d", name, *playlist_id); + + if(playlist_handle) + *playlist_handle = (mp_playlist_h)playlist; + else + media_playlist_destroy(playlist); + return res; +} + +int mp_media_info_playlist_handle_destroy(mp_playlist_h playlist_handle) +{ + MP_CHECK_VAL(playlist_handle, -1); + return media_playlist_destroy((media_playlist_h)playlist_handle); +} + +int mp_media_info_playlist_delete_from_db(int playlist_id) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + res = media_playlist_delete_from_db(playlist_id); + return res; +} + +int mp_media_info_playlist_add_media(int playlist_id, const char *media_id) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + media_playlist_h playlist = NULL; + + res = media_playlist_get_playlist_from_db(playlist_id, NULL, &playlist); + MP_CHECK_VAL(res == 0, res); + + res = media_playlist_add_media(playlist, media_id); + MP_CHECK_VAL(res == 0, res); + + res = media_playlist_update_to_db(playlist); + MP_CHECK_VAL(res == 0, res); + + media_playlist_destroy(playlist); + + return res; +} + +int mp_media_info_playlist_remove_media(mp_media_info_h playlist, int memeber_id) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(playlist, -1); + + res = media_playlist_remove_media(playlist->h.group, memeber_id); + MP_CHECK_VAL(res == 0, res); + + res = media_playlist_update_to_db(playlist->h.group); + MP_CHECK_VAL(res == 0, res); + + return res; +} + +int mp_media_info_playlist_is_exist(const char *playlist_name, bool *exist) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + filter_h filter = NULL; + char cond[MAX_FILTER_LEN] = {0,}; + int count = 0; + media_filter_create(&filter); + strncat(cond, "((MEDIA_TYPE=3 and MEDIA_COUNT>0) or MEDIA_COUNT=0) and PLAYLIST_NAME = \"", STRNCAT_LEN(cond)); + strncat(cond, playlist_name, STRNCAT_LEN(cond)); + strncat(cond, "\"", STRNCAT_LEN(cond)); + media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_DEFAULT); + res = mp_media_info_group_list_count_w_filter(MP_GROUP_BY_PLAYLIST, filter, &count); + media_filter_destroy(filter); + if(count ==0) + *exist = false; + else + *exist = true; + return res; +} + +int mp_media_info_playlist_unique_name(const char *orig_name, char *unique_name, size_t max_unique_name_length) +{ + startfunc; + bool exist = false; + int i = 1; + + snprintf(unique_name, max_unique_name_length, "%s_001", orig_name); + mp_media_info_playlist_is_exist(unique_name, &exist); + + if (exist) { + while (i < 1000) { + snprintf(unique_name, max_unique_name_length, "%s_%.3d", orig_name, i + 1); + mp_media_info_playlist_is_exist(unique_name, &exist); + if (!exist) { + return 0; + } else { + i++; + } + } + MP_CHECK_VAL(i<1000, -1); + } + return 0; +} + +int mp_media_info_playlist_rename(mp_media_info_h playlist, const char *new_name) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(playlist, -1); + MP_CHECK_VAL(playlist->h.group, -1); + MP_CHECK_VAL(playlist->i.ginfo, -1); + MP_CHECK_VAL(new_name, -1); + MP_CHECK_VAL(playlist->s.group_type == MP_GROUP_BY_PLAYLIST, -1); + + res = media_playlist_set_name((media_playlist_h)playlist->h.group, new_name); + MP_CHECK_VAL(res == 0, res); + + res = media_playlist_update_to_db(playlist->h.group); + MP_CHECK_VAL(res == 0, res); + + IF_FREE(playlist->i.ginfo->main_info); + playlist->i.ginfo->main_info = g_strdup(new_name); + + return res; +} + +int mp_media_info_playlist_get_play_order(mp_media_info_h playlist, int playlist_member_id, int * play_order) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(playlist, -1); + MP_CHECK_VAL(playlist->h.group, -1); + MP_CHECK_VAL(playlist->s.group_type == MP_GROUP_BY_PLAYLIST, -1); + + res = media_playlist_get_play_order(playlist->h.group, playlist_member_id, play_order); + MP_CHECK_VAL(res == 0, res); + + return res; +} + +int mp_media_info_playlist_set_play_order(mp_media_info_h playlist, int playlist_member_id, int play_order) +{ + startfunc; + int res = MEDIA_CONTENT_ERROR_NONE; + + MP_CHECK_VAL(playlist, -1); + MP_CHECK_VAL(playlist->h.group, -1); + MP_CHECK_VAL(playlist->s.group_type == MP_GROUP_BY_PLAYLIST, -1); + + res = media_playlist_set_play_order(playlist->h.group, playlist_member_id, play_order); + MP_CHECK_VAL(res == 0, res); + + res = media_playlist_update_to_db(playlist->h.group); + MP_CHECK_VAL(res == 0, res); + + return res; +} + + diff --git a/src/common/mp-menu.c b/src/common/mp-menu.c index af86866..ea164b4 100755 --- a/src/common/mp-menu.c +++ b/src/common/mp-menu.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,25 +14,28 @@ * limitations under the License. */ - - #include "music.h" #include #include #include "mp-player-debug.h" #include "mp-menu.h" -#include "mp-view-layout.h" #include "mp-util.h" #include "mp-popup.h" #include "mp-play-list.h" +#include "mp-ug-launch.h" #include "mp-item.h" #include "mp-player-drm.h" -#include "mp-playlist-view.h" #include "mp-widget.h" + +#include "mp-setting-ctrl.h" + +#ifndef MP_SOUND_PLAYER +#include "mp-view-layout.h" +#include "mp-playlist-view.h" #include "mp-common.h" #include "mp-view-manager.h" -#include "mp-setting-ctrl.h" +#endif #define MP_MENU_FID "mp_menu_fid" #define MP_MENU_PLAY_LIST_FID "mp_menu_playlist_id" @@ -46,54 +49,46 @@ typedef enum } mp_menu_func_type; -audio_svc_track_type_e -mp_menu_get_track_type_by_group(audio_svc_group_type_e group_type) +mp_track_type_e +mp_menu_get_track_type_by_group(mp_group_type_e group_type) { - audio_svc_track_type_e item_type = AUDIO_SVC_TRACK_ALL; + mp_track_type_e item_type = MP_TRACK_ALL; - if (group_type == AUDIO_SVC_GROUP_BY_ALBUM) - { - item_type = AUDIO_SVC_TRACK_BY_ALBUM; - } - else if (group_type == AUDIO_SVC_GROUP_BY_ARTIST) - { - item_type = AUDIO_SVC_TRACK_BY_ARTIST; - } - else if (group_type == AUDIO_SVC_GROUP_BY_ARTIST_ALBUM) + if (group_type == MP_GROUP_BY_ALBUM) { - item_type = AUDIO_SVC_TRACK_BY_ALBUM; + item_type = MP_TRACK_BY_ALBUM; } - else if (group_type == AUDIO_SVC_GROUP_BY_GENRE) + else if (group_type == MP_GROUP_BY_ARTIST) { - item_type = AUDIO_SVC_TRACK_BY_GENRE; + item_type = MP_TRACK_BY_ARTIST; } - else if (group_type == AUDIO_SVC_GROUP_BY_GENRE_ARTIST) + else if (group_type == MP_GROUP_BY_ARTIST_ALBUM) { - item_type = AUDIO_SVC_TRACK_BY_GENRE; + item_type = MP_TRACK_BY_ALBUM; } - else if (group_type == AUDIO_SVC_GROUP_BY_GENRE_ALBUM) + else if (group_type == MP_GROUP_BY_GENRE) { - item_type = AUDIO_SVC_TRACK_BY_GENRE; + item_type = MP_TRACK_BY_GENRE; } - else if (group_type == AUDIO_SVC_GROUP_BY_GENRE_ARTIST_ALBUM) + else if (group_type == MP_GROUP_BY_YEAR) { - item_type = AUDIO_SVC_TRACK_BY_GENRE; + item_type = MP_TRACK_BY_YEAR; } - else if (group_type == AUDIO_SVC_GROUP_BY_YEAR) + else if (group_type == MP_GROUP_BY_COMPOSER) { - item_type = AUDIO_SVC_TRACK_BY_YEAR; + item_type = MP_TRACK_BY_COMPOSER; } - else if (group_type == AUDIO_SVC_GROUP_BY_COMPOSER) + else if (group_type == MP_GROUP_BY_FOLDER) { - item_type = AUDIO_SVC_TRACK_BY_COMPOSER; + item_type = MP_TRACK_BY_FOLDER; } return item_type; } - +#ifndef MP_SOUND_PLAYER bool -_mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, AudioHandleType * svc_handle, +_mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, mp_media_info_h svc_handle, mp_menu_func_type menu_func) { startfunc; @@ -107,63 +102,66 @@ _mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, Audio int err = -1; int count = 0; int index = 0; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; int playlist_item_count = 0; - AudioHandleType *tracks = NULL; - audio_svc_track_type_e item_type = AUDIO_SVC_TRACK_ALL; + mp_media_list_h tracks = NULL; + mp_track_type_e item_type = MP_TRACK_ALL; item_type = mp_menu_get_track_type_by_group(layout_data->group_type); char *name = NULL; - int size = 0; - ret = audio_svc_group_item_get_val(svc_handle, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); + if ((item_type == MP_TRACK_BY_FOLDER)) + { + ret = mp_media_info_group_get_folder_id(svc_handle, &name); + } + else + { + ret = mp_media_info_group_get_main_info(svc_handle, &name); + } - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, FALSE, "Fail to get value"); + mp_retvm_if(ret != 0, FALSE, "Fail to get value"); mp_retvm_if(name == NULL, FALSE, "Fail to get value"); mp_debug("%s", name); - audio_svc_count_list_item(ad->media_svc_handle, item_type, name, "", "", "", &count); - mp_debug("%d", count); + ret = mp_media_info_list_count(item_type, name, NULL, NULL, 0, &count); + MP_CHECK_EXCEP(ret == 0); - ret = audio_svc_list_item_new(&tracks, count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, FALSE, "Fail to audio_svc_list_item_new"); - - ret = audio_svc_get_list_item(ad->media_svc_handle, item_type, name, NULL, NULL, NULL, 0, count, tracks); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + ret = mp_media_info_list_create(&tracks, item_type, name, NULL, NULL, 0, 0, count); + MP_CHECK_EXCEP(ret == 0); +#ifdef MP_PLAYLIST_MAX_ITEM_COUNT if (menu_func == MP_MENU_FUNC_ADD_TO_LIST) { - audio_svc_count_playlist_item(ad->media_svc_handle, plst_id, NULL, NULL, &playlist_item_count); + mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, plst_id, &playlist_item_count); if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT) { return false; } } +#endif for (index = 0; index < count; ++index) { char *fid = 0; - int size = 0; char *path = NULL; + mp_media_info_h item; - mp_debug("%d", index); + item = mp_media_info_list_nth_item(tracks, index); + mp_media_info_get_media_id(item, &fid); + mp_media_info_get_file_path(item, &path); - audio_svc_list_item_get_val(tracks, index, AUDIO_SVC_LIST_ITEM_AUDIO_ID, &fid, &size, - AUDIO_SVC_LIST_ITEM_PATHNAME, &path, &size, -1); if (menu_func == MP_MENU_FUNC_ADD_TO_LIST) { - if (playlist_item_count >= 1000) +#ifdef MP_PLAYLIST_MAX_ITEM_COUNT + if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT) { - return false; - } - err = audio_svc_add_item_to_playlist(ad->media_svc_handle, plst_id, fid); - if (err != AUDIO_SVC_ERROR_NONE) - { - ERROR_TRACE("Error in audio_svc_list_append_item (%d)\n", err); - MP_CHECK_EXCEP(false); + goto mp_exception; } +#endif + err = mp_media_info_playlist_add_media(plst_id, fid); + MP_CHECK_EXCEP(err == 0); playlist_item_count++; } else @@ -175,27 +173,20 @@ _mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, Audio if ((cur_item != NULL) && !g_strcmp0(cur_item->key_id ,fid)) { mp_widget_text_popup(layout_data->view_data->ad, - GET_STR - ("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING")); + GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING")); goto mp_exception; } err = remove(path); - - if (err < 0) - { - ERROR_TRACE("Error in remove (%s)\n", path); - MP_CHECK_EXCEP(false); - } + MP_CHECK_EXCEP(err == 0); } } - - audio_svc_list_item_free(tracks); + mp_media_info_list_destroy(tracks); return true; mp_exception: - audio_svc_list_item_free(tracks); + mp_media_info_list_destroy(tracks); return false; } @@ -204,12 +195,11 @@ mp_menu_add_to_play_list_cancel_create_cb(void *data, Evas_Object * obj, void *e { struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); - MP_CHECK(ad->library); mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress"); Evas_Object *current_navi_bar = NULL; - current_navi_bar = ad->library->cur_view; + current_navi_bar = ad->naviframe; MP_CHECK(current_navi_bar); view_data_t *view_data = evas_object_data_get(current_navi_bar, "view_data"); @@ -223,12 +213,11 @@ mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *eve DEBUG_TRACE_FUNC(); struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); - MP_CHECK(ad->library); mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress"); Evas_Object *current_navi_bar = NULL; - current_navi_bar = ad->library->cur_view; + current_navi_bar = ad->naviframe; MP_CHECK(current_navi_bar); int plst_uid = -1; @@ -243,7 +232,7 @@ mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *eve } converted_name = elm_entry_markup_to_utf8(name); - plst_uid = mp_util_create_playlist(ad, converted_name); + plst_uid = mp_util_create_playlist(ad, converted_name, NULL); IF_FREE(converted_name); if (plst_uid < 0) return; @@ -267,7 +256,7 @@ mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *eve if (category == MP_LAYOUT_TRACK_LIST) { - result = mp_util_add_to_playlist_by_key(ad->media_svc_handle, plst_uid, ad->fid); + result = mp_util_add_to_playlist_by_key(plst_uid, ad->fid); } else if (category == MP_LAYOUT_GROUP_LIST) { @@ -285,10 +274,14 @@ mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *eve else { mp_debug("fail add to play list"); +#ifdef MP_PLAYLIST_MAX_ITEM_COUNT char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"); char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT); mp_util_create_notify(ad, noti_str); IF_FREE(noti_str); +#else + mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD")); +#endif } return; @@ -307,18 +300,16 @@ _mp_menu_add_playlist_create_select_cb(void *data, Evas_Object * obj, void *even MP_CHECK(ad); MP_CHECK(ad->library); - current_navi_bar = ad->library->cur_view; - MP_CHECK(current_navi_bar); + current_navi_bar = ad->naviframe; view_data = evas_object_data_get(current_navi_bar, "view_data"); - new_playlist_name = mp_util_get_new_playlist_name(ad->media_svc_handle); + new_playlist_name = mp_util_get_new_playlist_name(); Evas_Object *create_plst_layout = mp_common_create_editfield_layout(current_navi_bar, ad, new_playlist_name); IF_FREE(new_playlist_name); mp_retm_if(create_plst_layout == NULL, "create_plst_layout is NULL"); mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP); - mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_OPT_ADD_PLAYLIST"), ad); evas_object_show(create_plst_layout); @@ -335,6 +326,9 @@ _mp_menu_add_playlist_create_select_cb(void *data, Evas_Object * obj, void *even ad->group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER); } + if (layout_data->genlist) + mp_util_reset_genlist_mode_item(layout_data->genlist); + mp_popup_destroy(layout_data->ad); endfunc; @@ -346,12 +340,10 @@ _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info) { DEBUG_TRACE_FUNC(); struct appdata *ad = NULL; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; int playlist_id = -1; - AudioHandleType *item_handler = (AudioHandleType *) data; - AudioHandleType *play_list_handle = NULL; - + mp_media_info_h item_handler = data; mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); mp_list_category_t category = MP_LAYOUT_TRACK_LIST; @@ -369,12 +361,14 @@ _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info) } MP_CHECK(ad); - int size = 0; char *playlist_name = NULL; int item_count = 0; - ret = audio_svc_playlist_get_val(item_handler, 0, AUDIO_SVC_PLAYLIST_ID, &playlist_id, - AUDIO_SVC_PLAYLIST_NAME, &playlist_name, &size, -1); - audio_svc_count_playlist_item(ad->media_svc_handle, playlist_id, NULL, NULL, &item_count); + ret = mp_media_info_group_get_main_info(item_handler, &playlist_name); + ret = mp_media_info_group_get_playlist_id(item_handler, &playlist_id); + + mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, &item_count); + +#ifdef MP_PLAYLIST_MAX_ITEM_COUNT if (item_count > MP_PLAYLIST_MAX_ITEM_COUNT) { char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"); @@ -383,20 +377,21 @@ _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info) IF_FREE(noti_str); goto END; } +#endif - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); + mp_retm_if(ret != 0, "Fail to get value"); bool result = false; if (category == MP_LAYOUT_TRACK_LIST) { char *fid = (char *)evas_object_data_get(obj, MP_MENU_FID); - result = mp_util_add_to_playlist_by_key(ad->media_svc_handle, playlist_id, fid); + result = mp_util_add_to_playlist_by_key(playlist_id, fid); IF_FREE(fid); } else if (category == MP_LAYOUT_GROUP_LIST) { - AudioHandleType *group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER); + mp_media_info_h group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER); MP_CHECK(group_item_handler); @@ -416,19 +411,22 @@ _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info) else { mp_debug("fail add to play list"); +#ifdef MP_PLAYLIST_MAX_ITEM_COUNT char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"); char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT); mp_util_create_notify(ad, noti_str); IF_FREE(noti_str); +#else + mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD")); +#endif } +#ifdef MP_PLAYLIST_MAX_ITEM_COUNT END: +#endif - play_list_handle = evas_object_data_get(obj, MP_MENU_POPUP_PLAY_LIST_HANDLER); - - if (play_list_handle) - audio_svc_playlist_free(play_list_handle); - play_list_handle = NULL; + mp_media_list_h list = evas_object_data_get(obj, MP_MENU_POPUP_PLAY_LIST_HANDLER); + mp_media_info_group_list_destroy(list); mp_popup_destroy(ad); return; @@ -440,68 +438,61 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info) { DEBUG_TRACE_FUNC(); - AudioHandleType *handle = (AudioHandleType *) data; + mp_media_info_h handle = data; MP_CHECK(handle); struct appdata *ad = NULL; char *fid = NULL; int ret = 0; - mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + Evas_Object *popup = obj; + mp_layout_data_t *layout_data = evas_object_data_get(popup, "layout_data"); MP_CHECK(layout_data); MP_CHECK_LAYOUT_DATA(layout_data); ad = layout_data->ad; ad->popup_delete = NULL; - if ((int)event_info == MP_POPUP_YES) + mp_evas_object_del(popup); + int response = (int)event_info; + + if (response == MP_POPUP_YES) { bool result = TRUE; if (layout_data->category == MP_LAYOUT_TRACK_LIST) { - fid = mp_util_get_fid_by_handle(layout_data, handle); - if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYLIST) + if (layout_data->track_type == MP_TRACK_BY_PLAYLIST) { - int uid = 0; - audio_svc_playlist_item_get_val(handle, 0, AUDIO_SVC_PLAYLIST_ITEM_UID, &uid, -1); - - ret = audio_svc_remove_item_from_playlist_by_uid(ad->media_svc_handle, layout_data->playlist_id, uid); - if (ret != AUDIO_SVC_ERROR_NONE) - result = false; - else - result = true; + int member_id = 0; + ret = mp_media_info_get_playlist_member_id(handle, &member_id); + mp_media_info_playlist_remove_media(layout_data->playlist_handle, member_id); } - else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_ADDED_TIME) + else if (layout_data->track_type == MP_TRACK_BY_ADDED_TIME) { - ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, AUDIO_SVC_TRACK_DATA_ADDED_TIME, 0, -1); - if (ret != AUDIO_SVC_ERROR_NONE) - result = false; - else - result = true; + ret = mp_media_info_set_added_time(handle, 0); } - else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYED_TIME) + else if (layout_data->track_type == MP_TRACK_BY_FAVORITE) { - ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, AUDIO_SVC_TRACK_DATA_PLAYED_TIME, 0. - 1); - if (ret != AUDIO_SVC_ERROR_NONE) - result = false; - else - result = true; + ret = mp_media_info_set_favorite(handle, false); } - else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYED_COUNT) + else if (layout_data->track_type == MP_TRACK_BY_PLAYED_TIME) { - ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, AUDIO_SVC_TRACK_DATA_PLAYED_COUNT, 0, -1); - if (ret != AUDIO_SVC_ERROR_NONE) - result = false; - else - result = true; + ret = mp_media_info_set_played_time(handle, 0); + } + else if (layout_data->track_type == MP_TRACK_BY_PLAYED_COUNT) + { + ret = mp_media_info_set_played_count(handle, 0); } else { + fid = mp_util_get_fid_by_handle(layout_data, handle); if (MP_FILE_DELETE_ERR_NONE != mp_util_delete_track(ad, fid, NULL, FALSE)) - result = false; - else - result = true; + ret = -1; } + if (ret != 0) + result = false; + else + result = true; } else if (layout_data->category == MP_LAYOUT_GROUP_LIST) { @@ -510,11 +501,11 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info) else if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST) { int plst_id = 0; - ret = audio_svc_playlist_get_val(handle, 0, AUDIO_SVC_PLAYLIST_ID, &plst_id, -1); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); + ret = mp_media_info_group_get_playlist_id(handle, &plst_id); + mp_retm_if(ret != 0, "Fail to get value"); - ret = audio_svc_delete_playlist(ad->media_svc_handle, plst_id); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to delete playlist"); + ret = mp_media_info_playlist_delete_from_db(plst_id); + mp_retm_if(ret != 0, "Fail to delete playlist"); } if (result) @@ -526,8 +517,8 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info) layout_data->item_count--; /* update last view when change album track view or artist track view */ - if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type - || AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) { + if (MP_TRACK_BY_ALBUM == layout_data->track_type + || MP_TRACK_BY_ARTIST == layout_data->track_type) { layout_data->album_delete_flag = TRUE; mp_view_manager_update_list_contents(layout_data->view_data, FALSE); layout_data->album_delete_flag = FALSE; @@ -538,44 +529,28 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info) mp_view_layout_update(layout_data->layout); else { - if (AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) { - int index = -1; - int sub_index = -1; - bool ret_val = FALSE; - /* get group index and sub index when the status is artist album */ - ret_val = mp_common_track_get_aa_index(0, layout_data, it, FALSE); - if (ret_val) { - index = layout_data->selected_group_index; - sub_index = layout_data->selected_album_sub_index; + if (MP_TRACK_BY_ARTIST == layout_data->track_type) { + if(!elm_genlist_item_parent_get(elm_genlist_item_next_get(it)) + && !elm_genlist_item_parent_get(elm_genlist_item_prev_get(it))) + { + elm_object_item_del(elm_genlist_item_parent_get(it)); } - DEBUG_TRACE("index=%d, sub_index=%d, ret_val=%d", index, sub_index, ret_val); - if(ret_val) { - --layout_data->aa_item_count[index]; - if (layout_data->aa_item_count[index] < 1) { - /* delete group title if this album have no item */ - elm_object_item_del(layout_data->aa_group[index]); - } else { - /* update group title */ - elm_genlist_item_item_class_update(layout_data->aa_group[index], - layout_data->aa_group_itc); - } + else + { + elm_genlist_item_update(elm_genlist_item_parent_get(it)); } - } else if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) { + } else if (MP_TRACK_BY_ALBUM == layout_data->track_type) { /* update group title */ - elm_genlist_item_item_class_update(layout_data->album_group, - layout_data->album_group_itc); + elm_genlist_item_update(layout_data->album_group); } elm_object_item_del(it); layout_data->is_item_del = true; + } } MP_CHECK(layout_data->view_data); - if(layout_data->category == MP_LAYOUT_TRACK_LIST - && layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST) - mp_util_create_notify(layout_data->ad, GET_SYS_STR("IDS_COM_POP_REMOVED")); - else - mp_util_create_notify(layout_data->ad, GET_SYS_STR("IDS_COM_POP_DELETED")); + mp_util_create_notify(layout_data->ad, GET_SYS_STR("IDS_COM_POP_DELETED")); } else mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING")); @@ -583,6 +558,400 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info) } } +#endif + +int +_mp_menu_set_isf_entry(mp_layout_data_t * layout_data) +{ + + char *init_str = NULL; + + init_str = elm_entry_utf8_to_markup(layout_data->old_name); + + + if (init_str) + { + elm_entry_entry_set(layout_data->isf_entry, init_str); + g_free(init_str); + init_str = NULL; + } + else + { + DEBUG_TRACE("+++++++ the init str for entry is empty!"); + elm_entry_entry_set(layout_data->isf_entry, ""); + } + return 0; +} + +void +mp_menu_share_list_select_cb(void *data, Evas_Object * obj, void *event_info) +{ + mp_layout_data_t *layout_data = (mp_layout_data_t *) data; + + MP_CHECK(layout_data); + MP_CHECK_LAYOUT_DATA(layout_data); + + const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info); + + if (label) + { + GString *path = NULL; + char *path_name = NULL; + char *fmt = NULL; + + if (g_strcmp0(label, BLUETOOTH_SYS) == 0 || g_strcmp0(label, NFC_SYS) == 0) + fmt = "?%s"; + else if ( !g_strcmp0(label, EMAIL_SYS) ||!g_strcmp0(label, MESSAGE_SYS)) + fmt = "\n%s"; +#ifdef MP_FEATURE_WIFI_SHARE + else if (g_strcmp0(label, WIFI_SYS) == 0) + fmt = "|%s"; +#endif + else + { + ERROR_TRACE("not available"); + return; + } + + mp_retm_if(layout_data->genlist == NULL, "genlist is NULL"); + + Elm_Object_Item *first_item = elm_genlist_first_item_get(layout_data->genlist); + MP_CHECK(first_item); + + Elm_Object_Item *current_item = NULL; + Elm_Object_Item *next_item = NULL; + mp_genlist_item_data_t *gl_item = NULL; + int i = 0; + + if (layout_data->checked_count < 1) + { + ERROR_TRACE("There is no seleted Item"); + return; + } + + MP_GENLIST_CHECK_FOREACH_SAFE(first_item, current_item, next_item, gl_item) + { + if(elm_genlist_item_select_mode_get(current_item) == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) + continue; + + if (gl_item->checked) + { + mp_media_info_h item = (gl_item->handle); + MP_CHECK(item); + + if (item) + { + + int ret = 0; + ret = mp_media_info_get_file_path(item, &path_name); + if (ret != 0) + { + DEBUG_TRACE("Fail to get file path... "); + continue; + } + + if (path_name) + { + if (path == NULL) + { + path = g_string_new(path_name); + } + else + { + g_string_append_printf(path, fmt, path_name); + } + } + else + { + ERROR_TRACE("path name is NULL"); + continue; + } + + + } + else + { + ERROR_TRACE("item_data is NULL"); + return; + } + i++; + } + } + + if (path && path->str) + { + DEBUG_TRACE("path is [%s]", path->str); + + if (g_strcmp0(label, EMAIL_SYS) == 0) + mp_ug_email_attatch_file(path->str, layout_data->ad); + else if(g_strcmp0(label, MESSAGE_SYS) == 0) + mp_ug_message_attatch_file(path->str, layout_data->ad); + else if(g_strcmp0(label, BLUETOOTH_SYS) == 0) + mp_ug_bt_attatch_file(path->str, i, layout_data->ad); +#ifdef MP_FEATURE_WIFI_SHARE + else if(g_strcmp0(label, WIFI_SYS) == 0) + mp_ug_wifi_attatch_file(path->str, i, layout_data->ad); +#endif + g_string_free(path, TRUE); + } + else + { + ERROR_TRACE("path is NULL"); + } + } + + mp_popup_destroy(layout_data->ad); +} + +void +mp_menu_share_select_cb(void *data, Evas_Object * obj, void *event_info) +{ + char *path = NULL; //do not free + struct appdata *ad = NULL; + music_list_item *item = NULL; + + const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info); + mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + + if (layout_data) + { + MP_CHECK_LAYOUT_DATA(layout_data); + mp_media_info_h handle = NULL; + handle = data; + ad = layout_data->ad; + path = mp_util_get_path_by_handle(layout_data, handle); + MP_CHECK(path); + + mp_debug("path =%s", path); + } + else + { + ad = data; + MP_CHECK(ad); + + item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK(item); + + path = item->filename; + } + + if (label) + { + DEBUG_TRACE("%s selected", label); + + if (g_strcmp0(label, BLUETOOTH_SYS) == 0) + { + mp_ug_bt_attatch_file(path, 1, ad); + } + else if (g_strcmp0(label, EMAIL_SYS) == 0) + { + mp_ug_email_attatch_file(path, ad); + } + else if (g_strcmp0(label, MESSAGE_SYS) == 0) + mp_ug_message_attatch_file(path, ad); +#ifdef MP_FEATURE_WIFI_SHARE + else if (g_strcmp0(label, WIFI_SYS) == 0) + mp_ug_wifi_attatch_file(path, 1, ad); +#endif + } + + mp_popup_destroy(ad); +} + +static int +_mp_menu_set_caller_rington(char *path) +{ + int ret = -1; + bool is_drm = FALSE; + char *prev_ring_tone_path = NULL; + + //drm check.. + prev_ring_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR); + if (prev_ring_tone_path && mp_drm_file_right(prev_ring_tone_path)) + { + mp_drm_request_setas_ringtone(prev_ring_tone_path, SETAS_REQUEST_UNREGISTER); + free(prev_ring_tone_path); + } + + if (mp_drm_file_right(path)) + { + if (!mp_drm_request_setas_ringtone(path, SETAS_REQUEST_CHECK_STATUS)) + return -1; + is_drm = true; + } + + ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, path); + + if (is_drm) + mp_drm_request_setas_ringtone(path, SETAS_REQUEST_REGISTER); + + return ret; + +} + +void +mp_menu_set_as_select_cb(void *data, Evas_Object * obj, void *event_info) +{ + int ret = 0; + char *path = NULL; //do not free + struct appdata *ad = NULL; + music_list_item *item = NULL; + + const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info); + mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + + if (layout_data) + { + MP_CHECK_LAYOUT_DATA(layout_data); + mp_media_info_h handle = NULL; + handle = data; + ad = layout_data->ad; + path = mp_util_get_path_by_handle(layout_data, handle); + } + else + { + ad = data; + MP_CHECK(ad); + + item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK(item); + + path = item->filename; + } + + if (label) + { + DEBUG_TRACE("%s selected", label); + if (g_strcmp0(label, GET_STR(CALLER_RINGTONE)) == 0) + { + mp_ug_contact_user_sel(path, ad); + } + else if (g_strcmp0(label, GET_STR(CALL_RINGTONE)) == 0) + { + char *popup_txt = NULL; + + DEBUG_TRACE("path =%s", path); + + ret = _mp_menu_set_caller_rington(path); + + if (!ret) + popup_txt = GET_STR("IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"); + else + popup_txt = GET_STR("IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"); + + mp_widget_text_popup(ad, popup_txt); + + } + } + + mp_popup_destroy(ad); + + return; +} + +void +mp_menu_share_cb(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE(""); + + if (data == NULL) + return; + struct appdata *ad = NULL; + + Evas_Object *share_popup = NULL; + Evas_Object *genlist = NULL; + + mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + + char *file_name = NULL; + + if (layout_data) + { + MP_CHECK_LAYOUT_DATA(layout_data); + mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress"); + ad = layout_data->ad; + + mp_media_info_h handle = NULL; + handle = data; + ad = layout_data->ad; + file_name = mp_util_get_path_by_handle(layout_data, handle); + + if (mp_drm_check_foward_lock(file_name)) + { + mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE")); + return; + } + + share_popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SHARE, data, ad); + MP_CHECK(share_popup); + genlist = evas_object_data_get(share_popup, "genlist"); + evas_object_data_set(genlist, "layout_data", layout_data); + + } + else + { + ad = data; + mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress"); + music_list_item *item = mp_play_list_get_current_item(ad->playing_list); + + MP_CHECK(item); + + mp_debug("excuete by list view %s", item->filename); + + if (mp_drm_check_foward_lock(item->filename)) + { + mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE")); + return; + } + + share_popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SHARE, data, ad); + MP_CHECK(share_popup); + genlist = evas_object_data_get(share_popup, "genlist"); + } + + return; + +} + +void +mp_menu_set_cb(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE(""); + + if (data == NULL) + return; + struct appdata *ad = NULL; + + mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + + if (layout_data) + { + MP_CHECK_LAYOUT_DATA(layout_data); + ad = layout_data->ad; + } + else + ad = data; + + mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress"); + + Evas_Object *popup; + + if (layout_data) + popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SET_AS, data, ad); + else + popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME, data, ad); + + if (layout_data) + { + Evas_Object *genlist = evas_object_data_get(popup, "genlist"); + evas_object_data_set(genlist, "layout_data", layout_data); + } + + return; + +} + +#ifndef MP_SOUND_PLAYER void mp_menu_delete_cb(void *data, Evas_Object * obj, void *event_info) { @@ -594,20 +963,21 @@ mp_menu_delete_cb(void *data, Evas_Object * obj, void *event_info) MP_CHECK(layout_data); MP_CHECK_LAYOUT_DATA(layout_data); - AudioHandleType *handle = NULL; - handle = (AudioHandleType *) data; + mp_media_info_h handle = NULL; + handle = data; ad = layout_data->ad; - Evas_Object *popup = elm_popup_add(ad->win_main); + Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, handle, _mp_menu_excute_delete_cb, ad); ad->popup_delete = popup; evas_object_data_set(popup, "layout_data", layout_data); evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q")); - mp_popup_set_response_cb(popup, _mp_menu_excute_delete_cb, handle); - mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_YES"), MP_POPUP_YES); - mp_popup_button_set(popup, "button2", GET_SYS_STR("IDS_COM_SK_NO"), MP_POPUP_NO); + + elm_object_text_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q")); + + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_BODY_DELETE"), MP_POPUP_YES); + mp_popup_button_set(popup, MP_POPUP_BTN_2, GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_POPUP_NO); evas_object_show(popup); } @@ -618,7 +988,7 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info) { DEBUG_TRACE_FUNC(); - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); music_list_item *item = NULL; @@ -627,7 +997,7 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info) struct appdata *ad = NULL; - AudioHandleType *handle = NULL; + mp_media_info_h handle = NULL; Evas_Object *popup = NULL; @@ -651,7 +1021,7 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info) { evas_object_data_set(genlist, "layout_data", layout_data); - handle = (AudioHandleType *) data; + handle = data; if (layout_data->category == MP_LAYOUT_TRACK_LIST) { @@ -659,8 +1029,9 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info) evas_object_data_set(genlist, MP_MENU_FID, (void *)fid); //set request fid } else - evas_object_data_set(genlist, MP_MENU_GROUP_ITEM_HANDLER, (void *)handle); //set group item handler - + { + evas_object_data_set(genlist, MP_MENU_GROUP_ITEM_HANDLER, handle); //set group item handler + } evas_object_data_set(genlist, "layout_data", layout_data); } else @@ -677,35 +1048,32 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info) mp_genlist_popup_item_append(popup, GET_STR("IDS_MUSIC_OPT_CREATE_PLAYLIST"), NULL, _mp_menu_add_playlist_create_select_cb, ad); - err = audio_svc_count_playlist(ad->media_svc_handle, "", "", &count); + err = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count); - if ((err != AUDIO_SVC_ERROR_NONE) || (count < 0)) + if ((err != 0) || (count < 0)) { - ERROR_TRACE("Error in audio_svc_list_get_count (%d)\n", err); + ERROR_TRACE("Error in mp_media_info_group_list_count (%d)\n", err); return; } if (count) { - AudioHandleType *playlists = NULL; //must be free - ret = audio_svc_playlist_new(&playlists, count); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to make new playlist"); - evas_object_data_set(popup, MP_MENU_POPUP_PLAY_LIST_HANDLER, (void *)playlists); //set request handle id for support group item + mp_media_list_h playlists = NULL; //must be free - ret = audio_svc_get_playlist(ad->media_svc_handle, "", "", 0, count, playlists); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get playlist"); + ret = mp_media_info_group_list_create(&playlists, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count); + mp_retm_if(ret != 0, "Fail to get playlist"); + evas_object_data_set(popup, MP_MENU_POPUP_PLAY_LIST_HANDLER, (void *)playlists); //set request handle id for support group item for (i = 0; i < count; i++) { /* it should be released in a proper place */ - AudioHandleType *plst = NULL; + mp_media_info_h plst = NULL; char *name = NULL; - int size; - ret = audio_svc_playlist_get_item(playlists, i, &plst); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get item"); + plst = mp_media_info_group_list_nth_item(playlists, i); + mp_retm_if(!plst, "Fail to get item"); - ret = audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_NAME, &name, &size, -1); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); + ret = mp_media_info_group_get_main_info(plst, &name); + mp_retm_if(ret != 0, "Fail to get value"); mp_genlist_popup_item_append(popup, name, NULL, _mp_menu_add_playlist_select_cb, (void *)plst); } @@ -720,4 +1088,5 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info) mp_evas_object_del(popup); return; } +#endif diff --git a/src/common/mp-play.c b/src/common/mp-play.c index 1547fe0..abd130c 100755 --- a/src/common/mp-play.c +++ b/src/common/mp-play.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,30 +14,30 @@ * limitations under the License. */ - - -#include -#include #include +#include #include "music.h" +#include "mp-ta.h" #include "mp-player-control.h" #include "mp-player-mgr.h" -#include #include "mp-player-drm.h" #include "mp-play-view.h" #include "mp-item.h" -#include "mp-common.h" #include "mp-play-list.h" -#include "mp-library.h" #include "mp-widget.h" #include "mp-app.h" #include "mp-streaming-mgr.h" #include "mp-util.h" #include "mp-player-debug.h" -#include - +#include "mp-minicontroller.h" #include "mp-play.h" +#include "mp-setting-ctrl.h" + +#ifndef MP_SOUND_PLAYER +#include "mp-common.h" +#include "mp-library.h" +#endif static bool _mp_play_item_set(void *data, char * fid) @@ -52,42 +52,18 @@ _mp_play_item_set(void *data, char * fid) return true; } -static Eina_Bool -_mp_play_set_pos(void *data) -{ - struct appdata *ad = (struct appdata *)data; - MP_CHECK_FALSE(ad); - - char play_time[16] = { 0, }; - int pos = mp_player_mgr_get_position(); - int duration = mp_player_mgr_get_duration(); - snprintf(play_time, sizeof(play_time), "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pos/1000)); - - if(vconf_set_str(MP_EXT_CUR_POS, play_time)) - WARN_TRACE("fail to set time..."); - if(duration>0) - { - if(vconf_set_dbl(MP_EXT_CUR_PROGRESS_POS, pos/(double)duration)) - WARN_TRACE("fail to ratio"); - } - else - vconf_set_dbl(MP_EXT_CUR_PROGRESS_POS, 0.0); - - return EINA_TRUE; -} - bool mp_play_current_file(void *data) { startfunc; struct appdata *ad = data; MP_CHECK_FALSE(ad); + MP_CHECK_FALSE(ad->player_state == PLAY_STATE_READY); - if (ad->player_state != PLAY_STATE_READY) - return FALSE; music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); MP_CHECK_FALSE(current_item); + MP_TA_ACUM_ITEM_BEGIN(" mp_player_mgr_play", 0); if(!ad->paused_by_user) { if (!mp_player_mgr_play(ad)) @@ -100,13 +76,35 @@ mp_play_current_file(void *data) { DEBUG_TRACE("stay in pause state.."); } + MP_TA_ACUM_ITEM_END(" mp_player_mgr_play", 0); + + if(ad->is_focus_out) + { + if(!ad->win_minicon) + mp_minicontroller_create(ad); + else + mp_minicontroller_show(ad); + } + if (ad->b_minicontroller_show) + mp_minicontroller_update(ad); + MP_TA_ACUM_ITEM_BEGIN(" mp_setting_set_albumart_path", 0); mp_setting_set_albumart_path(current_item->albumart); + MP_TA_ACUM_ITEM_END(" mp_setting_set_albumart_path", 0); - if (!mp_item_update_db(ad->media_svc_handle, current_item->key_id)) + MP_TA_ACUM_ITEM_BEGIN(" mp_item_update_db", 0); +#ifdef MP_FEATURE_ALLSHARE + if (ad->playing_list->list_type != MP_PLST_TYPE_MSS) { - WARN_TRACE("Error when update db"); +#endif + if (!mp_item_update_db(current_item->key_id)) + { + WARN_TRACE("Error when update db"); + } +#ifdef MP_FEATURE_ALLSHARE } +#endif + MP_TA_ACUM_ITEM_END(" mp_item_update_db", 0); return TRUE; } @@ -132,11 +130,14 @@ mp_play_ready(void *data) struct appdata *ad = data; mp_play_view_update_progressbar(ad); + MP_TA_ACUM_ITEM_BEGIN(" mp_play_current_file", 0); if (!mp_play_current_file(ad)) return FALSE; + MP_TA_ACUM_ITEM_END(" mp_play_current_file", 0); +#ifndef MP_SOUND_PLAYER mp_library_now_playing_set(ad); - +#endif mp_setting_save_now_playing(ad); music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); @@ -154,10 +155,12 @@ mp_play_new_file_real(void *data, bool check_drm) struct appdata *ad = data; mp_retvm_if(ad == NULL, FALSE, "appdata is NULL"); + MP_TA_ACUM_ITEM_BEGIN(" mp_player_control_ready_new_file", 0); if (!mp_player_control_ready_new_file(ad, check_drm)) { return FALSE; } + MP_TA_ACUM_ITEM_END(" mp_player_control_ready_new_file", 0); return TRUE; } @@ -173,7 +176,7 @@ mp_play_item_play(void *data, char *fid) if (ad->playing_list->current_item) { - if (g_strcmp0(ad->latest_playing_key_id, fid)) + if (g_strcmp0(ad->latest_playing_key_id, fid)) //playing a new file { mp_debug("current key = %s it->key id = %s\n", ad->latest_playing_key_id, fid); @@ -282,6 +285,10 @@ mp_play_next_file(void *data, bool forced) if (ad->playing_list->list_type == MP_PLST_TYPE_PATH) { +#ifdef MP_SOUND_PLAYER + if (ad->is_focus_out) + mp_app_exit(ad); +#endif return; } else @@ -308,21 +315,35 @@ mp_play_start(void *data) if (ad->playing_view) { - ad->playing_view->flick_direction = 0; + ad->playing_view->flick_direction = 0; //reset flick_direction } - if(!ad->live_pos_timer) - ad->live_pos_timer = ecore_timer_add(1, _mp_play_set_pos, ad); + music_list_item * item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK(item); ad->player_state = PLAY_STATE_PLAYING; + vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PLAY); - mp_drm_start_consumption(mp_play_list_get_current_item(ad->playing_list)->filename); - pm_lock_state(LCD_OFF, STAY_CUR_STATE, 0); + mp_util_sleep_lock_set(TRUE); mp_play_control_visible_set(ad, FALSE);; + if(ad->is_focus_out) + { + if(!ad->win_minicon) + mp_minicontroller_create(ad); + else + mp_minicontroller_show(ad); + } + if (ad->b_minicontroller_show) + mp_minicontroller_update(ad); + +#ifdef MP_SOUND_PLAYER + mp_play_view_progress_timer_thaw(ad); +#else mp_view_manager_thaw_progress_timer(ad); +#endif - mp_util_grab_mm_keys(ad); + mp_app_grab_mm_keys(ad); endfunc; } @@ -334,16 +355,22 @@ mp_play_pause(void *data) struct appdata *ad = data; mp_retm_if(ad == NULL, "appdata is NULL"); - mp_ecore_timer_del(ad->live_pos_timer); - ad->player_state = PLAY_STATE_PAUSED; - vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PAUSE); - mp_drm_pause_consumption(); - pm_unlock_state(LCD_OFF, PM_SLEEP_MARGIN); + + if (!ad->paused_by_other_player) + vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PAUSE); + mp_util_sleep_lock_set(FALSE); mp_play_control_visible_set(ad, TRUE); + if (ad->b_minicontroller_show) + mp_minicontroller_update(ad); + mp_play_view_update_progressbar(ad); +#ifdef MP_SOUND_PLAYER + mp_play_view_progress_timer_freeze(ad); +#else mp_view_manager_freeze_progress_timer(ad); +#endif endfunc; } @@ -354,18 +381,26 @@ mp_play_stop(void *data) struct appdata *ad = data; mp_retm_if(ad == NULL, "appdata is NULL"); - mp_ecore_timer_del(ad->live_pos_timer); - ad->player_state = PLAY_STATE_STOP; if (!ad->freeze_indicator_icon) { - vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_STOP); + if (!mp_util_is_other_player_playing()) + vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_STOP); + mp_minicontroller_destroy(ad); + } + else + { + if (ad->b_minicontroller_show) + mp_minicontroller_update(ad); } - vconf_set_dbl(MP_EXT_CUR_PROGRESS_POS, 0.0); - mp_drm_stop_consumption(); - mp_drm_set_consumption(FALSE); - pm_unlock_state(LCD_OFF, PM_SLEEP_MARGIN); + mp_util_sleep_lock_set(FALSE); + +#ifdef MP_SOUND_PLAYER + ad->music_pos = 0; + mp_play_view_update_progressbar(ad); + mp_play_view_progress_timer_freeze(ad); +#else if (mp_view_manager_is_play_view(ad)) { ad->music_pos = 0; @@ -373,6 +408,7 @@ mp_play_stop(void *data) } else mp_view_manager_freeze_progress_timer(ad); +#endif mp_play_control_visible_set(ad, TRUE); endfunc; @@ -385,18 +421,29 @@ mp_play_resume(void *data) struct appdata *ad = data; mp_retm_if(ad == NULL, "appdata is NULL"); - if(!ad->live_pos_timer) - ad->live_pos_timer = ecore_timer_add(1, _mp_play_set_pos, ad); - ad->player_state = PLAY_STATE_PLAYING; + vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PLAY); - mp_drm_resume_consumption(); - pm_lock_state(LCD_OFF, STAY_CUR_STATE, 0); + mp_util_sleep_lock_set(TRUE); mp_play_control_visible_set(ad, FALSE); + if(ad->is_focus_out) + { + if(!ad->win_minicon) + mp_minicontroller_create(ad); + else + mp_minicontroller_show(ad); + } + if (ad->b_minicontroller_show) + mp_minicontroller_update(ad); +#ifdef MP_SOUND_PLAYER + mp_play_view_progress_timer_thaw(ad); +#else mp_view_manager_thaw_progress_timer(ad); - mp_util_grab_mm_keys(ad); +#endif + mp_app_grab_mm_keys(ad); + endfunc; } @@ -431,9 +478,10 @@ mp_play_stop_and_updateview(void *data, bool mmc_removed) } mp_play_list_clear_play_list(&ad->playing_list); - +#ifndef MP_SOUND_PLAYER mp_library_now_playing_hide(ad); mp_library_update_view(ad); +#endif return; } diff --git a/src/common/mp-ta.c b/src/common/mp-ta.c new file mode 100755 index 0000000..c223760 --- /dev/null +++ b/src/common/mp-ta.c @@ -0,0 +1,590 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mp-ta.h" + +#define MP_TA_BUFF_SIZE 256 + +#ifdef ENABLE_MP_TA +// internal func. +static void __free_cps(void); +static int __get_cp_index(char *name); + +static void __free_accums(void); +static int __get_accum_index(char *name); + +// global var. +mp_ta_checkpoint **mm_g_cps = NULL; +static int mm_g_cp_index = 0; + +mp_ta_accum_item **mm_g_accums = NULL; +static int mm_g_accum_index = 0; +static int mm_g_accum_longest_name = 0; +static unsigned long mm_g_accum_first_time = 0xFFFFFFFF; // jmlee +static int mm_g_enable = 1; + +int +mp_ta_init(void) +{ + if(!ecore_file_exists(MP_TA_ENABLE_FILE)) + return -1; + + if (mm_g_accums) + return 0; + + mm_g_cps = (mp_ta_checkpoint **) malloc(MP_TA_MAX_CHECKPOINT * sizeof(mp_ta_checkpoint *)); + if (!mm_g_cps) + return -1; + + mm_g_accums = (mp_ta_accum_item **) malloc(MP_TA_MAX_CHECKPOINT * sizeof(mp_ta_accum_item *)); + if (!mm_g_accums) + return -1; + + mm_g_accum_first_time = 0xFFFFFFFF; + + return 0; +} + +int +mp_ta_release(void) +{ + if (!mm_g_accums) + return 0; + + __free_cps(); + __free_accums(); + + mm_g_accum_first_time = 0xFFFFFFFF; + + return 0; +} + +void +mp_ta_set_enable(int enable) +{ + printf("MP_TA : setting enable to %d\n", enable); + mm_g_enable = enable; +} + +int +mp_ta_get_numof_checkpoints() +{ + return mm_g_cp_index; +} + +char * +mp_ta_fmt(const char *fmt, ...) +{ + static char ta_buf[512]; + va_list args; + + memset(ta_buf, '\0', 512); + + va_start(args, fmt); + vsnprintf(ta_buf, 512, fmt, args); + va_end(args); + + return ta_buf; +} + + +int +mp_ta_add_checkpoint(char *name, int show, char *filename, int line) +{ + mp_ta_checkpoint *cp = NULL; + struct timeval t; + + if (!mm_g_enable) + return -1; + + if (!mm_g_accums) + return 0; + + if (mm_g_cp_index == MP_TA_MAX_CHECKPOINT) + return -1; + + if (!name) + return -1; + + if (strlen(name) == 0) + return -1; + + cp = (mp_ta_checkpoint *) malloc(sizeof(mp_ta_checkpoint)); + if (!cp) + return -1; + + int name_len = strlen(name); + cp->name = (char *)malloc(name_len + 1); + if (!cp->name) + { + free(cp); + return -1; + } + strncpy(cp->name, name, name_len); + cp->name[name_len] = 0; + if (show) + printf("[CHECK-POINT] %s...(%s:%d)\n", name, filename, line); + + gettimeofday(&t, NULL); + cp->timestamp = t.tv_sec * 1000000L + t.tv_usec; +#ifdef MP_TA_UNIT_MSEC + cp->timestamp = (cp->timestamp >= 1000) ? cp->timestamp / 1000 : 0; +#endif + + mm_g_cps[mm_g_cp_index] = cp; + + mm_g_cp_index++; + + return 0; +} + +void +mp_ta_show_checkpoints(void) +{ + int i = 0; + if (!mm_g_accums) + return; + + printf("BEGIN RESULT ============================\n"); + for (i = 0; i < mm_g_cp_index; i++) + { + printf("[%d] %s : %ld us.\n", i, mm_g_cps[i]->name, mm_g_cps[i]->timestamp); + } + printf("END RESULT ============================\n"); +} + +void +mp_ta_show_diff(char *name1, char *name2) +{ + if (!mm_g_accums) + return; + + + printf("Time takes from [%s] to [%s] : %ld us.\n", name1, name2, mp_ta_get_diff(name1, name2)); +} + +unsigned long +mp_ta_get_diff(char *name1, char *name2) +{ + int cp1, cp2; + + if (!mm_g_accums) + return 0; + + + // fail if bad param. + if (!name1 || !name2) + return -1; + + // fail if same. + if (strcmp(name1, name2) == 0) + return -1; + + // get index + if ((cp1 = __get_cp_index(name1)) == -1) + return -1; + + if ((cp2 = __get_cp_index(name2)) == -1) + return -1; + + // NOTE : + // return value must be positive value. + // bcz the value of higher index of mm_g_cps always higher than lower one. + return mm_g_cps[cp2]->timestamp - mm_g_cps[cp1]->timestamp; + +} + +static int +__get_cp_index(char *name) +{ + int i; + + assert(name); + + // find index + for (i = 0; i < mm_g_cp_index; i++) + { + if (strcmp(name, mm_g_cps[i]->name) == 0) + return i; + } + + return -1; +} + +static int +__get_accum_index(char *name) +{ + int i; + + assert(name); + + // find index + for (i = 0; i < mm_g_accum_index; i++) + { + if (strcmp(name, mm_g_accums[i]->name) == 0) + return i; + } + + return -1; +} + +static void +__free_cps(void) +{ + int i = 0; + + if (!mm_g_cps) + return; + + for (i = 0; i < mm_g_cp_index; i++) + { + if (mm_g_cps[i]) + { + if (mm_g_cps[i]->name) + free(mm_g_cps[i]->name); + + free(mm_g_cps[i]); + + mm_g_cps[i] = NULL; + } + } + + free(mm_g_cps); + mm_g_cps = NULL; + + mm_g_cp_index = 0; +} + +static void +__free_accums(void) +{ + int i = 0; + + if (!mm_g_accums) + return; + + for (i = 0; i < mm_g_accum_index; i++) + { + if (mm_g_accums[i]) + { + if (mm_g_accums[i]->name) + free(mm_g_accums[i]->name); + + free(mm_g_accums[i]); + + mm_g_accums[i] = NULL; + } + } + + mm_g_accum_index = 0; + mm_g_accum_longest_name = 0; + + free(mm_g_accums); + mm_g_accums = NULL; +} + + +int +mp_ta_accum_item_begin(char *name, int show, char *filename, int line) +{ + mp_ta_accum_item *accum = NULL; + int index = 0; + int name_len = 0; + struct timeval t; + + if (!mm_g_enable) + return -1; + + if (!mm_g_accums) + return 0; + + + + if (mm_g_accum_index == MP_TA_MAX_ACCUM) + return -1; + + if (!name) + return -1; + + name_len = strlen(name); + if (name_len == 0) + return -1; + + // if 'name' is new one. create new item. + if ((index = __get_accum_index(name)) == -1) + { + accum = (mp_ta_accum_item *) malloc(sizeof(mp_ta_accum_item)); + if (!accum) + return -1; + + // clear first. + memset(accum, 0, sizeof(mp_ta_accum_item)); + accum->elapsed_min = 0xFFFFFFFF; + + accum->name = (char *)malloc(name_len + 1); + if (!accum->name) + { + free(accum); + return -1; + } + strncpy(accum->name, name, name_len); + accum->name[name_len] = 0; + // add it to list. + mm_g_accums[mm_g_accum_index] = accum; + mm_g_accum_index++; + + if (mm_g_accum_longest_name < name_len) + mm_g_accum_longest_name = name_len; + + } + else + { + accum = mm_g_accums[index]; + } + + // verify pairs of begin, end. + if (accum->on_estimate) + { + printf("[%s] is not 'end'ed!\n", accum->name); + accum->num_unpair++; + return -1; + } + + // get timestamp + gettimeofday(&t, NULL); + accum->timestamp = t.tv_sec * 1000000L + t.tv_usec; +#ifdef MP_TA_UNIT_MSEC + accum->timestamp = (accum->timestamp >= 1000) ? accum->timestamp / 1000 : 0; +#endif + accum->on_estimate = 1; + + if (accum->first_start == 0) + { // assum that timestamp never could be zero. + accum->first_start = accum->timestamp; + + if (mm_g_accum_first_time > accum->first_start) + mm_g_accum_first_time = accum->first_start; + } + + if (show) + printf("[ACCUM BEGIN] %s : %ld ---(%s:%d)\n", name, accum->timestamp, filename, line); + + accum->num_calls++; + + return 0; +} + +int +mp_ta_accum_item_end(char *name, int show, char *filename, int line) +{ + mp_ta_accum_item *accum = NULL; + unsigned int tval = 0; + int index = 0; + struct timeval t; + + if (!mm_g_enable) + return -1; + + if (!mm_g_accums) + return 0; + + + // get time first for more accuracy. + gettimeofday(&t, NULL); + + if (mm_g_accum_index == MP_TA_MAX_ACCUM) + return -1; + + if (!name) + return -1; + + if (strlen(name) == 0) + return -1; + + // varify the 'name' is already exist. + if ((index = __get_accum_index(name)) == -1) + { + printf("[%s] is not added before!\n", name); + return -1; + } + + accum = mm_g_accums[index]; + + // verify pairs of begin, end. + if (!accum->on_estimate) + { + printf("[%s] is not 'begin' yet!\n", accum->name); + accum->num_unpair++; + return -1; + } + + // get current timestamp. + tval = t.tv_sec * 1000000L + t.tv_usec; +#ifdef MP_TA_UNIT_MSEC + tval = (tval >= 1000) ? tval / 1000 : 0; +#endif + + // update last_end + accum->last_end = tval; + + // make get elapsed time. + tval = tval - accum->timestamp; + + // update min/max + accum->elapsed_max = tval > accum->elapsed_max ? tval : accum->elapsed_max; + accum->elapsed_min = tval < accum->elapsed_min ? tval : accum->elapsed_min; + + if (show) + printf("[ACCUM END] %s : %ld + %u ---(%s:%d)\n", name, accum->elapsed_accum, tval, filename, line); + + // add elapsed time + accum->elapsed_accum += tval; + accum->on_estimate = 0; + + return 0; +} + +void +__print_some_info(FILE * fp) +{ + if (!fp) + return; + + // comment + { + fprintf(fp, "\nb~ b~ b~\n\n"); + } + + // General infomation + { + time_t t_val; + char hostname[MP_TA_BUFF_SIZE] = { '\0', }; + char buf[MP_TA_BUFF_SIZE] = {'\0', }; + struct utsname uts; + struct rusage r_usage; + + fprintf(fp, "\n[[ General info ]]\n"); + + // time and date + time(&t_val); + ctime_r(&t_val, buf); + fprintf(fp, "Date : %s", buf); + + // system + if (gethostname(hostname, 255) == 0 && uname(&uts) >= 0) + { + fprintf(fp, "Hostname : %s\n", hostname); + fprintf(fp, "System : %s\n", uts.sysname); + fprintf(fp, "Machine : %s\n", uts.machine); + fprintf(fp, "Nodename : %s\n", uts.nodename); + fprintf(fp, "Release : %s \n", uts.release); + fprintf(fp, "Version : %s \n", uts.version); + } + + // process info. + fprintf(fp, "Process priority : %d\n", getpriority(PRIO_PROCESS, getpid())); + getrusage(RUSAGE_SELF, &r_usage); + fprintf(fp, "CPU usage : User = %ld.%06ld, System = %ld.%06ld\n", + r_usage.ru_utime.tv_sec, r_usage.ru_utime.tv_usec, + r_usage.ru_stime.tv_sec, r_usage.ru_stime.tv_usec); + + + } + + // host environment variables + { + extern char **environ; + char **env = environ; + + fprintf(fp, "\n[[ Host environment variables ]]\n"); + while (*env) + { + fprintf(fp, "%s\n", *env); + env++; + } + } +} + +void +mp_ta_accum_show_result(int direction) +{ + int i = 0; + char format[MP_TA_BUFF_SIZE]; + FILE *fp = stderr; + + if (!mm_g_accums) + return; + + switch (direction) + { + case MP_TA_SHOW_STDOUT: + fp = stdout; + break; + case MP_TA_SHOW_STDERR: + fp = stderr; + break; + case MP_TA_SHOW_FILE: + { + fp = fopen(MP_TA_RESULT_FILE, "wt"); + if (!fp) + return; + } + } + __print_some_info(fp); + +#ifdef MP_TA_UNIT_MSEC + snprintf(format, sizeof(format), + "[%%3d] %%-%ds | \ttotal : %%4ld\tcalls : %%3ld\tavg : %%4ld\tmin : %%4ld\tmax : %%4ld\tstart : %%4lu\tend : %%4lu\tunpair : %%3ld\n", + mm_g_accum_longest_name); + fprintf(fp, "BEGIN RESULT ACCUM============================ : NumOfItems : %d, unit(msec)\n", mm_g_accum_index); +#else + snprintf(format, sizeof(format), + "[%%3d] %%-%ds | \ttotal : %%ld\tcalls : %%ld\tavg : %%ld\tmin : %%ld\tmax : %%ld\tstart : %%lu\tend : %%lu\tunpair : %%ld\n", + mm_g_accum_longest_name); + fprintf(fp, "BEGIN RESULT ACCUM============================ : NumOfItems : %d, unit(usec)\n", mm_g_accum_index); +#endif + + for (i = 0; i < mm_g_accum_index; i++) + { + // prevent 'devide by zero' error + if (mm_g_accums[i]->num_calls == 0) + mm_g_accums[i]->num_calls = 1; + + fprintf(fp, format, i, mm_g_accums[i]->name, mm_g_accums[i]->elapsed_accum, mm_g_accums[i]->num_calls, (mm_g_accums[i]->elapsed_accum == 0) ? 0 : (int)(mm_g_accums[i]->elapsed_accum / mm_g_accums[i]->num_calls), // Fix it! : devide by zero. + mm_g_accums[i]->elapsed_min, + mm_g_accums[i]->elapsed_max, + mm_g_accums[i]->first_start - mm_g_accum_first_time, + mm_g_accums[i]->last_end - mm_g_accum_first_time, mm_g_accums[i]->num_unpair); + } + fprintf(fp, "END RESULT ACCUM ============================\n"); + + if (direction == MP_TA_SHOW_FILE) + fclose(fp); +} + +#endif +//#endif //_MM_TA_C_ diff --git a/src/common/mp-ug-launch.c b/src/common/mp-ug-launch.c new file mode 100755 index 0000000..dee1ca0 --- /dev/null +++ b/src/common/mp-ug-launch.c @@ -0,0 +1,451 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "music.h" +#include "mp-item.h" +#include "mp-menu.h" +#include "mp-ug-launch.h" +#include "mp-define.h" + +#include "music.h" +#include "mp-item.h" +#include "mp-player-debug.h" +#include "mp-play-view.h" +#include "mp-widget.h" + +#ifdef MP_SOUND_PLAYER +#include "sp-view-manager.h" +#else +#include "mp-common.h" +#include "mp-group-view.h" +#include "mp-view-manager.h" +#endif + +#define UG_EMAIL_NAME "email-composer-efl" +#define UG_BT_NAME "setting-bluetooth-efl" +#define UG_MUSIC_INFO "music-info-efl" +#define UG_MSG_NAME "msg-composer-efl" +#ifdef MP_FEATURE_WIFI_SHARE +#define UG_FTM_NAME "fileshare-efl" +#endif +#define UG_MUSIC_SETTINGS "setting-music-player-efl" + +#define MP_UG_INFO_PATH "path" +#define MP_UG_INFO_ALBUMART "albumart" +#define MP_UG_INFO_ARTIST "artist" +#define MP_UG_INFO_ID "id" +#define MP_UG_INFO_DESTROY "destroy" +#define MP_UG_INFO_BACK "back" +#define MP_UG_INFO_LOAD "load" +#define MP_UG_INFO_ALBUMART_CLICKED "albumart_clicked" +#define MP_UG_INFO_MEDIA_SVC_HANDLE "media_service_handle" + +/* for contact ug */ +#define CT_UG_REQUEST_SAVE_RINGTONE 42 +#define CT_UG_BUNDLE_TYPE "type" +#define CT_UG_BUNDLE_PATH "ct_path" +#define UG_CONTACTS_LIST "contacts-list-efl" + +static void +_mp_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) +{ + startfunc; + Evas_Object *base, *win; + + MP_CHECK(priv); + MP_CHECK(ug); + + base = ug_get_layout(ug); + if (!base) + return; + + win = ug_get_window(); + + switch (mode) + { + case UG_MODE_FULLVIEW: + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, base); + evas_object_show(base); + break; + default: + break; + } + + endfunc; +} + + +static void +_mp_ug_destroy(struct appdata *ad) +{ + startfunc; + + if (ad->ug) { + ug_destroy(ad->ug); + ad->ug = NULL; + } +} + +static void +_mp_ug_destroy_cb(ui_gadget_h ug, void *priv) +{ + startfunc; + if (!ug || !priv) + return; + + struct appdata *ad = priv; + + _mp_ug_destroy(ad); + return; +} + +static ui_gadget_h +_mp_ug_create_ug(struct appdata *ad, ui_gadget_h parent, const char *name, enum ug_mode mode, service_h service, + struct ug_cbs *cbs) +{ + startfunc; + MP_CHECK_NULL(ad); + + ui_gadget_h ug = NULL; + + ug = ug_create(parent, name, mode, service, cbs); + + if (!ug) + { + ERROR_TRACE("unable to create ug %s", name); + mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_BODY_APPLICATION_NOT_INSTALLED")); + } + endfunc; + return ug; +} + +int +mp_ug_email_attatch_file(const char *filepath, void *user_data) +{ + startfunc; + struct appdata *ad = NULL; + service_h service = NULL; + struct ug_cbs cbs = { 0, }; + int option = 0; + + mp_retvm_if(filepath == NULL, -1, "file path is NULL"); + mp_retvm_if(user_data == NULL, -1, "appdata is NULL"); + + ad = (struct appdata *)user_data; + MP_CHECK_VAL(ad, -1); + + if (ad->ug) + { + ERROR_TRACE("Destory previous ui-gadget first !!!!"); + return -1; + } + option = UG_OPT_INDICATOR_ENABLE; + + UG_INIT_EFL(ad->win_main, option); + + if(service_create(&service) != SERVICE_ERROR_NONE) + { + ERROR_TRACE("Error: service_create"); + return -1; + } + + service_add_extra_data(service, "RUN_TYPE", "5"); + service_add_extra_data(service, "ATTACHMENT", filepath); + + cbs.priv = user_data; + cbs.layout_cb = _mp_ug_layout_cb; + cbs.result_cb = NULL; + cbs.destroy_cb = _mp_ug_destroy_cb; + + + ad->ug = _mp_ug_create_ug(ad, NULL, UG_EMAIL_NAME, UG_MODE_FULLVIEW, service, &cbs); + + service_destroy(service); + endfunc; + return 0; +} + +int +mp_ug_message_attatch_file(const char *filepath, void *user_data) +{ + startfunc; + struct appdata *ad = NULL; + service_h service = NULL; + struct ug_cbs cbs = { 0, }; + int option = 0; + + mp_retvm_if(filepath == NULL, -1, "file path is NULL"); + mp_retvm_if(user_data == NULL, -1, "appdata is NULL"); + + ad = (struct appdata *)user_data; + MP_CHECK_VAL(ad, -1); + + if (ad->ug) + { + ERROR_TRACE("Destory previous ui-gadget first !!!!"); + return -1; + } + option = UG_OPT_INDICATOR_ENABLE; + + UG_INIT_EFL(ad->win_main, option); + + if(service_create(&service) != SERVICE_ERROR_NONE) + { + ERROR_TRACE("Error: service_create"); + return -1; + } + service_add_extra_data(service, "ATTACHFILE", filepath); + + cbs.priv = user_data; + cbs.layout_cb = _mp_ug_layout_cb; + cbs.result_cb = NULL; + cbs.destroy_cb = _mp_ug_destroy_cb; + + ad->ug = _mp_ug_create_ug(ad, NULL, UG_MSG_NAME, UG_MODE_FULLVIEW, service, &cbs); + service_destroy(service); + return 0; +} + +int +mp_ug_bt_attatch_file(const char *filepath, int count, void *user_data) +{ + startfunc; + struct appdata *ad = NULL; + service_h service = NULL; + struct ug_cbs cbs = { 0, }; + int option = 0; + char *file_count = NULL; + + mp_retvm_if(filepath == NULL, -1, "file path is NULL"); + mp_retvm_if(user_data == NULL, -1, "appdata is NULL"); + + ad = user_data; + if (ad->ug) + { + ERROR_TRACE("Destory previous ui-gadget first !!!!"); + return -1; + } + + option = UG_OPT_INDICATOR_ENABLE; + + UG_INIT_EFL(ad->win_main, option); + + file_count = g_strdup_printf("%d", count); + + if(service_create(&service) != SERVICE_ERROR_NONE) + { + ERROR_TRACE("Error: service_create"); + return -1; + } + service_add_extra_data(service, "launch-type", "send"); + service_add_extra_data(service, "filecount", file_count); + service_add_extra_data(service, "files", filepath); + + cbs.priv = user_data; + cbs.layout_cb = _mp_ug_layout_cb; + cbs.result_cb = NULL; + cbs.destroy_cb = _mp_ug_destroy_cb; + + ad->ug = _mp_ug_create_ug(ad, NULL, UG_BT_NAME, UG_MODE_FULLVIEW, service, &cbs); + + service_destroy(service); + IF_FREE(file_count); + + return 0; +} +#ifdef MP_FEATURE_WIFI_SHARE +int +mp_ug_wifi_attatch_file(const char *filepath, int count, void *user_data) +{ + startfunc; + struct appdata *ad = NULL; + service_h service = NULL; + struct ug_cbs cbs = { 0, }; + int option = 0; + char *file_count = NULL; + + mp_retvm_if(filepath == NULL, -1, "file path is NULL"); + mp_retvm_if(user_data == NULL, -1, "appdata is NULL"); + + ad = user_data; + if (ad->ug) + { + ERROR_TRACE("Destory previous ui-gadget first !!!!"); + return -1; + } + option = UG_OPT_INDICATOR_ENABLE; + UG_INIT_EFL(ad->win_main, option); + file_count = g_strdup_printf("%d", count); + if(service_create(&service) != SERVICE_ERROR_NONE) + { + ERROR_TRACE("Error: service_create"); + return -1; + } + service_add_extra_data(service, "filecount", file_count); + service_add_extra_data(service, "files", filepath); + cbs.priv = user_data; + cbs.layout_cb = _mp_ug_layout_cb; + cbs.result_cb = NULL; + cbs.destroy_cb = _mp_ug_destroy_cb; + ad->ug = _mp_ug_create_ug(ad, NULL, UG_FTM_NAME, UG_MODE_FULLVIEW, service, &cbs); + service_destroy(service); + IF_FREE(file_count); + return 0; +} +#endif + +int +mp_ug_contact_user_sel(const char *filepath, void *user_data) +{ + startfunc; + struct appdata *ad = NULL; + service_h service = NULL; + struct ug_cbs cbs = { 0, }; + int option = 0; + + mp_retvm_if(filepath == NULL, -1, "file path is NULL"); + mp_retvm_if(user_data == NULL, -1, "appdata is NULL"); + ad = user_data; + + if (ad->ug) + { + ERROR_TRACE("Destory previous ui-gadget first !!!!"); + return -1; + } + + option = UG_OPT_INDICATOR_ENABLE; + + UG_INIT_EFL(ad->win_main, option); + + if(service_create(&service) != SERVICE_ERROR_NONE) + { + ERROR_TRACE("Error: service_create"); + return -1; + } + + char buf[16]; + + snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_SAVE_RINGTONE); + service_add_extra_data(service, CT_UG_BUNDLE_TYPE, buf); + service_add_extra_data(service, CT_UG_BUNDLE_PATH, filepath); + + cbs.priv = ad; + cbs.layout_cb = _mp_ug_layout_cb; + cbs.result_cb = NULL; + cbs.destroy_cb = _mp_ug_destroy_cb; + + ad->ug = _mp_ug_create_ug(ad, NULL, UG_CONTACTS_LIST, UG_MODE_FULLVIEW, service, &cbs); + + service_destroy(service); + + return 0; +} + + +void +mp_ug_send_message(struct appdata *ad, mp_ug_message_t message) +{ + startfunc; + ui_gadget_h ug = NULL; + char *id = NULL; + MP_CHECK(ad); + + service_h service = NULL; + + if(service_create(&service) != SERVICE_ERROR_NONE) + { + ERROR_TRACE("Error: service_create"); + return; + } + MP_CHECK(service); + + switch(message) + { + case MP_UG_MESSAGE_DEL: + ug = ad->info_ug; + service_add_extra_data(service, MP_UG_INFO_DESTROY, MP_UG_INFO_DESTROY); + break; + case MP_UG_MESSAGE_BACK: + ug = ad->info_ug; + service_add_extra_data(service, MP_UG_INFO_BACK, MP_UG_INFO_BACK); + break; + case MP_UG_MESSAGE_LOAD: + { + ug = ad->info_ug; + service_add_extra_data(service, MP_UG_INFO_LOAD, MP_UG_INFO_LOAD); + music_list_item *item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK_EXCEP(item); + + service_add_extra_data(service, MP_UG_INFO_PATH, item->filename); + service_add_extra_data(service, MP_UG_INFO_ALBUMART, item->albumart); + service_add_extra_data(service, MP_UG_INFO_ARTIST, item->artist); + + id = g_strdup(item->key_id); + MP_CHECK_EXCEP(id); + service_add_extra_data(service, MP_UG_INFO_ID, id); + break; + } + default: + service_destroy(service); + return; + } + ug_send_message(ug, service); + + mp_exception: + if(service) + service_destroy(service); + IF_FREE(id); +} + +void +mp_ug_destory_all(struct appdata *ad) +{ + startfunc; + // ad->info_ug should not be destoryed!! + MP_CHECK(ad); + ug_destroy(ad->ug); + ad->ug = NULL; +} + +bool +mp_ug_active(struct appdata *ad) +{ + startfunc; + MP_CHECK_FALSE(ad); + + if (ad->ug) + { + return true; + } + else + { + return false; + } +} + + diff --git a/src/common/mp-util.c b/src/common/mp-util.c index b4da6bd..2b2cb8e 100755 --- a/src/common/mp-util.c +++ b/src/common/mp-util.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,21 +15,256 @@ */ - #include "music.h" #include "mp-util.h" #include "mp-file-tag-info.h" #include "mp-play-list.h" +#include "mp-ug-launch.h" #include "mp-widget.h" +#include +#include +#include +#include +#include +#ifdef MP_SOUND_PLAYER +#include "sp-view-manager.h" +#include "mp-library.h" +#else #include "mp-common.h" #include "mp-library.h" -#include -#include -#include -#include -#include -#include -#include +#endif + +#define SINGLE_BYTE_MAX 0x7F + +struct index_s +{ + const char *index; + unsigned short start; + unsigned short end; +}; + +static struct index_s multi_index[] = { + {"\xE3\x84\xB1", 0xAC00, 0xB098}, /* Kiyeok + A */ + {"\xE3\x84\xB4", 0xB098, 0xB2E4}, /* Nieun + A */ + {"\xE3\x84\xB7", 0xB2E4, 0xB77C}, + {"\xE3\x84\xB9", 0xB77C, 0xB9C8}, + {"\xE3\x85\x81", 0xB9C8, 0xBC14}, + {"\xE3\x85\x82", 0xBC14, 0xC0AC}, + {"\xE3\x85\x85", 0xC0AC, 0xC544}, + {"\xE3\x85\x87", 0xC544, 0xC790}, + {"\xE3\x85\x88", 0xC790, 0xCC28}, + {"\xE3\x85\x8A", 0xCC28, 0xCE74}, + {"\xE3\x85\x8B", 0xCE74, 0xD0C0}, + {"\xE3\x85\x8C", 0xD0C0, 0xD30C}, + {"\xE3\x85\x8D", 0xD30C, 0xD558}, + {"\xE3\x85\x8E", 0xD558, 0xD7A4}, /* Hieuh + A */ + + {"\xE3\x84\xB1", 0x3131, 0x3134}, /* Kiyeok */ + {"\xE3\x84\xB4", 0x3134, 0x3137}, /* Nieun */ + {"\xE3\x84\xB7", 0x3137, 0x3139}, + {"\xE3\x84\xB9", 0x3139, 0x3141}, + {"\xE3\x85\x81", 0x3141, 0x3142}, + {"\xE3\x85\x82", 0x3142, 0x3145}, + {"\xE3\x85\x85", 0x3145, 0x3147}, + {"\xE3\x85\x87", 0x3147, 0x3148}, + {"\xE3\x85\x88", 0x3148, 0x314A}, + {"\xE3\x85\x8A", 0x314A, 0x314B}, + {"\xE3\x85\x8B", 0x314B, 0x314C}, + {"\xE3\x85\x8C", 0x314C, 0x314D}, + {"\xE3\x85\x8D", 0x314D, 0x314E}, + {"\xE3\x85\x8E", 0x314E, 0x314F}, /* Hieuh */ +}; + +static char *single_upper_index[] = { + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", + "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" +}; + +static char *single_lower_index[] = { + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", + "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" +}; + + +static char *single_numeric_index[] = { + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "." +}; + +static const char *kor_sec[] = { + "\xe3\x85\x8f", /* A */ + "\xe3\x85\x90", /* AE */ + "\xe3\x85\x91", /* YA */ + "\xe3\x85\x92", + "\xe3\x85\x93", + "\xe3\x85\x94", + "\xe3\x85\x95", + "\xe3\x85\x96", + "\xe3\x85\x97", + "\xe3\x85\x98", + "\xe3\x85\x99", + "\xe3\x85\x9a", + "\xe3\x85\x9b", + "\xe3\x85\x9c", + "\xe3\x85\x9d", + "\xe3\x85\x9e", + "\xe3\x85\x9f", + "\xe3\x85\xa0", + "\xe3\x85\xa1", + "\xe3\x85\xa2", + "\xe3\x85\xa3", +}; + +static unsigned char mask_len[] = { + 0x80, /* 1000 0000 */ 0x00, /* 0xxx xxxx */ + 0xE0, /* 1110 0000 */ 0xC0, /* 110x xxxx */ + 0xF0, /* 1111 0000 */ 0xE0, /* 1110 xxxx */ + 0xF8, /* 1111 1000 */ 0xF0, /* 1111 0xxx */ + 0xFC, /* 1111 1100 */ 0xF8, /* 1111 10xx */ + 0xFE, /* 1111 1110 */ 0xFC, /* 1111 110x */ +}; + +static int +_mp_util_get_len(const char *p) +{ + int i, r = -1; + unsigned char c; + + if (p) + { + c = *p; + for (i = 0; i < sizeof(mask_len) / sizeof(char); i = i + 2) + { + if ((c & mask_len[i]) == mask_len[i + 1]) + { + r = (i >> 1) + 1; + break; + } + } + } + + return r; +} + +static unsigned short +_mp_util_utf8_to_ucs2(const char *p) +{ + unsigned short r = 0; + int len; + + len = _mp_util_get_len(p); + if (len == -1 || len > 3) + { + return r; + } + + switch (len) + { + case 1: + { + r = *p & 0x7F; + break; + } + case 2: + { + r = *p & 0x1F; + break; + } + case 3: + { + r = *p & 0x0F; + break; + } + default: + { + break; + } + } + + while (len > 1) + { + r = r << 6; + p++; + r |= *p & 0x3F; + len--; + } + + return r; +} + +static const char * +_mp_util_get_single(const char *p) +{ + int c = (int)*p; + + if (islower(c) != 0) + { + return single_lower_index[c - 'a']; + } + else if (isupper(c) != 0) + { + return single_upper_index[c - 'A']; + } + else if (48 <= c && 57 >= c) + { + return single_numeric_index[c - '0']; + } + else + { + return single_numeric_index[10]; + } + + return NULL; +} + +static const char * +_mp_util_get_multi(unsigned short u) +{ + int i; + + for (i = 0; i < sizeof(multi_index) / sizeof(struct index_s); i++) + { + if (u >= multi_index[i].start && u < multi_index[i].end) + { + return multi_index[i].index; + } + } + return NULL; +} + +static char * +_mp_util_get_next_char(const char *p) +{ + int n; + + MP_CHECK_NULL(p); + + n = _mp_util_get_len(p); + if (n == -1) + { + return NULL; + } + + if (strlen(p) < n) + { + return NULL; + } + + DEBUG_TRACE("%s", &p[n]); + + return (char *)&p[n]; +} + + +static const char * +_mp_util_get_second_kor(unsigned short u) +{ + unsigned short t; + + t = u - 0xAC00; + t = (t / 28) % 21; + + return kor_sec[t]; +} void mp_util_format_duration(char *time, int ms) @@ -40,24 +275,61 @@ mp_util_format_duration(char *time, int ms) if(min >= 60) { int hour = min / 60; - snprintf(time, 15, "%02u:%02u:%02u", hour, min % 60, sec % 60); + snprintf(time, TIME_FORMAT_LEN, "%02u:%02u:%02u", hour, min % 60, sec % 60); } else - snprintf(time, 15, "%02u:%02u", min, sec % 60); + snprintf(time, TIME_FORMAT_LEN, "%02u:%02u", min, sec % 60); } -bool -mp_util_add_to_playlist_by_key(MediaSvcHandle *handle, int plst_id, char *key_id) +const char * +mp_util_get_index(const char *p) +{ + if (p == NULL) + { + return NULL; + } + + if ((unsigned char)*p < SINGLE_BYTE_MAX) + { + return _mp_util_get_single(p); + } + + return _mp_util_get_multi(_mp_util_utf8_to_ucs2(p)); +} + +const char * +mp_util_get_second_index(const char *p) { - //startfunc; - MP_CHECK_FALSE(handle); + unsigned short u2; + + if (p == NULL) + { + return NULL; + } + + if ((unsigned char)*p < SINGLE_BYTE_MAX) + { + return mp_util_get_index(_mp_util_get_next_char(p)); + } + + u2 = _mp_util_utf8_to_ucs2(p); + if (u2 >= 0xAC00 && u2 < 0xD7A4) + { + return _mp_util_get_second_kor(u2); + } + return mp_util_get_index(_mp_util_get_next_char(p)); +} + +bool +mp_util_add_to_playlist_by_key(int playlist_id, char *key_id) +{ int err; { - err = audio_svc_add_item_to_playlist(handle, plst_id, key_id); - if (err != AUDIO_SVC_ERROR_NONE) + err = mp_media_info_playlist_add_media(playlist_id, key_id); + if (err != 0) { - ERROR_TRACE("Error in audio_svc_list_append_item (%d)\n", err); + ERROR_TRACE("Error in mp_media_info_playlist_add_media (%d)\n", err); return FALSE; } } @@ -67,6 +339,8 @@ mp_util_add_to_playlist_by_key(MediaSvcHandle *handle, int plst_id, char *key_id Evas_Object * mp_util_create_thumb_icon(Evas_Object * obj, const char *path, int w, int h) { + mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + Evas_Object *thumbnail = elm_bg_add(obj); elm_bg_load_size_set(thumbnail, w, h); @@ -78,10 +352,19 @@ mp_util_create_thumb_icon(Evas_Object * obj, const char *path, int w, int h) } else { - elm_bg_file_set(thumbnail, DEFAULT_THUMBNAIL, NULL); + if (layout_data->category == MP_LAYOUT_GROUP_LIST + && layout_data->view_data->view_type == MP_VIEW_TYPE_FOLDER) + { + elm_bg_file_set(thumbnail, DEFAULT_THUMBNAIL_FOLDER, NULL); + } + else + { + elm_bg_file_set(thumbnail, DEFAULT_THUMBNAIL, NULL); + } } evas_object_size_hint_aspect_set(thumbnail, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + //evas_object_show(thumbnail); return thumbnail; } @@ -103,8 +386,12 @@ mp_util_create_selectioninfo_with_count(void *data, int count) Evas_Object *notify_layout = NULL; MP_CHECK(ad); - MP_CHECK(ad->library); - + Evas_Object *parent = NULL; +#ifdef MP_SOUND_PLAYER + parent = sp_view_mgr_get_naviframe(ad->view_mgr); +#else + parent = ad->naviframe; +#endif if (ad->notify != NULL) { mp_evas_object_del(ad->notify); @@ -120,11 +407,11 @@ mp_util_create_selectioninfo_with_count(void *data, int count) if (count > 0) { - notify = elm_notify_add(ad->library->cur_view); + notify = elm_notify_add(parent); elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM); - notify_layout = elm_layout_add(ad->library->cur_view); - elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "music/vertical/bottom_64"); + notify_layout = elm_layout_add(parent); + elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64"); evas_object_size_hint_weight_set(notify_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(notify_layout, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_object_content_set(notify, notify_layout); @@ -152,7 +439,13 @@ mp_util_create_notify(void *data, const char *noti_msg) Evas_Object *notify_layout = NULL; MP_CHECK(ad); - MP_CHECK(ad->library); + Evas_Object *parent = NULL; +#ifdef MP_SOUND_PLAYER + parent = sp_view_mgr_get_naviframe(ad->view_mgr); +#else + MP_CHECK(ad->naviframe); + parent = ad->naviframe; +#endif if (ad->notify != NULL) { @@ -167,11 +460,18 @@ mp_util_create_notify(void *data, const char *noti_msg) ad->notify = NULL; ad->notify_layout = NULL; - notify = elm_notify_add(ad->library->cur_view); + { + notify = elm_notify_add(parent); + notify_layout = elm_layout_add(parent); + + if(ad->win_angle == 90 || ad->win_angle == -90) + elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "horizontal/bottom_64"); + else + elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64"); + } + elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM); - notify_layout = elm_layout_add(ad->library->cur_view); - elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64"); evas_object_size_hint_weight_set(notify_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(notify_layout, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_object_content_set(notify, notify_layout); @@ -187,71 +487,22 @@ mp_util_create_notify(void *data, const char *noti_msg) } -char * -mp_util_get_playlist_thumbpath(MediaSvcHandle *handle, AudioHandleType * plst) +int +mp_util_share_via_email(const char *formed_path, void *data) { - MP_CHECK_NULL(handle); - - char *thumbpath = NULL; - int ret = AUDIO_SVC_ERROR_NONE; - int plst_id = -1; - - mp_retvm_if(!plst, NULL, "plst is NULL!!"); - - ret = audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_ID, &plst_id, -1); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to get playlist id\n"); - return NULL; - } - - AudioHandleType *playlists = NULL; - ret = audio_svc_playlist_item_new(&playlists, 1); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to create structure\n"); - return NULL; - } - - ret = audio_svc_get_playlist_item(handle, plst_id, "", "", 0, 1, playlists); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to get items\n"); - audio_svc_playlist_item_free(playlists); - return NULL; - } - int size = -1; - ret = audio_svc_playlist_item_get_val(playlists, 0, AUDIO_SVC_PLAYLIST_ITEM_THUMBNAIL_PATH, &thumbpath, &size, - -1); - if (ret != AUDIO_SVC_ERROR_NONE) - { - audio_svc_playlist_item_free(playlists); - DEBUG_TRACE("Fail to get value\n"); - return NULL; - } - - ret = audio_svc_playlist_item_free(playlists); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to free search structure\n"); - return thumbpath; - } - - if (!thumbpath) - thumbpath = MP_CTRBAR_ICON_PLAYLIST; + if (mp_ug_email_attatch_file(formed_path, data)) + return -1; - return thumbpath; + return 0; } char * -mp_util_get_new_playlist_name(MediaSvcHandle *handle) +mp_util_get_new_playlist_name(void) { - MP_CHECK_NULL(handle); - - char unique_name[AUDIO_SVC_PLAYLIST_NAME_SIZE] = "\0"; + char unique_name[MP_PLAYLIST_NAME_SIZE] = "\0"; int ret = 0; - ret = audio_svc_get_unique_playlist_name(handle, "My playlist", unique_name, AUDIO_SVC_PLAYLIST_NAME_SIZE); - if (ret == AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_playlist_unique_name("My playlist", unique_name, MP_PLAYLIST_NAME_SIZE); + if (ret == 0) { if (strlen(unique_name) <= 0) { @@ -265,149 +516,37 @@ mp_util_get_new_playlist_name(MediaSvcHandle *handle) } else { - ERROR_TRACE("fail to audio_svc_get_unique_playlist_name() : error code [%x] ", ret); + ERROR_TRACE("fail to mp_media_info_playlist_unique_name() : error code [%x] ", ret); return NULL; } return NULL; } - -Eina_Bool -mp_util_is_item_in_playlist(MediaSvcHandle *handle, gint plst_id, char *key_id) -{ - MP_CHECK_VAL(handle, EINA_FALSE); - - int count = -1; - int ret = -1; - ret = audio_svc_check_duplicate_insertion_in_playlist(handle, plst_id, key_id, &count); - if (ret == AUDIO_SVC_ERROR_NONE) - { - if (count > 0) - return TRUE; - else - return FALSE; - } - else - { - ERROR_TRACE("Error from libmusic-service"); - return FALSE; - } -} - -bool -mp_util_check_item_exist_in_playlist(MediaSvcHandle *handle, gint plst_id, char *key_id) -{ - MP_CHECK_FALSE(handle); - - int count = -1; - int ret = -1; - ret = audio_svc_check_duplicate_insertion_in_playlist(handle, plst_id, key_id, &count); - if (ret == AUDIO_SVC_ERROR_NONE) - { - if (count > 0) - return TRUE; - else - return FALSE; - } - else - { - ERROR_TRACE("Error from libmusic-service"); - return FALSE; - } -} - -bool -mp_util_add_selected_items_to_playlist(Evas_Object * genlist, int plst_id) -{ - Elm_Object_Item *first_item = elm_genlist_first_item_get(genlist); - Elm_Object_Item *current_item = NULL; - Elm_Object_Item *next_item = NULL; - mp_genlist_item_data_t *gl_item = NULL; - char *fid = NULL; - int size; - int ret; - int count; - mp_layout_data_t *layout_data = evas_object_data_get(genlist, "layout_data"); - MP_CHECK_FALSE(layout_data); - MP_CHECK_LAYOUT_DATA(layout_data); - MP_CHECK_FALSE(layout_data->ad); - - audio_svc_count_playlist_item(layout_data->ad->media_svc_handle, plst_id, NULL, NULL, &count); - if (count >= MP_PLAYLIST_MAX_ITEM_COUNT) - return FALSE; - - if (first_item) - { - MP_GENLIST_CHECK_FOREACH_SAFE(first_item, current_item, next_item, gl_item) - { - if (count == MP_PLAYLIST_MAX_ITEM_COUNT) - { - DEBUG_TRACE("Max count reached..."); - return TRUE; - } - if (gl_item->checked) - { - AudioHandleType *item = (AudioHandleType *) (gl_item->handle); - MP_CHECK_FALSE(item); - if (layout_data->playlist_id < 0) - ret = audio_svc_list_item_get_val(item, 0, AUDIO_SVC_LIST_ITEM_AUDIO_ID, &fid, &size, - -1); - else - ret = audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_AUDIO_ID, - &fid, &size, -1); - if (ret == AUDIO_SVC_ERROR_NONE) - { - if (mp_util_add_to_playlist_by_key(layout_data->ad->media_svc_handle, plst_id, fid)) - count++; - } - else - { - ERROR_TRACE("Error!! ret: %d", ret); - return FALSE; - } - } - } - } - else - { - DEBUG_TRACE("genlist item not exist..."); - return FALSE; - } - - return TRUE; -} - char * -mp_util_get_fid_by_handle(mp_layout_data_t * layout_data, AudioHandleType * record) +mp_util_get_fid_by_handle(mp_layout_data_t * layout_data, mp_media_info_h record) { MP_CHECK_FALSE(record); - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; char *fid = NULL; - int size; - if (layout_data->playlist_id < 0) - ret = audio_svc_list_item_get_val(record, 0, AUDIO_SVC_LIST_ITEM_AUDIO_ID, &fid, &size, -1); - else - ret = audio_svc_playlist_item_get_val(record, 0, AUDIO_SVC_PLAYLIST_ITEM_AUDIO_ID, &fid, &size, -1); + ret = mp_media_info_get_media_id(record, &fid); return fid; } char * -mp_util_get_path_by_handle(mp_layout_data_t * layout_data, AudioHandleType * record) +mp_util_get_path_by_handle(mp_layout_data_t * layout_data, mp_media_info_h record) { MP_CHECK_NULL(record); char *path = NULL; - int size = -1, ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; + + ret = mp_media_info_get_file_path(record, &path); - if (layout_data->playlist_id < 0) - ret = audio_svc_list_item_get_val(record, 0, AUDIO_SVC_LIST_ITEM_PATHNAME, &path, &size, -1); - else - ret = audio_svc_playlist_item_get_val(record, 0, AUDIO_SVC_PLAYLIST_ITEM_PATHNAME, &path, &size, -1); return path; } @@ -416,7 +555,7 @@ mp_file_delete_err_t mp_util_delete_track(void *data, char *fid, char *file_path, bool show_popup) { struct appdata *ad = (struct appdata *)data; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; DEBUG_TRACE("music id = %s, path: %s", fid, file_path); MP_CHECK_VAL(fid || file_path, MP_FILE_DELETE_ERR_INVALID_FID); @@ -435,20 +574,21 @@ mp_util_delete_track(void *data, char *fid, char *file_path, bool show_popup) } } - char path[AUDIO_SVC_PATHNAME_SIZE] = ""; - + char *path = NULL; + mp_media_info_h item = NULL; if (!file_path) { - audio_svc_get_path_by_audio_id(ad->media_svc_handle, fid, path, AUDIO_SVC_PATHNAME_SIZE); + mp_media_info_create(&item, fid); + mp_media_info_get_file_path(item, &path); } else - { - strncpy(path, file_path, AUDIO_SVC_PATHNAME_SIZE); - path[AUDIO_SVC_PATHNAME_SIZE - 1] = '\0'; - } - + path = file_path; ret = remove(path); + + if(item) + mp_media_info_destroy(item); + if (ret < 0) { ERROR_TRACE("fail to unlink file : %s, ret: %d", path, ret); @@ -456,12 +596,6 @@ mp_util_delete_track(void *data, char *fid, char *file_path, bool show_popup) mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING")); return MP_FILE_DELETE_ERR_REMOVE_FAIL; } - else - { - ret = audio_svc_delete_item_by_path(ad->media_svc_handle, path); - if (ret != AUDIO_SVC_ERROR_NONE) - DEBUG_TRACE("Error audio_svc_delete_item_by_path() ret: %d", ret); - } return MP_FILE_DELETE_ERR_NONE; } @@ -476,28 +610,7 @@ mp_util_file_is_in_phone_memory(const char *path) return 0; } -Elm_Object_Item * -mp_util_get_genlist_item_by_item_handle(Evas_Object * genlist, AudioHandleType * handle) -{ - Elm_Object_Item *it = NULL; - - it = elm_genlist_first_item_get(genlist); - while (it) - { - mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) elm_object_item_data_get(it); - MP_CHECK_NULL(item); - AudioHandleType *item_data = (AudioHandleType *) (item->handle); - MP_CHECK_NULL(item_data); - if (item_data == handle) - break; - it = elm_genlist_item_next_get(it); - } - - MP_CHECK_NULL(it); - return it; -} - -/*return value must be freed.*/ +// return value must be freed. char * mp_util_isf_get_edited_str(Evas_Object * isf_entry, bool permit_first_blank) { @@ -526,6 +639,7 @@ mp_util_isf_get_edited_str(Evas_Object * isf_entry, bool permit_first_blank) free(strip_msg); return strdup(""); } + if (strip_msg[strip_len - 1] == '\n' || strip_msg[strip_len - 1] == '\r') { strip_msg[strip_len - 1] = '\0'; @@ -546,19 +660,25 @@ mp_util_isf_get_edited_str(Evas_Object * isf_entry, bool permit_first_blank) } } -char * -mp_util_item_get_value_by_type(audio_svc_track_data_type_e item_type, struct music_list_item *item) +bool +mp_util_set_screen_mode(void *data, int mode) { - mp_retvm_if(!item, NULL, "ITEM IS NULL"); - - if (item_type == AUDIO_SVC_TRACK_DATA_TITLE) - return strdup(item->title); - else if (item_type == AUDIO_SVC_TRACK_DATA_ALBUM) - return strdup(item->artist); - else if (item_type == AUDIO_SVC_TRACK_DATA_ARTIST) - return strdup(item->album); - else - return NULL; + struct appdata *ad = data; + + ad->current_appcore_rm = mode; //set current appcore rm + ecore_x_window_size_get(ecore_x_window_root_first_get(), &ad->screen_width, &ad->screen_height); //get current screen height width + + if (mode == APP_DEVICE_ORIENTATION_270 || mode == APP_DEVICE_ORIENTATION_90) + { + ad->screen_mode = MP_SCREEN_MODE_LANDSCAPE; + mp_debug("Set MP_SCREEN_MODE_LANDSCAPE"); + } + else if (mode == APP_DEVICE_ORIENTATION_0 || mode == APP_DEVICE_ORIENTATION_180) + { + ad->screen_mode = MP_SCREEN_MODE_PORTRAIT; + mp_debug("Set MP_SCREEN_MODE_PORTRAIT"); + } + return true; } bool @@ -603,21 +723,23 @@ mp_util_launch_browser(const char *url, struct appdata * ad) { DEBUG_TRACE("url: %s", url); - bundle *b = NULL; - int res; - - b = bundle_create(); - bundle_add(b, "url", url); + service_h service; + bool res; + service_create(&service); + service_set_operation(service, SERVICE_OPERATION_DEFAULT); + service_set_package(service, "org.tizen.browser"); + service_set_uri(service, url); - res = aul_launch_app("org.tizen.browser", b); - DEBUG_TRACE("aul raunch. res: %d", res); - bundle_free(b); - - if (res >= AUL_R_OK) - return TRUE; - else - return FALSE; + if (service_send_launch_request(service, NULL, NULL) == SERVICE_ERROR_NONE) { + DEBUG_TRACE("Succeeded to launch a calculator app."); + res = true; + } else { + DEBUG_TRACE("Failed to launch a calculator app."); + res = false; + } + service_destroy(service); + return res; } @@ -645,7 +767,7 @@ mp_util_get_utf8_initial(const char *name) first = g_utf8_get_char(next); } - if (first >= 0xAC00 && first <= 0xD7A3) // korean range + if (first >= 0xAC00 && first <= 0xD7A3) { //korean int index = 0; index = ((((first - 0xAC00) - ((first - 0xAC00) % 28)) / 28) / 21); @@ -714,7 +836,7 @@ mp_util_is_playlist_name_valid(char *name) } int -mp_util_create_playlist(struct appdata *ad, char *name) +mp_util_create_playlist(struct appdata *ad, char *name, mp_playlist_h *playlist_handle) { MP_CHECK_VAL(ad, -1); MP_CHECK_VAL(name, -1); @@ -727,17 +849,31 @@ mp_util_create_playlist(struct appdata *ad, char *name) return -1; } - int count = -1; - int ret = audio_svc_count_playlist_by_name(ad->media_svc_handle, name, &count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, -1, "Fail to get playlist count by name"); - if (count > 0) + bool exist = false; + int ret = mp_media_info_playlist_is_exist(name, &exist); + if(ret != 0) + { + ERROR_TRACE("Fail to get playlist count by name: %d", ret); + mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST")); + return -1; + } + + if (exist) { - mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_ALREDY_EXISTS")); + char buf[256] = { 0, }; + + snprintf(buf, sizeof(buf), "Playlist name %s is exist", name); + mp_widget_text_popup(ad, buf); return -1; } - ret = audio_svc_add_playlist(ad->media_svc_handle, name, &plst_uid); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, -1, "Fail to add playlist"); + ret = mp_media_info_playlist_insert_to_db(name, &plst_uid, playlist_handle); + if(ret != 0) + { + ERROR_TRACE("Fail to get playlist count by name: %d", ret); + mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_BODY_UNABLE_TO_ADD")); + return -1; + } return plst_uid; } @@ -786,10 +922,9 @@ _mp_util_parse_last_play_data(mp_layout_data_t * layout_data) bool mp_util_get_recent_play_data(mp_layout_data_t * layout_data, int *index, char **path) { - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; char *last_audio_id = NULL; char *audio_id = NULL; - int size = 0; int i = 0; if (!ecore_file_exists(MP_NOWPLAYING_INI_FILE_NAME)) @@ -837,13 +972,12 @@ mp_util_get_recent_play_data(mp_layout_data_t * layout_data, int *index, char ** layout_data->filter_str); if (layout_data->playlist_id < 0) - ret = audio_svc_count_list_item(ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL, - layout_data->filter_str, NULL, &(layout_data->item_count)); + ret = mp_media_info_list_count(layout_data->track_type, layout_data->type_str, NULL, + layout_data->filter_str, 0, &(layout_data->item_count)); else - ret = audio_svc_count_playlist_item(ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, - &(layout_data->item_count)); + ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, layout_data->filter_str, layout_data->playlist_id, &(layout_data->item_count)); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret); + mp_retvm_if(ret != 0, false, "ret: %d", ret); if (layout_data->item_count <= 0) { @@ -851,28 +985,16 @@ mp_util_get_recent_play_data(mp_layout_data_t * layout_data, int *index, char ** return false; } - if (layout_data->playlist_id < 0) - ret = audio_svc_list_item_new(&(layout_data->svc_handle), layout_data->item_count); - else - ret = audio_svc_playlist_item_new(&(layout_data->svc_handle), layout_data->item_count); - - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret); + mp_retvm_if(ret != 0, false, "ret: %d", ret); - if (layout_data->playlist_id < 0) - ret = audio_svc_get_list_item(ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL, - layout_data->filter_str, NULL, 0, layout_data->item_count, - layout_data->svc_handle); - else - ret = audio_svc_get_playlist_item(ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, 0, - layout_data->item_count, layout_data->svc_handle); + ret = mp_media_info_list_create(&layout_data->svc_handle, + layout_data->track_type, layout_data->type_str, NULL, + layout_data->filter_str, layout_data->playlist_id, 0, layout_data->item_count); - if (ret != AUDIO_SVC_ERROR_NONE) + if (ret != 0) { DEBUG_TRACE("fail to get list item: %d", ret); - if (layout_data->playlist_id < 0) - ret = audio_svc_list_item_free(layout_data->svc_handle); - else - ret = audio_svc_playlist_item_free(layout_data->svc_handle); + ret = mp_media_info_list_destroy(layout_data->svc_handle); return false; } @@ -880,8 +1002,9 @@ mp_util_get_recent_play_data(mp_layout_data_t * layout_data, int *index, char ** { for (i = 0; i < layout_data->item_count; i++) { - audio_svc_list_item_get_val(layout_data->svc_handle, i, AUDIO_SVC_LIST_ITEM_AUDIO_ID, &audio_id, &size, - -1); + mp_media_info_h item = mp_media_info_list_nth_item(layout_data->svc_handle, i); + MP_CHECK_FALSE(item); + mp_media_info_get_media_id(item, &audio_id); if (!g_strcmp0(audio_id, last_audio_id)) { if (index) @@ -906,46 +1029,114 @@ mp_util_get_playlist_data(mp_layout_data_t * layout_data, int *index, const char struct appdata *ad = layout_data->ad; MP_CHECK_FALSE(ad); - int ret = AUDIO_SVC_ERROR_NONE; - int playlist_idx = 0; - - ret = audio_svc_get_playlist_id_by_playlist_name(ad->media_svc_handle, playlist_name, &playlist_idx); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d, playlist_name: %s", ret, playlist_name); - mp_retvm_if(playlist_idx < 0, false, "playlist_idx is not valid.. %d", playlist_idx); - layout_data->playlist_id = playlist_idx; + int ret = 0; + int playlist_id = 0; - ret = audio_svc_count_playlist_item(ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, - &(layout_data->item_count)); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret); + ret = mp_media_info_playlist_get_id_by_name(playlist_name, &playlist_id); + mp_retvm_if(ret != 0, false, "ret: %d, playlist_name: %s", ret, playlist_name); + layout_data->playlist_id = playlist_id; + ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, layout_data->filter_str, layout_data->playlist_id, &(layout_data->item_count)); + mp_retvm_if(ret != 0, false, "ret: %d", ret); if (layout_data->item_count <= 0) { DEBUG_TRACE("Recently played tracks were removed..."); return false; } - - ret = audio_svc_playlist_item_new(&(layout_data->svc_handle), layout_data->item_count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret); - - ret = audio_svc_get_playlist_item(ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, 0, - layout_data->item_count, layout_data->svc_handle); - if (ret != AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_list_create(&layout_data->svc_handle, MP_TRACK_BY_PLAYLIST, + NULL, NULL, layout_data->filter_str, layout_data->playlist_id, 0, layout_data->item_count); + if (ret != 0) { - DEBUG_TRACE("fail to get list item: %d", ret); - ret = audio_svc_playlist_item_free(layout_data->svc_handle); + WARN_TRACE("fail to mp_media_info_list_create: %d", ret); return false; } return true; } +#define STRNCAT_LEN(dest) (sizeof(dest)-1-strlen(dest)) +static void __mp_util_set_filter(mp_filter_h filter, mp_group_type_e group_type, const char *filter_string) +{ + char cond[MAX_FILTER_LEN] = {0,}; + + switch(group_type) + { + case MP_GROUP_BY_ALBUM: + if(filter_string) + { + strncat(cond, "MEDIA_ALBUM like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + break; + case MP_GROUP_BY_ARTIST: + if(filter_string) + { + strncat(cond, "MEDIA_ARTIST like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + break; + case MP_GROUP_BY_GENRE: + if(filter_string) + { + strncat(cond, "MEDIA_GENRE like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + break; + case MP_GROUP_BY_FOLDER: + if(filter_string) + { + strncat(cond, "MEDIA_PATH like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + break; + case MP_GROUP_BY_YEAR: + if(filter_string) + { + strncat(cond, "MEDIA_YEAR like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + break; + case MP_GROUP_BY_COMPOSER: + if(filter_string) + { + strncat(cond, "MEDIA_COMPOSER like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + break; + case MP_GROUP_BY_PLAYLIST: + if(filter_string) + { + strncat(cond, "PLAYLIST_NAME like \"\%", STRNCAT_LEN(cond)); + strncat(cond, filter_string, STRNCAT_LEN(cond)); + strncat(cond, "\%\"", STRNCAT_LEN(cond)); + } + break; + default: + WARN_TRACE("Unhandled type: %d", group_type); + break; + } + if(strlen(cond)) + { + DEBUG_TRACE("cond: %s", cond); + mp_media_filter_set_condition(filter, cond, MP_MEDIA_CONTENT_COLLATE_NOCASE); + } + mp_media_filter_set_order(filter, false, "MEDIA_TITLE", MP_MEDIA_CONTENT_COLLATE_NOCASE); + +} + bool mp_util_get_list_data(mp_layout_data_t * layout_data) { MP_CHECK_FALSE(layout_data); struct appdata *ad = NULL; - AudioHandleType *group_record = NULL; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; + mp_filter_h filter = NULL; ad = layout_data->ad; MP_CHECK_FALSE(ad); @@ -953,10 +1144,10 @@ mp_util_get_list_data(mp_layout_data_t * layout_data) if (ad->launch_type != MP_LAUNCH_PLAY_GROUP) { - ret = audio_svc_count_list_item(ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL, - layout_data->filter_str, NULL, &(layout_data->item_count)); + ret = mp_media_info_list_count(layout_data->track_type, layout_data->type_str, NULL, + layout_data->filter_str, layout_data->playlist_id, &(layout_data->item_count)); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret); + mp_retvm_if(ret != 0, false, "ret: %d", ret); if (layout_data->item_count <= 0) { @@ -964,14 +1155,10 @@ mp_util_get_list_data(mp_layout_data_t * layout_data) return false; } - ret = audio_svc_list_item_new(&(layout_data->svc_handle), layout_data->item_count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret); - - ret = audio_svc_get_list_item(ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL, - layout_data->filter_str, NULL, 0, layout_data->item_count, - layout_data->svc_handle); - - if (ret != AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_list_create(&(layout_data->svc_handle), + layout_data->track_type, layout_data->type_str, NULL, + layout_data->filter_str, layout_data->playlist_id, 0, layout_data->item_count); + if (ret != 0) { DEBUG_TRACE("fail to get list item: %d", ret); goto error; @@ -979,122 +1166,34 @@ mp_util_get_list_data(mp_layout_data_t * layout_data) } else { - int group_count = 0; - int i = 0; - int index = 0; - - ret = audio_svc_count_group_item(ad->media_svc_handle, layout_data->group_type, NULL, NULL, layout_data->filter_str, NULL, - &group_count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret); - - if (group_count <= 0) - { - DEBUG_TRACE("No such groups"); - goto error; - } + int count = 0; + int res = 0; - ret = audio_svc_group_item_new(&group_record, group_count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret); + mp_media_filter_create(&filter); + __mp_util_set_filter(filter, layout_data->group_type, layout_data->filter_str); - ret = audio_svc_get_group_item(ad->media_svc_handle, layout_data->group_type, NULL, NULL, layout_data->filter_str, NULL, 0, - group_count, group_record); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("fail to get list item: %d", ret); - goto error; - } - - char *group_title[group_count]; - int item_count[group_count]; - - for (i = 0; i < group_count; i++) - { - int count = 0; - int size = 0; - - ret = audio_svc_group_item_get_val(group_record, i, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, - &(group_title[i]), &size, -1); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("fail to get list item: %d", ret); - goto error; - } - - ret = audio_svc_count_list_item(ad->media_svc_handle, layout_data->track_type, group_title[i], NULL, NULL, NULL, - &count); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("fail to get list item: %d", ret); - goto error; - } - - item_count[i] = count; - layout_data->item_count += count; - } - - if (layout_data->item_count <= 0) - { - DEBUG_TRACE("No group items"); - goto error; - } - - ret = audio_svc_list_item_new(&(layout_data->svc_handle), layout_data->item_count); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("fail to get list item: %d", ret); - goto error; - } - - for (i = 0; i < group_count; i++) - { - AudioHandleType *handle; - ret = audio_svc_list_item_get(layout_data->svc_handle, index, &handle); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("fail to get list item: %d", ret); - goto error; - } - - ret = audio_svc_get_list_item(ad->media_svc_handle, layout_data->track_type, group_title[i], NULL, NULL, NULL, 0, - item_count[i], handle); - DEBUG_TRACE("0x%x, index: %d", handle, index); - index += item_count[i]; - - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("fail to get list item: %d", ret); - goto error; - } - - } - - for (i = 0; i < layout_data->item_count; i++) - { - char *title; - int size; - audio_svc_list_item_get_val(layout_data->svc_handle, i, AUDIO_SVC_LIST_ITEM_TITLE, &title, - &size, -1); - DEBUG_TRACE("%s", title); - } + res = mp_media_info_list_count_w_filter(layout_data->track_type,layout_data->type_str, layout_data->playlist_id, filter, &count); + if(res || count <= 0) goto error; + mp_media_filter_destory(filter); } - return true; - error: - if (group_record) - audio_svc_group_item_free(group_record); + error: + mp_media_filter_destory(filter); if (layout_data->svc_handle) - audio_svc_list_item_free(layout_data->svc_handle); + mp_media_info_list_destroy(layout_data->svc_handle); return false; } +#ifndef MP_SOUND_PLAYER void _mp_util_set_tabbar_item(Evas_Object *control_bar, Elm_Object_Item **item, Elm_Object_Item **after, int enabled, char *icon, char *label, void *data) { if (*item && !enabled) { + mp_language_mgr_unregister_object_item(*item); elm_object_item_del(*item); *item = NULL; } @@ -1116,37 +1215,44 @@ mp_util_set_library_controlbar_items(void *data) struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); MP_CHECK(ad->library); + + Elm_Object_Item *prev_selected = elm_toolbar_selected_item_get(ad->tabbar); + Elm_Object_Item *after = ad->library->ctltab_plist; - _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_album), &after, + _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_album), &after, ad->library->albums, MP_CTRBAR_ICON_ALBUM, GET_STR(STR_MP_ALBUMS), ad); - _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_artist), &after, + _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_artist), &after, ad->library->artists, MP_CTRBAR_ICON_ARTIST, GET_STR(STR_MP_ARTISTS), ad); - _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_genres), &after, + _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_genres), &after, ad->library->genres, MP_CTRBAR_ICON_GENRE, GET_STR(STR_MP_GENRES), ad); - _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_composer), &after, + _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_composer), &after, ad->library->composers, MP_CTRBAR_ICON_COMPOSER, GET_STR(STR_MP_COMPOSERS), ad); - _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_year), &after, + _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_year), &after, ad->library->years, MP_CTRBAR_ICON_YEAR, GET_STR(STR_MP_YEARS), ad); + _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_folder), &after, + ad->library->folders, MP_CTRBAR_ICON_FOLDER, GET_SYS_STR(STR_MP_FOLDERS), ad); + if (prev_selected != elm_toolbar_selected_item_get(ad->tabbar)) { + mp_debug("prev selected item is deleted.. select song tab"); + elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE); + } } +#endif bool -mp_util_get_uri_from_app_svc(bundle * b, struct appdata *ad, char **path) +mp_util_get_uri_from_app_svc(service_h service, struct appdata *ad, char **path) { char *uri = NULL; - const char *operation = NULL; + char *operation = NULL; + char *mime = NULL; - if (!b || !bundle_get_count(b)) - { - WARN_TRACE("No exist b pointer or bundle count value."); - return FALSE; - } + MP_CHECK_FALSE(service); - operation = appsvc_get_operation(b); + service_get_operation(service, &operation); DEBUG_TRACE("operation: %s", operation); if(!operation) @@ -1154,25 +1260,33 @@ mp_util_get_uri_from_app_svc(bundle * b, struct appdata *ad, char **path) return FALSE; } - if(!strcmp(APPSVC_OPERATION_VIEW , operation)) + if(!strcmp(SERVICE_OPERATION_VIEW , operation)) { - uri = (char *)appsvc_get_uri(b); - if (uri) + service_get_uri(service, &uri); + if (uri && strlen(uri)) { - *path = strdup(uri); + *path = uri; } else { + *path = NULL; WARN_TRACE("No URI."); + SAFE_FREE(operation); return FALSE; } + + service_get_mime(service, &mime); + mp_debug("mime : %s", mime); + SAFE_FREE(mime); } else { + *path = NULL; WARN_TRACE("No Operation."); return FALSE; } + SAFE_FREE(operation); DEBUG_TRACE("URI path uri : %s", uri); return TRUE; } @@ -1183,20 +1297,20 @@ mp_util_reset_genlist_mode_item(Evas_Object *genlist) MP_CHECK(genlist); Elm_Object_Item *gl_item = (Elm_Object_Item *)elm_genlist_decorated_item_get(genlist); - if (gl_item) + if (gl_item) { elm_genlist_item_decorate_mode_set(gl_item, "slide", EINA_FALSE); + elm_genlist_item_select_mode_set(gl_item, ELM_OBJECT_SELECT_MODE_DEFAULT); + } } +#ifndef MP_SOUND_PLAYER view_data_t * mp_util_get_view_data(struct appdata *ad) { MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); - - Evas_Object *cur_view = ad->library->cur_view; - MP_CHECK_NULL(cur_view); + MP_CHECK_NULL(ad->naviframe); - return evas_object_data_get(cur_view, "view_data"); + return evas_object_data_get(ad->naviframe, "view_data"); } mp_layout_data_t* @@ -1205,6 +1319,7 @@ mp_util_get_layout_data(Evas_Object* obj) MP_CHECK_NULL(obj); return evas_object_data_get(obj, "layout_data"); } +#endif bool mp_util_is_image_valid(Evas *evas, const char *path) @@ -1366,28 +1481,7 @@ mp_util_shorten_path(char *path_info) return output; } -void -mp_util_grab_mm_keys(struct appdata *ad) -{ - utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_NEXTSONG, OR_EXCLUSIVE_GRAB); - utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PREVIOUSSONG, OR_EXCLUSIVE_GRAB); - utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PAUSECD, OR_EXCLUSIVE_GRAB); - utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PLAYCD, OR_EXCLUSIVE_GRAB); - utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_FASTFORWARD, OR_EXCLUSIVE_GRAB); - utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_REWIND, OR_EXCLUSIVE_GRAB); -} - -void -mp_util_ungrab_mm_keys(struct appdata *ad) -{ - utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_NEXTSONG); - utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PREVIOUSSONG); - utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PAUSECD); - utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PLAYCD); - utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_FASTFORWARD); - utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_REWIND); -} - +#ifndef MP_SOUND_PLAYER void mp_util_unset_rename(mp_layout_data_t * layout_data) { @@ -1404,10 +1498,12 @@ mp_util_unset_rename(mp_layout_data_t * layout_data) } layout_data->rename_git = NULL; layout_data->rename_mode = false; + //set title button sensitivity mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count); } } +#endif bool mp_util_is_db_updating(void) @@ -1421,23 +1517,21 @@ mp_util_is_db_updating(void) } /*haptic*/ + +#define MP_VIBRATION_DEVICE 0 + void mp_util_stop_vibration(struct appdata *ad) { startfunc; MP_CHECK(ad); int ret = -1; - if (ad->haptic_handle > 0) { - ret = device_haptic_stop_play(ad->haptic_handle); - if (ret != 0) - ERROR_TRACE("device_haptic_stop_play failed[%d]!", ret); - - ret = device_haptic_close(ad->haptic_handle); - if (ret != 0) - ERROR_TRACE("device_haptic_close failed[%d]!", ret); - } - - ad->haptic_handle = 0; + ret = haptic_stop_device(MP_VIBRATION_DEVICE); + if (ret != 0) + ERROR_TRACE("haptic_stop_device failed[%d]!", ret); + ret = haptic_deinitialize(); + if (ret != 0) + ERROR_TRACE("haptic_deinitialize failed[%d]!", ret); } static Eina_Bool _mp_util_vibration_timer_cb(void *data) @@ -1460,27 +1554,20 @@ bool mp_util_play_vibration(struct appdata *ad, float duration) MP_CHECK_FALSE(duration > 0); int ret = 0; - if (ad->haptic_handle > 0) { - DEBUG_TRACE("Remove previous haptic handle."); - mp_util_stop_vibration(ad); - } - ad->haptic_handle = device_haptic_open(DEV_IDX_0, 0); - if (ad->haptic_handle < 0) { - ERROR_TRACE("device_haptic_open failed[%d]!", ret); + ret = haptic_initialize(); + if(ret != HAPTIC_ERROR_NONE) + { + DEBUG_TRACE("Error:haptic_initialize: %d ", ret); return FALSE; } mp_ecore_timer_del(ad->vib_timer); ad->vib_timer = ecore_timer_add(duration, _mp_util_vibration_timer_cb, ad); - char filepath[MAX_NAM_LEN+1]; - svi_get_path(SVI_TYPE_VIB, SVI_VIB_TOUCH_TOUCH, filepath, sizeof(filepath)); - - ret = device_haptic_play_file(ad->haptic_handle, filepath, 1, HAPTIC_FEEDBACK_LEVEL_5); - + ret = haptic_vibrate_monotone(MP_VIBRATION_DEVICE, duration, HAPTIC_LEVEL_AUTO); if (ret != 0) { - ERROR_TRACE("device_haptic_play_pattern failed[%d]!", ret); + ERROR_TRACE("haptic_vibrate_monotone failed[%d]!", ret); return FALSE; } @@ -1491,12 +1578,13 @@ bool mp_util_is_bt_connected(void) { int ret = 0; - int connected = 0; + bool connected = 0; bool ret_val = FALSE; char *bt_name = NULL; - ret = mm_sound_route_get_a2dp_status(&connected, &bt_name); - if (ret == MM_ERROR_NONE) { + ret = sound_manager_get_a2dp_status(&connected, &bt_name); + if (ret == SOUND_MANAGER_ERROR_NONE) + { DEBUG_TRACE("Is Bluetooth A2DP On Success : [%d][%s]", connected, bt_name); if (connected != 0) { @@ -1533,31 +1621,30 @@ mp_util_is_earjack_inserted(void) void mp_util_get_sound_path(mp_snd_path *snd_path) { - system_audio_route_t policy = 0; - mm_sound_route_get_system_policy(&policy); + sound_device_in_e in; + sound_device_out_e out; - if (policy == SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT) - { - DEBUG_TRACE("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT"); - if (mp_util_is_bt_connected()) - *snd_path = MP_SND_PATH_BT; - else if (mp_util_is_earjack_inserted()) - *snd_path = MP_SND_PATH_EARPHONE; - else - *snd_path = MP_SND_PATH_SPEAKER; - } - else if (policy == SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP) - { - DEBUG_TRACE("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP"); - if (mp_util_is_earjack_inserted()) - *snd_path = MP_SND_PATH_EARPHONE; - else - *snd_path = MP_SND_PATH_SPEAKER; - } - else - { - DEBUG_TRACE("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY"); + sound_manager_get_active_device(&in, &out); + switch(out) { + case SOUND_DEVICE_OUT_SPEAKER: + ERROR_TRACE("SOUND_DEVICE_OUT_SPEAKER"); *snd_path = MP_SND_PATH_SPEAKER; + break; + + case SOUND_DEVICE_OUT_WIRED_ACCESSORY: + ERROR_TRACE("SOUND_DEVICE_OUT_WIRED_ACCESSORY"); + *snd_path = MP_SND_PATH_EARPHONE; + break; + + case SOUND_DEVICE_OUT_BT_A2DP: + ERROR_TRACE("SOUND_DEVICE_OUT_BT_A2DP"); + *snd_path = MP_SND_PATH_BT; + break; + + default: + DEBUG_TRACE("default:speaker"); + *snd_path = MP_SND_PATH_SPEAKER; + break; } } @@ -1631,15 +1718,120 @@ mp_util_search_markup_keyword(const char *string, char *searchword, bool *result return return_string; } -inline Elm_Object_Item * -mp_util_toolbar_append_object(Evas_Object *toolbar, Evas_Object *obj, int sel) +bool +mp_util_is_other_player_playing() { - MP_CHECK_NULL(toolbar); + bool ret = FALSE; + + int state = 0; + int pid = 0; + if (vconf_get_int(VCONFKEY_MUSIC_STATE, &state) == 0) { + if (state == VCONFKEY_MUSIC_PLAY) { + if (vconf_get_int(MP_VCONFKEY_PLAYING_PID, &pid) == 0) { + if (pid != getpid()) { + mp_debug("## other player is playing some music ##"); + ret = TRUE; + } + } else { + mp_error("vconf_get_int() error"); + } + } + } else { + mp_error("vconf_get_int() error"); + } + + return ret; +} + +int +mp_commmon_check_rotate_lock(void) +{ + int lock = FALSE; + lock = -1; + if (!vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &lock)) + { + mp_debug("lock state: %d", lock); + return lock; + } + else + return -1; +} - Elm_Object_Item *item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(item, "object", obj); - return item; +int +mp_check_battery_available(void) +{ + int batt_state = -1; + + if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &batt_state)) + { + /* low battery status + * VCONFKEY_SYSMAN_BAT_WARNING_LOW = 15 % + * VCONFKEY_SYSMAN_BAT_CRITICAL_LOW = 5 % + * VCONFKEY_SYSMAN_BAT_POWER_OFF = 1 % + * since 2011. 03. 02 + */ + if (batt_state <= VCONFKEY_SYSMAN_BAT_POWER_OFF) //VCONFKEY_SYSMAN_BAT_POWER_OFF - 1% remaninging + { + // don't need to check changing state. + /* + if(!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &batt_state)) + { + if(batt_state ==1) + { + DEBUG_TRACE("current chargine status"); + return 0; + } + } */ + + WARN_TRACE("batt_state: %d", batt_state); + return -1; + } + } + else + { + ERROR_TRACE("Fail to get battery status"); + } + return 0; +} + +int +mp_check_mass_storage_mode(void) +{ + int mass_storage = -1; + + if (!vconf_get_int(VCONFKEY_USB_STORAGE_STATUS, &mass_storage)) + { + DEBUG_TRACE("current mass_storage : %d", mass_storage); + if (mass_storage != VCONFKEY_USB_STORAGE_STATUS_OFF) + return -1; + } + else + { + ERROR_TRACE("Fail to get status"); + } + return 0; +} + +bool +mp_util_sleep_lock_set(bool lock) +{ + int ret = POWER_ERROR_NONE; + + if (lock) { + mp_debug("sleep_lock"); + ret = power_lock_state(POWER_STATE_SCREEN_OFF, 0); + } else { + mp_debug("sleep_unlock"); + ret = power_unlock_state(POWER_STATE_SCREEN_OFF); + } + + if (ret != POWER_ERROR_NONE) { + mp_error("pm_lock(un_lock) error.. [%d]", ret); + return FALSE; + } + + return TRUE; } bool @@ -1657,4 +1849,20 @@ mp_util_toolbar_item_valid_check(Elm_Object_Item *item) return FALSE; } +void +mp_util_strncpy_safe(char *x_dst, const char *x_src, int max_len) +{ + if (!x_src || strlen(x_src) == 0) { + mp_error("x_src is NULL"); + return; + } + + if (max_len < 1) { + mp_error("length is Wrong"); + return; + } + + strncpy(x_dst, x_src, max_len-1); + x_dst[max_len-1] = '\0'; +} diff --git a/src/common/mp-view-manager.c b/src/common/mp-view-manager.c index 09dfe77..2bc591e 100755 --- a/src/common/mp-view-manager.c +++ b/src/common/mp-view-manager.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #include "mp-view-manager.h" #include "mp-edit-view.h" #include "mp-playlist-view.h" @@ -23,14 +21,10 @@ #include "mp-common.h" #include "mp-menu.h" #include "mp-play-view.h" +#include "mp-ug-launch.h" #include "mp-search.h" #include "mp-widget.h" #include "mp-library.h" -#include "mp-util.h" - -#define MP_OPTION_HEADER_COND(type) type == MP_VIEW_CONTENT_NEW_PLAYLIST\ - || type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP\ - || type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT typedef struct { @@ -51,6 +45,7 @@ mp_view_manager_push_view_content(view_data_t * view_data, Evas_Object * content { int view_idx = -1; mp_view_histroy_t *last_history; + Evas_Object *top_view = NULL; startfunc; @@ -65,7 +60,7 @@ mp_view_manager_push_view_content(view_data_t * view_data, Evas_Object * content Elm_Object_Item *navi_item = elm_naviframe_top_item_get(view_data->navibar); if (navi_item) { - Evas_Object *top_view = elm_object_item_content_get(navi_item); + top_view = elm_object_item_content_get(navi_item); MP_CHECK(top_view); mp_view_layout_progress_timer_freeze(top_view); @@ -79,33 +74,67 @@ mp_view_manager_push_view_content(view_data_t * view_data, Evas_Object * content last_history->view_index = view_idx; last_history->view_layout = content; - /* - last_history->navi_item = - elm_navigationbar_ex_item_push(view_data->navibar, content, "music/title_option_header"); - */ - if(MP_VIEW_CONTENT_PLAY == type || MP_OPTION_HEADER_COND(type)) + MP_TA_ACUM_ITEM_BEGIN(" elm_naviframe_item_push(play_view)", 0); + if(view_idx == 0) + { + last_history->navi_item = + elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content, "tabbar"); + } + else if(MP_VIEW_CONTENT_PLAY == type) { elm_naviframe_prev_btn_auto_pushed_set(view_data->navibar, EINA_FALSE); last_history->navi_item = elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content, "1line/music"); } else - last_history->navi_item = - elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content, "1line/music"); - - mp_view_manager_set_option_header_visible(last_history->navi_item, last_history->content_type); - - if(view_idx == 0) { - mp_library_controlbar_visible_set(ad, true); - elm_naviframe_item_title_visible_set(last_history->navi_item, false); + if (last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST + || last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT + || last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP) + { + last_history->navi_item = + elm_naviframe_item_push(view_data->navibar, GET_STR("IDS_MUSIC_BODY_CREATE_PLAYLIST"), NULL, NULL, content, "1line"); + + Evas_Object *btn_save = NULL; + btn_save = elm_button_add(view_data->navibar); + elm_object_style_set(btn_save, "naviframe/title/default"); + evas_object_size_hint_align_set(btn_save, EVAS_HINT_FILL, EVAS_HINT_FILL); + if(last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST) + evas_object_smart_callback_add(btn_save, "clicked", mp_playlist_view_create_new_done_cb, view_data); + else if(last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP) + evas_object_smart_callback_add(btn_save, "clicked", mp_menu_add_to_play_list_done_create_cb, ad); + else + evas_object_smart_callback_add(btn_save, "clicked", mp_edit_view_create_new_done_cb, evas_object_data_get(top_view, "layout_data")); + + elm_object_text_set(btn_save, GET_SYS_STR("IDS_COM_SK_SAVE")); + mp_language_mgr_object_item_text_ID_set(last_history->navi_item, "IDS_COM_SK_SAVE"); + evas_object_show(btn_save); + elm_object_item_part_content_set(last_history->navi_item, "title_left_btn", btn_save); + + Evas_Object *btn_cancel = elm_button_add(view_data->navibar); + elm_object_style_set(btn_cancel, "naviframe/title/default"); + evas_object_size_hint_align_set(btn_cancel, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(btn_cancel, "clicked", mp_playlist_view_create_new_cancel_cb, view_data); + elm_object_text_set(btn_cancel, GET_SYS_STR("IDS_COM_SK_CANCEL")); + mp_language_mgr_object_item_text_ID_set(last_history->navi_item, "IDS_COM_SK_CANCEL"); + evas_object_show(btn_cancel); + elm_object_item_part_content_set(last_history->navi_item, "title_right_btn", btn_cancel); + + mp_view_manager_set_controlbar_visible(last_history->navi_item, false); + } + else + { + last_history->navi_item = + elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content, "1line"); + } } - else - mp_library_controlbar_visible_set(ad, false); + MP_TA_ACUM_ITEM_END(" elm_naviframe_item_push(play_view)", 0); + + mp_language_mgr_register_object_item(last_history->navi_item, NULL); evas_object_data_set(content, "navi_item", last_history->navi_item); - if (view_idx) //It shouldn't be set true when first navi content is pushed. Effect finished callback not called in this case.. + if (view_idx) //Do not set as true when first push. Effect finished callback not called in this case.. ad->navi_effect_in_progress = TRUE; ad->view_history = g_list_append(ad->view_history, last_history); @@ -119,6 +148,12 @@ void mp_view_manager_unswallow_info_ug_layout(struct appdata *ad) { MP_CHECK(ad); + if(ad->info_ug_base) + { + edje_object_part_unswallow(ad->info_ug_base, ad->info_ug_layout); + evas_object_hide(ad->info_ug_layout); + mp_ug_send_message(ad, MP_UG_MESSAGE_DEL); + } } void @@ -142,7 +177,8 @@ mp_view_manager_pop_view_content(view_data_t * view_data, bool pop_to_first, boo { elm_naviframe_item_pop(view_data->navibar); ad->navi_effect_in_progress = TRUE; - SAFE_FREE(view_item->data); + mp_language_mgr_unregister_object_item(last_history->navi_item); + SAFE_FREE(last_history); ad->view_history = g_list_delete_link(ad->view_history, view_item); view_item = g_list_last(ad->view_history); @@ -158,7 +194,8 @@ mp_view_manager_pop_view_content(view_data_t * view_data, bool pop_to_first, boo elm_naviframe_item_pop_to(elm_naviframe_bottom_item_get(view_data->navibar)); while (last_history->view_index > 0) { - SAFE_FREE(view_item->data); + mp_language_mgr_unregister_object_item(last_history->navi_item); + SAFE_FREE(last_history); ad->view_history = g_list_delete_link(ad->view_history, view_item); view_item = g_list_last(ad->view_history); @@ -167,8 +204,6 @@ mp_view_manager_pop_view_content(view_data_t * view_data, bool pop_to_first, boo } } - mp_view_manager_set_option_header_visible(last_history->navi_item, last_history->content_type); - Elm_Object_Item *navi_item = elm_naviframe_top_item_get(view_data->navibar); MP_CHECK(navi_item); Evas_Object *top_view = elm_object_item_content_get(navi_item); @@ -196,31 +231,28 @@ mp_view_manager_pop_to_view_content(view_data_t * view_data, mp_view_content_t t mp_view_manager_unswallow_info_ug_layout(ad); - if (last_history->content_type != type) { - while (last_history->view_index > 0) + while (last_history->view_index > 0) + { + DEBUG_TRACE("Content type: %d", last_history->content_type); + if (last_history->content_type == type) { - DEBUG_TRACE("Content type: %d", last_history->content_type); - if (last_history->content_type == type) - { - find_view = true; - } - SAFE_FREE(view_item->data); - ad->view_history = - g_list_delete_link(ad->view_history, view_item); - view_item = g_list_last(ad->view_history); - MP_CHECK(view_item); - last_history = view_item->data; + find_view = true; + } + mp_language_mgr_unregister_object_item(last_history->navi_item); + SAFE_FREE(last_history); + ad->view_history = + g_list_delete_link(ad->view_history, view_item); + view_item = g_list_last(ad->view_history); + MP_CHECK(view_item); + last_history = view_item->data; - if (find_view) - { - elm_naviframe_item_pop_to(last_history->navi_item); - break; - } + if (find_view) + { + elm_naviframe_item_pop_to(last_history->navi_item); + break; } } - mp_view_manager_set_option_header_visible(last_history->navi_item, last_history->content_type); - Elm_Object_Item *navi_item = elm_naviframe_top_item_get(view_data->navibar); MP_CHECK(navi_item); Evas_Object *top_view = elm_object_item_content_get(navi_item); @@ -246,10 +278,9 @@ Evas_Object * mp_view_manager_get_last_view_layout(struct appdata * ad) { MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); + MP_CHECK_NULL(ad->naviframe); - Evas_Object *cur_view = ad->library->cur_view; - MP_CHECK_NULL(cur_view); + Evas_Object *cur_view = ad->naviframe; view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); MP_CHECK_NULL(cur_view_data); @@ -269,11 +300,10 @@ mp_view_manager_get_play_view_navi_item(struct appdata *ad) { startfunc; MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); + MP_CHECK_NULL(ad->naviframe); mp_view_histroy_t *history; - Evas_Object *cur_view = ad->library->cur_view; - MP_CHECK_NULL(cur_view); + Evas_Object *cur_view = ad->naviframe; view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); MP_CHECK_NULL(cur_view_data); @@ -304,8 +334,11 @@ mp_view_manager_play_view_title_label_set(struct appdata *ad, const char *title) MP_CHECK(ad); navi_item = mp_view_manager_get_play_view_navi_item(ad); - if(navi_item) + if(navi_item) { + MP_TA_ACUM_ITEM_BEGIN(" elm_object_item_text_set(play_view_title)", 0); elm_object_item_text_set(navi_item, title); + MP_TA_ACUM_ITEM_END(" elm_object_item_text_set(play_view_title)", 0); + } } @@ -313,9 +346,8 @@ Evas_Object * mp_view_manager_get_first_view_layout(struct appdata *ad) { MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); - Evas_Object *cur_view = ad->library->cur_view; + Evas_Object *cur_view = ad->naviframe; MP_CHECK_NULL(cur_view); view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); @@ -337,9 +369,8 @@ mp_view_manager_get_edit_view_layout(struct appdata * ad) mp_view_histroy_t *history = NULL; MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); - Evas_Object *cur_view = ad->library->cur_view; + Evas_Object *cur_view = ad->naviframe; MP_CHECK_NULL(cur_view); view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); @@ -368,9 +399,8 @@ bool mp_view_manager_is_play_view(struct appdata * ad) { MP_CHECK_FALSE(ad); - MP_CHECK_FALSE(ad->library); - Evas_Object *cur_view = ad->library->cur_view; + Evas_Object *cur_view = ad->naviframe; MP_CHECK_FALSE(cur_view); view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); @@ -396,9 +426,8 @@ mp_view_manager_get_view_layout(struct appdata * ad, mp_view_content_t type) mp_view_histroy_t *history = NULL; MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); - Evas_Object *cur_view = ad->library->cur_view; + Evas_Object *cur_view = ad->naviframe; MP_CHECK_NULL(cur_view); view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); @@ -472,7 +501,7 @@ _mp_view_manager_set_back_button(Evas_Object * navibar, mp_view_histroy_t * last Evas_Object *button = NULL; if(cb) { - button = mp_widget_create_button(navibar, "naviframe/back_btn/music/default", NULL, NULL, cb, data); + button = mp_widget_create_button(navibar, "naviframe/back_btn/default", NULL, NULL, cb, data); elm_object_item_part_content_set(last_history->navi_item, ELM_NAVIFRAME_ITEM_PREV_BTN, button); } else @@ -496,138 +525,105 @@ _mp_view_manager_set_title_button(Evas_Object * navibar, mp_view_histroy_t * las { last_history->controlbar = elm_toolbar_add(navibar); elm_toolbar_shrink_mode_set(last_history->controlbar, ELM_TOOLBAR_SHRINK_EXPAND); - if(MP_OPTION_HEADER_COND(last_history->content_type)) - { - elm_object_style_set(last_history->controlbar, "music/naviframe"); - elm_object_item_part_content_set(last_history->navi_item, ELM_NAVIFRAME_ITEM_OPTIONHEADER, last_history->controlbar); - } - else - { - elm_object_style_set(last_history->controlbar, "music/naviframe"); - elm_object_item_part_content_set(last_history->navi_item, ELM_NAVIFRAME_ITEM_CONTROLBAR, last_history->controlbar); - } + elm_object_style_set(last_history->controlbar, "naviframe"); + elm_object_item_part_content_set(last_history->navi_item, ELM_NAVIFRAME_ITEM_CONTROLBAR, last_history->controlbar); } control_bar = last_history->controlbar; MP_CHECK(control_bar); - if(MP_OPTION_HEADER_COND(last_history->content_type)) - { - if (label || icon_path) - { - - button = elm_button_add(control_bar); - elm_object_style_set(button, "music/navigationbar_control/multiline"); - evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.5); + if(!icon_path && !label) + { + Elm_Object_Item *item = elm_toolbar_item_append(control_bar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(item, "object", button); + elm_object_item_disabled_set(item, EINA_TRUE); + last_history->control_buttons[type] = item; + } + else + { + button = elm_button_add(control_bar); + elm_object_style_set(button, "bottom_control"); - if (label) - elm_object_text_set(button, label); + evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.5); - evas_object_smart_callback_add(button, "clicked", cb, data); - elm_object_focus_allow_set(button, EINA_FALSE); /* Cancel the rename mode without be focused */ + evas_object_smart_callback_add(button, "clicked", cb, data); + elm_object_focus_allow_set(button, EINA_FALSE); /* Cancel the rename mode without be focused */ - evas_object_show(button); + if (icon_path) { + Evas_Object *icon = elm_icon_add(control_bar); + elm_icon_file_set(icon, icon_path, NULL); + elm_object_content_set(button, icon); } - last_history->control_buttons[type] = elm_toolbar_item_append(control_bar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(last_history->control_buttons[type], "object", button); + evas_object_show(button); - if (label) - { - if (!strcmp(GET_SYS_STR("IDS_COM_SK_EDIT"), label) ||!strcmp(GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), label)) - { - last_history->edit_button = last_history->control_buttons[type]; - } - else if (!strcmp(GET_SYS_STR("IDS_COM_SK_SEARCH"), label)) - { - last_history->search_button = last_history->control_buttons[type]; - } - else if (!strcmp(GET_SYS_STR("IDS_COM_SK_CANCEL"), label)) - { - last_history->cancel_button = last_history->control_buttons[type]; - } - } + Elm_Object_Item *item = elm_toolbar_item_append(control_bar, icon_path, NULL, cb, data); + last_history->control_buttons[type] = item; } - else + + if (label) { - if(!icon_path && !label) { - last_history->control_buttons[type] = elm_toolbar_item_append(control_bar, NULL, NULL, NULL, NULL); - elm_object_item_disabled_set(last_history->control_buttons[type], EINA_TRUE); + if (!strcmp(GET_SYS_STR("IDS_COM_SK_EDIT"), label) ||!strcmp(GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), label)) + { + last_history->edit_button = last_history->control_buttons[type]; } - else + else if (!strcmp(GET_SYS_STR("IDS_COM_SK_SEARCH"), label)) { - button = elm_button_add(control_bar); - elm_object_style_set(button, "music/bottom_control"); - - evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.5); - - evas_object_smart_callback_add(button, "clicked", cb, data); - elm_object_focus_allow_set(button, EINA_FALSE); /* Cancel the rename mode without be focused */ - - if(icon_path) - { - Evas_Object *icon = elm_icon_add(control_bar); - elm_icon_file_set(icon, icon_path, NULL); - elm_object_content_set(button, icon); - } - - evas_object_show(button); - - Elm_Object_Item *item = elm_toolbar_item_append(control_bar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(item, "object", button); - last_history->control_buttons[type] = item; + last_history->search_button = last_history->control_buttons[type]; } - - if (label) + else if (!strcmp(GET_SYS_STR("IDS_COM_SK_CANCEL"), label)) { - if (!strcmp(GET_SYS_STR("IDS_COM_SK_EDIT"), label) ||!strcmp(GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), label)) - { - last_history->edit_button = last_history->control_buttons[type]; - } - else if (!strcmp(GET_SYS_STR("IDS_COM_SK_SEARCH"), label)) - { - last_history->search_button = last_history->control_buttons[type]; - } - else if (!strcmp(GET_SYS_STR("IDS_COM_SK_CANCEL"), label)) - { - last_history->cancel_button = last_history->control_buttons[type]; - } + last_history->cancel_button = last_history->control_buttons[type]; } } } void -mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void *data) +mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *text_ID, void *data) { startfunc; - Evas_Object *content = NULL; + struct appdata *ad = NULL; + GList *last_node = NULL; + mp_view_histroy_t *last_history = NULL; + Evas_Object *navibar = NULL; + char *title = NULL; int i = 0; MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); - struct appdata *ad = view_data->ad; + ad = view_data->ad; MP_CHECK(ad); - GList *last_item = g_list_last(ad->view_history); - MP_CHECK(last_item); + last_node = g_list_last(ad->view_history); + MP_CHECK(last_node); - mp_view_histroy_t *last_history = last_item->data; + last_history = last_node->data; MP_CHECK(last_history); - content = last_history->view_layout; - MP_CHECK(content); - - Evas_Object *navibar = view_data->navibar; + navibar = ad->naviframe; MP_CHECK(navibar); + if(text_ID && strstr(text_ID, "IDS_COM")) + title = GET_SYS_STR(text_ID); + else + title = GET_STR(text_ID); + if (title) { DEBUG_TRACE("title: %s", title); + if (last_history->content_type == MP_VIEW_CONTENT_PLAY) + MP_TA_ACUM_ITEM_BEGIN(" elm_object_item_text_set(play_view_first)", 0); + else + MP_TA_ACUM_ITEM_BEGIN(" elm_object_item_text_set(track_view)", 0); elm_object_item_text_set(last_history->navi_item, title); + mp_language_mgr_object_item_text_ID_set(last_history->navi_item, text_ID); + if (last_history->content_type == MP_VIEW_CONTENT_PLAY) + MP_TA_ACUM_ITEM_END(" elm_object_item_text_set(play_view_first)", 0); + else + MP_TA_ACUM_ITEM_END(" elm_object_item_text_set(track_view)", 0); } //delete all buttons... @@ -651,6 +647,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void { mp_layout_data_t *layout_data = evas_object_data_get(last_history->view_layout, "layout_data"); MP_CHECK(layout_data); + DEBUG_TRACE("layout_data: 0x%x", layout_data); MP_CHECK_LAYOUT_DATA(layout_data); DEBUG_TRACE("MP_VIEW_CONTENT_LIST. category: %d, rename mode: %d, add tracks : %d ", @@ -662,19 +659,19 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void if (layout_data->ad->b_add_tracks) { DEBUG_TRACE(""); - _mp_view_manager_set_title_button(navibar, last_history, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), - MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1, - mp_track_view_add_to_playlist_done_cb, data); + _mp_view_manager_set_title_button(navibar, last_history, + GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_ICON_NAVI_CANCEL, + MP_NAVI_CONTROL_BUTTON1, + mp_track_view_add_to_playlist_cancel_cb, data); _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, MP_NAVI_CONTROL_BUTTON2, NULL, NULL); _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, MP_NAVI_CONTROL_BUTTON3, NULL, NULL); _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, MP_NAVI_CONTROL_BUTTON4, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, - GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_ICON_NAVI_CANCEL, - MP_NAVI_CONTROL_BUTTON5, - mp_track_view_add_to_playlist_cancel_cb, data); + _mp_view_manager_set_title_button(navibar, last_history, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), + MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON5, + mp_track_view_add_to_playlist_done_cb, data); } else { @@ -697,19 +694,18 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void MP_NAVI_CONTROL_BUTTON1, mp_edit_view_delete_cb, data); } - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON2, NULL, NULL); + _mp_view_manager_set_title_button(navibar, last_history, + GET_STR("IDS_MUSIC_SK_SHARE"), + MP_ICON_NAVI_SHARE, MP_NAVI_CONTROL_BUTTON2, + mp_edit_view_share_cb, data); _mp_view_manager_set_title_button(navibar, last_history, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON3, mp_edit_view_add_to_plst_cb, data); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON4, NULL, NULL); _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_CANCEL"), - MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON5, + MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON4, mp_edit_view_cencel_cb, data); - } else if (layout_data->category == MP_LAYOUT_GROUP_LIST) { @@ -728,7 +724,6 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON5, mp_edit_view_cencel_cb, data); - } else { @@ -760,8 +755,8 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void if (title) layout_data->navibar_title = g_strdup(title); - if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type - || AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) + if (MP_TRACK_BY_ALBUM == layout_data->track_type + || MP_TRACK_BY_ARTIST == layout_data->track_type) layout_data->navibar_title = g_strdup(layout_data->type_str); layout_data->callback_data = data; @@ -772,7 +767,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void DEBUG_TRACE(""); _mp_view_manager_set_title_button(navibar, last_history, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), - MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON5, + MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1, mp_track_view_add_to_playlist_done_cb, data); _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, MP_NAVI_CONTROL_BUTTON2, NULL, NULL); @@ -782,11 +777,11 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void MP_NAVI_CONTROL_BUTTON4, NULL, NULL); _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_CANCEL"), - MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON1, + MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON5, mp_track_view_add_to_playlist_cancel_cb, data); } - else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYLIST) + else if (layout_data->track_type == MP_TRACK_BY_PLAYLIST) { if (!mp_view_manager_get_view_layout(ad, MP_VIEW_CONTENT_SEARCH)) { @@ -797,6 +792,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void mp_common_edit_button_cb, data); _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, MP_NAVI_CONTROL_BUTTON2, NULL, NULL); + if (layout_data->playlist_id > 0) _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_ADD"), @@ -813,7 +809,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void data); _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON4, NULL, NULL); + MP_NAVI_CONTROL_BUTTON4, NULL, NULL); } else { @@ -839,7 +835,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void DEBUG_TRACE(""); _mp_view_manager_set_title_button(navibar, last_history, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), - MP_ICON_NAVI_EDIT, + MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1, mp_common_edit_button_cb, data); @@ -861,7 +857,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void DEBUG_TRACE(""); _mp_view_manager_set_title_button(navibar, last_history, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), - MP_ICON_NAVI_EDIT, + MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1, mp_common_edit_button_cb, data); @@ -940,74 +936,6 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void } } - else if (last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST) - { - DEBUG_TRACE("MP_VIEW_CONTENT_NEW_PLAYLIST. "); - mp_layout_data_t *layout_data = evas_object_data_get(last_history->view_layout, "layout_data"); - if (layout_data) - { - MP_CHECK_LAYOUT_DATA(layout_data); - if (layout_data->view_mode == MP_VIEW_MODE_EDIT) - { - DEBUG_TRACE(""); - _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_DONE"), - MP_ICON_NAVI_DONE, MP_NAVI_CONTROL_BUTTON1, - mp_edit_view_create_new_done_cb, data); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON2, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON3, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, - GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_ICON_NAVI_CANCEL, - MP_NAVI_CONTROL_BUTTON4, - mp_edit_view_create_new_cancel_cb, data); - } - } - else - { - DEBUG_TRACE(""); - _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_DONE"), - MP_ICON_NAVI_DONE, MP_NAVI_CONTROL_BUTTON1, - mp_playlist_view_create_new_done_cb, data); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON2, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON3, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON4, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_CANCEL"), - MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON5, - mp_playlist_view_create_new_cancel_cb, data); - } - } - else if (last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP) - { - DEBUG_TRACE("MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP. "); - _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_DONE"), - MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1, - mp_menu_add_to_play_list_done_create_cb, data); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON2, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON3, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_CANCEL"), - MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON4, - mp_menu_add_to_play_list_cancel_create_cb, data); - } - else if (last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT) - { - DEBUG_TRACE("MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP. "); - _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_DONE"), - MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1, - mp_edit_view_create_new_done_cb, data); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON2, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL, - MP_NAVI_CONTROL_BUTTON3, NULL, NULL); - _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_CANCEL"), - MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON4, - mp_edit_view_create_new_cancel_cb, data); - } else if (last_history->content_type == MP_VIEW_CONTENT_SEARCH) { DEBUG_TRACE("MP_VIEW_CONTENT_SEARCH. "); @@ -1076,7 +1004,7 @@ mp_view_manager_freeze_progress_timer(struct appdata *ad) void mp_view_manager_thaw_progress_timer(struct appdata *ad) { - mp_retm_if(!ad->prohibit_aul_relaunch, "app is in background. not thaw progress timer.. "); + mp_retm_if(!ad->app_is_foreground, "app is in background. not thaw progress timer.. "); Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad); if (top_view) @@ -1089,9 +1017,8 @@ Elm_Object_Item * mp_view_manager_get_edit_controlbar_item(struct appdata *ad) { MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); - Evas_Object *cur_view = ad->library->cur_view; + Evas_Object *cur_view = ad->naviframe; MP_CHECK_NULL(cur_view); view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); @@ -1111,9 +1038,8 @@ Elm_Object_Item * mp_view_manager_get_search_controlbar_item(struct appdata * ad) { MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); - Evas_Object *cur_view = ad->library->cur_view; + Evas_Object *cur_view = ad->naviframe; MP_CHECK_NULL(cur_view); view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); @@ -1133,9 +1059,8 @@ Elm_Object_Item * mp_view_manager_get_cancel_controlbar_item(struct appdata * ad) { MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); - Evas_Object *cur_view = ad->library->cur_view; + Evas_Object *cur_view = ad->naviframe; MP_CHECK_NULL(cur_view); view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); @@ -1156,9 +1081,8 @@ Elm_Object_Item * mp_view_manager_get_controlbar_item(struct appdata * ad, mp_navi_control_button_type type) { MP_CHECK_NULL(ad); - MP_CHECK_NULL(ad->library); - Evas_Object *cur_view = ad->library->cur_view; + Evas_Object *cur_view = ad->naviframe; MP_CHECK_NULL(cur_view); view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); @@ -1174,32 +1098,52 @@ mp_view_manager_get_controlbar_item(struct appdata * ad, mp_navi_control_button_ return last_history->control_buttons[type]; } +Elm_Object_Item * +mp_view_manager_get_navi_item(struct appdata * ad) +{ + MP_CHECK_NULL(ad); + + Evas_Object *cur_view = ad->naviframe; + MP_CHECK_NULL(cur_view); + + view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); + MP_CHECK_NULL(cur_view_data); + MP_CHECK_VIEW_DATA(cur_view_data); + + GList *last_item = g_list_last(ad->view_history); + MP_CHECK_NULL(last_item); + + mp_view_histroy_t *last_history = last_item->data; + MP_CHECK_NULL(last_history); + + return last_history->navi_item; +} + void mp_view_manager_pop_info_view(struct appdata *ad) { MP_CHECK(ad); - MP_CHECK(ad->library); - MP_CHECK(ad->playing_view); + MP_CHECK(ad->naviframe); - view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data"); + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK(view_data); - mp_view_manager_pop_to_view_content(view_data, MP_VIEW_CONTENT_PLAY); + if(ad->info_ug_base) + mp_view_manager_pop_to_view_content(view_data, MP_VIEW_CONTENT_PLAY); MP_CHECK(ad->playing_view); - if (ad->playing_view->layout) - evas_object_show(ad->playing_view->layout); + evas_object_show(ad->playing_view->layout); } void mp_view_manager_pop_play_view(struct appdata *ad) { MP_CHECK(ad); - MP_CHECK(ad->library); + MP_CHECK(ad->naviframe); view_data_t *view_data; - view_data = evas_object_data_get(ad->library->cur_view, "view_data"); + view_data = evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK(view_data); if (ad->playing_view) @@ -1211,25 +1155,26 @@ mp_view_manager_clear(struct appdata *ad) { MP_CHECK(ad); - GList *view_item = g_list_last(ad->view_history); - - while (ad->view_history) + GList *view_item = ad->view_history; + while (view_item) { - SAFE_FREE(view_item->data); - ad->view_history = - g_list_delete_link(ad->view_history, ad->view_history); + mp_view_histroy_t *last_history = view_item->data; + mp_language_mgr_unregister_object_item(last_history->navi_item); + SAFE_FREE(last_history); + view_item = g_list_delete_link(view_item, view_item); } - + ad->view_history = NULL; } void -mp_view_manager_set_option_header_visible(Elm_Object_Item *navi_item, mp_view_content_t content_type) +mp_view_manager_set_controlbar_visible(Elm_Object_Item *navi_item, bool visible) { - DEBUG_TRACE("content type: %d", content_type); - if(MP_OPTION_HEADER_COND(content_type)) - elm_object_item_signal_emit(navi_item, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN); - else - elm_object_item_signal_emit(navi_item, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE); + startfunc; + MP_CHECK(navi_item); + DEBUG_TRACE("visible: %d", visible); + if(visible) + elm_object_item_signal_emit(navi_item, "elm,state,controlbar,open", ""); + else + elm_object_item_signal_emit(navi_item, "elm,state,controlbar,close", ""); } - diff --git a/src/common/mp-widget.c b/src/common/mp-widget.c index 7f7a4fb..2a1b949 100755 --- a/src/common/mp-widget.c +++ b/src/common/mp-widget.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,29 +14,60 @@ * limitations under the License. */ - #include "mp-widget.h" #include "mp-player-debug.h" -#include "mp-common.h" #include "mp-util.h" #include "mp-popup.h" +#ifndef MP_SOUND_PLAYER +#include "mp-common.h" +#endif #define MAX_LEN_VIB_DURATION 0.5 +static void _mp_widget_genlist_flick_left_cb(void *data, Evas_Object * obj, void *event_info); +static void _mp_widget_genlist_flick_right_cb(void *data, Evas_Object * obj, void *event_info); +static void _mp_widget_genlist_flick_stop_cb(void *data, Evas_Object * obj, void *event_info); +static void _mp_widget_realize_genlist_cb(void *data, Evas_Object * obj, void *event_info); + + +static Evas_Object *g_main_win; + + static void -_mp_widget_genlist_flick_start_cb(void *data, Evas_Object * obj, void *event_info) +_mp_widget_genlist_flick_left_cb(void *data, Evas_Object * obj, void *event_info) { - startfunc; + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + if(ad->vertical_scroll) + return; + elm_object_scroll_freeze_push(obj); +} + +static void +_mp_widget_genlist_flick_right_cb(void *data, Evas_Object * obj, void *event_info) +{ + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + if(ad->vertical_scroll) + return; elm_object_scroll_freeze_push(obj); } static void _mp_widget_genlist_flick_stop_cb(void *data, Evas_Object * obj, void *event_info) { - startfunc; + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + ad->vertical_scroll = false; elm_object_scroll_freeze_pop(obj); } +static void +_mp_widget_realize_genlist_cb(void *data, Evas_Object * obj, void *event_info) +{ + +} + Evas_Object * mp_widget_navigation_new(Evas_Object * parent, struct appdata *ad) { @@ -44,28 +75,82 @@ mp_widget_navigation_new(Evas_Object * parent, struct appdata *ad) mp_retv_if(parent == NULL, NULL); navi_bar = elm_naviframe_add(parent); mp_retvm_if(navi_bar == NULL, NULL, "Fail to create navigation bar"); +#ifndef MP_SOUND_PLAYER evas_object_smart_callback_add(navi_bar, "transition,finished", mp_common_navigationbar_finish_effect, ad); +#endif evas_object_show(navi_bar); return navi_bar; } +static void +_mp_widget_gl_mode_right(void *data, Evas_Object * obj, void *event_info) +{ + MP_CHECK(obj); + MP_CHECK(event_info); + + /* reset old sweep item mode */ + mp_util_reset_genlist_mode_item(obj); + + // disable sweep if edit mode. + MP_CHECK(elm_genlist_decorate_mode_get(obj) == EINA_FALSE); + MP_CHECK(elm_genlist_item_flip_get(event_info) == EINA_FALSE); + // Start genlist sweep + elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_TRUE); + elm_genlist_item_select_mode_set(event_info, ELM_OBJECT_SELECT_MODE_NONE); +} + +static void +_mp_widget_gl_mode_left(void *data, Evas_Object * obj, void *event_info) +{ + MP_CHECK(obj); + MP_CHECK(event_info); + // disable sweep if edit mode. + MP_CHECK(elm_genlist_decorate_mode_get(obj) == EINA_FALSE); + MP_CHECK(elm_genlist_item_flip_get(event_info) == EINA_FALSE); + // Finish genlist sweep + elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_FALSE); + elm_genlist_item_select_mode_set(event_info, ELM_OBJECT_SELECT_MODE_DEFAULT); +} + +static void +_mp_widget_gl_mode_cancel(void *data, Evas_Object * obj, void *event_info) +{ + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + MP_CHECK(obj); + + mp_util_reset_genlist_mode_item(obj); + + ad->vertical_scroll = true; +} + Evas_Object * mp_widget_genlist_create(struct appdata *ad, Evas_Object * parent, bool homogeneous) { Evas_Object *list = NULL; + MP_TA_ACUM_ITEM_BEGIN("elm_genlist_add()", 0); list = elm_genlist_add(parent); + MP_TA_ACUM_ITEM_END("elm_genlist_add()", 0); CHECK(list); + evas_object_data_set(list, "ap", ad); evas_object_show(list); elm_genlist_mode_set(list, ELM_LIST_COMPRESS); elm_genlist_homogeneous_set(list, homogeneous); + evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(list, "realized", _mp_widget_realize_genlist_cb, ad); - evas_object_smart_callback_add(list, "drag,start,left", _mp_widget_genlist_flick_start_cb, ad); - evas_object_smart_callback_add(list, "drag,start,right", _mp_widget_genlist_flick_start_cb, ad); + evas_object_smart_callback_add(list, "drag,start,left", _mp_widget_genlist_flick_left_cb, ad); + evas_object_smart_callback_add(list, "drag,start,right", _mp_widget_genlist_flick_right_cb, ad); evas_object_smart_callback_add(list, "drag,stop", _mp_widget_genlist_flick_stop_cb, ad); + evas_object_smart_callback_add(list, "drag,start,right", _mp_widget_gl_mode_right, NULL); + evas_object_smart_callback_add(list, "drag,start,left", _mp_widget_gl_mode_left, NULL); + evas_object_smart_callback_add(list, "drag,start,up", _mp_widget_gl_mode_cancel, ad); + evas_object_smart_callback_add(list, "drag,start,down", _mp_widget_gl_mode_cancel, ad); + return list; } @@ -73,15 +158,13 @@ static void _mp_widget_lowbattery_del_cb(void *data, Evas * e, Evas_Object * eo, void *event_info) { struct appdata *ad = (struct appdata *)data; - ad->popup[MP_POPUP_NORAML] = NULL; + ad->popup[MP_POPUP_NORMAL] = NULL; } static void _mp_widget_lowbattery_res_cb(void *data, Evas_Object * obj, void *event_info) { - evas_object_del(obj); - - return; + mp_evas_object_del(obj); } bool @@ -91,10 +174,9 @@ mp_widget_check_lowbattery(void *data, Evas_Object * parent) if (mp_check_battery_available()) { - Evas_Object *popup = elm_popup_add(parent); - mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_BODY_LOW_BATTERY")); - mp_popup_set_response_cb(popup, _mp_widget_lowbattery_res_cb, ad); - mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES); + Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, NULL, _mp_widget_lowbattery_res_cb, ad); + elm_object_text_set(popup, GET_SYS_STR("IDS_COM_BODY_LOW_BATTERY")); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_OK"), 0); evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_widget_lowbattery_del_cb, ad); evas_object_show(popup); @@ -104,81 +186,27 @@ mp_widget_check_lowbattery(void *data, Evas_Object * parent) return TRUE; } -bool -mp_widget_load_fastscroller(Evas_Object * index, struct music_list_item * item, char **latest_string) +static void +_mp_widget_text_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info) { - char *current_group_title = NULL; - char *item_value = NULL; - - MP_CHECK_FALSE(index); - MP_CHECK_FALSE(item); - - audio_svc_track_data_type_e item_type = AUDIO_SVC_TRACK_DATA_TITLE; - bool make_group_title = false; - - - struct appdata *ad = item->ad; - MP_CHECK_FALSE(ad); - - item_type = (int)evas_object_data_get(index, MP_FAST_SCROLLER_TYPE); - - item_value = mp_util_item_get_value_by_type(item_type, item); - - if (item_value) - { - if (*latest_string) - { - char *title_initial = mp_util_get_utf8_initial(item_value); - - if (title_initial) - { - if (strcmp(*latest_string, title_initial) != 0) - { - make_group_title = TRUE; - current_group_title = title_initial; - } - else - { - make_group_title = false; - IF_FREE(title_initial); - } - } - } - else - { - make_group_title = true; - current_group_title = mp_util_get_utf8_initial(item_value); - mp_debug("latest_set_group is invalid=%s", current_group_title); - } - } - - if (current_group_title && make_group_title) - { - mp_debug("current_group_title =%s", current_group_title); - elm_index_item_append(index, current_group_title, NULL, item->list_item); - IF_FREE(*latest_string); - *latest_string = strdup(current_group_title); - } - - IF_FREE(current_group_title); - IF_FREE(item_value); + mp_evas_object_del(obj); - return true; + struct appdata *ad = data; + MP_CHECK(ad); + ad->notify_delete = NULL; } - int mp_widget_text_popup(void *data, const char *message) { struct appdata *ad = data; Evas_Object *popup; - popup = elm_popup_add(ad->win_main); + popup = mp_popup_create(ad->win_main, MP_POPUP_NOTIFY, NULL, ad, _mp_widget_text_popup_timeout_cb, ad); ad->notify_delete = popup; evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - mp_popup_desc_set(popup, message); - mp_popup_block_clicked_set(popup); - mp_popup_timeout_set(popup, 2.0); + elm_object_text_set(popup, message); + mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT); evas_object_show(popup); return 0; } @@ -218,6 +246,7 @@ mp_widget_create_bgimg(Evas_Object * parent) elm_win_resize_object_add(parent, bg); evas_object_color_set(bg, 37, 37, 37, 255); evas_object_show(bg); + return bg; } @@ -293,6 +322,7 @@ _mp_widget_entry_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emi elm_entry_entry_set(entry, ""); } + Evas_Object * mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt, struct appdata *ad) { @@ -309,7 +339,7 @@ mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt entry = elm_entry_add(editfield); MP_CHECK_NULL(entry); - elm_object_style_set(entry, "music/default"); + elm_object_style_set(entry, "default"); elm_entry_single_line_set(entry, EINA_TRUE); elm_entry_scrollable_set(entry, EINA_TRUE); elm_entry_autocapital_type_set(entry, ELM_AUTOCAPITAL_TYPE_NONE); @@ -336,6 +366,7 @@ mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt elm_object_part_text_set(editfield, "elm.guidetext", guide_txt); return editfield; + } Evas_Object * @@ -348,13 +379,13 @@ mp_widget_editfield_entry_get(Evas_Object *editfield) return entry; } - Evas_Object * mp_widget_create_title_btn(Evas_Object *parent, const char *text, const char * icon_path, Evas_Smart_Cb func, void *data) { Evas_Object *btn = elm_button_add(parent); Evas_Object * icon = NULL; MP_CHECK_NULL(btn); + if(text) elm_object_text_set(btn, text); else if(icon_path) @@ -363,8 +394,96 @@ mp_widget_create_title_btn(Evas_Object *parent, const char *text, const char * i MP_CHECK_NULL(icon); elm_icon_file_set(icon, icon_path, NULL); elm_object_content_set(btn, icon); - elm_object_style_set(btn, "music/title_button"); + elm_object_style_set(btn, "title_button"); } evas_object_smart_callback_add(btn, "clicked", func, data); return btn; } + +Evas_Object * +mp_widget_create_layout_main(Evas_Object * parent) +{ + Evas_Object *layout; + + mp_retv_if(parent == NULL, NULL); + MP_TA_ACUM_ITEM_BEGIN(" elm_layout_add", 0); + layout = elm_layout_add(parent); + MP_TA_ACUM_ITEM_END(" elm_layout_add", 0); + mp_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n"); + + MP_TA_ACUM_ITEM_BEGIN(" elm_layout_theme_set()", 0); + const char *profile = elm_config_profile_get(); + mp_debug("elm_profile = %s", profile); + if (!g_strcmp0(profile, "desktop")) + elm_layout_theme_set(layout, "layout", "application", "noindicator"); + else + elm_layout_theme_set(layout, "layout", "application", "default"); + MP_TA_ACUM_ITEM_END(" elm_layout_theme_set()", 0); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(parent, layout); + + evas_object_show(layout); + + return layout; +} + +inline Evas_Object * +mp_common_load_edj(Evas_Object * parent, const char *file, const char *group) +{ + Evas_Object *eo = NULL; + int r = -1; + + eo = elm_layout_add(parent); + if (eo) + { + r = elm_layout_file_set(eo, file, group); + if (!r) + { + evas_object_del(eo); + return NULL; + } + evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(eo); + } + + return eo; +} + +static void +_mp_common_win_del(void *data, Evas_Object * obj, void *event) +{ + elm_exit(); +} + +Evas_Object * +mp_create_win(const char *name) +{ + Evas_Object *eo; + int w, h; + + if (g_main_win) + return g_main_win; + + MP_TA_ACUM_ITEM_BEGIN(" elm_win_add()", 0); + g_main_win = eo = elm_win_add(NULL, name, ELM_WIN_BASIC); + MP_TA_ACUM_ITEM_END(" elm_win_add()", 0); + if (eo) + { + elm_win_title_set(eo, name); + evas_object_smart_callback_add(eo, "delete,request", _mp_common_win_del, NULL); + ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); + evas_object_resize(eo, w, h); + } + + return eo; +} + +Evas_Object * +mp_get_main_win(void) +{ + if (!g_main_win) + ERROR_TRACE("main_win is NULL, create it first!!!!!"); + return g_main_win; +} + + diff --git a/src/core/include/mp-file-tag-info.h b/src/core/include/mp-file-tag-info.h index 2de91cb..470a9b2 100755 --- a/src/core/include/mp-file-tag-info.h +++ b/src/core/include/mp-file-tag-info.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,7 +15,6 @@ */ - #ifndef __mp_file_tag_info_H__ #define __mp_file_tag_info_H__ @@ -33,13 +32,16 @@ typedef struct _tag_info_t char *track; char *rating; int duration; - int audio_codec; int audio_samplerate; int audio_bitrate; int audio_channel; } mp_tag_info_t; +/* tag_info which must be freed with mp_file_tag_free() after use. */ int mp_file_tag_info_get_all_tag(const char *filename, mp_tag_info_t * tag_info); -void mp_file_tag_free(mp_tag_info_t * tag_info); +char *mp_file_tag_info_get_genre(const char *filename); +int mp_file_tag_info_get_albumart(const char *filename, char **albumart_path); + +void mp_file_tag_free(mp_tag_info_t * tag_info); #endif //__mp_file_tag_info_H__ diff --git a/src/core/include/mp-http-mgr.h b/src/core/include/mp-http-mgr.h index c70b412..3f86af5 100755 --- a/src/core/include/mp-http-mgr.h +++ b/src/core/include/mp-http-mgr.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,7 +15,6 @@ */ - #ifndef __MP_HTTP_MGR_H__ #define __MP_HTTP_MGR_H__ @@ -25,6 +24,7 @@ typedef enum { MP_HTTP_SVC_DEFAULT, + MP_HTTP_SVC_SHAZAM, MP_HTTP_SVC_STREAMING, MP_HTTP_SVC_MAX, } mp_http_svc_type; @@ -42,6 +42,7 @@ typedef enum } MpHttpRespResultType_t; typedef void (*MpHttpRespCb) (gpointer user_data, int type, char *id, MpHttpRespResultType_t res, int view_id); +typedef void (*MpHttpOpenCb) (gpointer user_data); typedef bool (*MpHttpRespExcuteCb)(gpointer user_data, mp_http_response_type response_type); typedef bool(*MpHttpOpenExcuteCb) (gpointer user_data); @@ -56,7 +57,7 @@ typedef enum typedef struct mp_http_mgr_t { struct appdata *ad; - MpHttpState_t http_state; + MpHttpState_t http_state; //the state of the http char ip[HTTP_ADDR_LEN_MAX]; char proxy[HTTP_ADDR_LEN_MAX]; @@ -79,8 +80,7 @@ typedef struct mp_http_data_t bool mp_http_mgr_create(void *data); bool mp_http_mgr_destory(void *data); MpHttpState_t mp_http_mgr_get_state(void *data); -/* return value should be freed */ -char* mp_http_mgr_get_user_agent(); +char* mp_http_mgr_get_user_agent(); /* return value should be freed */ const char* mp_http_mgr_get_ip(void *data); const char* mp_http_mgr_get_proxy(void *data); @@ -88,4 +88,5 @@ bool mp_http_mgr_get_svc_state(void *data, mp_http_svc_type svc_type); bool mp_http_mgr_start_svc(void *data, mp_http_svc_type svc_type, MpHttpOpenExcuteCb open_cb, MpHttpRespExcuteCb rsp_cb, gpointer cb_data); bool mp_http_mgr_stop_svc(void *data, mp_http_svc_type svc_type, mp_http_response_type response_type); +#define TOKEN "025B58C0" #endif //__MP_HTTP_MGR_H__ diff --git a/src/core/include/mp-language-mgr.h b/src/core/include/mp-language-mgr.h new file mode 100755 index 0000000..2c0a179 --- /dev/null +++ b/src/core/include/mp-language-mgr.h @@ -0,0 +1,48 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __MP_LANGUAGE_CHANGER_H +#define __MP_LANGUAGE_CHANGER_H + +#include + +typedef enum +{ + OBJ_TYPE_ELM_OBJECT, //elm_object_text_set(obj, text) + OBJ_TYPE_EDJE_OBJECT, //edje_object_part_text_set(obj, part, text) + OBJ_TYPE_MAX, +}obj_type; + +int mp_language_mgr_create(); +int mp_language_mgr_destroy(); + +/*part and string_id must be static*/ +void mp_language_mgr_register_object(Evas_Object *obj, obj_type type, const char *part, const char *string_id); +void mp_language_mgr_register_object_item(Elm_Object_Item *object_item, const char *text_ID); +void mp_language_mgr_unregister_object_item(Elm_Object_Item *object_item); +void mp_language_mgr_object_item_text_ID_set(Elm_Object_Item *object_item, const char *text_ID); + + +void mp_language_mgr_register_genlist_item(Elm_Object_Item *item); +void mp_language_mgr_unregister_genlist_item(Elm_Object_Item *item); + +void mp_language_mgr_register_gengrid_item(Elm_Object_Item *item); +void mp_language_mgr_unregister_gengrid_item(Elm_Object_Item *item); + +void mp_language_mgr_update(); + +#endif + diff --git a/src/core/include/mp-play-list.h b/src/core/include/mp-play-list.h index 3d0826d..51329e9 100755 --- a/src/core/include/mp-play-list.h +++ b/src/core/include/mp-play-list.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,13 +14,11 @@ * limitations under the License. */ - - #ifndef __MP_PLAY_LIST_H_ #define __MP_PLAY_LIST_H_ -#include #include "mp-define.h" +#include "mp-media-info.h" typedef enum { MP_PLST_TYPE_NONE, @@ -37,9 +35,10 @@ typedef enum typedef struct mp_list_item { - char fid[AUDIO_SVC_UUID_SIZE+1]; + char *fid; gint list_index; - bool removed; + + mp_plst_type_t item_type; } mp_list_item; typedef struct music_list_item @@ -50,22 +49,24 @@ typedef struct music_list_item /* music metadata */ int id; char filename[MAX_NAM_LEN+1]; - char title[AUDIO_SVC_METADATA_LEN_MAX+1]; - char artist[AUDIO_SVC_METADATA_LEN_MAX+1]; - char album[AUDIO_SVC_METADATA_LEN_MAX+1]; + char title[MP_METADATA_LEN_MAX+1]; + char artist[MP_METADATA_LEN_MAX+1]; + char album[MP_METADATA_LEN_MAX+1]; char time[16]; char albumart[MAX_NAM_LEN+1]; + int favorite; struct appdata *ad; struct music_list_item *prev; struct music_list_item *next; - char key_id[AUDIO_SVC_UUID_SIZE+1]; - gint playlist_uid; + char *key_id; + gint playlist_uid; //playlist_uid; Use it to remove from favorite playlist... gint index; // private. gint list_index; gboolean checked; gint order; + // to disable favorite button for sound type int category; } music_list_item; @@ -86,12 +87,14 @@ typedef struct char *type_string; char *filter_string; int playlist_id; - audio_svc_track_type_e item_type; + mp_track_type_e item_type; + } mp_play_list; void mp_play_list_item_copy(music_list_item ** to, music_list_item * from); music_list_item *mp_play_list_get_current_item(mp_play_list * playing_list); // do not free +mp_list_item *mp_play_list_get_nth_item(mp_play_list * playing_list, int index); bool mp_play_list_get_prev_item(void *data, mp_play_list * play_list, music_list_item ** item); //must be free , allocation inside mp_plst_ret_t mp_play_list_get_next_item(void *data, mp_play_list * play_list, music_list_item ** item, bool forced); //must be free , allocation inside bool mp_play_list_get_item_by_index(void *data, mp_play_list * playing_list, music_list_item ** item, int value); //must be free , allocation inside @@ -105,12 +108,12 @@ bool mp_play_list_clear_play_list(mp_play_list ** play_list); bool mp_play_list_refresh(void *data); bool mp_play_list_reset(void *data, mp_play_list ** set_play_list, char *fid); -bool mp_play_list_create_play_list(void *data, AudioHandleType * svc_track, int count, int current_index, +bool mp_play_list_create_play_list(void *data, mp_media_list_h svc_track, int count, int current_index, int playlist_id); bool mp_play_list_create_by_path(void *data, mp_play_list ** set_play_list, char *path); bool mp_play_list_remove_item_by_key(mp_play_list * play_list, char *key_id); bool mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list, - AudioHandleType * svc_track, const char *full_path, + mp_media_list_h svc_track, const char *full_path, int count, int current_index, bool shuffler_play_list, int playlist_id); -bool mp_play_list_delete_item(mp_play_list *playing_list, char *fid); #endif + diff --git a/src/core/include/mp-player-control.h b/src/core/include/mp-player-control.h index bbca4c1..c0fe119 100755 --- a/src/core/include/mp-player-control.h +++ b/src/core/include/mp-player-control.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #ifndef __DEF_music_player_contro_H_ #define __DEF_music_player_contro_H_ @@ -31,10 +29,10 @@ void mp_play_control_volume_cb(void *data, Evas_Object * o, const char *emission void mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const char *source); void mp_play_control_end_of_stream(void *data); bool mp_player_control_ready_new_file(void *data, bool check_drm); + void mp_play_stop_and_updateview(void *data, bool mmc_removed); void mp_play_control_visible_set(void *data, bool play_enable); void mp_play_control_shuffle_set(void *data, bool shuffle_enable); void mp_play_control_repeat_set(void *data, int repeat_state); - #endif /*__DEF_music_player_contro_H_*/ diff --git a/src/core/include/mp-player-drm.h b/src/core/include/mp-player-drm.h index 3a03d99..b02c9a3 100755 --- a/src/core/include/mp-player-drm.h +++ b/src/core/include/mp-player-drm.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #ifndef __MP_PLAYER_DRM_H_ #define __MP_PLAYER_DRM_H_ @@ -28,18 +26,58 @@ typedef struct char description[256]; } mp_drm; -void mp_drm_set_consumption(bool enabled); -bool mp_drm_get_consumption(void); -void mp_drm_start_consumption(char *path); -void mp_drm_pause_consumption(void); -void mp_drm_resume_consumption(void); -void mp_drm_stop_consumption(void); +typedef struct +{ + char *type; + char *validity; +} mp_drm_right_status_t; + +typedef enum +{ + SETAS_REQUEST_CHECK_STATUS, + SETAS_REQUEST_REGISTER, + SETAS_REQUEST_UNREGISTER, +} mp_drm_setas_request_type_e; + +typedef enum { + DRM_CONTENT_INFO_NULL = -1, + DRM_CONTENT_INFO_AUTHOR, + DRM_CONTENT_INFO_RIGHTS_URL, + DRM_CONTENT_INFO_DESCRIPTION, +} drm_content_info_e; + +enum { + MP_DRM_CONSTRAINT_UNLIMITED = 0x0, + MP_DRM_CONSTRAINT_COUNT = 0x01, + MP_DRM_CONSTRAINT_DATE_TIME = 0x02, + MP_DRM_CONSTRAINT_INTERVAL = 0x04, + MP_DRM_CONSTRAINT_TIMED_COUNT = 0x08, + MP_DRM_CONSTRAINT_ACCUMLATED_TIME = 0x10, +}; + +typedef struct { + int constraints; + + int remaining_count; + bool date_time_expired; + int remaining_interval_sec; + int remaining_timed_count; + int remaining_acc_sec; +} mp_constraints_info_s; + +bool mp_drm_get_content_info(const char *path, drm_content_info_e first_info, ...); +void mp_drm_set_notify(void *data, char *message); bool mp_drm_file_right(char *path); bool mp_drm_has_valid_ro(char *path); bool mp_drm_get_description(void *data, char *path); bool mp_drm_check_forward(void *data, char *path); +bool mp_drm_get_left_ro_info(const char *path, mp_constraints_info_s *info); bool mp_drm_check_left_ro(void *data, char *path); bool mp_drm_check_expiration(char *path, bool expired); bool mp_drm_check_foward_lock(char *path); +GList* mp_drm_get_right_status(const char *path); +void mp_drm_free_right_status(GList *list); +bool mp_drm_request_setas_ringtone(const char *path, mp_drm_setas_request_type_e type); + #endif /*__MP_PLAYER_DRM_H_*/ diff --git a/src/core/include/mp-player-mgr.h b/src/core/include/mp-player-mgr.h index 5454fa2..1600e3f 100755 --- a/src/core/include/mp-player-mgr.h +++ b/src/core/include/mp-player-mgr.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,18 +14,50 @@ * limitations under the License. */ - #ifndef __MP_player_mgr_H_ #define __MP_player_mgr_H_ -#include -#include -#include +#include +#include #include +#define EQ_USER_SLOT_NUM 7 + +typedef enum { + MP_AUDIO_EFFECT_CUSTOM_EQ, + MP_AUDIO_EFFECT_3D, + MP_AUDIO_EFFECT_BASS, + MP_AUDIO_EFFECT_ROOM, + MP_AUDIO_EFFECT_REVERB, + MP_AUDIO_EFFECT_CLARITY, + MP_AUDIO_EFFECT_NUM, +} Mp_Audio_Effect_Type; + +typedef struct { + /* equalizer */ + double eq_level[EQ_USER_SLOT_NUM]; + + /* extended */ + double effect_ratio[MP_AUDIO_EFFECT_NUM]; +} Audio_Effect_Data; + + +typedef void (*Seek_Done_Cb)(void *data); + bool mp_player_mgr_is_active(void); -void mp_player_mgr_pipe_cb(void *data, void *buffer, unsigned int nbyte); -bool mp_player_mgr_set_msg_callback(MMMessageCallback cb, gpointer user_data); +void mp_player_mgr_set_started_cb(player_started_cb callback, void *user_data); +void mp_player_mgr_set_paused_cb(player_paused_cb callback, void *user_data); +void mp_player_mgr_set_completed_cb(player_completed_cb callback, void *user_data); +void mp_player_mgr_set_interrupted_cb(player_interrupted_cb callback, void *user_data); +void mp_player_mgr_set_error_cb(player_error_cb callback, void *user_data); +void mp_player_mgr_set_buffering_cb(player_buffering_cb callback, void *user_data); +void mp_player_mgr_unset_started_cb(void); +void mp_player_mgr_unset_paused_cb(void); +void mp_player_mgr_unset_completed_cb(void); +void mp_player_mgr_unset_interrupted_cb(void); +void mp_player_mgr_unset_error_cb(void); +void mp_player_mgr_unset_buffering_cb(void); + bool mp_player_mgr_create(void *data, const gchar * path); bool mp_player_mgr_destroy(void *data); bool mp_player_mgr_realize(void *data); @@ -35,15 +67,13 @@ bool mp_player_mgr_stop(void *data); bool mp_player_mgr_resume(void *data); bool mp_player_mgr_pause(void *data); void mp_player_mgr_set_mute(bool bMuteEnable); -bool mp_player_mgr_set_position(guint pos); +bool mp_player_mgr_set_position(guint pos, Seek_Done_Cb done_cb, void *data); int mp_player_mgr_get_position(void); int mp_player_mgr_get_duration(void); -int player_msg_cb(int msg_type, void *msg_param, void *user_param); - int mp_player_mgr_vol_type_set(void); int mp_player_mgr_vol_type_unset(void); bool mp_player_mgr_session_init(void); bool mp_player_mgr_session_finish(void); -MMPlayerStateType mp_player_mgr_get_state(void); +player_state_e mp_player_mgr_get_state(void); #endif //__MP_player_mgr_H_ diff --git a/src/core/include/mp-setting-ctrl.h b/src/core/include/mp-setting-ctrl.h index 2797e45..7a3fb59 100755 --- a/src/core/include/mp-setting-ctrl.h +++ b/src/core/include/mp-setting-ctrl.h @@ -1,33 +1,26 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - + /* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #ifndef __MP_SETTING_CTRL_H_ #define __MP_SETTING_CTRL_H_ #include +#ifndef MP_SOUND_PLAYER #include "mp-view-layout.h" - -enum mp_setting_rep_state -{ - MP_SETTING_REP_ALL, - MP_SETTING_REP_NON, - MP_SETTING_REP_1 -}; +#endif typedef struct _mp_setting_menu_t { @@ -36,10 +29,12 @@ typedef struct _mp_setting_menu_t int genres; int composers; int years; + int folders; } mp_setting_menu_t; typedef void (*MpSettingMenu_Cb) (mp_setting_menu_t * state, void *data); typedef void (*MpSettingSRS_Cb) (int state, void *data); +typedef void (*MpSettingAutoOff_Cb)(int min, void *data); int mp_setting_init(struct appdata *ad); int mp_setting_deinit(struct appdata *ad); @@ -51,8 +46,13 @@ void mp_setting_set_albumart_path(const char *path); int mp_setting_menu_get_state(mp_setting_menu_t * menu_state); int mp_setting_menu_set_callback(MpSettingMenu_Cb func, void *data); +int mp_setting_auto_off_set_callback(MpSettingAutoOff_Cb func, void *data); void mp_setting_save_now_playing(void *ad); +void mp_setting_save_shortcut(char *shortcut_title, char *artist, char *shortcut_description, + char *shortcut_image_path); +#ifndef MP_SOUND_PLAYER void mp_setting_save_last_played(mp_layout_data_t * layout_data); +#endif #endif // __MP_SETTING_CTRL_H_ diff --git a/src/core/include/mp-streaming-mgr.h b/src/core/include/mp-streaming-mgr.h index 4f13011..8d4b0fe 100755 --- a/src/core/include/mp-streaming-mgr.h +++ b/src/core/include/mp-streaming-mgr.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,15 +14,15 @@ * limitations under the License. */ - #ifndef __MP_STREAMING_MGR_H__ #define __MP_STREAMING_MGR_H__ +#include + inline void mp_streaming_mgr_buffering_popup_control(struct appdata *ad, bool is_show); -int mp_streaming_mgr_message_callback(int msg_type, void *msg_param, void *user_param); bool mp_streaming_mgr_check_streaming(struct appdata *ad, const char *path); -bool mp_streaming_mgr_set_attribute(struct appdata *ad, MMHandleType player); +bool mp_streaming_mgr_set_attribute(struct appdata *ad, player_h player); bool mp_streaming_mgr_play_new_streaming(struct appdata *ad); #endif /* __MP_STREAMING_MGR_H__ */ diff --git a/src/core/mp-file-tag-info.c b/src/core/mp-file-tag-info.c index af91c70..b9d9378 100755 --- a/src/core/mp-file-tag-info.c +++ b/src/core/mp-file-tag-info.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ * limitations under the License. */ + #include #include #include @@ -22,18 +23,18 @@ #include #include #include +#include #include #include #include "mp-file-tag-info.h" #include "mp-player-debug.h" -#include "mp-define.h" + +#define SAFE_FREE(x) if(x) {free(x); x = NULL;} /* tag_info which must be freed with mp_file_tag_free() after use. */ int mp_file_tag_info_get_all_tag(const char *filename, mp_tag_info_t * tag_info) { - MMHandleType tag_attrs = 0; - MMHandleType content_attrs = 0; int ret = 0; if (!filename || !tag_info) @@ -43,191 +44,154 @@ mp_file_tag_info_get_all_tag(const char *filename, mp_tag_info_t * tag_info) memset(tag_info, 0x00, sizeof(mp_tag_info_t)); - ret = mm_file_create_content_attrs(&content_attrs, filename); - if (ret == MM_ERROR_NONE) - { - char *error = NULL; - int dur = 0; - int audio_codec = 0; - int audio_samplerate = 0; - int audio_bitrate = 0; - int audio_channel = 0; - - ret = mm_file_get_attrs(content_attrs, - &error, - MM_FILE_CONTENT_DURATION, &dur, - MM_FILE_CONTENT_AUDIO_CODEC, &audio_codec, - MM_FILE_CONTENT_AUDIO_SAMPLERATE, &audio_samplerate, - MM_FILE_CONTENT_AUDIO_BITRATE, &audio_bitrate, - MM_FILE_CONTENT_AUDIO_CHANNELS, &audio_channel, NULL); - - if (ret != MM_ERROR_NONE) - { - if (error) - { - ERROR_TRACE("fail to mm_file_get_attrs() - ret(%x), error(%s)", ret, error); - free(error); - } - else - { - ERROR_TRACE("fail to mm_file_get_attrs() - ret(%x)", ret); - } - goto CATCH_ERROR; - } - tag_info->duration = dur; - tag_info->audio_codec = audio_codec; - tag_info->audio_samplerate = audio_samplerate; - tag_info->audio_bitrate = audio_bitrate; - tag_info->audio_channel = audio_channel; + metadata_extractor_h handle = NULL; + ret = metadata_extractor_create(&handle); + if (ret != METADATA_EXTRACTOR_ERROR_NONE) { + mp_error("metadata_extractor_create().. %d", ret); + goto CATCH_ERROR; } - else + + ret = metadata_extractor_set_path(handle, filename); + if (ret != METADATA_EXTRACTOR_ERROR_NONE) { - ERROR_TRACE("fail to mm_file_create_content_attrs() - ret(%x)", ret); + mp_error("metadata_extractor_set_path().. %d", ret); goto CATCH_ERROR; } + char *value = NULL; + ret = metadata_extractor_get_metadata(handle, METADATA_DURATION, &value); + if (ret == METADATA_EXTRACTOR_ERROR_NONE && value) { + tag_info->duration = atoi(value); + } + SAFE_FREE(value); + + ret = metadata_extractor_get_metadata(handle, METADATA_AUDIO_SAMPLERATE, &value); + if (ret == METADATA_EXTRACTOR_ERROR_NONE && value) { + tag_info->audio_samplerate = atoi(value); + } + SAFE_FREE(value); + + ret = metadata_extractor_get_metadata(handle, METADATA_AUDIO_BITRATE, &value); + if (ret == METADATA_EXTRACTOR_ERROR_NONE && value) { + tag_info->audio_bitrate = atoi(value); + } + SAFE_FREE(value); - ret = mm_file_create_tag_attrs(&tag_attrs, filename); - if (ret == MM_ERROR_NONE) + value = NULL; + ret = metadata_extractor_get_metadata(handle, METADATA_AUDIO_CHANNELS, &value); + if (ret == METADATA_EXTRACTOR_ERROR_NONE && value) { + tag_info->audio_channel = atoi(value); + } + SAFE_FREE(value); + + metadata_extractor_get_metadata(handle, METADATA_ARTIST, &tag_info->artist); + metadata_extractor_get_metadata(handle, METADATA_ALBUM, &tag_info->album); + metadata_extractor_get_metadata(handle, METADATA_TITLE, &tag_info->title); + metadata_extractor_get_metadata(handle, METADATA_GENRE, &tag_info->genre); + metadata_extractor_get_metadata(handle, METADATA_AUTHOR, &tag_info->author); + metadata_extractor_get_metadata(handle, METADATA_COPYRIGHT, &tag_info->copyright); + metadata_extractor_get_metadata(handle, METADATA_DATE, &tag_info->date); + metadata_extractor_get_metadata(handle, METADATA_DESCRIPTION, &tag_info->desc); + metadata_extractor_get_metadata(handle, METADATA_TRACK_NUM, &tag_info->track); + metadata_extractor_get_metadata(handle, METADATA_RATING, &tag_info->rating); + + void *albumart = NULL; + int albumart_size = 0; + char *mime = NULL; + ret = metadata_extractor_get_artwork(handle, &albumart, &albumart_size, &mime); + if (ret == METADATA_EXTRACTOR_ERROR_NONE && albumart) { - char *error = NULL; - char *album = NULL; - int album_len = 0; - char *artist = NULL; - int artist_len = 0; - char *title = NULL; - int title_len = 0; - void *albumart = NULL; - int albumart_len = 0; - int albumart_size = 0; - char *genre = NULL; - int genre_len = 0; - char *copyright = NULL; - int copyright_len = 0; - char *date = NULL; - int date_len = 0; - char *desc = NULL; - int desc_len = 0; - char *author = NULL; - int author_len = 0; - char *track = NULL; - int track_len = 0; - char *rating = NULL; - int rating_len = 0; - - ret = mm_file_get_attrs(tag_attrs, - &error, - MM_FILE_TAG_ARTIST, &artist, &artist_len, - MM_FILE_TAG_ALBUM, &album, &album_len, - MM_FILE_TAG_TITLE, &title, &title_len, - MM_FILE_TAG_GENRE, &genre, &genre_len, - MM_FILE_TAG_AUTHOR, &author, &author_len, - MM_FILE_TAG_COPYRIGHT, ©right, ©right_len, - MM_FILE_TAG_DATE, &date, &date_len, - MM_FILE_TAG_DESCRIPTION, &desc, &desc_len, - MM_FILE_TAG_ARTWORK, &albumart, &albumart_len, - MM_FILE_TAG_ARTWORK_SIZE, &albumart_size, - MM_FILE_TAG_TRACK_NUM, &track, &track_len, - MM_FILE_TAG_RATING, &rating, &rating_len, NULL); - - if (ret != MM_ERROR_NONE) + gchar *path = NULL; + int fd = g_file_open_tmp(NULL, &path, NULL); + + if (fd != -1) { - if (error) + FILE *fp = fdopen(fd, "w"); + if (fp == NULL) { - ERROR_TRACE("fail to mm_file_get_attrs() - ret(%x), error(%s)", ret, error); - free(error); + ERROR_TRACE("fail to fdopen()"); + close(fd); } else { - ERROR_TRACE("fail to mm_file_get_attrs() - ret(%x)", ret); - } - goto CATCH_ERROR; - } - - if (albumart) - { - gchar *path = NULL; - int fd = g_file_open_tmp(NULL, &path, NULL); - - if (fd != -1) - { - FILE *fp = fdopen(fd, "w"); - if (fp == NULL) + int n = fwrite((unsigned char *)albumart, 1, albumart_size, fp); + if (n != albumart_size) { - ERROR_TRACE("fail to fdopen()"); + ERROR_TRACE("fail to fwrite()"); + fclose(fp); close(fd); } else { - int n = fwrite((unsigned char *)albumart, 1, albumart_size, fp); - if (n != albumart_size) - { - ERROR_TRACE("fail to fwrite()"); - fclose(fp); - close(fd); - } - else - { - fflush(fp); - fclose(fp); - close(fd); - } + fflush(fp); + fclose(fp); + close(fd); } } - tag_info->albumart_path = path; } - - if (album) - tag_info->album = strdup(album); - if (artist) - tag_info->artist = strdup(artist); - if (title) - tag_info->title = strdup(title); - if (genre) - tag_info->genre = strdup(genre); - if (copyright) - tag_info->copyright = strdup(copyright); - if (date) - tag_info->date = strdup(date); - if (desc) - tag_info->desc = strdup(desc); - if (author) - tag_info->author = strdup(author); - if (track) - tag_info->track = strdup(track); - if (rating) - tag_info->rating = strdup(rating); - - } - else - { - ERROR_TRACE("fail to mm_file_create_tag_attrs() - ret(%x)", ret); - goto CATCH_ERROR; + tag_info->albumart_path = path; } + SAFE_FREE(mime); DEBUG_TRACE ("file : %s\n duration: %d \n album: %s\n artist: %s\n title: %s\n genre: %s\n copyright:%s\n date: %s\n desc : %s\n author: %s\n albumart : %s", filename, tag_info->duration, tag_info->album, tag_info->artist, tag_info->title, tag_info->genre, tag_info->copyright, tag_info->date, tag_info->desc, tag_info->author, tag_info->albumart_path); - if (content_attrs) - mm_file_destroy_content_attrs(content_attrs); - - if (tag_attrs) - mm_file_destroy_content_attrs(tag_attrs); + if (handle) + metadata_extractor_destroy(handle); return 0; CATCH_ERROR: - if (content_attrs) - mm_file_destroy_content_attrs(content_attrs); - - if (tag_attrs) - mm_file_destroy_content_attrs(tag_attrs); + if (handle) + metadata_extractor_destroy(handle); return -1; } +char * +mp_file_tag_info_get_genre(const char *filename) +{ + /* return value shold be freed */ + MP_CHECK_NULL(filename); + + int ret = METADATA_EXTRACTOR_ERROR_NONE; + + metadata_extractor_h handle = NULL; + ret = metadata_extractor_create(&handle); + if (ret != METADATA_EXTRACTOR_ERROR_NONE) { + mp_error("metadata_extractor_create().. %d", ret); + goto CATCH_ERROR; + } + + ret = metadata_extractor_set_path(handle, filename); + if (ret != METADATA_EXTRACTOR_ERROR_NONE) + { + mp_error("metadata_extractor_set_path().. %d", ret); + goto CATCH_ERROR; + } + + char *genre = NULL; + ret = metadata_extractor_get_metadata(handle, METADATA_GENRE, &genre); + if (ret != METADATA_EXTRACTOR_ERROR_NONE) + { + mp_error("metadata_extractor_get_metadata().. %d", ret); + SAFE_FREE(genre); + goto CATCH_ERROR; + } + + mp_debug("METADATA_GENRE = [%s]", genre); + metadata_extractor_destroy(handle); + return genre; + +CATCH_ERROR: + if (handle) + metadata_extractor_destroy(handle); + + return NULL; +} + void mp_file_tag_free(mp_tag_info_t * tag_info) @@ -235,16 +199,86 @@ mp_file_tag_free(mp_tag_info_t * tag_info) if (tag_info == NULL) return; - IF_FREE(tag_info->album); - IF_FREE(tag_info->genre); - IF_FREE(tag_info->author); - IF_FREE(tag_info->artist); - IF_FREE(tag_info->title); - IF_FREE(tag_info->copyright); - IF_FREE(tag_info->date); - IF_FREE(tag_info->desc); - IF_FREE(tag_info->albumart_path); - IF_FREE(tag_info->track); - IF_FREE(tag_info->rating); + SAFE_FREE(tag_info->album); + SAFE_FREE(tag_info->genre); + SAFE_FREE(tag_info->author); + SAFE_FREE(tag_info->artist); + SAFE_FREE(tag_info->title); + SAFE_FREE(tag_info->copyright); + SAFE_FREE(tag_info->date); + SAFE_FREE(tag_info->desc); + SAFE_FREE(tag_info->albumart_path); + SAFE_FREE(tag_info->track); + SAFE_FREE(tag_info->rating); return; } + +/* albumart_path as a string which should be freed after use */ +int +mp_file_tag_info_get_albumart(const char *filename, char **albumart_path) +{ + /* return value shold be freed */ + MP_CHECK_VAL(filename, -1); + MP_CHECK_VAL(albumart_path, -1); + + int ret = METADATA_EXTRACTOR_ERROR_NONE; + + metadata_extractor_h handle = NULL; + ret = metadata_extractor_create(&handle); + if (ret != METADATA_EXTRACTOR_ERROR_NONE) { + mp_error("metadata_extractor_create().. %d", ret); + goto CATCH_ERROR; + } + + void *albumart = NULL; + int albumart_size = 0; + char *mime = NULL; + ret = metadata_extractor_get_artwork(handle, &albumart, &albumart_size, &mime); + if (ret == METADATA_EXTRACTOR_ERROR_NONE && albumart) + { + gchar *path = NULL; + int fd = g_file_open_tmp(NULL, &path, NULL); + + if (fd != -1) + { + FILE *fp = fdopen(fd, "w"); + if (fp == NULL) + { + ERROR_TRACE("fail to fdopen()"); + close(fd); + } + else + { + int n = fwrite((unsigned char *)albumart, 1, albumart_size, fp); + if (n != albumart_size) + { + ERROR_TRACE("fail to fwrite()"); + fclose(fp); + close(fd); + } + else + { + fflush(fp); + fclose(fp); + close(fd); + } + } + } + *albumart_path = path; + } + SAFE_FREE(mime); + + if (handle) { + metadata_extractor_destroy(handle); + handle = NULL; + } + + return 0; + +CATCH_ERROR: + if (handle) + metadata_extractor_destroy(handle); + + *albumart_path = NULL; + return -1; +} diff --git a/src/core/mp-http-mgr.c b/src/core/mp-http-mgr.c index fb72f59..af2e60d 100755 --- a/src/core/mp-http-mgr.c +++ b/src/core/mp-http-mgr.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -116,6 +116,7 @@ bool mp_http_mgr_start_svc(void *data, mp_http_svc_type svc_type, MpHttpOpenExcu return FALSE; } + /* excute open callback */ if (open_cb) { if (!open_cb(cb_data)) { mp_error("[%d] svc fail to start", svc_type); @@ -126,10 +127,12 @@ bool mp_http_mgr_start_svc(void *data, mp_http_svc_type svc_type, MpHttpOpenExcu mp_debug("## [%d] svc started ##", svc_type); mp_http_mgr_t *http_mgr = (mp_http_mgr_t *)ad->http_mgr; + /* register callback */ http_mgr->cb_data[svc_type] = cb_data; http_mgr->http_open_cb[svc_type] = open_cb; http_mgr->http_resp_cb[svc_type] = rsp_cb; + /* set open state */ http_mgr->svc_state[svc_type] = TRUE; return TRUE; } @@ -143,13 +146,16 @@ bool mp_http_mgr_stop_svc(void *data, mp_http_svc_type svc_type, mp_http_respons mp_http_mgr_t *http_mgr = (mp_http_mgr_t *)ad->http_mgr; if (http_mgr->svc_state[svc_type] && http_mgr->http_resp_cb[svc_type]) { + /* send response */ http_mgr->http_resp_cb[svc_type](http_mgr->cb_data[svc_type], response_type); } + /* deregister callback */ http_mgr->cb_data[svc_type] = NULL; http_mgr->http_open_cb[svc_type] = NULL; http_mgr->http_resp_cb[svc_type] = NULL; + /* set open state */ http_mgr->svc_state[svc_type] = FALSE; mp_debug("## [%d] svc stopped ##", svc_type); @@ -206,12 +212,14 @@ static void _mp_http_mgr_refresh_network_info(mp_http_mgr_t *http_mgr) startfunc; MP_CHECK(http_mgr); + /* reset network info */ memset(http_mgr->ip, 0, sizeof(http_mgr->ip)); memset(http_mgr->proxy, 0, sizeof(http_mgr->proxy)); http_mgr->http_state = _mp_http_mgr_get_network_status(); if (http_mgr->http_state != MP_HTTP_STATE_OFF) { + /* refresh network infomation */ char *ip = vconf_get_str(VCONFKEY_NETWORK_IP); if (ip) { strncpy(http_mgr->ip, ip, sizeof(http_mgr->ip)-1); @@ -274,6 +282,7 @@ mp_http_mgr_get_state(void *data) char* mp_http_mgr_get_user_agent() { + /* return value should be free */ char *user_agent = vconf_get_str(USER_AGENT_KEY); return user_agent; } diff --git a/src/core/mp-language-mgr.c b/src/core/mp-language-mgr.c new file mode 100755 index 0000000..d314c45 --- /dev/null +++ b/src/core/mp-language-mgr.c @@ -0,0 +1,263 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include "mp-language-mgr.h" +#include "glib.h" +#include "mp-player-debug.h" + +typedef struct +{ + Evas_Object *obj; + obj_type type; + const char *text_id; + const char *part; +}obj_data; + +typedef struct +{ + Elm_Object_Item *obj_item; + const char *text_id; +}obj_item_data; + +typedef struct _lang_mgr *lang_mgr; +struct _lang_mgr{ + GList *objs; + GList *obj_items; + GList *glist_items; + GList *grid_items; +}_lang_mgr; + + +static lang_mgr g_lang_mgr; + +#define G_LIST_FOREACH(list, l, data) \ + for (l = list, \ + data = g_list_nth_data(l, 0); \ + l; \ + l = g_list_next(l), \ + data = g_list_nth_data(l, 0)) + +static void __glist_free(void *data) +{ + obj_data *item = data; + MP_CHECK(item); + free(item); +} + +static char *__get_text(const char *ID) +{ + MP_CHECK_NULL(ID); + char *str; + + if(strstr(ID, "IDS_COM")) + str = dgettext("sys_string", ID); + else + str = gettext(ID); + + return str; +} + +static void __update_obj(void *data, void *userdata) +{ + char *text; + obj_data *item = data; + MP_CHECK(item); + DEBUG_TRACE("handle: 0x%x, ID:%s",item->obj, item->text_id); + + text = __get_text(item->text_id); + + if(item->type == OBJ_TYPE_ELM_OBJECT) + elm_object_text_set(item->obj, text); + else if(item->type == OBJ_TYPE_EDJE_OBJECT) + edje_object_part_text_set(elm_layout_edje_get(item->obj), item->part, text); + else + WARN_TRACE("Unhandled case"); +} + +static void __update_obj_item(void *data, void *userdata) +{ + char *text; + obj_item_data *item_data = data; + MP_CHECK(item_data); + DEBUG_TRACE("handle: 0x%x, ID:%s",item_data->obj_item, item_data->text_id); + text = __get_text(item_data->text_id); + elm_object_item_text_set(item_data->obj_item, text); +} + +static void __update_list(void *data, void *userdata) +{ + Elm_Object_Item *item = data; + MP_CHECK(item); + DEBUG_TRACE("handle: 0x%x",item); + elm_genlist_item_update(item); +} + +static void __update_grid(void *data, void *userdata) +{ + Elm_Object_Item *item = data; + MP_CHECK(item); + DEBUG_TRACE("handle: 0x%x",item); + elm_gengrid_item_update(item); +} + +static void __obj_del_cb(void *data, Evas * e, Evas_Object * eo, void *event_info) +{ + obj_data *item = data; + MP_CHECK(g_lang_mgr); + MP_CHECK(item); + + g_lang_mgr->objs = + g_list_delete_link(g_lang_mgr->objs, g_list_find(g_lang_mgr->objs, item)); + + free(item); +} + +int mp_language_mgr_create(void) +{ + DEBUG_TRACE(""); + if(!g_lang_mgr) + { + lang_mgr mgr = calloc(1, sizeof(_lang_mgr)); + if(!mgr) + { + WARN_TRACE("Error: calloc"); + return -1; + } + g_lang_mgr = mgr; + } + return 0; +} + +int mp_language_mgr_destroy(void) +{ + MP_CHECK_VAL(g_lang_mgr, -1); + g_list_free_full(g_lang_mgr->objs, __glist_free); + g_lang_mgr->objs = NULL; + + g_list_free(g_lang_mgr->glist_items); + g_lang_mgr->glist_items = NULL; + + g_list_free(g_lang_mgr->grid_items); + g_lang_mgr->grid_items = NULL; + + free(g_lang_mgr); + g_lang_mgr = NULL; + + return 0; +} + +void mp_language_mgr_register_object(Evas_Object *obj, obj_type type, const char *part, const char *text_id) +{ + MP_CHECK(g_lang_mgr); + obj_data *item = calloc(1, sizeof(obj_data)); + MP_CHECK(item); + + item->type = type; + item->part = part; + item->text_id = text_id; + item->obj = obj; + + evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, __obj_del_cb, item); + + g_lang_mgr->objs = g_list_append(g_lang_mgr->objs, item); +} + +void mp_language_mgr_register_object_item(Elm_Object_Item *object_item, const char *text_ID) +{ + MP_CHECK(g_lang_mgr); + obj_item_data *data = calloc(1, sizeof(obj_item_data)); + MP_CHECK(data); + + data->obj_item = object_item; + data->text_id = text_ID; + + g_lang_mgr->obj_items= g_list_append(g_lang_mgr->obj_items, data); +} + +void mp_language_mgr_unregister_object_item(Elm_Object_Item *object_item) +{ + GList *l; + obj_item_data *data; + + G_LIST_FOREACH(g_lang_mgr->obj_items, l, data) + { + if(data->obj_item == object_item) + { + g_lang_mgr->obj_items = g_list_delete_link(g_lang_mgr->obj_items, l); + if(data) + free(data); + break; + } + } +} + +void mp_language_mgr_object_item_text_ID_set(Elm_Object_Item *object_item, const char *text_ID) +{ + MP_CHECK(g_lang_mgr); + GList *l; + obj_item_data *data; + + G_LIST_FOREACH(g_lang_mgr->obj_items, l, data) + { + if(data->obj_item == object_item) + { + DEBUG_TRACE("set ID: %s", text_ID); + data->text_id = text_ID; + break; + } + } + +} + +void mp_language_mgr_register_genlist_item(Elm_Object_Item *item) +{ + MP_CHECK(g_lang_mgr); + g_lang_mgr->glist_items = + g_list_append(g_lang_mgr->glist_items, item); +} + +void mp_language_mgr_unregister_genlist_item(Elm_Object_Item *item) +{ + MP_CHECK(g_lang_mgr); + g_lang_mgr->glist_items = + g_list_delete_link(g_lang_mgr->glist_items, g_list_find(g_lang_mgr->glist_items, item)); +} + +void mp_language_mgr_register_gengrid_item(Elm_Object_Item *item) +{ + MP_CHECK(g_lang_mgr); + g_lang_mgr->grid_items = + g_list_append(g_lang_mgr->grid_items, item); +} + +void mp_language_mgr_unregister_gengrid_item(Elm_Object_Item *item) +{ + MP_CHECK(g_lang_mgr); + g_lang_mgr->grid_items = + g_list_delete_link(g_lang_mgr->grid_items, g_list_find(g_lang_mgr->grid_items, item)); +} + +void mp_language_mgr_update() +{ + DEBUG_TRACE("language changed. update text"); + MP_CHECK(g_lang_mgr); + g_list_foreach(g_lang_mgr->objs, __update_obj, NULL); + g_list_foreach(g_lang_mgr->obj_items, __update_obj_item, NULL); + g_list_foreach(g_lang_mgr->glist_items, __update_list, NULL); + g_list_foreach(g_lang_mgr->grid_items, __update_grid, NULL); +} diff --git a/src/core/mp-play-list.c b/src/core/mp-play-list.c index bc6c3bc..6969603 100755 --- a/src/core/mp-play-list.c +++ b/src/core/mp-play-list.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,7 +14,6 @@ * limitations under the License. */ - #include "music.h" #include "mp-play-list.h" #include "mp-player-debug.h" @@ -41,6 +40,7 @@ _mp_play_list_clear_list(GList ** list) if (handle) { + SAFE_FREE(handle->fid); free(handle); } handle = NULL; @@ -85,36 +85,29 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it mp_tag_info_t tag_info; struct appdata *ad = (struct appdata *)data; - AudioHandleType *record = NULL; + mp_media_info_h record = NULL; char *pathname = NULL, *title = NULL, *album = NULL, *artist = NULL, *thumbname = NULL; int duration = 0; - int size = 0, ret = 1, category = -1; + bool favorite = 0; + int ret = 1, category = -1; MP_CHECK_FALSE(path); *get_item = calloc(1, sizeof(music_list_item)); MP_CHECK_EXCEP((*get_item)); - ret = audio_svc_item_new(&record); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - - if (mp_util_file_is_in_phone_memory(path)) - ret = audio_svc_get_item_by_path(ad->media_svc_handle, path, record); - else - ret = audio_svc_get_item_by_path(ad->media_svc_handle, path, record); + ret = mp_media_info_create_by_path(&record, path); - if (ret == AUDIO_SVC_ERROR_NONE) + if (ret == 0) { INFO_TRACE("get item from music db.."); - ret = audio_svc_item_get_val(record, - AUDIO_SVC_TRACK_DATA_THUMBNAIL_PATH, &thumbname, &size, - AUDIO_SVC_TRACK_DATA_TITLE, &title, &size, - AUDIO_SVC_TRACK_DATA_ARTIST, &artist, &size, - AUDIO_SVC_TRACK_DATA_PATHNAME, &pathname, &size, - AUDIO_SVC_TRACK_DATA_ALBUM, &album, &size, - AUDIO_SVC_TRACK_DATA_DURATION, &duration, - AUDIO_SVC_TRACK_DATA_CATEGORY, &category, -1); - - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + mp_media_info_get_thumbnail_path(record, &thumbname); + mp_media_info_get_title(record, &title); + mp_media_info_get_artist(record, &artist); + mp_media_info_get_file_path(record, &pathname); + mp_media_info_get_album(record, &album); + mp_media_info_get_duration(record, &duration); + mp_media_info_get_media_type(record, &category); + mp_media_info_get_favorite(record, &favorite); *get_item = calloc(1, sizeof(music_list_item)); MP_CHECK_EXCEP(*get_item); @@ -126,7 +119,7 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it } if (title) - g_strlcpy((*get_item)->title, title, AUDIO_SVC_METADATA_LEN_MAX); + g_strlcpy((*get_item)->title, title, MP_METADATA_LEN_MAX); mp_util_format_duration((*get_item)->time, duration); @@ -136,14 +129,15 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it g_strlcpy((*get_item)->albumart, DEFAULT_THUMBNAIL, MAX_NAM_LEN); if (artist) - g_strlcpy((*get_item)->artist, artist, AUDIO_SVC_METADATA_LEN_MAX); + g_strlcpy((*get_item)->artist, artist, MP_METADATA_LEN_MAX); if (album) - g_strlcpy((*get_item)->album, album, AUDIO_SVC_METADATA_LEN_MAX); + g_strlcpy((*get_item)->album, album, MP_METADATA_LEN_MAX); (*get_item)->ad = ad; (*get_item)->list_index = set_item->list_index; (*get_item)->category = category; + (*get_item)->favorite = favorite; } else { @@ -157,61 +151,61 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it title = mp_util_get_title_from_path(path); if (title) { - strncpy((*get_item)->title, title, AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->title[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + strncpy((*get_item)->title, title, MP_METADATA_LEN_MAX); + (*get_item)->title[MP_METADATA_LEN_MAX - 1] = '\0'; free(title); } else { - strncpy((*get_item)->title, path, AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->title[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + strncpy((*get_item)->title, path, MP_METADATA_LEN_MAX); + (*get_item)->title[MP_METADATA_LEN_MAX - 1] = '\0'; } strncpy((*get_item)->filename, path, MAX_NAM_LEN); (*get_item)->filename[MAX_NAM_LEN - 1] = '\0'; } else { - strncpy((*get_item)->filename, path, AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->filename[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + strncpy((*get_item)->filename, path, MP_METADATA_LEN_MAX); + (*get_item)->filename[MP_METADATA_LEN_MAX - 1] = '\0'; if (tag_info.title) { - strncpy((*get_item)->title, tag_info.title, AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->title[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + strncpy((*get_item)->title, tag_info.title, MP_METADATA_LEN_MAX); + (*get_item)->title[MP_METADATA_LEN_MAX - 1] = '\0'; } else { char *title = mp_util_get_title_from_path(path); if (title) { - strncpy((*get_item)->title, title, AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->title[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + strncpy((*get_item)->title, title, MP_METADATA_LEN_MAX); + (*get_item)->title[MP_METADATA_LEN_MAX - 1] = '\0'; free(title); } } if (tag_info.artist) { - strncpy((*get_item)->artist, tag_info.artist, AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->artist[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + strncpy((*get_item)->artist, tag_info.artist, MP_METADATA_LEN_MAX); + (*get_item)->artist[MP_METADATA_LEN_MAX - 1] = '\0'; } else { strncpy((*get_item)->artist, GET_SYS_STR("IDS_COM_BODY_UNKNOWN"), - AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->artist[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + MP_METADATA_LEN_MAX); + (*get_item)->artist[MP_METADATA_LEN_MAX - 1] = '\0'; } if (tag_info.album) { - strncpy((*get_item)->album, tag_info.album, AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->album[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + strncpy((*get_item)->album, tag_info.album, MP_METADATA_LEN_MAX); + (*get_item)->album[MP_METADATA_LEN_MAX - 1] = '\0'; } else { strncpy((*get_item)->album, GET_SYS_STR("IDS_COM_BODY_UNKNOWN"), - AUDIO_SVC_METADATA_LEN_MAX); - (*get_item)->album[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0'; + MP_METADATA_LEN_MAX); + (*get_item)->album[MP_METADATA_LEN_MAX - 1] = '\0'; } mp_util_format_duration((*get_item)->time, tag_info.duration); @@ -227,15 +221,17 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it (*get_item)->ad = ad; (*get_item)->list_index = set_item->list_index; - (*get_item)->category = AUDIO_SVC_CATEGORY_SOUND; + (*get_item)->category = MP_MEDIA_TYPE_SOUND; + (*get_item)->favorite = 0; } - audio_svc_item_free(record); + mp_media_info_destroy(record); return true; mp_exception: - audio_svc_item_free(record); + mp_media_info_destroy(record); IF_FREE(*get_item); + return false; } @@ -246,32 +242,30 @@ _mp_play_list_get_item_by_list_data(void *data, music_list_item ** get_item, mp_ MP_CHECK_FALSE(set_item); DEBUG_TRACE("set_item->fid: %s", set_item->fid); - MP_CHECK_FALSE(strlen(set_item->fid)); + MP_CHECK_FALSE(set_item->fid && strlen(set_item->fid)); char *pathname = NULL, *title = NULL, *album = NULL, *artist = NULL, *thumbname = NULL; int duration = 0; + bool favorite = false; - int size = 0, ret = 1, category = -1; + int ret = 1, category = -1; - AudioHandleType *item_handle = NULL; + mp_media_info_h item_handle = NULL; { - ret = audio_svc_item_new(&item_handle); - MP_CHECK_FALSE(ret == AUDIO_SVC_ERROR_NONE); - - ret = audio_svc_get_item_by_audio_id(ad->media_svc_handle, set_item->fid, item_handle); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - - ret = audio_svc_item_get_val(item_handle, - AUDIO_SVC_TRACK_DATA_THUMBNAIL_PATH, &thumbname, &size, - AUDIO_SVC_TRACK_DATA_TITLE, &title, &size, - AUDIO_SVC_TRACK_DATA_ARTIST, &artist, &size, - AUDIO_SVC_TRACK_DATA_PATHNAME, &pathname, &size, - AUDIO_SVC_TRACK_DATA_ALBUM, &album, &size, - AUDIO_SVC_TRACK_DATA_DURATION, &duration, - AUDIO_SVC_TRACK_DATA_CATEGORY, &category, -1); - - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + ret = mp_media_info_create(&item_handle, set_item->fid); + MP_CHECK_EXCEP(ret == 0); + + mp_media_info_get_file_path(item_handle, &pathname); + mp_media_info_get_title(item_handle, &title); + mp_media_info_get_album(item_handle, &album); + mp_media_info_get_artist(item_handle, &artist); + mp_media_info_get_thumbnail_path(item_handle, &thumbname); + mp_media_info_get_duration(item_handle, &duration); + mp_media_info_get_media_type(item_handle, &category); + mp_media_info_get_favorite(item_handle, &favorite); + + MP_CHECK_EXCEP(ret == 0); } *get_item = calloc(1, sizeof(music_list_item)); @@ -284,7 +278,7 @@ _mp_play_list_get_item_by_list_data(void *data, music_list_item ** get_item, mp_ } if (title) - g_strlcpy((*get_item)->title, title, AUDIO_SVC_METADATA_LEN_MAX); + g_strlcpy((*get_item)->title, title, MP_METADATA_LEN_MAX); mp_util_format_duration((*get_item)->time, duration); @@ -294,18 +288,22 @@ _mp_play_list_get_item_by_list_data(void *data, music_list_item ** get_item, mp_ g_strlcpy((*get_item)->albumart, DEFAULT_THUMBNAIL, MAX_NAM_LEN); if (artist) - g_strlcpy((*get_item)->artist, artist, AUDIO_SVC_METADATA_LEN_MAX); + g_strlcpy((*get_item)->artist, artist, MP_METADATA_LEN_MAX); if (album) - g_strlcpy((*get_item)->album, album, AUDIO_SVC_METADATA_LEN_MAX); - g_strlcpy((*get_item)->key_id, set_item->fid, AUDIO_SVC_UUID_SIZE+1); + g_strlcpy((*get_item)->album, album, MP_METADATA_LEN_MAX); + + SAFE_FREE((*get_item)->key_id); + (*get_item)->key_id = g_strdup(set_item->fid); + (*get_item)->ad = ad; (*get_item)->list_index = set_item->list_index; (*get_item)->category = category; + (*get_item)->favorite = favorite; { if (item_handle) - audio_svc_item_free(item_handle); + mp_media_info_destroy(item_handle); item_handle = NULL; } @@ -315,7 +313,7 @@ _mp_play_list_get_item_by_list_data(void *data, music_list_item ** get_item, mp_ IF_FREE(*get_item); if (item_handle) - audio_svc_item_free(item_handle); + mp_media_info_destroy(item_handle); item_handle = NULL; return false; @@ -335,9 +333,12 @@ mp_play_list_item_copy(music_list_item ** to, music_list_item * from) (*to)->gen_list = from->gen_list; (*to)->ad = from->ad; - SAFE_STRCPY((*to)->key_id, from->key_id); + (*to)->key_id = g_strdup(from->key_id); + (*to)->playlist_uid = from->playlist_uid; + (*to)->list_item = from->list_item; (*to)->list_index = from->list_index; + (*to)->favorite = from->favorite; return; } @@ -430,6 +431,7 @@ mp_play_list_clear_play_list(mp_play_list ** play_list) IF_FREE((*play_list)->filter_string); IF_FREE((*play_list)->current_item); IF_FREE((*play_list)->path_excpetionDB); + _mp_play_list_clear_list(&((*play_list)->normal_list)); _mp_play_list_clear_list(&((*play_list)->shuffle_list)); (*play_list)->list = NULL; @@ -544,9 +546,11 @@ mp_play_list_create_shuffle_list(void *data, mp_play_list * play_list, int count mp_assert(new_item); memcpy(new_item, get_item, sizeof(mp_list_item)); - SAFE_STRCPY(new_item->fid, get_item->fid); + new_item->fid = g_strdup(get_item->fid); new_item->list_index = index; + new_item->item_type = get_item->item_type; + play_list->shuffle_list = g_list_append(play_list->shuffle_list, (gpointer) new_item); if (!g_strcmp0(fid, new_item->fid)) { @@ -568,7 +572,7 @@ mp_play_list_create_shuffle_list(void *data, mp_play_list * play_list, int count bool mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list, - AudioHandleType * svc_track, const char *full_path, + mp_media_list_h svc_track, const char *full_path, int count, int current_index, bool shuffler_play_list, int playlist_id) { startfunc; @@ -588,6 +592,7 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list, *set_play_list = calloc(1, sizeof(mp_play_list)); + (*set_play_list)->ad = ad; (*set_play_list)->current_item = NULL; (*set_play_list)->play_shuffle_state = shuffler_play_list; (*set_play_list)->start_index = -1; @@ -600,26 +605,18 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list, char *fid = NULL; char *current_index_fid = NULL; char *fid_by_full_path = NULL; - int size; if (!svc_track) { //2 create play list by current full path MP_CHECK_FALSE(full_path); - AudioHandleType *record = NULL; + mp_media_info_h record = NULL; if (mp_check_file_exist(full_path)) { - ret = audio_svc_item_new(&record); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - - if (mp_util_file_is_in_phone_memory(full_path)) - ret = audio_svc_get_item_by_path(ad->media_svc_handle, full_path, record); - else - ret = audio_svc_get_item_by_path(ad->media_svc_handle, full_path, record); - - if(ret == AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_create_by_path(&record, full_path); + if(ret == 0) { - ret = audio_svc_item_get_val(record, AUDIO_SVC_TRACK_DATA_AUDIO_ID, &fid_by_full_path, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + ret = mp_media_info_get_media_id(record, &fid_by_full_path); + MP_CHECK_EXCEP(ret == 0); DEBUG_TRACE("fid_by_full_path: %s", fid_by_full_path); if (fid_by_full_path == NULL) goto mp_exception; @@ -636,7 +633,7 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list, shuffle_state = false; if (record) - audio_svc_item_free(record); + mp_media_info_destroy(record); record = NULL; } @@ -649,35 +646,37 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list, if (svc_track) { - + { IF_FREE(fid); - if (playlist_id >= 0) - ret = audio_svc_playlist_item_get_val(svc_track, get_index, - AUDIO_SVC_PLAYLIST_ITEM_AUDIO_ID, &fid, &size, -1); - else - ret = audio_svc_list_item_get_val(svc_track, get_index, AUDIO_SVC_LIST_ITEM_AUDIO_ID, - &fid, &size,-1); - DEBUG_TRACE("fid: %s", fid); + { + mp_media_info_h item = mp_media_info_list_nth_item(svc_track, get_index); + ret = mp_media_info_get_media_id(item, &fid); + } + MP_CHECK_EXCEP(ret == 0); fid = g_strdup(fid); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + } } else { IF_FREE(fid); fid = g_strdup(fid_by_full_path); } + mp_list_item *new_item = calloc(1, sizeof(mp_list_item)); mp_assert(new_item); - SAFE_STRCPY(new_item->fid, fid); - DEBUG_TRACE("fid: %s", fid); new_item->list_index = index; + /* for allshare item */ + new_item->item_type = (*set_play_list)->list_type; + new_item->fid = g_strdup(fid); + DEBUG_TRACE("fid: %s", fid); + (*set_play_list)->normal_list = g_list_append((*set_play_list)->normal_list, (gpointer) new_item); if (current_index == get_index) { - if (shuffle_state && count > 1) + if (shuffle_state && count > 1) /* shufflist not created if count is 1 */ { DEBUG_TRACE("current request get fid = %s", current_index_fid); IF_FREE(current_index_fid); @@ -732,7 +731,49 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list, return false; } +char* mp_play_list_get_fid_by_full_path(void *data, const char *full_path) +{ + startfunc; + + struct appdata *ad = (struct appdata *)data; + + MP_CHECK_NULL(ad); + char *fid_by_full_path = NULL; + + MP_CHECK_NULL(full_path); + + int ret = 0; + mp_media_info_h record = NULL; + if (mp_check_file_exist(full_path)) + { + ret = mp_media_info_create_by_path(&record, full_path); + if(ret == 0) + { + ret = mp_media_info_get_media_id(record, &fid_by_full_path); + if (ret != 0) { + mp_media_info_destroy(record); + return NULL; + } + DEBUG_TRACE("fid_by_full_path: %s", fid_by_full_path); + if (fid_by_full_path == NULL) { + mp_media_info_destroy(record); + return NULL; + } + fid_by_full_path = g_strdup(fid_by_full_path); + } + } + else if (mp_util_check_uri_available(full_path)) + { + DEBUG_TRACE("full_path: %s", full_path); + fid_by_full_path = NULL; + } + + mp_media_info_destroy(record); + record = NULL; + + return fid_by_full_path; +} bool mp_play_list_reset(void *data, mp_play_list ** set_play_list, char *fid) @@ -778,34 +819,33 @@ mp_play_list_refresh(void *data) mp_play_list *playing_list = ad->playing_list; music_list_item *item = mp_play_list_get_current_item(playing_list); - if (item) { if(strlen(item->key_id)) current_fid = g_strdup(item->key_id); } - AudioHandleType *svc_track = NULL; + mp_media_list_h svc_track = NULL; int ret = -1, count = 0; if (playing_list->playlist_id >= 0) { - ret = audio_svc_count_playlist_item(ad->media_svc_handle, playing_list->playlist_id, playing_list->filter_string, NULL, - &count); - ret = audio_svc_playlist_item_new(&svc_track, count); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE && count == 0); - audio_svc_get_playlist_item(ad->media_svc_handle, playing_list->playlist_id, playing_list->filter_string, NULL, 0, count, - svc_track); + ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, + playing_list->filter_string, playing_list->playlist_id, &count); + MP_CHECK_EXCEP(ret == 0); + ret = mp_media_info_list_create(&svc_track, MP_TRACK_BY_PLAYLIST, NULL, NULL, + playing_list->filter_string, playing_list->playlist_id, 0, count); + MP_CHECK_EXCEP(ret == 0); } else { - ret = audio_svc_count_list_item(ad->media_svc_handle, playing_list->item_type, playing_list->type_string, NULL, - playing_list->filter_string, NULL, &count); - ret = audio_svc_list_item_new(&svc_track, count); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE && count == 0); - audio_svc_get_list_item(ad->media_svc_handle, playing_list->item_type, playing_list->type_string, NULL, - playing_list->filter_string, NULL, 0, count, svc_track); + ret = mp_media_info_list_count(playing_list->item_type, playing_list->type_string, NULL, playing_list->filter_string, 0, &count); + MP_CHECK_EXCEP(ret == 0); + + ret = mp_media_info_list_create(&svc_track, playing_list->item_type, playing_list->type_string, NULL, + playing_list->filter_string, 0, 0, count); + MP_CHECK_EXCEP(ret == 0); } DEBUG_TRACE("count =%d", count); @@ -816,11 +856,7 @@ mp_play_list_refresh(void *data) mp_play_list_set_current_item(ad, ad->playing_list, current_fid); if (svc_track) { - if (playing_list->playlist_id >= 0) - audio_svc_playlist_item_free(svc_track); - else - audio_svc_list_item_free(svc_track); - + mp_media_info_list_destroy(svc_track); svc_track = NULL; } IF_FREE(current_fid); @@ -834,11 +870,7 @@ mp_play_list_refresh(void *data) if (svc_track) { - if (playing_list->playlist_id >= 0) - audio_svc_playlist_item_free(svc_track); - else - audio_svc_list_item_free(svc_track); - + mp_media_info_list_destroy(svc_track); svc_track = NULL; } IF_FREE(current_fid); @@ -917,7 +949,7 @@ mp_play_list_create_by_path(void *data, mp_play_list ** set_play_list, char *pat } bool -mp_play_list_create_play_list(void *data, AudioHandleType * svc_track, int count, int current_index, int playlist_id) +mp_play_list_create_play_list(void *data, mp_media_list_h svc_track, int count, int current_index, int playlist_id) { startfunc; @@ -928,6 +960,7 @@ mp_play_list_create_play_list(void *data, AudioHandleType * svc_track, int count mp_play_list_create_current_play_list(ad, &ad->playing_list, svc_track, NULL, count, current_index, ad->play_shuffle_state, playlist_id); + endfunc; return true; @@ -977,6 +1010,16 @@ mp_play_list_get_current_item(mp_play_list * playing_list) return playing_list->current_item; } +mp_list_item * +mp_play_list_get_nth_item(mp_play_list * playing_list, int index) +{ + MP_CHECK_NULL(playing_list); + + mp_list_item *item = (mp_list_item *)g_list_nth_data(playing_list->list, index); + + return item; +} + bool mp_play_list_get_item_by_index(void *data, mp_play_list * playing_list, music_list_item ** get_item, int value) { //must be free @@ -1021,21 +1064,10 @@ mp_play_list_get_prev_item(void *data, mp_play_list * play_list, music_list_item if (0 > next_index) next_index = (count - 1); - do { - item = (mp_list_item *) g_list_nth_data(play_list->list, next_index); - if (!item->removed) - break; - mp_debug("[index : %d] removed from playlist", next_index); - - next_index--; - if (0 > next_index) - next_index = (count - 1); + DEBUG_TRACE("get index = %d", next_index); - if (next_index == play_list->current_index) - return MP_PLST_RET_END; - } while (1); + item = (mp_list_item *) g_list_nth_data(play_list->list, next_index); - DEBUG_TRACE("get index = %d", next_index); ret = _mp_play_list_get_item_by_list_data(data, request_item, item); endfunc; @@ -1072,21 +1104,10 @@ mp_play_list_get_next_item(void *data, mp_play_list * play_list, music_list_item next_index = 0; } - do { - item = (mp_list_item *) g_list_nth_data(play_list->list, next_index); - if (!item->removed) - break; - mp_debug("[index : %d] removed from playlist", next_index); - - next_index++; - if (next_index >= count) - next_index = 0; + DEBUG_TRACE("get index = %d", next_index); - if (next_index == play_list->current_index) - return MP_PLST_RET_END; - } while (1); + item = (mp_list_item *) g_list_nth_data(play_list->list, next_index); - DEBUG_TRACE("get index = %d", next_index); if(!_mp_play_list_get_item_by_list_data(data, request_item, item)) ret = MP_PLST_RET_ERR; @@ -1104,6 +1125,7 @@ mp_play_list_get_normal_list_index_by_fid(mp_play_list * play_list, char *fid) if (play_list->shuffle_list == play_list->list) { + // shuffle list case , must refind at normal list int count = g_list_length(play_list->normal_list); int index = 0; @@ -1130,44 +1152,3 @@ mp_play_list_get_normal_list_index_by_fid(mp_play_list * play_list, char *fid) return select_request_index; } -bool -mp_play_list_delete_item(mp_play_list *playing_list, char *fid) -{ - MP_CHECK_FALSE(playing_list); - MP_CHECK_FALSE(fid); - - bool ret = FALSE; - - mp_list_item *item = NULL; - int count = g_list_length(playing_list->normal_list); - int i = 0; - for (; i < count ; i++) { - item = (mp_list_item *)g_list_nth_data(playing_list->normal_list, i); - if (item) { - if (!g_strcmp0(fid, item->fid)) { - item->removed = TRUE; - ret = TRUE; - mp_debug("[%d : %s]", i, fid); - break; - } - } - } - - if (playing_list->shuffle_list) { - count = g_list_length(playing_list->shuffle_list); - for (i = 0; i < count ; i++) { - item = (mp_list_item *)g_list_nth_data(playing_list->shuffle_list, i); - if (item) { - if (!g_strcmp0(fid, item->fid)) { - item->removed = TRUE; - ret = TRUE; - mp_debug("[%d : %s]", item->list_index, fid); - break; - } - } - } - } - - return ret; -} - diff --git a/src/core/mp-player-control.c b/src/core/mp-player-control.c index ccbbafa..0e58a95 100755 --- a/src/core/mp-player-control.c +++ b/src/core/mp-player-control.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,42 +14,55 @@ * limitations under the License. */ - -#include -#include #include +#include +#include #include "music.h" +#include "mp-ta.h" #include "mp-player-control.h" #include "mp-player-mgr.h" -#include #include "mp-player-drm.h" #include "mp-play-view.h" #include "mp-item.h" -#include "mp-common.h" #include "mp-play-list.h" #include "mp-play.h" #include "mp-play-list.h" #include "mp-util.h" #include "mp-setting-ctrl.h" -#include "mp-view-manager.h" #include "mp-player-mgr.h" - +#include "mp-app.h" #include "mp-player-debug.h" -#include +#include "mp-minicontroller.h" #include "mp-widget.h" #include "mp-streaming-mgr.h" +#ifdef MP_SOUND_PLAYER +#include "mp-ug-launch.h" +#include "sp-view-manager.h" +#else +#include "mp-common.h" +#include "mp-view-manager.h" +#endif #define CTR_EDJ_SIG_SRC "ctrl_edj" #define CTR_PROG_SIG_SRC "ctrl_prog" -#define LONG_PRESS_INTERVAL 0.5 -#define FF_REW_INTERVAL 0.05 -#define LONG_PRESS_TIME_INCREASE 0.1 +#define LONG_PRESS_INTERVAL 0.5 //sec +#define FF_REW_INTERVAL 0.25 //sec +#define LONG_PRESS_TIME_INCREASE 0.5 //sec + +#define PAUSE_OFF_TIMEOUT (2 * 60) // sec static Eina_Bool _mp_play_mute_popup_cb(void *data); +static void +_mp_play_control_long_press_seek_done_cb(void *data) +{ + struct appdata *ad = data; + mp_play_view_progress_timer_thaw(ad); +} + static Eina_Bool _mp_play_control_long_pressed_cb(void *data) { @@ -62,9 +75,6 @@ _mp_play_control_long_pressed_cb(void *data) ad->is_Longpress = true; - if (ad->player_state == PLAY_STATE_PLAYING) - mp_player_mgr_pause(ad); - if (ad->is_ff) ad->ff_rew += LONG_PRESS_TIME_INCREASE; else @@ -80,25 +90,28 @@ _mp_play_control_long_pressed_cb(void *data) mp_debug("new pos=%f", new_pos); + int req_seek_pos = 0; if (new_pos < 0.) { - mp_player_mgr_set_position(0); ad->music_pos = 0; + req_seek_pos = 0; } else if (new_pos > ad->music_length) { - mp_player_mgr_set_position(duration); ad->music_pos = ad->music_length; + req_seek_pos = duration; } else { - mp_player_mgr_set_position(new_pos * 1000); ad->music_pos = new_pos; + req_seek_pos = new_pos * 1000; } - vconf_set_dbl(MP_EXT_CUR_PROGRESS_POS, ad->music_pos / ad->music_length); + if (mp_player_mgr_set_position(req_seek_pos, _mp_play_control_long_press_seek_done_cb, ad)) { + mp_play_view_progress_timer_freeze(ad); + mp_play_view_update_progressbar(ad); + } - mp_play_view_update_progressbar(data); ecore_timer_interval_set(ad->longpress_timer, FF_REW_INTERVAL); endfunc; @@ -140,7 +153,7 @@ _mp_play_control_reset_play_list(void *data) mp_play_list_reset(ad, &ad->playing_list, current_item->key_id); } - current_item = mp_play_list_get_current_item(ad->playing_list); + current_item = mp_play_list_get_current_item(ad->playing_list); //reset at mp_play_list_reset, so must reget current item MP_CHECK_FALSE(current_item); mp_playing_view *playing_view = ad->playing_view; @@ -157,6 +170,174 @@ _mp_play_control_reset_play_list(void *data) return true; } +static void _hide_reflection(struct appdata *ad) +{ + MP_CHECK(ad); + if(ad->playing_view && ad->info_ug_base) + { + if (ad->playing_view->albumart_image_reflection) + { + DEBUG_TRACE("hide albumart_image_reflection"); + evas_object_hide(ad->playing_view->albumart_image_reflection); + } + if (ad->playing_view->albumart_image) + { + DEBUG_TRACE("hide albumart_image"); + evas_object_hide(ad->playing_view->albumart_image); + } + } +} + +static void +_mp_play_control_start_cb(void *userdata) +{ + MP_TA_ACUM_ITEM_END(" mm_player_start_cb_time", 0); + MP_TA_ACUM_ITEM_END("Selected_Item_to_play_start_cb", 0); + startfunc; + struct appdata *ad = userdata; + MP_CHECK(ad); + + _hide_reflection(ad); + + mp_play_start(ad); + + vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid()); + + if (ad->player_state == PLAY_STATE_PAUSED) + mp_play_resume(ad); + + ad->player_state = PLAY_STATE_PLAYING; + +} + +static void +_mp_play_control_paused_cb(void *userdata) +{ + startfunc; + struct appdata *ad = userdata; + MP_CHECK(ad); + + _hide_reflection(ad); + + mp_play_pause(ad); + ad->player_state = PLAY_STATE_PAUSED; + ad->paused_by_other_player = FALSE; +} + +static void +_mp_play_control_completed_cb(void *userdata) +{ + startfunc; + struct appdata *ad = userdata; + MP_CHECK(ad); + + _hide_reflection(ad); + mp_play_control_end_of_stream(ad); +} + +static void +_mp_play_control_interrupted_cb(player_interrupted_code_e code, void *userdata) +{ + startfunc; + struct appdata *ad = userdata; + MP_CHECK(ad); + + _hide_reflection(ad); + + switch(code) + { + case PLAYER_INTERRUPTED_BY_OTHER_APP: + DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP"); + break; + case PLAYER_INTERRUPTED_BY_CALL: + DEBUG_TRACE("receive PLAYER_INTERRUPTED_BY_CALL"); + break; + case PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG: + DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG"); + break; + case PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT: + DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT"); + break; + case PLAYER_INTERRUPTED_BY_ALARM: + DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_ALARM_START"); + break; + case PLAYER_INTERRUPTED_COMPLETED: + DEBUG_TRACE("PLAYER_INTERRUPTED_COMPLETED"); + return; + break; + default: + DEBUG_TRACE("Unhandled code: %d", code); + break; + } + + mp_play_pause(ad); +} + +static Eina_Bool +_mp_play_control_error(void *data) +{ + struct appdata *ad = data; + MP_CHECK_FALSE(ad); + + mp_play_destory(ad); + ad->playing_err_idler = NULL; + return EINA_FALSE; +} + +static void +_mp_play_control_error_cb(int error_code, void *userdata) +{ + startfunc; + struct appdata *ad = userdata; + MP_CHECK(ad); + + _hide_reflection(ad); + + switch (error_code) + { + case PLAYER_ERROR_OUT_OF_MEMORY: + DEBUG_TRACE("PLAYER_ERROR_OUT_OF_MEMORY"); + break; + case PLAYER_ERROR_INVALID_PARAMETER: + DEBUG_TRACE("PLAYER_ERROR_INVALID_PARAMETER"); + //mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED")); + break; + case PLAYER_ERROR_NOT_SUPPORTED_FILE: //can receive error msg while playing. + DEBUG_TRACE("receive MM_ERROR_PLAYER_CODEC_NOT_FOUND\n"); + mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE")); + break; + case PLAYER_ERROR_CONNECTION_FAILED: + mp_debug("MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL"); + mp_streaming_mgr_buffering_popup_control(ad, FALSE); + mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_CONNECTION_FAILED")); + break; + default: + mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE")); + DEBUG_TRACE("error_code: %d", error_code); + } + + if(!ad->playing_err_idler) + ad->playing_err_idler = ecore_idler_add(_mp_play_control_error, ad); +} + +static void +_mp_play_control_buffering_cb(int percent, void *userdata) +{ + startfunc; + struct appdata *ad = userdata; + MP_CHECK(ad); + + _hide_reflection(ad); + + mp_debug("Buffering : %d%% \n", percent); + + bool is_show_buffering = true; + if (percent > 95 || ad->player_state == PLAY_STATE_PLAYING) + is_show_buffering = false; + + mp_streaming_mgr_buffering_popup_control(ad, is_show_buffering); +} + bool mp_player_control_ready_new_file(void *data, bool check_drm) { @@ -170,6 +351,7 @@ mp_player_control_ready_new_file(void *data, bool check_drm) bool is_drm = FALSE; + //mp_play_control_visible_set(ad, TRUE); DEBUG_TRACE("current item pathname : [%s]", current_item->filename); if (mp_util_check_uri_available(current_item->filename)) { @@ -178,10 +360,11 @@ mp_player_control_ready_new_file(void *data, bool check_drm) else if (!mp_check_file_exist(current_item->filename)) { ERROR_TRACE("There is no such file\n"); - mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST")); + mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST")); //show popup when file not exitst return FALSE; } + //DRM File Check if (check_drm) { if (mp_drm_file_right(current_item->filename)) @@ -189,7 +372,7 @@ mp_player_control_ready_new_file(void *data, bool check_drm) DEBUG_TRACE("This is DRM Contents\n"); is_drm = TRUE; - if (!mp_drm_check_left_ro(ad, current_item->filename)) + if (!mp_drm_check_left_ro(ad, current_item->filename)) //drm pop-up raised. return FALSE; if (!mp_drm_check_forward(ad, current_item->filename)) @@ -199,9 +382,6 @@ mp_player_control_ready_new_file(void *data, bool check_drm) else is_drm = TRUE; - if (is_drm) - mp_drm_set_consumption(TRUE); - ad->player_state = PLAY_STATE_INIT; if (!mp_player_mgr_create(ad, current_item->filename)) @@ -210,11 +390,12 @@ mp_player_control_ready_new_file(void *data, bool check_drm) return FALSE; } - if (!mp_player_mgr_set_msg_callback(player_msg_cb, ad)) //callback has to be set before realize - { - mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED")); - return FALSE; - } + mp_player_mgr_set_started_cb(_mp_play_control_start_cb, ad); + mp_player_mgr_set_paused_cb(_mp_play_control_paused_cb, ad); + mp_player_mgr_set_completed_cb(_mp_play_control_completed_cb, ad); + mp_player_mgr_set_interrupted_cb(_mp_play_control_interrupted_cb, ad); + mp_player_mgr_set_error_cb(_mp_play_control_error_cb, ad); + mp_player_mgr_set_buffering_cb(_mp_play_control_buffering_cb, ad); if (!mp_player_mgr_realize(ad)) { @@ -222,6 +403,8 @@ mp_player_control_ready_new_file(void *data, bool check_drm) return FALSE; } + mp_play_ready(ad); + return TRUE; } @@ -240,7 +423,13 @@ mp_play_control_play_cb(void *data, Evas_Object * o, const char *emission, const if (ad->player_state == PLAY_STATE_PAUSED) { - mp_player_mgr_resume(ad); + if(mp_player_mgr_resume(ad)) + { + vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid()); + if (ad->player_state == PLAY_STATE_PAUSED) + mp_play_resume(ad); + ad->player_state = PLAY_STATE_PLAYING; + } } else if (ad->player_state == PLAY_STATE_READY) { @@ -252,6 +441,7 @@ mp_play_control_play_cb(void *data, Evas_Object * o, const char *emission, const } else { + //silentmode -> go to listview -> click one track -> silent mode play no -> go to playing view -> click play icon mp_play_new_file(ad, TRUE); } } @@ -288,13 +478,12 @@ mp_play_control_ff_cb(void *data, Evas_Object * o, const char *emission, const c if (ad->is_Longpress) { ad->is_Longpress = false; - if (!ad->paused_by_user) - mp_player_mgr_resume(ad); } else { if(ad->playing_view) ad->playing_view->flick_direction = 1; + mp_play_next_file(ad, TRUE); } } @@ -325,19 +514,23 @@ mp_play_control_rew_cb(void *data, Evas_Object * o, const char *emission, const if (ad->is_Longpress) { ad->is_Longpress = false; - if (!ad->paused_by_user) - mp_player_mgr_resume(ad); } else { int pos = mp_player_mgr_get_position(); if (pos > 3000 ||mp_play_list_get_current_list_count(ad->playing_list) == 1) { - mp_player_mgr_set_position(0); + mp_player_mgr_set_position(0, NULL, NULL); - if (!ad->paused_by_user) + if (!ad->paused_by_user && ad->player_state == PLAY_STATE_PAUSED) { - mp_player_mgr_resume(ad); + if(mp_player_mgr_resume(ad)) + { + vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid()); + if (ad->player_state == PLAY_STATE_PAUSED) + mp_play_resume(ad); + ad->player_state = PLAY_STATE_PLAYING; + } } else { @@ -376,6 +569,7 @@ _mp_play_control_volume_timer_cb(void *data) mp_playing_view *playing_view = ad->playing_view; MP_CHECK_FALSE(playing_view); + //previous status is mute if (ad->mute_flag) { mp_player_mgr_set_mute(false); @@ -384,7 +578,7 @@ _mp_play_control_volume_timer_cb(void *data) ad->mute_flag = false; } else - { + { //previous status is unmute mp_player_mgr_set_mute(true); edje_object_signal_emit(_EDJ(playing_view->play_icon), "mute", "volume"); edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_SHOW, "*"); @@ -403,8 +597,11 @@ mp_play_control_volume_down_cb(void *data, Evas_Object * o, const char *emission struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); + //initilize flag data ad->volume_long_pressed = false; + mp_ecore_timer_del(ad->volume_down_timer); + ad->volume_down_timer = ecore_timer_add(MP_LONG_PRESS_TIMEOUT, _mp_play_control_volume_timer_cb, (void *)ad); return; @@ -446,11 +643,11 @@ mp_play_control_volume_cb(void *data, Evas_Object * o, const char *emission, con DEBUG_TRACE("volume_long_pressed=%d,mute_flag=%d", ad->volume_long_pressed, ad->mute_flag); if (ad->volume_long_pressed) - { + { //longpress volume button ad->volume_long_pressed = false; } else if (ad->mute_flag) - { + { //previous status is mute mp_playing_view *playing_view = ad->playing_view; MP_CHECK(playing_view); edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_SHOW, "*"); @@ -478,7 +675,7 @@ mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const { } else if (!strcmp(emission, SIGNAL_SHUFFLE)) - { + { // TURN OFF SHUFFLE if (!mp_setting_set_shuffle_state(FALSE)) { mp_play_control_shuffle_set(ad, FALSE); @@ -489,7 +686,7 @@ mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const } else if (!strcmp(emission, SIGNAL_SHUFNON)) - { + { // TURN ON SHUFFE if (!mp_setting_set_shuffle_state(TRUE)) { @@ -501,16 +698,19 @@ mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const } else if (!strcmp(emission, SIGNAL_REPALL)) //off -1 - all - off { + //turn off srs if (!mp_setting_set_repeat_state(MP_SETTING_REP_NON)) mp_play_control_repeat_set(ad, MP_SETTING_REP_NON); } else if (!strcmp(emission, SIGNAL_REPNON)) { + //turn off srs if (!mp_setting_set_repeat_state(MP_SETTING_REP_1)) mp_play_control_repeat_set(ad, MP_SETTING_REP_1); } else if (!strcmp(emission, SIGNAL_REP1)) { + //turn off srs if (!mp_setting_set_repeat_state(MP_SETTING_REP_ALL)) mp_play_control_repeat_set(ad, MP_SETTING_REP_ALL); } @@ -643,3 +843,4 @@ mp_play_control_repeat_set(void *data, int repeat_state) ERROR_TRACE("Error when set repeat\n"); } + diff --git a/src/core/mp-player-drm.c b/src/core/mp-player-drm.c index 844c1c6..e7a14d3 100755 --- a/src/core/mp-player-drm.c +++ b/src/core/mp-player-drm.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,8 @@ * limitations under the License. */ +#include +#include #include "music.h" #include "mp-player-drm.h" @@ -24,85 +26,736 @@ #include "mp-play-list.h" #include "mp-util.h" #include "mp-popup.h" +#include "mp-widget.h" -static bool _g_drm_consumption = FALSE; #define ACCUMULATED_DATE 86400 // 24*60*60 -void -mp_drm_set_consumption(bool enabled) -{ - _g_drm_consumption = enabled; -} +static bool check_interval_constraint = false; bool -mp_drm_get_consumption(void) +mp_drm_get_content_info(const char *path, drm_content_info_e first_info, ...) { - return _g_drm_consumption; -} + /* return info shoud be freed */ + MP_CHECK_FALSE(path); -void -mp_drm_start_consumption(char *path) -{ + drm_content_info_s info; + memset(&info, 0x0, sizeof(drm_content_info_s)); + int res = drm_get_content_info(path, &info); + if (res != DRM_RETURN_SUCCESS) { + mp_error("drm_get_content_info().. [0x%x]", res); + return false; + } + + va_list var_args; + drm_content_info_e attr; + + attr = first_info; + va_start(var_args, first_info); + char **ret_val = NULL; + char *value = NULL; + while (attr > DRM_CONTENT_INFO_NULL) { + ret_val = va_arg((var_args), char **); + switch (attr) { + case DRM_CONTENT_INFO_AUTHOR: + value = info.author; + break; + + case DRM_CONTENT_INFO_RIGHTS_URL: + value = info.rights_url; + break; + + case DRM_CONTENT_INFO_DESCRIPTION: + value = info.description; + break; + + default: + mp_debug("Not defined [%d]", attr); + value = NULL; + break; + } + + /* output */ + *ret_val = g_strdup(value); + + attr = va_arg(var_args, drm_content_info_e); + } + + va_end(var_args); + + return true; } -void -mp_drm_pause_consumption(void) +static void +_mp_drm_check_remain_ro(struct appdata *ad) { + MP_CHECK(ad); + music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK(current_item); + + const char *format_str = NULL; + char *message = NULL; + + mp_constraints_info_s *info = &ad->drm_constraints_info; + if (info->constraints & MP_DRM_CONSTRAINT_COUNT && info->remaining_count <= 2) + { + int remain = info->remaining_count - 1; + if (remain == 1) { + format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_GET_ANOTHER_LICENCE_Q"); + message = g_strdup_printf(format_str, current_item->title); + } else if (remain == 0) { + format_str = GET_SYS_STR("IDS_COM_POP_YOU_CANNOT_USE_PS_ANY_MORE_TIMES_GET_ANOTHER_LICENCE_Q"); + message = g_strdup_printf(format_str, current_item->title); + } + } + else if (info->constraints & MP_DRM_CONSTRAINT_ACCUMLATED_TIME) + { + if (info->remaining_acc_sec/ACCUMULATED_DATE <= 1) { + format_str = GET_SYS_STR("IDS_COM_POP_PS_IS_ABOUT_TO_EXPIRE_GET_ANOTHER_LICENCE_Q"); + message = g_strdup_printf(format_str, current_item->title); + } + } + + if (message) + { + ad->can_play_drm_contents = false; // wap launch + mp_drm_set_notify(ad, message); + SAFE_FREE(message); + } } -void -mp_drm_resume_consumption(void) +static void +mp_drm_popup_response_cb(void *data, Evas_Object * obj, void *event_info) { + struct appdata *ad = (struct appdata *)data; + DEBUG_TRACE("response callback=%d", (int)event_info); + mp_retm_if(!ad, "ad is NULL!!!!"); + if(obj) + evas_object_del(obj); + + music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); + + int response = (int)event_info; + if (response == MP_POPUP_YES && current_item) + { + if (ad->can_play_drm_contents) + { + if (mp_play_new_file(data, FALSE)) + { + _mp_drm_check_remain_ro(ad); + } + } + else + { + char *rights_url = NULL; + bool ret = mp_drm_get_content_info(current_item->filename, DRM_CONTENT_INFO_RIGHTS_URL, &rights_url, -1); + if (ret && rights_url) { + DEBUG_TRACE("right url : %s", rights_url); + if (!mp_util_launch_browser(rights_url, NULL)) + WARN_TRACE("Fail to launch browser!!!"); + SAFE_FREE(rights_url); + } + else + { + WARN_TRACE("Fail to get right url"); + } + } + } + else if (response == MP_POPUP_NO) + { + // do nothing + } } void -mp_drm_stop_consumption(void) +mp_drm_set_notify(void *data, char *message) { + struct appdata *ad = (struct appdata *)data; + + mp_popup_destroy(ad); + + Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, ad, mp_drm_popup_response_cb, ad); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(popup, message); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_YES"), MP_POPUP_YES); + mp_popup_button_set(popup, MP_POPUP_BTN_2, GET_SYS_STR("IDS_COM_SK_NO"), MP_POPUP_NO); + evas_object_show(popup); + ad->popup[MP_POPUP_NORMAL] = popup; } bool mp_drm_file_right(char *path) { + MP_CHECK_FALSE(path); + + drm_bool_type_e is_drm = DRM_UNKNOWN; + drm_is_drm_file(path, &is_drm); + if (is_drm == DRM_TRUE) + return TRUE; + return FALSE; } bool mp_drm_has_valid_ro(char *path) { - return TRUE; + MP_CHECK_FALSE(path); + + drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED; + int res = drm_get_license_status(path, DRM_PERMISSION_TYPE_PLAY, &license_status); + if (res != DRM_RETURN_SUCCESS) { + mp_debug("drm_get_license_status().. [0x%x]", res); + } + + mp_debug("license_status = %d", license_status); + + if (license_status == DRM_LICENSE_STATUS_VALID) + return TRUE; + + return FALSE; +} + +static drm_file_type_e +_mp_drm_get_file_type(const char *path) +{ + MP_CHECK_VAL(path, DRM_TYPE_UNDEFINED); + + drm_file_type_e type = DRM_TYPE_UNDEFINED; + int ret = drm_get_file_type(path, &type); + if (ret != DRM_RETURN_SUCCESS) { + mp_error("drm_get_file_type().. [0x%x]", ret); + type = DRM_TYPE_UNDEFINED; + } + + mp_debug("DRM file type[%s=>%d]", path, type); + return type; } bool mp_drm_get_description(void *data, char *path) { - return FALSE; + struct appdata *ad = data; + MP_CHECK_FALSE(ad && path); + + char *description = NULL; + bool ret = mp_drm_get_content_info(path, DRM_CONTENT_INFO_DESCRIPTION, &description, -1); + if (ret && description) { + mp_debug("description = [%s]", description); + SAFE_STRCPY(ad->drm_info.description, description); + ret = TRUE; + } else { + ret = FALSE; + } + + SAFE_FREE(description); + + return ret; } bool mp_drm_check_forward(void *data, char *path) { + struct appdata *ad = data; + MP_CHECK_FALSE(ad && path); + + drm_file_type_e type = _mp_drm_get_file_type(path); + + if (type == DRM_TYPE_OMA_V1 || type == DRM_TYPE_OMA_V2) + { + drm_file_info_s info; + memset(&info, 0x0, sizeof(drm_file_info_s)); + int ret = drm_get_file_info(path, &info); + if (ret != DRM_RETURN_SUCCESS) { + mp_error("drm_get_file_info()... [0x%x]", ret); + return FALSE; + } + + ad->drm_info.version = info.oma_info.version; + if (info.oma_info.version == DRM_OMA_DRMV1_RIGHTS) + { + if (info.oma_info.method == DRM_METHOD_TYPE_SEPARATE_DELIVERY) + ad->drm_info.forward = TRUE; + else + ad->drm_info.forward = FALSE; + } + else if (info.oma_info.version == DRM_OMA_DRMV2_RIGHTS) + { + //all drmv2 contents can be forwared. + ad->drm_info.forward = TRUE; + } + else + { + ERROR_TRACE("Unknown version\n"); + return FALSE; + } + } + else if (type == DRM_TYPE_PLAYREADY) + { + DEBUG_TRACE("playready drm file"); + ad->drm_info.forward = TRUE; + } + else + { + ERROR_TRACE("Not supported drm type"); + return FALSE; + } + return TRUE; +} + +bool +mp_drm_get_left_ro_info(const char *path, mp_constraints_info_s *info) +{ + MP_CHECK_FALSE(path && info); + + if (!mp_drm_has_valid_ro((char *)path)) + { + mp_error("No valid ro"); + return false; + } + + /* init info */ + memset(info, 0x0, sizeof(mp_constraints_info_s)); + + drm_constraint_info_s constraint; + memset(&constraint, 0x0, sizeof(drm_constraint_info_s)); + + int res = drm_get_constraint_info(path, DRM_PERMISSION_TYPE_PLAY, &constraint); + if (res == DRM_RETURN_SUCCESS) { + if (constraint.const_type.is_unlimited) { + DEBUG_TRACE("UNLIMITED"); + info->constraints = MP_DRM_CONSTRAINT_UNLIMITED; + return true; + } + + if (constraint.const_type.is_count) { + DEBUG_TRACE("DRM_COUNT [%d]", constraint.remaining_count); + info->constraints |= MP_DRM_CONSTRAINT_COUNT; + info->remaining_count = constraint.remaining_count; + } + + if (constraint.const_type.is_datetime) { + DEBUG_TRACE("DRM_DATETIME"); + info->constraints |= MP_DRM_CONSTRAINT_DATE_TIME; + DEBUG_TRACE("%d.%d.%d %d:%d~%d.%d.%d %d:%d", + constraint.start_time.tm_mday, + constraint.start_time.tm_mon + 1, + constraint.start_time.tm_year + 1900, + constraint.start_time.tm_hour, + constraint.start_time.tm_min, + constraint.end_time.tm_mday, + constraint.end_time.tm_mon + 1, + constraint.end_time.tm_year + 1900, + constraint.end_time.tm_hour, + constraint.end_time.tm_min); + + struct timeval tv; + gettimeofday(&tv, NULL); + struct tm *ptm = NULL; + ptm = localtime(&tv.tv_sec); + + if (ptm->tm_year >= constraint.start_time.tm_year + && ptm->tm_mon >= constraint.start_time.tm_mon + && ptm->tm_mday >= constraint.start_time.tm_mday + && ptm->tm_hour >= constraint.start_time.tm_hour + && ptm->tm_min >= constraint.start_time.tm_min + && ptm->tm_mon <= constraint.end_time.tm_mon + && ptm->tm_mday <= constraint.end_time.tm_mday + && ptm->tm_hour <= constraint.end_time.tm_hour + && ptm->tm_min <= constraint.end_time.tm_min) + { + /* not expired */ + info->date_time_expired = false; + } + else + { + info->date_time_expired = true; + } + + } + + if (constraint.const_type.is_interval) { + DEBUG_TRACE("DRM_INTERVAL"); + info->constraints |= MP_DRM_CONSTRAINT_INTERVAL; + DEBUG_TRACE("Remain... %d.%d.%d %d:%d", + constraint.interval_time.tm_mon, + constraint.interval_time.tm_mday, + constraint.interval_time.tm_year, + constraint.interval_time.tm_hour, + constraint.interval_time.tm_min); + + info->remaining_interval_sec = constraint.interval_time.tm_sec + constraint.interval_time.tm_min * 60 + constraint.interval_time.tm_hour * 3600; + info->remaining_interval_sec += (constraint.interval_time.tm_mday + constraint.interval_time.tm_mon * 30 + constraint.interval_time.tm_year * 365) * (3600 *24); + } + + if (constraint.const_type.is_timedcount) { + DEBUG_TRACE("DRM_TIMED_COUNT"); + DEBUG_TRACE("%d left (%d sec)", constraint.timed_remaining_count, constraint.timed_count_timer); + info->constraints |= MP_DRM_CONSTRAINT_TIMED_COUNT; + info->remaining_timed_count = constraint.timed_remaining_count; + } + + if (constraint.const_type.is_accumulated) { + DEBUG_TRACE("DRM_ACCUMULATED [%d]", constraint.accumulated_remaining_seconds); + info->constraints |= MP_DRM_CONSTRAINT_ACCUMLATED_TIME; + info->remaining_acc_sec = constraint.accumulated_remaining_seconds; + } + + if (constraint.const_type.is_individual) { + mp_debug("DRM_INDIVISUAL_ID [%s]", constraint.individual_id); + } + + if (constraint.const_type.is_system) { + mp_debug("DRM_SYSTEM [ID:%s, type:%d]", constraint.system_id, constraint.system_identity_type); + } + } + else { + mp_error("drm_get_constraint_info().. 0x%x", res); + return FALSE; + } + return TRUE; } + bool mp_drm_check_left_ro(void *data, char *path) { + struct appdata *ad = data; + MP_CHECK_FALSE(ad); + + bool wap_launch = FALSE; + bool expired = FALSE; + + mp_retvm_if(!ad, NULL, "ad is NULL!!!!"); + music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK_FALSE(current_item); + + char *title = current_item->title; + ad->can_play_drm_contents = FALSE; + + DEBUG_TRACE("mp_drm_check_left_ro\n"); + mp_constraints_info_s *info = &(ad->drm_constraints_info); + memset(info, 0x0, sizeof(mp_constraints_info_s)); + bool has_valid_ro = mp_drm_get_left_ro_info(path, info); + + const char *format_str = NULL; + char *message = NULL; + if (has_valid_ro) + { + while (info->constraints) + { + if (info->constraints & MP_DRM_CONSTRAINT_COUNT) + { + if (info->remaining_count == 2) { + format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_2_MORE_TIMES_START_NOW_Q"); + message = g_strdup_printf(format_str, title); + } else if (info->remaining_count == 1) { + format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_START_NOW_Q"); + message = g_strdup_printf(format_str, title); + } else if (info->remaining_count == 0) { + wap_launch = true; + break; + } + } + + if (info->constraints & MP_DRM_CONSTRAINT_DATE_TIME) + { + if (info->date_time_expired) { + wap_launch = true; + break; + } + } + + if (info->constraints & MP_DRM_CONSTRAINT_INTERVAL) + { + if (info->remaining_interval_sec == 0) { + wap_launch = true; + break; + } else if (!check_interval_constraint) { + check_interval_constraint = true; + format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_FOR_PD_DAYS_START_NOW_Q"); + int days = info->remaining_interval_sec / ACCUMULATED_DATE + 1; + message = g_strdup_printf(format_str, title, days); + } + } + + if (info->constraints & MP_DRM_CONSTRAINT_TIMED_COUNT) + { + if (info->remaining_timed_count == 2) { + format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_2_MORE_TIMES_START_NOW_Q"); + message = g_strdup_printf(format_str, title); + } else if (info->remaining_timed_count == 1) { + format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_START_NOW_Q"); + message = g_strdup_printf(format_str, title); + } else if (info->remaining_timed_count == 0) { + wap_launch = true; + break; + } + } + + if (info->constraints & MP_DRM_CONSTRAINT_ACCUMLATED_TIME) + { + if (info->remaining_acc_sec == 0) { + wap_launch = true; + break; + } + } + + ad->can_play_drm_contents = true; + break; + } + + if (info->constraints == MP_DRM_CONSTRAINT_UNLIMITED) { + ad->can_play_drm_contents = true; + } + } + + if (!has_valid_ro || (wap_launch && !mp_drm_check_expiration(path, expired))) + { + DEBUG_TRACE("have no valid ro"); + format_str = GET_SYS_STR("IDS_COM_POP_PS_CURRENTLY_LOCKED_UNLOCK_Q"); + message = g_strdup_printf(format_str, title); + mp_drm_set_notify(ad, message); + SAFE_FREE(message); + return FALSE; + } + else if (message) + { + /* play possible */ + mp_debug("warning popup=[%s]", message); + mp_drm_set_notify(ad, message); + SAFE_FREE(message); + return FALSE; + } + return TRUE; } bool mp_drm_check_expiration(char *path, bool expired) { - return TRUE; + if (mp_drm_file_right(path)) + { + + drm_file_info_s info; + memset(&info, 0x0, sizeof(drm_file_info_s)); + int ret = drm_get_file_info(path, &info); + if (ret == DRM_RETURN_SUCCESS) { + DEBUG_TRACE("method [%d] expired [%d]\n", info.oma_info.method, expired); + if (info.oma_info.method == DRM_METHOD_TYPE_COMBINED_DELIVERY + || info.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK) { + + return TRUE; + } + + return FALSE; + } + } + + return FALSE; } bool mp_drm_check_foward_lock(char *path) { - return TRUE; + if (mp_drm_file_right(path)) + { + + drm_file_info_s info; + memset(&info, 0x0, sizeof(drm_file_info_s)); + int ret = drm_get_file_info(path, &info); + if (ret == DRM_RETURN_SUCCESS) { + if (info.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK) { + mp_debug("forward lock.."); + return TRUE; + } + } + } + + return FALSE; +} + +static mp_drm_right_status_t* +_mp_drm_create_right_status_item(const char *type, const char *validity) +{ + MP_CHECK_NULL(type); + + mp_drm_right_status_t *rs = calloc(1, sizeof(mp_drm_right_status_t)); + mp_assert(rs); + rs->type = g_strdup(type); + rs->validity = g_strdup(validity); + + return rs; +} + +GList* +mp_drm_get_right_status(const char *path) +{ + startfunc; + MP_CHECK_NULL(path); + + GList *rs_list = NULL; + + drm_constraint_info_s constraint; + memset(&constraint, 0x0, sizeof(drm_constraint_info_s)); + int res = drm_get_constraint_info(path, DRM_PERMISSION_TYPE_PLAY, &constraint); + if (res != DRM_RETURN_SUCCESS) { + mp_error("drm_get_constraint_info().. [0x%x]", res); + return NULL; + } + + char *validity_str = NULL; + + if (constraint.const_type.is_unlimited) { + DEBUG_TRACE("UNLIMITED"); + mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_SYS_STR("IDS_COM_POP_UNLIMITED"), NULL); + rs_list = g_list_append(rs_list, rs); + } + + if (constraint.const_type.is_count) { + validity_str = g_strdup_printf("%d left", constraint.remaining_count); + mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_STR("Count"), validity_str); + SAFE_FREE(validity_str); + rs_list = g_list_append(rs_list, rs); + } + + if (constraint.const_type.is_datetime) { + DEBUG_TRACE("DRM_DATETIME\n"); + validity_str = g_strdup_printf("%d.%d.%d %d:%d~%d.%d.%d %d:%d", + constraint.start_time.tm_mday, + constraint.start_time.tm_mon + 1, + constraint.start_time.tm_year + 109, + constraint.start_time.tm_hour, + constraint.start_time.tm_min, + constraint.end_time.tm_mday, + constraint.end_time.tm_mon + 1, + constraint.end_time.tm_year + 109, + constraint.end_time.tm_hour, + constraint.end_time.tm_min); + + mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_SYS_STR("IDS_COM_POP_TIME"), validity_str); + SAFE_FREE(validity_str); + rs_list = g_list_append(rs_list, rs); + } + + if (constraint.const_type.is_interval) { + DEBUG_TRACE("DRM_INTERVAL\n"); + int val = constraint.interval_time.tm_hour; + val += 24 * (constraint.interval_time.tm_mday + constraint.interval_time.tm_mon * 30 + constraint.interval_time.tm_year * 365); + const char *format = GET_SYS_STR("IDS_COM_POP_PD_HOURS"); + validity_str = g_strdup_printf(format, val); + mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_STR("Interval"), validity_str); + SAFE_FREE(validity_str); + rs_list = g_list_append(rs_list, rs); + } + + if (constraint.const_type.is_timedcount) { + validity_str = g_strdup_printf("%d left", constraint.timed_remaining_count); + mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_STR("Timed count"), validity_str); + SAFE_FREE(validity_str); + rs_list = g_list_append(rs_list, rs); + } + + if (constraint.const_type.is_accumulated) { + const char *format = GET_SYS_STR("IDS_COM_POP_PD_HOURS"); + int acc_sec = constraint.accumulated_remaining_seconds; + int hour = acc_sec / 3600; + validity_str = g_strdup_printf(format, hour); + mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_STR("Accumulate time"), validity_str); + SAFE_FREE(validity_str); + rs_list = g_list_append(rs_list, rs); + } + + if (constraint.const_type.is_individual) { + mp_debug("DRM_INDIVISUAL_ID [%s]", constraint.individual_id); + } + + if (constraint.const_type.is_system) { + mp_debug("DRM_SYSTEM [ID:%s, type:%d]", constraint.system_id, constraint.system_identity_type); + } + return rs_list; +} + +void +mp_drm_free_right_status(GList *list) +{ + MP_CHECK(list); + + GList *current = list; + while(current) { + mp_drm_right_status_t *rs = current->data; + if (rs) { + SAFE_FREE(rs->type); + SAFE_FREE(rs->validity); + + free(rs); + } + + current = current->next; + } + + g_list_free(list); +} + +bool +mp_drm_request_setas_ringtone(const char *path, mp_drm_setas_request_type_e type) +{ + MP_CHECK_FALSE(path); + + bool ret = false; + + switch (type) { + case SETAS_REQUEST_CHECK_STATUS: + { + drm_bool_type_e allowed = DRM_UNKNOWN; + drm_action_allowed_data_s data; + memset(&data, 0x0, sizeof(drm_action_allowed_data_s)); + SAFE_STRCPY(data.file_path, path); + int res = drm_is_action_allowed(DRM_HAS_VALID_SETAS_STATUS, &data, &allowed); + if (res == DRM_RETURN_SUCCESS) { + if (allowed == DRM_TRUE) + ret = true; + } else { + mp_error("drm_is_action_allowed().. [0x%x]", res); + } + + break; + } + case SETAS_REQUEST_REGISTER: + { + drm_register_setas_info_s info; + memset(&info, 0x0, sizeof(drm_register_setas_info_s)); + SAFE_STRCPY(info.file_path, path); + info.setas_cat = DRM_SETAS_RINGTONE; + int res = drm_process_request(DRM_REQUEST_TYPE_REGISTER_SETAS, (void *)&info, NULL); + if (res == DRM_RETURN_SUCCESS) + ret = true; + else + mp_error("drm_process_request().. [0x%x]", res); + break; + } + case SETAS_REQUEST_UNREGISTER: + { + + drm_unregister_setas_info_s info; + memset(&info, 0x0, sizeof(drm_unregister_setas_info_s)); + SAFE_STRCPY(info.file_path, path); + info.setas_cat = DRM_SETAS_RINGTONE; + int res = drm_process_request(DRM_REQUEST_TYPE_UNREGISTER_SETAS, (void *)&info, NULL); + if (res == DRM_RETURN_SUCCESS) + ret = true; + else + mp_error("drm_process_request().. [0x%x]", res); + break; + } + default: + mp_debug("Not defined"); + break; + } + + return ret; } diff --git a/src/core/mp-player-mgr.c b/src/core/mp-player-mgr.c index a7f153c..984d3d8 100755 --- a/src/core/mp-player-mgr.c +++ b/src/core/mp-player-mgr.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,25 +14,70 @@ * limitations under the License. */ - - #include -#include #include "music.h" #include "mp-player-mgr.h" #include "mp-player-control.h" #include "mp-play.h" #include "mp-player-drm.h" -#include -#include +#include + +#include "mp-ta.h" #include "mp-player-debug.h" #include "mp-widget.h" #include "mp-play-view.h" #include "mp-streaming-mgr.h" +#include "mp-util.h" + +#define MAX_PATH_LEN 1024 + +static player_h _player = 0; + +static bool is_seeking = false; +static int g_reserved_seek_pos = -1; + +static Seek_Done_Cb g_requesting_cb = NULL; +static void *g_requesting_cb_data = NULL; + +static Seek_Done_Cb g_reserved_cb = NULL; +static void *g_reserved_cb_data = NULL; + +static Ecore_Pipe *g_player_pipe = NULL; -#define MAX_PATH_LEN MAX_NAM_LEN +typedef enum { + MP_PLAYER_CB_TYPE_STARTED, + MP_PLAYER_CB_TYPE_PAUSED, + MP_PLAYER_CB_TYPE_COMPLETED, + MP_PLAYER_CB_TYPE_INTURRUPTED, + MP_PLAYER_CB_TYPE_ERROR, + MP_PLAYER_CB_TYPE_BUFFERING, + MP_PLAYER_CB_TYPE_NUM, +} mp_player_cb_type; -static MMHandleType _player = 0; +typedef struct { + /* player callbacks */ + player_started_cb started_cb; + player_paused_cb paused_cb; + player_completed_cb completed_cb; + player_interrupted_cb interrupted_cb; + player_error_cb error_cb; + player_buffering_cb buffering_cb; + + /* callback user data */ + void *user_data[MP_PLAYER_CB_TYPE_NUM]; +} mp_player_cbs; + +typedef struct { + mp_player_cb_type cb_type; + + union { + player_interrupted_code_e interrupted_code; + int error_code; + int percent; + } param; +} mp_player_cb_extra_data; + +static mp_player_cbs *g_player_cbs = NULL; bool mp_player_mgr_is_active(void) @@ -40,33 +85,264 @@ mp_player_mgr_is_active(void) return _player ? TRUE : FALSE; } -bool -mp_player_mgr_set_msg_callback(MMMessageCallback cb, gpointer user_data) +void mp_player_mgr_set_started_cb(player_started_cb callback, void *user_data) { if (!mp_player_mgr_is_active()) - return FALSE; + return; - if (mm_player_set_message_callback(_player, cb, user_data) != MM_ERROR_NONE) - { - ERROR_TRACE("Error when mp_player_mgr_set_msg_callback\n"); - return FALSE; - } - return TRUE; + MP_CHECK(g_player_cbs); + + g_player_cbs->started_cb = callback; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_STARTED] = user_data; +} + +void mp_player_mgr_set_paused_cb(player_paused_cb callback, void *user_data) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->paused_cb = callback; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PAUSED] = user_data; +} + +void mp_player_mgr_set_completed_cb(player_completed_cb callback, void *user_data) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->completed_cb = callback; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_COMPLETED] = user_data; +} + +void mp_player_mgr_set_interrupted_cb(player_interrupted_cb callback, void *user_data) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->interrupted_cb = callback; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_INTURRUPTED] = user_data; +} + +void mp_player_mgr_set_error_cb(player_error_cb callback, void *user_data) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->error_cb = callback; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_ERROR] = user_data; +} + +void mp_player_mgr_set_buffering_cb(player_buffering_cb callback, void *user_data) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->buffering_cb = callback; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_BUFFERING] = user_data; +} + +void mp_player_mgr_unset_started_cb(void) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->started_cb = NULL; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_STARTED] = NULL; +} + +void mp_player_mgr_unset_paused_cb(void) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->paused_cb = NULL; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PAUSED] = NULL; +} + +void mp_player_mgr_unset_completed_cb(void) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->completed_cb = NULL; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_COMPLETED] = NULL; +} + +void mp_player_mgr_unset_interrupted_cb(void) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->interrupted_cb = NULL; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_INTURRUPTED] = NULL; } -MMPlayerStateType +void mp_player_mgr_unset_error_cb(void) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->error_cb = NULL; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_ERROR] = NULL; +} + +void mp_player_mgr_unset_buffering_cb(void) +{ + if (!mp_player_mgr_is_active()) + return; + + MP_CHECK(g_player_cbs); + + g_player_cbs->buffering_cb = NULL; + g_player_cbs->user_data[MP_PLAYER_CB_TYPE_BUFFERING] = NULL; +} + +player_state_e mp_player_mgr_get_state(void) { int ret = -1; - MMPlayerStateType state_now = MM_PLAYER_STATE_NULL; + player_state_e state_now = PLAYER_STATE_NONE; if (!_player) return state_now; - ret = mm_player_get_state(_player, &state_now); + ret = player_get_state(_player, &state_now); return state_now; } +static void +_mp_player_mgr_callback_pipe_handler(void *data, void *buffer, unsigned int nbyte) +{ + mp_player_cb_extra_data *extra_data = buffer; + MP_CHECK(extra_data); + MP_CHECK(g_player_cbs); + + switch (extra_data->cb_type) { + case MP_PLAYER_CB_TYPE_STARTED: + if (g_player_cbs->started_cb) + g_player_cbs->started_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_STARTED]); + break; + + case MP_PLAYER_CB_TYPE_PAUSED: + if (g_player_cbs->paused_cb) + g_player_cbs->paused_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PAUSED]); + break; + + case MP_PLAYER_CB_TYPE_COMPLETED: + if (g_player_cbs->completed_cb) + g_player_cbs->completed_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_COMPLETED]); + break; + + case MP_PLAYER_CB_TYPE_INTURRUPTED: + if (g_player_cbs->interrupted_cb) + g_player_cbs->interrupted_cb(extra_data->param.interrupted_code, g_player_cbs->user_data[MP_PLAYER_CB_TYPE_INTURRUPTED]); + break; + + case MP_PLAYER_CB_TYPE_ERROR: + if (g_player_cbs->error_cb) + g_player_cbs->error_cb(extra_data->param.error_code, g_player_cbs->user_data[MP_PLAYER_CB_TYPE_ERROR]); + break; + + case MP_PLAYER_CB_TYPE_BUFFERING: + if (g_player_cbs->buffering_cb) + g_player_cbs->buffering_cb(extra_data->param.percent ,g_player_cbs->user_data[MP_PLAYER_CB_TYPE_BUFFERING]); + break; + + default: + WARN_TRACE("Not suppoted callback type [%d]", extra_data->cb_type); + } +} + +static void +_mp_player_mgr_start_cb(void *userdata) +{ + MP_CHECK(g_player_pipe); + + mp_player_cb_extra_data extra_data; + extra_data.cb_type = MP_PLAYER_CB_TYPE_STARTED; + + ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data)); +} + +static void +_mp_player_mgr_paused_cb(void *userdata) +{ + MP_CHECK(g_player_pipe); + + mp_player_cb_extra_data extra_data; + extra_data.cb_type = MP_PLAYER_CB_TYPE_PAUSED; + + ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data)); +} + +static void +_mp_player_mgr_completed_cb(void *userdata) +{ + MP_CHECK(g_player_pipe); + + mp_player_cb_extra_data extra_data; + extra_data.cb_type = MP_PLAYER_CB_TYPE_COMPLETED; + + ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data)); +} + +static void +_mp_player_mgr_interrupted_cb(player_interrupted_code_e code, void *userdata) +{ + MP_CHECK(g_player_pipe); + + mp_player_cb_extra_data extra_data; + extra_data.cb_type = MP_PLAYER_CB_TYPE_INTURRUPTED; + extra_data.param.interrupted_code = code; + + ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data)); +} + + +static void +_mp_player_mgr_error_cb(int error_code, void *userdata) +{ + MP_CHECK(g_player_pipe); + + mp_player_cb_extra_data extra_data; + extra_data.cb_type = MP_PLAYER_CB_TYPE_ERROR; + extra_data.param.error_code = error_code; + + ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data)); +} + +static void +_mp_player_mgr_buffering_cb(int percent, void *userdata) +{ + MP_CHECK(g_player_pipe); + + mp_player_cb_extra_data extra_data; + extra_data.cb_type = MP_PLAYER_CB_TYPE_BUFFERING; + extra_data.param.percent = percent; + + ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data)); +} + bool mp_player_mgr_create(void *data, const gchar * path) @@ -74,14 +350,10 @@ mp_player_mgr_create(void *data, const gchar * path) struct appdata *ad = (struct appdata *)data; int path_len = strlen(path); - char *g_err_name = NULL; - int ret = MM_ERROR_NONE; + int ret = PLAYER_ERROR_NONE; DEBUG_TRACE("mp_player_mgr_create with [%s]\n", path); - if(!ad->player_msg_pipe) - ad->player_msg_pipe = ecore_pipe_add(mp_player_mgr_pipe_cb, ad); - if (path_len > 0 && path_len < MAX_PATH_LEN) { @@ -89,25 +361,30 @@ mp_player_mgr_create(void *data, const gchar * path) { return FALSE; } - if (mm_player_create(&_player) != MM_ERROR_NONE) + MP_TA_ACUM_ITEM_BEGIN(" mm_player_create", 0); + if (player_create(&_player) != PLAYER_ERROR_NONE) { ERROR_TRACE("Error when mp_player_mgr_create\n"); return FALSE; } + MP_TA_ACUM_ITEM_END(" mm_player_create", 0); + /*avsysaudiosink volume table setting */ - ret = mm_player_set_attribute(_player, &g_err_name, - "sound_volume_type", MM_SOUND_VOLUME_TYPE_MEDIA, - "profile_uri", path, strlen(path), NULL); - if (ret != MM_ERROR_NONE) + ret = player_set_uri(_player, path); + + if (ret != PLAYER_ERROR_NONE) { - ERROR_TRACE(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name); - SAFE_FREE(g_err_name); + ERROR_TRACE("fail to set uri"); + mp_player_mgr_destroy(data); return FALSE; } + player_set_sound_type(_player, SOUND_TYPE_MEDIA); + if (mp_streaming_mgr_check_streaming(ad, path)) { if (!mp_streaming_mgr_set_attribute(ad, _player)) { mp_error("streaming set attribute fail"); + mp_player_mgr_destroy(data); return FALSE; } } @@ -117,6 +394,22 @@ mp_player_mgr_create(void *data, const gchar * path) return FALSE; } + + is_seeking = false; + g_reserved_seek_pos = -1; + + g_player_cbs = calloc(1, sizeof(mp_player_cbs)); + mp_assert(g_player_cbs); + + g_player_pipe = ecore_pipe_add(_mp_player_mgr_callback_pipe_handler, ad); + + player_set_started_cb(_player, _mp_player_mgr_start_cb, NULL); + player_set_paused_cb(_player, _mp_player_mgr_paused_cb, NULL); + player_set_completed_cb(_player, _mp_player_mgr_completed_cb, NULL); + player_set_interrupted_cb(_player, _mp_player_mgr_interrupted_cb, NULL); + player_set_error_cb(_player, _mp_player_mgr_error_cb, NULL); + player_set_buffering_cb(_player, _mp_player_mgr_buffering_cb, NULL); + return TRUE; } @@ -126,16 +419,10 @@ mp_player_mgr_destroy(void *data) { struct appdata *ad = data; - if(ad->player_msg_pipe) - { - ecore_pipe_del(ad->player_msg_pipe); - ad->player_msg_pipe = NULL; - } - if (!mp_player_mgr_is_active()) return FALSE; - if (mm_player_destroy(_player) != MM_ERROR_NONE) + if (player_destroy(_player) != PLAYER_ERROR_NONE) { ERROR_TRACE("Error when mp_player_mgr_destroy\n"); return FALSE; @@ -143,26 +430,44 @@ mp_player_mgr_destroy(void *data) _player = 0; ad->player_state = PLAY_STATE_INIT; - if (!ad->freeze_indicator_icon) + if (!ad->freeze_indicator_icon && !mp_util_is_other_player_playing()) vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_OFF); else ad->freeze_indicator_icon = FALSE; + is_seeking = false; + g_reserved_seek_pos = -1; + g_reserved_cb = NULL; + g_reserved_cb_data = NULL; + g_requesting_cb = NULL; + g_requesting_cb_data = NULL; + + SAFE_FREE(g_player_cbs); + if (g_player_pipe) { + ecore_pipe_del(g_player_pipe); + g_player_pipe = NULL; + } + return TRUE; } bool mp_player_mgr_realize(void *data) { + struct appdata *ad = data; + if (!mp_player_mgr_is_active()) return FALSE; - if (mm_player_realize(_player) != MM_ERROR_NONE) + MP_TA_ACUM_ITEM_BEGIN(" mm_player_realize", 0); + if (player_prepare(_player) != PLAYER_ERROR_NONE) { ERROR_TRACE("Error when mp_player_mgr_realize\n"); _player = 0; return FALSE; } + MP_TA_ACUM_ITEM_END(" mm_player_realize", 0); + ad->player_state = PLAY_STATE_READY; return TRUE; } @@ -172,7 +477,7 @@ mp_player_mgr_unrealize(void *data) if (!mp_player_mgr_is_active()) return FALSE; - if (mm_player_unrealize(_player) != MM_ERROR_NONE) + if (player_unprepare(_player) != PLAYER_ERROR_NONE) { ERROR_TRACE("Error when mp_player_mgr_unrealize\n"); return FALSE; @@ -190,10 +495,11 @@ mp_player_mgr_play(void *data) if (!mp_player_mgr_is_active()) return FALSE; - err = mm_player_start(_player); - if (err != MM_ERROR_NONE) + MP_TA_ACUM_ITEM_BEGIN(" mm_player_start", 0); + err = player_start(_player); + if (err != PLAYER_ERROR_NONE) { - if (err == MM_ERROR_POLICY_BLOCKED) + if (err == PLAYER_ERROR_SOUND_POLICY) { mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL")); } @@ -205,6 +511,12 @@ mp_player_mgr_play(void *data) ERROR_TRACE("Error when mp_player_mgr_play. err[%x]\n", err); return FALSE; } + MP_TA_ACUM_ITEM_END(" mm_player_start", 0); + MP_TA_ACUM_ITEM_BEGIN(" mm_player_start_cb_time", 0); + + is_seeking = false; + g_reserved_seek_pos = -1; + return TRUE; } @@ -218,12 +530,15 @@ mp_player_mgr_stop(void *data) if (!mp_player_mgr_is_active()) return FALSE; - if (mm_player_stop(_player) != MM_ERROR_NONE) + if (player_stop(_player) != PLAYER_ERROR_NONE) { ERROR_TRACE("Error when mp_player_mgr_stop\n"); return FALSE; } + is_seeking = false; + g_reserved_seek_pos = -1; + mp_play_stop(ad); return TRUE; } @@ -238,11 +553,11 @@ mp_player_mgr_resume(void *data) if (!mp_player_mgr_is_active()) return FALSE; - err = mm_player_resume(_player); - if (err != MM_ERROR_NONE) + err = player_start(_player); + if (err != PLAYER_ERROR_NONE) { ERROR_TRACE("Error when mp_player_mgr_resume. err[%x]\n", err); - if (err == MM_ERROR_POLICY_BLOCKED) + if (err == PLAYER_ERROR_SOUND_POLICY) { mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL")); } @@ -253,6 +568,9 @@ mp_player_mgr_resume(void *data) return FALSE; } + is_seeking = false; + g_reserved_seek_pos = -1; + mp_play_view_update_progressbar(data); mp_play_view_progress_timer_thaw(data); @@ -268,28 +586,80 @@ mp_player_mgr_pause(void *data) if (!mp_player_mgr_is_active()) return FALSE; - err = mm_player_pause(_player); - if (err != MM_ERROR_NONE) + err = player_pause(_player); + if (err != PLAYER_ERROR_NONE) { ERROR_TRACE("Error when mp_player_mgr_pause. err[%x]\n", err); return FALSE; } + return TRUE; } +static Eina_Bool +_mp_player_mgr_seek_done_idler(void *data) +{ + mp_debug("seek done[%d]", (int)data); + + if (!is_seeking) { + mp_debug("seek canceled"); + return ECORE_CALLBACK_DONE; + } + + is_seeking = false; + + if (g_requesting_cb) { + /* invoke seek done callback */ + g_requesting_cb(g_requesting_cb_data); + + g_requesting_cb = NULL; + g_requesting_cb_data = NULL; + } + + if (g_reserved_seek_pos >= 0) { + mp_debug("request reseved seek"); + mp_player_mgr_set_position(g_reserved_seek_pos, g_reserved_cb, g_reserved_cb_data); + g_reserved_seek_pos = -1; + g_reserved_cb = NULL; + g_reserved_cb_data = NULL; + } + + return ECORE_CALLBACK_DONE; +} + +static void +_mp_player_mgr_seek_done_cb(void *data) +{ + if (is_seeking) + ecore_idler_add(_mp_player_mgr_seek_done_idler, data); +} + bool -mp_player_mgr_set_position(guint pos) +mp_player_mgr_set_position(guint pos, Seek_Done_Cb done_cb, void *data) { - startfunc; if (!mp_player_mgr_is_active()) return FALSE; - if (mm_player_set_position(_player, MM_PLAYER_POS_FORMAT_TIME, (int)pos) != MM_ERROR_NONE) + if (is_seeking) { + mp_debug("previous seek is NOT completed.. reserve seek[%d]", pos); + g_reserved_seek_pos = pos; + g_reserved_cb = done_cb; + g_reserved_cb_data = data; + return TRUE; + } + + int err = player_set_position(_player, (int)pos, _mp_player_mgr_seek_done_cb, (void *)pos); + if (err != PLAYER_ERROR_NONE) { - ERROR_TRACE("Error when mp_player_mgr_set_position\n"); + ERROR_TRACE("Error [0x%x] when mp_player_mgr_set_position(%d)\n", err, pos); return FALSE; } + mp_debug("seek reqeuesting.. [%d]", pos); + is_seeking = true; + g_requesting_cb = done_cb; + g_requesting_cb_data = data; + return TRUE; } @@ -301,7 +671,7 @@ mp_player_mgr_get_position(void) if (!mp_player_mgr_is_active()) return 0; - if (mm_player_get_position(_player, MM_PLAYER_POS_FORMAT_TIME, &pos) != MM_ERROR_NONE) + if (player_get_position(_player, &pos) != PLAYER_ERROR_NONE) { ERROR_TRACE("Error when mp_player_mgr_get_position\n"); return 0; @@ -316,248 +686,40 @@ mp_player_mgr_get_duration(void) if (!mp_player_mgr_is_active()) return -1; - int ret = MM_ERROR_NONE; - char *g_err_name = NULL; - int duration = -1; - - ret = mm_player_get_attribute(_player, &g_err_name, "content_duration", &duration, NULL); - if (ret != MM_ERROR_NONE) - { - ERROR_TRACE(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name); - SAFE_FREE(g_err_name); - return FALSE; - } - else - { - return duration; - } - return duration; -} - -static Eina_Bool -mp_playing_paused_by_bluetooth(void *data) -{ - struct appdata *ad = data; - MP_CHECK_FALSE(ad); - - int earjack = 0; - - if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack)) - { - WARN_TRACE("Earjack state get Fail..."); - - if (earjack == 0) - { - mp_play_pause(ad); - } - } - - mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED")); - ad->bt_pause_idler = NULL; - return 0; -} - -static Eina_Bool -mp_playing_error(void *data) -{ - struct appdata *ad = data; - MP_CHECK_FALSE(ad); - - mp_play_destory(ad); - ad->playing_err_idler = NULL; - return EINA_FALSE; -} - -typedef struct{ - int msg_type; - MMMessageParamType msg_param; -}mp_pipe_msg; - -void -mp_player_mgr_pipe_cb(void *data, void *buffer, unsigned int nbyte) -{ - struct appdata *ad = data; - MP_CHECK(ad); - MP_CHECK(buffer); - mp_pipe_msg *pipe_msg = buffer; - MMMessageParamType *param = &(pipe_msg->msg_param); - int msg_type = pipe_msg->msg_type; + int duration = 0; - DEBUG_TRACE("msg_type: %d,", msg_type); + if (!mp_player_mgr_is_active()) + return 0; - switch (msg_type) + if (player_get_duration(_player, &duration) != PLAYER_ERROR_NONE) { - case MM_MESSAGE_BEGIN_OF_STREAM: - DEBUG_TRACE("receive MM_MESSAGE_BEGIN_OF_STREAM\n"); - mp_play_start(ad); - break; - - case MM_MESSAGE_ERROR: - DEBUG_TRACE("receive MM_MESSAGE_ERROR \n"); - DEBUG_TRACE("Error Code=%x\n", param->code); - MP_CHECK(param); - switch (param->code) - { - case MM_ERROR_PLAYER_BT_CONNECTION: - DEBUG_TRACE("receive MM_ERROR_PLAYER_BT_CONNECTION\n"); - break; - case MM_ERROR_PLAYER_INTERNAL: - DEBUG_TRACE("receive MM_ERROR_PLAYER_INTERNAL\n"); - mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED")); - break; - case MM_ERROR_PLAYER_CODEC_NOT_FOUND: - DEBUG_TRACE("receive MM_ERROR_PLAYER_CODEC_NOT_FOUND\n"); - mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE")); - break; - default: - if (!mp_streaming_mgr_message_callback(msg_type, param, ad)) - mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE")); - break; - } - if(!ad->playing_err_idler) - ad->playing_err_idler = ecore_idler_add(mp_playing_error, ad); - break; - - case MM_MESSAGE_WARNING: - DEBUG_TRACE("receive MM_MESSAGE_WARNING\n"); - break; - - case MM_MESSAGE_END_OF_STREAM: - DEBUG_TRACE("receive MM_MESSAGE_END_OF_STREAM\n"); - mp_play_control_end_of_stream(ad); - break; - - case MM_MESSAGE_STATE_CHANGED: - MP_CHECK(param); - switch (param->state.current) - { - case MM_PLAYER_STATE_NONE: - DEBUG_TRACE("==> [MediaPlayerApp] Player is [NONE]\n"); - break; - case MM_PLAYER_STATE_READY: - DEBUG_TRACE("==> [MediaPlayerApp] Player is [READY]\n"); - ad->player_state = PLAY_STATE_READY; - mp_play_ready(ad); - break; - case MM_PLAYER_STATE_PLAYING: - DEBUG_TRACE("==> [MediaPlayerApp] Player is [PLAYING]\n"); - if (ad->player_state == PLAY_STATE_PAUSED) - mp_play_resume(ad); - - ad->player_state = PLAY_STATE_PLAYING; - - if (ad->is_focus_out) { - mp_debug("prohibit playing in bg"); - mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); - } - - break; - case MM_PLAYER_STATE_PAUSED: - DEBUG_TRACE("==> [MediaPlayerApp] Player is [PAUSED]\n"); - mp_play_pause(ad); - ad->player_state = PLAY_STATE_PAUSED; - break; - case MM_PLAYER_STATE_NULL: - DEBUG_TRACE("==> [MediaPlayerApp] Player is [NULL]\n"); - break; - } - - break; - - case MM_MESSAGE_STATE_INTERRUPTED: - DEBUG_TRACE("receive MM_MESSAGE_STATE_CHANGED_BY_ASM\n"); - MP_CHECK(param); - switch (param->code) - { - case MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP: - DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP"); - break; - case MM_MSG_CODE_INTERRUPTED_BY_CALL_START: - DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_CALL_START"); - break; - case MM_MSG_CODE_INTERRUPTED_BY_CALL_END: - DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_CALL_END"); - break; - case MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG: - DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG"); - break; - case MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT: - DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT"); - break; - case MM_MSG_CODE_INTERRUPTED_BY_ALARM_START: - DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_ALARM_START"); - break; - case MM_MSG_CODE_INTERRUPTED_BY_ALARM_END: - DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_ALARM_END"); - break; - } - mp_play_pause(ad); - - break; - - case MM_MESSAGE_BLUETOOTH_OFF: - DEBUG_TRACE("receive MM_MESSAGE_BLUETOOTH_OFF\n"); - if(!ad->bt_pause_idler) - ad->bt_pause_idler = ecore_idler_add(mp_playing_paused_by_bluetooth, ad); - break; - - case MM_MESSAGE_READY_TO_RESUME: - DEBUG_TRACE("receive MM_MESSAGE_READY_TO_RESUME"); - - if (ad->player_state == PLAY_STATE_PAUSED) - mp_player_mgr_resume(ad); - else - ERROR_TRACE("Check player state"); - break; - - default: - if (!mp_streaming_mgr_message_callback(msg_type, param, ad)) { - DEBUG_TRACE("receive unknown msg [0x%x]", msg_type); - } + ERROR_TRACE("Error when mp_player_mgr_get_position\n"); + return 0; } - return; -} - -int -player_msg_cb(int msg_type, void *msg_param, void *user_param) -{ - startfunc; - struct appdata *ad = user_param; - MP_CHECK_VAL(ad, 0); - - MP_CHECK_VAL(mp_player_mgr_is_active(), 1); - mp_pipe_msg *pipe_msg = calloc(sizeof(mp_pipe_msg), 1); - if(msg_param) - memcpy(&(pipe_msg->msg_param), msg_param, sizeof(MMMessageParamType)); - pipe_msg->msg_type = msg_type; - - ecore_pipe_write(ad->player_msg_pipe, pipe_msg, sizeof(mp_pipe_msg)); - - IF_FREE(pipe_msg); - return 1; + return duration; } int mp_player_mgr_vol_type_set(void) { - return mm_sound_volume_primary_type_set(VOLUME_TYPE_MEDIA); + return sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA); } int mp_player_mgr_vol_type_unset(void) { - return mm_sound_volume_primary_type_clear(); + return sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE); } bool mp_player_mgr_session_init(void) { - int ret = MM_ERROR_NONE; + int ret = SOUND_MANAGER_ERROR_NONE; - ret = mm_session_init(MM_SESSION_TYPE_SHARE); + ret = sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE); - if (ret != MM_ERROR_NONE) + if (ret != SOUND_MANAGER_ERROR_NONE) return FALSE; return TRUE; @@ -566,15 +728,7 @@ mp_player_mgr_session_init(void) bool mp_player_mgr_session_finish(void) { - int ret = MM_ERROR_NONE; - - ret = mm_session_finish(); - - if (ret != MM_ERROR_NONE) - return FALSE; - return TRUE; - } void @@ -584,7 +738,7 @@ mp_player_mgr_set_mute(bool bMuteEnable) if (!mp_player_mgr_is_active()) return; - if (mm_player_set_mute(_player, (int)bMuteEnable) != MM_ERROR_NONE) + if (player_set_mute(_player, bMuteEnable) != PLAYER_ERROR_NONE) { ERROR_TRACE("[ERR] mm_player_set_mute"); } diff --git a/src/core/mp-setting-ctrl.c b/src/core/mp-setting-ctrl.c index 93a6c57..dfd8617 100755 --- a/src/core/mp-setting-ctrl.c +++ b/src/core/mp-setting-ctrl.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,21 +15,31 @@ */ - #include #include #include -#include +#include "mp-media-info.h" #include "music.h" #include "mp-setting-ctrl.h" -#include "mp-setting-keys.h" #include "mp-player-debug.h" #include "mp-file-tag-info.h" #include "mp-player-mgr.h" #include "mp-widget.h" #include "mp-util.h" +#include "mp-vconf-private-keys.h" + +enum _mp_menu_item +{ + MP_MENU_ALBUMS, + MP_MENU_ARTISTS, + MP_MENU_GENRES, + MP_MEMU_COMPOSER, + MP_MENU_YEARS, + MP_MENU_FOLDERS, + MP_MENU_NUMS, +}; typedef struct _mp_setting_t { @@ -37,25 +47,43 @@ typedef struct _mp_setting_t int output; MpSettingMenu_Cb menu_cb; void *menu_udata; + MpSettingAutoOff_Cb auto_off_cb; + void *auto_off_udata; } mp_setting_t; - -#define MP_VCONFKEY_MUSIC_SHUFFLE "db/music/menu/shuffle" -#define MP_VCONFKEY_MUSIC_REPEAT "db/music/menu/repeat" -#define MP_VCONFKEY_MUSIC_ALBUM_ART "memory/music/album_art" - static mp_setting_t *g_setting = NULL; static char *c_file_path = NULL; static Eina_Bool _mp_setting_init_idler_cb(void *data); + + void mp_setting_set_albumart_path(const char *path) { if (path && strlen(path)) - vconf_set_str(MP_VCONFKEY_MUSIC_ALBUM_ART, path); + vconf_set_str(VCONFKEY_MUSIC_ALBUM_ART, path); + else + vconf_set_str(VCONFKEY_MUSIC_ALBUM_ART, DEFAULT_THUMBNAIL); +} + +static void +_mp_setting_earjack_changed_cb(keynode_t * node, void *user_data) +{ + mp_setting_t *sd = NULL; + int ear_jack = 0; + + mp_retm_if(node == NULL, "keymode is NULL"); + mp_retm_if(user_data == NULL, "user_date is NULL"); + sd = (mp_setting_t *) user_data; + + ear_jack = vconf_keynode_get_int(node); + if (ear_jack == VCONFKEY_SYSMAN_EARJACK_REMOVED) + sd->output = SOUND_DEVICE_OUT_SPEAKER; else - vconf_set_str(MP_VCONFKEY_MUSIC_ALBUM_ART, DEFAULT_THUMBNAIL); + sd->output = SOUND_DEVICE_OUT_WIRED_ACCESSORY; + + return; } static void @@ -97,6 +125,12 @@ mp_setting_key_cb_init(void) mp_retvm_if(g_setting == NULL, -1, "setting data is not initialized, init first!!!!!"); + if (vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, _mp_setting_earjack_changed_cb, g_setting) < 0) + { + ERROR_TRACE("Fail to register VCONFKEY_SYSMAN_EARJACK key callback"); + ret = -1; + } + if (vconf_notify_key_changed(VCONFKEY_MUSIC_MENU_CHANGE, _mp_setting_menu_changed_cb, g_setting) < 0) { ERROR_TRACE("Fail to register VCONFKEY_MUSIC_MENU_CHANGE key callback"); @@ -110,6 +144,7 @@ static void mp_setting_key_cb_deinit(void) { + vconf_ignore_key_changed(VCONFKEY_SYSMAN_EARJACK, _mp_setting_earjack_changed_cb); vconf_ignore_key_changed(VCONFKEY_MUSIC_MENU_CHANGE, _mp_setting_menu_changed_cb); return; @@ -120,8 +155,26 @@ _mp_setting_init_idler_cb(void *data) { struct appdata *ad = (struct appdata *)data; + //output + int ear_jack = 0; + if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &ear_jack)) + { + ERROR_TRACE("Fail to get VCONFKEY_SYSMAN_EARJACK"); + } + else + { + DEBUG_TRACE("VCONFKEY_SYSMAN_EARJACK : %d", ear_jack); + if (ear_jack == VCONFKEY_SYSMAN_EARJACK_REMOVED) + { + g_setting->output = SOUND_DEVICE_OUT_SPEAKER; + } + else + g_setting->output = SOUND_DEVICE_OUT_WIRED_ACCESSORY; + } + mp_setting_key_cb_init(); ad->setting_idler = NULL; + return EINA_FALSE; } @@ -138,13 +191,19 @@ mp_setting_init(struct appdata *ad) } memset(g_setting, 0x00, sizeof(mp_setting_t)); + //menu + MP_TA_ACUM_ITEM_BEGIN(" vconf_get_bool()", 0); if (vconf_get_int(VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT, &(g_setting->menu_state))) { ERROR_TRACE("Fail to get %s", VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT); ret = -1; } + MP_TA_ACUM_ITEM_END(" vconf_get_bool()", 0); if(!ad->setting_idler) ad->setting_idler = ecore_idler_add(_mp_setting_init_idler_cb, ad); + + mp_setting_get_shuffle_state(&ad->play_shuffle_state); + return ret; } @@ -170,6 +229,7 @@ mp_setting_deinit(struct appdata *ad) return 0; } + int mp_setting_set_shuffle_state(int b_val) { @@ -228,7 +288,6 @@ mp_setting_get_repeat_state(int *val) return 0; } - int mp_setting_menu_get_state(mp_setting_menu_t * menu_state) { @@ -242,6 +301,7 @@ mp_setting_menu_get_state(mp_setting_menu_t * menu_state) menu_state->genres = g_setting->menu_state & SETTING_MUSIC_MENU_GENRE ? true : false; menu_state->composers = g_setting->menu_state & SETTING_MUSIC_MENU_COMPOSER ? true : false; menu_state->years = g_setting->menu_state & SETTING_MUSIC_MENU_YEAR ? true : false; + menu_state->folders = g_setting->menu_state & SETTING_MUSIC_MENU_FOLDER ? true : false; return 0; } @@ -257,6 +317,17 @@ mp_setting_menu_set_callback(MpSettingMenu_Cb func, void *data) return 0; } +int +mp_setting_auto_off_set_callback(MpSettingAutoOff_Cb func, void *data) +{ + mp_retvm_if(g_setting == NULL, -1, "setting data is not initialized, init first!!!!!"); + + g_setting->auto_off_cb = func; + g_setting->auto_off_udata = data; + + return 0; +} + void mp_setting_save_now_playing(void *data) { @@ -271,7 +342,7 @@ mp_setting_save_now_playing(void *data) item = mp_play_list_get_current_item(ad->playing_list); MP_CHECK(item); - fp = fopen(MP_NOWPLAYING_INI_FILE_NAME, "w"); + fp = fopen(MP_NOWPLAYING_INI_FILE_NAME, "w"); // make new file. if (fp == NULL) { @@ -291,6 +362,49 @@ mp_setting_save_now_playing(void *data) endfunc; } +#define MP_SHORTCUT_COUNT 4 + +void +mp_setting_save_shortcut(char *shortcut_title, char *artist, char *shortcut_description, char *shortcut_image_path) +{ + startfunc; + FILE *fp = NULL; + + if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_2)) + { + rename(MP_SHORTCUT_INI_FILE_NAME_2, MP_SHORTCUT_INI_FILE_NAME_3); + } + if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_1)) + { + rename(MP_SHORTCUT_INI_FILE_NAME_1, MP_SHORTCUT_INI_FILE_NAME_2); + } + if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_0)) + { + rename(MP_SHORTCUT_INI_FILE_NAME_0, MP_SHORTCUT_INI_FILE_NAME_1); + } + + fp = fopen(MP_SHORTCUT_INI_FILE_NAME_0, "w"); // make new file. + + if (fp == NULL) + { + ERROR_TRACE("Failed to open ini files. : %s", MP_SHORTCUT_INI_FILE_NAME_0); + return; + } + + fprintf(fp, "[ShortCut]\n"); + fprintf(fp, "title=%s\n", shortcut_title); + if (artist) + fprintf(fp, "artist=%s\n", artist); + fprintf(fp, "desc=%s\n", shortcut_description); + fprintf(fp, "artwork=%s\n", shortcut_image_path); + fprintf(fp, "\n"); + + fclose(fp); + + endfunc; +} + +#ifndef MP_SOUND_PLAYER void mp_setting_save_last_played(mp_layout_data_t * layout_data) { @@ -303,13 +417,19 @@ mp_setting_save_last_played(mp_layout_data_t * layout_data) MP_CHECK(ad); MP_CHECK(ad->playing_list); - if (ad->loadtype != LOAD_PLAY) + + if (ad->loadtype == LOAD_VOICE_UI) { - fp = fopen(MP_RECENT_PLAYED_INI_FILE_NAME, "w"); + + + } + else + { + fp = fopen(MP_RECENT_PLAYED_INI_FILE_NAME, "w"); // make new file. if (fp == NULL) { - ERROR_TRACE("Failed to open ini files. : %s", MP_RECENT_PLAYED_INI_FILE_NAME); + ERROR_TRACE("Failed to open ini files. : %s", MP_SHORTCUT_INI_FILE_NAME_0); return; } @@ -337,3 +457,6 @@ mp_setting_save_last_played(mp_layout_data_t * layout_data) } } +#endif + + diff --git a/src/core/mp-streaming-mgr.c b/src/core/mp-streaming-mgr.c index 44e1da6..5e24520 100755 --- a/src/core/mp-streaming-mgr.c +++ b/src/core/mp-streaming-mgr.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #include "music.h" #include "mp-streaming-mgr.h" #include "mp-http-mgr.h" @@ -78,93 +76,6 @@ mp_streaming_mgr_buffering_popup_control(struct appdata *ad, bool is_show) } } -int -mp_streaming_mgr_message_callback(int msg_type, void *msg_param, void *user_param) -{ - startfunc; - struct appdata *ad = user_param; - MMMessageParamType *param = (MMMessageParamType *) msg_param; - - int ret = TRUE; - - switch (msg_type) - { - case MM_MESSAGE_ERROR: - DEBUG_TRACE("receive MM_MESSAGE_ERROR(Streaming) \n"); - DEBUG_TRACE("Error Code=%x\n", param->code); - switch (param->code) - { - case MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL: - mp_debug("MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL"); - mp_streaming_mgr_buffering_popup_control(ad, FALSE); - mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_CONNECTION_FAILED")); - break; - - case MM_ERROR_PLAYER_STREAMING_SERVER_DISCONNECTED: - mp_debug("MM_ERROR_PLAYER_STREAMING_SERVER_DISCONNECTED"); - mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_CONNECTION_FAILED")); - break; - - default: - mp_debug("Unhandled error!!"); - ret = FALSE; - } - break; - - case MM_MESSAGE_CONNECTING: - mp_debug("MM_MESSAGE_CONNECTING"); - break; - - case MM_MESSAGE_CONNECTED: - mp_debug("MM_MESSAGE_CONNECTED"); - break; - - case MM_MESSAGE_CONNECTION_TIMEOUT: - mp_debug("MM_MESSAGE_CONNECTION_TIMEOUT"); - break; - - case MM_MESSAGE_BUFFERING: - { - mp_debug("MM_MESSAGE_BUFFERING"); - mp_debug("Buffering : %d%% \n", param->connection.buffering); - - bool is_show_buffering = true; - if (param->connection.buffering > 95 || ad->player_state == PLAY_STATE_PLAYING) - is_show_buffering = false; - - mp_streaming_mgr_buffering_popup_control(ad, is_show_buffering); - } - break; - - case MM_MESSAGE_RTP_SENDER_REPORT: - mp_debug("MM_MESSAGE_RTP_SENDER_REPORT"); - break; - - case MM_MESSAGE_RTP_RECEIVER_REPORT: /**< RTP receiver report */ - mp_debug("MM_MESSAGE_RTP_RECEIVER_REPORT"); - break; - - case MM_MESSAGE_RTP_SESSION_STATUS: /**< RTP session status */ - mp_debug("MM_MESSAGE_RTP_SESSION_STATUS"); - break; - - case MM_MESSAGE_SENDER_STATE: /**< Sender state */ - mp_debug("MM_MESSAGE_SENDER_STATE"); - break; - - case MM_MESSAGE_RECEIVER_STATE: /**< Receiver state */ - mp_debug("MM_MESSAGE_RECEIVER_STATE"); - break; - - default: - mp_debug("@@@@@@@@ streaming msg cb [%d]", msg_type); - ret = FALSE; - break; - } - - return ret; -} - bool mp_streaming_mgr_check_streaming(struct appdata *ad, const char *path) { MP_CHECK_FALSE(path); @@ -177,43 +88,9 @@ bool mp_streaming_mgr_check_streaming(struct appdata *ad, const char *path) return FALSE; } -bool mp_streaming_mgr_set_attribute(struct appdata *ad, MMHandleType player) +bool mp_streaming_mgr_set_attribute(struct appdata *ad, player_h player) { startfunc; - MP_CHECK_FALSE(ad); - MP_CHECK_FALSE(player); - - int ret = 0; - char *g_err_name = NULL; - - const char *proxy_addr = NULL; - proxy_addr = mp_http_mgr_get_proxy(ad); - if (proxy_addr && strlen(proxy_addr) > 0) { - ret = mm_player_set_attribute(player, &g_err_name, - "streaming_proxy", proxy_addr, strlen(proxy_addr), NULL); - if (ret != MM_ERROR_NONE) { - ERROR_TRACE(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name); - SAFE_FREE(g_err_name); - return FALSE; - } - } - - char *user_agent = mp_http_mgr_get_user_agent(); - if (user_agent) { - if (strlen(user_agent) > 0) { - mp_debug("UA = [%s]", user_agent); - ret = mm_player_set_attribute(player, &g_err_name, - "streaming_user_agent", user_agent, strlen(user_agent), - NULL); - if (ret != MM_ERROR_NONE) { - ERROR_TRACE(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name); - SAFE_FREE(g_err_name); - SAFE_FREE(user_agent); - return FALSE; - } - } - SAFE_FREE(user_agent); - } return TRUE; } diff --git a/src/include/mp-define.h b/src/include/mp-define.h index 9a61c05..269205e 100755 --- a/src/include/mp-define.h +++ b/src/include/mp-define.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,7 +15,6 @@ */ - #ifndef __MP_DEFINE_H_ #define __MP_DEFINE_H_ @@ -26,16 +25,12 @@ #include #include #include -#include +#include "mp-media-info.h" #include #include -#include -#include #include #include #include -#include -#include #include #include #include @@ -43,6 +38,8 @@ #include #include "mp-player-debug.h" +#include "mp-ta.h" +#include "mp-vconf-private-keys.h" #ifndef bool #define bool Eina_Bool @@ -51,16 +48,27 @@ #define GET_SYS_STR(str) dgettext("sys_string", str) #define GET_STR(str) _(str) +#ifdef __ARM__ +#else +#define __I386__ //define for support i386 +#endif #ifndef PREFIX # define PREFIX "/opt/apps/org.tizen.music-player" #endif +/* define macro to remove content related to AMG icon */ +#ifndef PACKAGE #define PACKAGE "music-player" +#endif + +#define LOCALE_PACKAGE "music-player" #define INSTALL_DIR PREFIX #ifndef LOCALEDIR #define LOCALEDIR INSTALL_DIR"/res/locale" #endif +#define DATA_DIR INSTALL_DIR"/data" + #ifndef MP_INI_DIR #define MP_INI_DIR INSTALL_DIR"/data" #endif @@ -69,13 +77,17 @@ #define EDJDIR PREFIX"res/edj" #endif +#define PKGNAME_FOR_SHORTCUT "org.tizen.music-player" + #define EDJ_PATH EDJDIR #define EDJ_NAME EDJ_PATH"/mp-library.edj" +#define MINICON_EDJ_NAME EDJ_PATH"/mp-minicontroller.edj" #define GRP_MAIN "main" #define THEME_NAME EDJ_PATH"/mp-custom-winset-style.edj" #define TITLE_H 90 +#define START_Y_POSITION 94 #define MP_PHONE_ROOT_PATH "/opt/media" #define MP_MMC_ROOT_PATH "/opt/storage/sdcard" @@ -105,6 +117,7 @@ #define MAX_URL_LEN MAX_NAM_LEN #define DEFAULT_THUMBNAIL ICON_DIRECTORY"/music_player/34_thumb_07.png" +#define DEFAULT_THUMBNAIL_FOLDER ICON_DIRECTORY"/music_player/default_folder.png" #define THUMBNAIL_MOST_PLAYED ICON_DIRECTORY"/music_player/34_mostplayed.png" #define THUMBNAIL_RECENTLY_PLAYED ICON_DIRECTORY"/music_player/34_recentlyplayed.png" @@ -113,29 +126,40 @@ #define THUMBNAIL_PLAYLIST ICON_DIRECTORY"/music_player/34_playlist.png" #define THUMBNAIL_PLAYLIST_NOITEM ICON_DIRECTORY"/music_player/34_player_list_thum_noitems.png" -#define MP_CTRBAR_ICON_SONGS ICON_DIRECTORY"/music_player/01_controlbar_icon_songs.png" -#define MP_CTRBAR_ICON_PLAYLIST ICON_DIRECTORY"/music_player/01_controlbar_icon_playlists.png" -#define MP_CTRBAR_ICON_ALBUM ICON_DIRECTORY"/music_player/01_controlbar_icon_music_albums.png" -#define MP_CTRBAR_ICON_ARTIST ICON_DIRECTORY"/music_player/01_controlbar_icon_artist.png" -#define MP_CTRBAR_ICON_GENRE ICON_DIRECTORY"/music_player/01_controlbar_icon_genre.png" -#define MP_CTRBAR_ICON_YEAR ICON_DIRECTORY"/music_player/01_controlbar_icon_year.png" -#define MP_CTRBAR_ICON_COMPOSER ICON_DIRECTORY"/music_player/01_controlbar_icon_composer.png" -#define MP_CTRBAR_ICON_FOLDER ICON_DIRECTORY"/music_player/01_controlbar_icon_albums.png" +#define MP_CTRBAR_ICON_SONGS ICON_DIRECTORY"/music_player/T02_controlbar_icon_all.png" +#define MP_CTRBAR_ICON_PLAYLIST ICON_DIRECTORY"/music_player/T02_controlbar_icon_playlists.png" +#define MP_CTRBAR_ICON_ALBUM ICON_DIRECTORY"/music_player/T02_controlbar_icon_music_albums.png" +#define MP_CTRBAR_ICON_ARTIST ICON_DIRECTORY"/music_player/T02_controlbar_icon_artist.png" +#define MP_CTRBAR_ICON_GENRE ICON_DIRECTORY"/music_player/T02_controlbar_icon_genres.png" +#define MP_CTRBAR_ICON_YEAR ICON_DIRECTORY"/music_player/T02_controlbar_icon_years.png" +#define MP_CTRBAR_ICON_COMPOSER ICON_DIRECTORY"/music_player/T02_controlbar_icon_composer.png" +#define MP_CTRBAR_ICON_FOLDER ICON_DIRECTORY"/music_player/T02_controlbar_icon_folders.png" +#define MP_CTRBAR_ICON_SQUARE ICON_DIRECTORY"/music_player/T02_controlbar_icon_music_square.png" #define MP_ICON_NAVI_EDIT ICON_DIRECTORY"/music_player/T02_controlbar_icon_edit.png" #define MP_ICON_NAVI_SEARCH ICON_DIRECTORY"/music_player/T02_controlbar_icon_search.png" #define MP_ICON_NAVI_CANCEL ICON_DIRECTORY"/music_player/T02_controlbar_icon_cancel.png" #define MP_ICON_NAVI_DONE NULL +#define MP_ICON_NAVI_SHARE ICON_DIRECTORY"/music_player/T02_controlbar_icon_share.png" #define MP_ICON_NAVI_INFO NULL #define MP_ICON_NAVI_DELETE ICON_DIRECTORY"/music_player/T02_controlbar_icon_delete.png" #define MP_ICON_NAVI_ADD_TO_PLST ICON_DIRECTORY"/music_player/T02_controlbar_icon_add_to_playlist.png" #define MP_ICON_NAVI_NEW ICON_DIRECTORY"/music_player/T02_controlbar_icon_add.png" +#define MP_ICON_NAVI_SYNC_START ICON_DIRECTORY"/music_player/02_controlbar_icon_synchronise_start_sync.png" #define MP_ICON_SOUND_PATH ICON_DIRECTORY"/music_player/T02_icon_soundPath.png" +#define MP_ICON_ALL_SHARE ICON_DIRECTORY"/music_player/T02_controlbar_icon_nearby_device.png" +#define MP_ICON_NEARBY_DMR ICON_DIRECTORY"/music_player/T02_title_icon_nearby_device.png" #define MP_ICON_BG ICON_DIRECTORY"/music_player/12_music_list_bg.png" +#define MP_ICON_MINI_PLAYER ICON_DIRECTORY"/music_player/mini_app/T02_control_icon_apps.png" + +#define MP_ICON_STORAGE_PHONE ICON_DIRECTORY"/music_player/storage_type/T02_phone_02.png" +#define MP_ICON_STORAGE_MMC ICON_DIRECTORY"/music_player/storage_type/T02_memory_card_02.png" +#define MP_ICON_STORAGE_EXTERNAL ICON_DIRECTORY"/music_player/storage_type/T02_external_storage_02.png" + #define PLAY_VIEW_EDJ_NAME EDJ_PATH"/music.edj" #define SIGNAL_PAUSE "pause_clicked" @@ -146,6 +170,8 @@ #define SIGNAL_ALBUMART_DOWN "album_art_down" #define SIGNAL_ALBUMART_MOVE "album_art_move" #define SIGNAL_INFO "play_info_clicked" +#define SIGNAL_SRS "srs_clicked" +#define SIGNAL_SRS_DIM "srs_dim_clicked" #define SIGNAL_SHUFFLE "shuffle_clicked" #define SIGNAL_SHUFNON "shuffle_non_clicked" #define SIGNAL_REPALL "rep_all_clicked" @@ -156,14 +182,38 @@ #define SIGNAL_FAVORITE_CLICKED "favorite_clicked" #define SIGNAL_NOW_PLAYING_CLICKED "now_playing_clicked" +//2 support add to home playlist +#define MP_FUNC_ADD_TO_HOME_SEPARATION "/" +#define MP_FUNC_ADD_TO_HOME_DESC_PREFIX "_Shortcut:Description://" +#define MP_FUNC_ADD_TO_HOME_THUMBNAIL_PREFIX "_Shortcut:ThumbnailPath://" +#define MP_FUNC_ADD_TO_HOME_PREFIX "_Shortcut:MusicPlayer://" +#define MP_SHORTCUT_PLAYLIST "playlist/" +#define MP_SHORTCUT_GROUP "group/" +#define MP_SHORTCUT_SONG "song/" +#define MP_FUNC_ADD_TO_HOME_PLAYLIST MP_FUNC_ADD_TO_HOME_PREFIX"playlist/" +#define MP_FUNC_ADD_TO_HOME_GROUP MP_FUNC_ADD_TO_HOME_PREFIX"group/" +#define MP_FUNC_ADD_TO_HOME_SONG MP_FUNC_ADD_TO_HOME_PREFIX"song/" + +//2 EVAS_OBJECT_TYPE define #define MP_FAST_SCROLLER_TYPE "mp_data_fast_scroller_type" +//2 FEATURE define +#define MP_FEATURE_WIFI_SHARE +#define MP_FUNC_ALLSHARE_PLAYLIST "music-player:allshare_" + + #define MP_POPUP_YES 1 -#define MP_POPUP_NO 0 -#define MP_POPUP_DEL -1 +#define MP_POPUP_NO 0 +#define MP_POPUP_TIMEOUT (2.0) +#define MP_STR_UNKNOWN "Unknown" #define MP_YEAR_S "%03u0s" +typedef int SLP_Bool; +typedef void (*MpHttpOpenRspCb) (gpointer user_data); +typedef void (*MpGetShazamSigCb) (char *signature, int size, void *data); + +#define TIME_FORMAT_LEN 15 #define PLAY_TIME_ARGS(t) \ (((int)t) / 60) % 60, \ ((int)t) % 60 @@ -175,9 +225,14 @@ ((int)t) % 60 #define MUSIC_TIME_FORMAT "02u:%02u:%02u" +#undef FREE +#define FREE(ptr) free(ptr); ptr = NULL; + #undef IF_FREE #define IF_FREE(ptr) if (ptr) {free(ptr); ptr = NULL;} +#undef IF_G_FREE +#define IF_G_FREE(p) ({g_free(p);p=NULL;}) #define mp_evas_object_del(object) do { \ if(object) { \ @@ -186,6 +241,14 @@ } \ } while (0) +#define mp_elm_genlist_del(list) do { \ + if(list) { \ + elm_genlist_clear(list);\ + evas_object_del(list); \ + list = NULL; \ + } \ +} while (0) + #define mp_ecore_timer_del(timer) do { \ if(timer) { \ ecore_timer_del(timer);\ @@ -206,6 +269,22 @@ strncpy (dest , src, sizeof(dest)-1);\ dest[sizeof(dest)-1] = 0; }while(0) +#define mp_evas_object_response_set(obj, response) do { \ + if (obj) { \ + evas_object_data_set((obj), "response", (void *)(response)); \ + } \ +} while (0) + +#define mp_evas_object_response_get(obj) (int)evas_object_data_get((obj), "response") + + +typedef enum +{ + MP_SCREEN_MODE_PORTRAIT = 0, + MP_SCREEN_MODE_LANDSCAPE, +} mp_screen_mode; + + typedef enum { MP_SND_PATH_BT, @@ -223,13 +302,18 @@ typedef enum next = elm_genlist_item_next_get(current), \ data = elm_object_item_data_get(current)) -#define MP_PLAYLIST_MAX_ITEM_COUNT 1000 -#define MP_NOW_PLAYING_ICON_SIZE 48 * elm_scale_get() -#define MP_LIST_ICON_SIZE 70 * elm_scale_get() -#define MP_ALBUM_LIST_ICON_SIZE 48 * elm_scale_get() -#define MP_PLAY_VIEW_ARTWORK_SIZE 480 * elm_scale_get() +//#define MP_PLAYLIST_MAX_ITEM_COUNT 1000 +#define MP_NOW_PLAYING_ICON_SIZE 48 * elm_config_scale_get() +#define MP_LIST_ICON_SIZE 70 * elm_config_scale_get() +#define MP_ALBUM_LIST_ICON_SIZE 48 * elm_config_scale_get() +#define MP_PLAY_VIEW_ARTWORK_SIZE 480 * elm_config_scale_get() #define MP_NOWPLAYING_INI_FILE_NAME MP_INI_DIR"/now_playing.ini" +#define MP_SHORTCUT_INI_FILE_NAME_0 MP_INI_DIR"/shortcut_0.ini" +#define MP_SHORTCUT_INI_FILE_NAME_1 MP_INI_DIR"/shortcut_1.ini" +#define MP_SHORTCUT_INI_FILE_NAME_2 MP_INI_DIR"/shortcut_2.ini" +#define MP_SHORTCUT_INI_FILE_NAME_3 MP_INI_DIR"/shortcut_3.ini" + #define MP_RECENT_PLAYED_INI_FILE_NAME MP_INI_DIR"/recent_played.ini" #define SINGLE_BYTE_MAX 0x7F @@ -241,32 +325,10 @@ typedef enum MP_UG_MESSAGE_LOAD, }mp_ug_message_t; -#define MP_LIVE_VCONF_PREFIX "memory/music/" - -#define MP_EXT_PLAY_STATE VCONFKEY_MUSIC_STATE -#define MP_EXT_CUR_POS MP_LIVE_VCONF_PREFIX"pos" //str -#define MP_EXT_CUR_PROGRESS_POS MP_LIVE_VCONF_PREFIX"progress_pos" //double - -#define MP_EXT_PLAY_CLICKED MP_LIVE_VCONF_PREFIX"play_clicked" //bool -#define MP_EXT_PAUSE_CLICKED MP_LIVE_VCONF_PREFIX"pause_clicked" //bool -#define MP_EXT_PREV_PRESSED MP_LIVE_VCONF_PREFIX"prev_pressed" //bool -#define MP_EXT_PREV_RELEASED MP_LIVE_VCONF_PREFIX"prev_released" //bool -#define MP_EXT_NEXT_PRESSED MP_LIVE_VCONF_PREFIX"next_pressed" //bool -#define MP_EXT_NEXT_RELEASED MP_LIVE_VCONF_PREFIX"next_released" //bool - #define MP_POPUP_GENLIST_ITEM_H 112 #define MP_POPUP_GENLIST_ITEM_H_MAX 408 #define MP_POPUP_GENLIST_ITEM_W 610 -#define MP_B_PATH "path" -#define MP_MM_KEY "multimedia_key" -#define MP_PLAY_RECENT "play_recent" -#define MP_PLAY_PLAYLIST "play_playlist" -#define MP_PLAY_ARTIST "play_artist" -#define MP_PLAY_ALBUM "play_album" -#define MP_PLAY_GENRE "play_genre" -#define MP_PLAY_SOMETHING "play_music" - #define ELM_NAVIFRAME_ITEM_CONTENT "default" #define ELM_NAVIFRAME_ITEM_ICON "icon" #define ELM_NAVIFRAME_ITEM_OPTIONHEADER "optionheader" @@ -279,4 +341,7 @@ typedef enum #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE "elm,state,optionheader,close", "" #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN "elm,state,optionheader,open", "" +#define MP_PLAYLIST_NAME_SIZE 101 +#define MP_METADATA_LEN_MAX 193 + #endif /* __MP_DEFINE_H_ */ diff --git a/src/include/mp-player-debug.h b/src/include/mp-player-debug.h index 4146c4e..0c96e6b 100755 --- a/src/include/mp-player-debug.h +++ b/src/include/mp-player-debug.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,7 +14,6 @@ * limitations under the License. */ - #ifndef __MP_PLAYER_DEBUG_H_ #define __MP_PLAYER_DEBUG_H_ @@ -24,7 +23,8 @@ #include "assert.h" #include -#define ENABLE_CHECK_START_END_FUNCTION +#define ENABLE_CHECK_START_END_FUNCTION // support enter leave debug message + #define ENABLE_LOG_SYSTEM #ifdef ENABLE_LOG_SYSTEM @@ -40,17 +40,26 @@ #undef LOG_TAG #endif //LOG_TAG +#ifdef MP_SOUND_PLAYER +#define LOG_TAG "SOUND_PLAYER" +#else #define LOG_TAG "MUSIC" +#endif +#define LOG_COLOR_RESET "\033[0m" +#define LOG_COLOR_RED "\033[31m" +#define LOG_COLOR_YELLOW "\033[33m" +#define LOG_COLOR_GREEN "\033[32m" +#define LOG_COLOR_BLUE "\033[36m" -#define mp_debug(fmt, arg...) LOGD("[TID:%d][ %s : %d] "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg) -#define mp_error(fmt, arg...) LOGE("[TID:%d]########### ERROR CHECK ############# [ %s : %d] "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg) +#define mp_debug(fmt, arg...) LOGD(LOG_COLOR_GREEN"[TID:%d][ %s : %d] "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg) +#define mp_error(fmt, arg...) LOGE(LOG_COLOR_RED"[TID:%d]# ERROR CHECK # [ %s : %d] "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg) -#define DEBUG_TRACE(fmt, arg...) LOGD("[TID:%d][ %s : %d] "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg) -#define INFO_TRACE(fmt, arg...) LOGI("[TID:%d][ %s : %d] "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg) -#define WARN_TRACE(fmt, arg...) LOGW("[TID:%d][ %s : %d] "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg) -#define ERROR_TRACE(fmt, arg...) LOGE("[TID:%d][ %s : %d] "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg) -#define mp_debug_temp(fmt, arg...) LOGD("[TID:%d][Temp debug %s : %d] "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg) +#define DEBUG_TRACE(fmt, arg...) LOGD(LOG_COLOR_GREEN"[TID:%d][ %s : %d] "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg) +#define INFO_TRACE(fmt, arg...) LOGI(LOG_COLOR_GREEN"[TID:%d][ %s : %d] "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg) +#define WARN_TRACE(fmt, arg...) LOGW(LOG_COLOR_YELLOW"[TID:%d][ %s : %d] "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg) +#define ERROR_TRACE(fmt, arg...) LOGE(LOG_COLOR_RED"[TID:%d][ %s : %d] "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg) +#define mp_debug_temp(fmt, arg...) LOGD(LOG_COLOR_GREEN"[TID:%d][Temp debug %s : %d] "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg) #else // use USE_DLOG_SYSTEM @@ -85,7 +94,7 @@ #ifdef ENABLE_CHECK_START_END_FUNCTION #define startfunc DEBUG_TRACE("+- START -------------------------"); #define endfunc DEBUG_TRACE("+- END --------------------------"); -#define exceptionfunc ERROR_TRACE("################################# CRITICAL ERROR #####################################"); +#define exceptionfunc ERROR_TRACE("### CRITICAL ERROR ###"); #else #define startfunc #define endfunc @@ -121,12 +130,12 @@ #define MP_CHECK_EXCEP(expr) do { \ if(!(expr)) { \ - ERROR_TRACE("CRITICAL ERROR ########################################## CHECK BELOW ITEM");\ + ERROR_TRACE("CRITICAL ERROR ## CHECK BELOW ITEM");\ goto mp_exception;\ } \ } while (0) -#define MP_CHECK_VAL(expr, val) mp_retvm_if(!(expr),val,"INVALID PARM RETURN NULL") +#define MP_CHECK_VAL(expr, val) mp_retvm_if(!(expr),val,"INVALID PARM RETURN VAL: 0x%x", val) #define MP_CHECK_NULL(expr) mp_retvm_if(!(expr),NULL,"INVALID PARM RETURN NULL") #define MP_CHECK_FALSE(expr) mp_retvm_if(!(expr),FALSE,"INVALID PARM RETURN FALSE") #define MP_CHECK_CANCEL(expr) mp_retvm_if(!(expr), ECORE_CALLBACK_CANCEL, "INVALID PARAM RETURN") @@ -134,7 +143,7 @@ #define mp_assert(expr) do { \ if(!(expr)) { \ - ERROR_TRACE("CRITICAL ERROR ########################################## CHECK BELOW ITEM");\ + ERROR_TRACE("CRITICAL ERROR ## CHECK BELOW ITEM");\ assert(FALSE); \ } \ } while (0) diff --git a/src/include/mp-setting-keys.h b/src/include/mp-setting-keys.h deleted file mode 100755 index 33fb6ae..0000000 --- a/src/include/mp-setting-keys.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - -#ifndef __mp_setting_keys_H__ -#define __mp_setting_keys_H__ - -#ifndef VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT -enum -{ - SETTING_MUSIC_MENU_ALBUM = 0x0001, - SETTING_MUSIC_MENU_ARTIST = 0x0002, - SETTING_MUSIC_MENU_GENRE = 0x0004, - SETTING_MUSIC_MENU_COMPOSER = 0x0008, - SETTING_MUSIC_MENU_YEAR = 0x0010, -}; -#define VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT "db/setting/music-player/menu" -#endif - -#define VCONFKEY_MUSIC_MENU_CHANGE "db/setting/music-player/menu_change" - -#endif //__mp_setting_keys_H__ diff --git a/src/include/music.h b/src/include/music.h index 997c351..064344e 100755 --- a/src/include/music.h +++ b/src/include/music.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -25,18 +25,14 @@ #include #include #include -#include -#include -#include #include #include -#include +#include #include #include #include +#include -#include -#include #include #include "mp-player-debug.h" @@ -44,6 +40,15 @@ #include "mp-define.h" #include "mp-play-list.h" #include "mp-http-mgr.h" +#include "mp-ta.h" +#include "mp-language-mgr.h" +#include "mp-media-info.h" + +#ifdef MP_SOUND_PLAYER +#include "sp-view-manager.h" +#endif + +E_DBus_Connection *EDBusHandle; typedef struct { @@ -56,9 +61,7 @@ typedef struct Elm_Object_Item *ctltab_genres; Elm_Object_Item *ctltab_year; Elm_Object_Item *ctltab_composer; - - /* navi bar */ - Evas_Object *cur_view; //navibar of current view + Elm_Object_Item *ctltab_folder; //relative to music setting int albums; @@ -66,6 +69,9 @@ typedef struct int genres; int composers; int years; + int folders; + + bool first_append; } mp_library; @@ -85,6 +91,8 @@ typedef enum MP_VIEW_TYPE_ARTIST, MP_VIEW_TYPE_YEAR, MP_VIEW_TYPE_COMPOSER, + MP_VIEW_TYPE_FOLDER, + MP_VIEW_TYPE_ALLSHARE, MP_VIEW_TYPE_PLAYVIEW, MP_VIEW_TYPE_MAX, } mp_view_type_t; @@ -108,6 +116,32 @@ typedef struct struct appdata *ad; //appdata } view_data_t; + +typedef struct +{ + Evas_Object *layout; + void *EvasPlugin; + Evas_Object *box; + + Ecore_Timer *mouse_up_timer; + Ecore_Timer *left_title_timer; + Ecore_Timer *now_playing_timer; + + Evas_Object *track_list; + + mp_media_list_h svc_handle; + int track_count; + + Evas_Object *left_title; + Evas_Object *now_playing; + Evas_Object *back_button; + + int now_playing_album_seq; + + struct appdata *ad; +} mp_coverflow_view; + + typedef struct { //EDJ Layout @@ -119,24 +153,39 @@ typedef struct Evas_Object *play_info; Evas_Object *play_progressbar; Evas_Object *play_ctrl; //progress bar and index, track name + Evas_Object *land_naviframe; + Elm_Object_Item* play_head; Evas_Object *play_title; - Evas_Object *albumart_bg; + Evas_Object *albumart_img; + + Evas_Object *albumart_image; + Evas_Object *albumart_bg; + Evas_Object *albumart_image_reflection; // for showing the reflection of albumart_image + Evas_Object *pre_albumart_image_reflection; int flick_direction; //1 for right, 2 for left, other for invalid + bool hide_image_flag; //flag for hide pre_albumart_image_reflection int albumart_width; int albumart_height; Evas_Object *play_view_next; char music_play_time_text[16]; + int x; + int y; + int favour_longpress; + Ecore_Timer *favourite_timer; Ecore_Timer *progressbar_timer; + Ecore_Timer *show_ctrl_timer; - bool transition_state; + bool transition_state; //if user start transiton start, set that value if finish transiton reset it + struct music_list_item *playing_list_item; + mp_screen_mode play_view_screen_mode; Evas_Object *play_icon; - bool paused_by_progressbar; + bool b_play_all; /* for update playlist view when back from playview which created by playall */ struct appdata *ad; } mp_playing_view; @@ -150,21 +199,18 @@ enum MP_CREATE_PLAYLIST_MODE_SWEEP }; -typedef struct -{ - AudioHandleType *plst; - Elm_Object_Item *item; - void *data; -} mp_playlist_item_t; - typedef enum { - MP_LAUNCH_DEFAULT = 0, - MP_LAUNCH_PATH, - MP_LAUNCH_PLAY_RECENT, - MP_LAUNCH_PLAY_GROUP, + MP_LAUNCH_DEFAULT = 0, //normal case + MP_LAUNCH_UG, //ug case + MP_LAUNCH_ADD_TO_HOME, //add to home + + /*voice ui */ + MP_LAUNCH_PLAY_RECENT, //play recent + MP_LAUNCH_PLAY_GROUP, // play album, genre, MP_LAUNCH_PLAY_PLAYLIST, - MP_LAUNCH_PLAY_SOMETHING, + MP_LAUNCH_PLAY_SOMETHING, //play track by title + /*voice ui */ } mp_launch_type; @@ -172,19 +218,23 @@ typedef enum { LOAD_DEFAULT, LOAD_TRACK, //load by path - LOAD_GROUP, - LOAD_PLAYLIST, - LOAD_PLAY, + LOAD_GROUP, //load by shortcut + LOAD_PLAYLIST, //load by shortcut + + /*voice ui */ + LOAD_VOICE_UI, + /*voice ui */ LOAD_MM_KEY, } mp_load_type; typedef enum { - MP_POPUP_NORAML = 0, + MP_POPUP_NORMAL = 0, MP_POPUP_GENLIST, MP_POPUP_CTX, MP_POPUP_PROGRESS, + MP_POPUP_NOTIFY, // NOT destroyed by mp_popup_destroy() MP_POPUP_MAX, } mp_popup_type; @@ -212,16 +262,19 @@ struct appdata Evas_Object *win_main; Evas_Object *bg; Evas_Object *popup[MP_POPUP_MAX]; + int win_angle; Ecore_X_Window xwin; /* Layout for each view */ Evas_Object *base_layout_main; //layout for transparent indicator area + Evas_Object *naviframe; Evas_Object *controlbar_layout; //layout for show hide controlbar. bool show_optional_menu; double music_pos; double music_length; + //int isDragging; Ecore_Timer *progressbar_timer; mp_playing_view *playing_view; @@ -229,31 +282,40 @@ struct appdata // for Plalying Control mp_player_rep_state play_rep_state; //repeat_all, repeat_non, repeat_1 - bool play_shuffle_state; //shuffle on/off + int play_shuffle_state; //shuffle on/off bool can_play_drm_contents; bool show_now_playing; mp_player_state player_state; + Evas_Object *bgimage; + mp_drm drm_info; + mp_constraints_info_s drm_constraints_info; char * latest_playing_key_id; mp_play_list *playing_list; - mp_launch_type launch_type; - mp_load_type loadtype; - audio_svc_track_type_e track_type; - audio_svc_group_type_e group_type; + mp_launch_type launch_type; // Support Play from outside + mp_load_type loadtype; // Support Add to home + mp_track_type_e track_type; // Support voice ui + mp_group_type_e group_type; // Support voice ui char *request_group_name; char *request_playing_path; - audio_svc_group_type_e request_group_type; + mp_group_type_e request_group_type; int request_play_id; - //update default view layout if this flag set. set true when album/artist/genre short cut pressed. + // update default view layout if this flag set. set true when album/artist/genre short cut pressed. + bool update_default_view; Ecore_IMF_Context *imf_context; +#ifdef MP_SOUND_PLAYER + Sp_View_Manager *view_mgr; +#else mp_library *library; - - Evas_Object *ctrl_bar; + GList *view_history; +#endif + Evas_Object *tabbar; + Evas_Object *genlist_edit; Evas_Object *editfiled_new_playlist; Evas_Object *editfiled_entry; @@ -263,6 +325,13 @@ struct appdata int new_playlist_id; + struct { + bool downed; + bool moving; + Evas_Coord sx; + Evas_Coord sy; + } mouse; + Evas_Object *radio_group; Evas_Object *notify; Evas_Object *notify_layout; @@ -279,42 +348,74 @@ struct appdata int ear_key_press_cnt; Ecore_Timer *ear_key_timer; - //scale factor for scalable UI.. - double scale; //scale factor; + Evas_Object *win_minicon; + Evas_Object *minicontroller_layout; + Evas_Object *minicon_icon; + Ecore_Timer *minicon_timer; + Ecore_Timer *minicon_progress_timer; + bool b_minicontroller_show; + bool minicon_visible; + + mp_playing_view *backup_playing_view; + Evas_Object *backup_layout_play_view; //Used to swap the Playing layout from Landscape and Portrait. + double latest_moved_left_size; + + int current_appcore_rm; + mp_screen_mode screen_mode; + + int screen_height; //current screen height + int screen_width; //current screen width + + Evas_Object *edit_ctrl_bar; - GList *view_history; Ecore_Pipe *inotify_pipe; + // for add to playlist void *layout_data; - AudioHandleType *group_item_handler; + mp_media_info_h group_item_handler; char *fid; bool paused_by_user; - mp_http_mgr_t *http_mgr; //http mgr + mp_http_mgr_t *http_mgr; + + bool navi_effect_in_progress; // Use this not to excute button callbacks while transition effect - bool navi_effect_in_progress; //Use this not to excute button callbacks while transition effect - bool prohibit_aul_relaunch; //aul relaunch only available when music is in pause state - bool is_focus_out; + bool app_is_foreground; // relaunch only available when music is in pause state - mp_snd_path snd_path; //indicate sound path; + bool is_focus_out; // update minicontroller in bgm mode. + + mp_snd_path snd_path; // indicate sound path; Ecore_Event_Handler *key_down; + Ecore_Event_Handler *mouse_button_down; Ecore_Event_Handler *focus_in; Ecore_Event_Handler *focus_out; Ecore_Event_Handler *visibility_change; Ecore_Event_Handler *client_msg; + Ecore_Event_Handler *mouse_button_up; + Ecore_Event_Handler *mouse_move; + + int motion_handle; Evas_Object *buffering_popup; - bool edit_in_progress; //don't update view in inotify callback while delete operation. + ui_gadget_h ug; + ui_gadget_h setting_ug; + ui_gadget_h info_ug; //info ug handle - Do not destory info ug. + Evas_Object *info_ug_base; //if thist is not null, info ug is visible. use this to determine info view is exist or not. + Evas_Object *info_ug_layout; //do not del this object. if it is deleted, info ug layout will not be displayed properly. + bool info_click_flag; //flag for click info button in play view + bool info_back_play_view_flag; //flag for info view back play view + + bool edit_in_progress; // don't update view in inotify callback while delete operation. Ecore_Timer *volume_down_timer; Ecore_Timer *mute_popup_show_timer; //timer for showing mute popup bool volume_long_pressed; bool mute_flag; //flag for mute - double ff_rew; //for ff and rew when there is no play view + double ff_rew; // for ff and rew when there is no play view bool music_setting_change_flag; //true for change music setting data, false for not @@ -323,24 +424,51 @@ struct appdata bool is_Longpress; bool is_ff; + Ecore_Idler *mss_startup_idler; Ecore_Idler *playing_err_idler; Ecore_Idler *bt_pause_idler; Ecore_Idler *setting_idler; Ecore_Idler *app_init_idler; + Ecore_Idler *playview_show_idler; Ecore_Timer *longpress_timer; - Ecore_Timer *live_pos_timer; bool seek_off; - int haptic_handle; + bool vertical_scroll; + Ecore_Timer *vib_timer; - Ecore_Pipe *player_msg_pipe; + + char *shortcut_descrition; + char *shortcut_image_path; Ecore_Animator *minfo_ani; GList *minfo_list; Evas_Object *minfo_genlist; - MediaSvcHandle *media_svc_handle; + bool direct_win_minimize; + + int album_image_w; + int album_image_h; + + bool prohibit_activate_win; + + bool paused_by_other_player; }; + +typedef void (*mpOptCallBack) (void *, Evas_Object *, void *); + +typedef struct +{ + const char *name; + mpOptCallBack cb; +} MpOptItemType; + +typedef struct +{ + MpOptItemType *l_opt; + MpOptItemType *m_opt; + MpOptItemType *r_opt; +} MpOptGroupType; + #endif /* __DEF_music_H__ */ diff --git a/src/mp-main.c b/src/mp-main.c index 5742650..e4e369e 100755 --- a/src/mp-main.c +++ b/src/mp-main.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,9 +14,8 @@ * limitations under the License. */ - +#include "mp-ta.h" #include "music.h" -#include "mp-library.h" #include "mp-widget.h" #include "mp-util.h" #include "mp-setting-ctrl.h" @@ -24,23 +23,40 @@ #include "mp-player-control.h" #include "mp-play-view.h" #include "mp-http-mgr.h" -#include "mp-common.h" #include "mp-play-list.h" -#include "mp-view-manager.h" +#include "mp-ug-launch.h" #include "mp-popup.h" #include -#include #include #include #include "mp-player-mgr.h" #include "mp-player-debug.h" -#include #include -#include +#include +#include "mp-minicontroller.h" #include "mp-app.h" #include "mp-play.h" +#ifdef MP_SOUND_PLAYER +#include "sp-view-manager.h" +#else +#include "mp-library.h" +#include "mp-common.h" +#include "mp-view-manager.h" +#endif + +#define MP_B_PATH "path" +#define MP_MM_KEY "multimedia_key" +#define MP_PLAY_RECENT "play_recent" +#define MP_PLAY_PLAYLIST "play_playlist" +#define MP_PLAY_ARTIST "play_artist" +#define MP_PLAY_ALBUM "play_album" +#define MP_PLAY_GENRE "play_genre" +#define MP_PLAY_FOLDER "play_folder" +#define MP_PLAY_SOMETHING "play_music" +#define MP_DIRECT_WIND_MINIMIZE "direct_win_minimize" + static bool _mp_main_init(struct appdata *ad); static Eina_Bool _mp_main_win_visibility_change_cb(void *data, int type, void *event); static Eina_Bool _mp_main_win_focus_in_cb(void *data, int type, void *event); @@ -49,21 +65,9 @@ static Eina_Bool _mp_main_win_focus_out_cb(void *data, int type, void *event); static void _mp_main_exit_cb(void *data, Evas_Object * obj, void *event_info) { - evas_object_del(obj); - mp_app_exit(data); -} + mp_evas_object_del(obj); -static int -_mp_main_low_battery_cb(void *data) -{ - struct appdata *ad = (struct appdata *)data; - MP_CHECK_VAL(ad, 0); - - if (mp_check_battery_available()) - { - mp_app_exit(ad); - } - return 0; + mp_app_exit(data); } static void @@ -71,6 +75,7 @@ _mp_evas_flush_post(void *data, Evas * e, void *event_info) { struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); + evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST, _mp_evas_flush_post); } @@ -78,16 +83,13 @@ _mp_evas_flush_post(void *data, Evas * e, void *event_info) static bool _mp_main_init(struct appdata *ad) { - /* initialize library view layout */ + EDBusHandle = NULL; ad->request_play_id = -1; - ad->music_setting_change_flag = false; //initialize - MediaSvcHandle *handle = NULL; - if (media_svc_connect(&handle) != AUDIO_SVC_ERROR_NONE) - { - ERROR_TRACE("Fail when init music db"); - return FALSE; - } - ad->media_svc_handle = handle; + ad->music_setting_change_flag = false; + + MP_TA_ACUM_ITEM_BEGIN(" mp_media_info_connect", 0); + mp_media_info_connect(); + MP_TA_ACUM_ITEM_END(" mp_media_info_connect", 0); return TRUE; } @@ -97,10 +99,8 @@ _mp_main_set_current_playing_item(struct appdata *ad, const char *current_player { startfunc; ad->loadtype = LOAD_TRACK; - mp_play_list_create_current_play_list(ad, &ad->playing_list, NULL, current_player_path, 1, 0, FALSE, -1); - - ad->launch_type = MP_LAUNCH_PATH; + ad->launch_type = MP_LAUNCH_UG; return true; @@ -109,32 +109,117 @@ _mp_main_set_current_playing_item(struct appdata *ad, const char *current_player static bool _mp_main_is_launching_available(struct appdata *ad) { + MP_TA_ACUM_ITEM_BEGIN(" battery_check", 0); if (mp_check_battery_available()) { - Evas_Object *popup = elm_popup_add(ad->win_main); - mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_BODY_LOW_BATTERY")); - mp_popup_set_response_cb(popup, _mp_main_exit_cb, ad); - mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES); - mp_popup_timeout_set(popup, 3.0); + Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, ad, _mp_main_exit_cb, ad); + elm_object_text_set(popup, GET_SYS_STR("IDS_COM_BODY_LOW_BATTERY")); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES); + mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT); evas_object_show(ad->win_main); evas_object_show(popup); return false; } + MP_TA_ACUM_ITEM_END(" battery_check", 0); + MP_TA_ACUM_ITEM_BEGIN(" mass_stroage_check", 0); if (mp_check_mass_storage_mode()) { - Evas_Object *popup = elm_popup_add(ad->win_main); - mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_POP_UNABLE_TO_USE_DURING_MASS_STORAGE_MODE")); - mp_popup_set_response_cb(popup, _mp_main_exit_cb, ad); - mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES); - mp_popup_timeout_set(popup, 3.0); + Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, ad, _mp_main_exit_cb, ad); + elm_object_text_set(popup, GET_SYS_STR("IDS_COM_POP_UNABLE_TO_USE_DURING_MASS_STORAGE_MODE")); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES); + mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT); evas_object_show(ad->win_main); evas_object_show(popup); return false; } + MP_TA_ACUM_ITEM_END(" mass_stroage_check", 0); return true; } +#ifndef MP_SOUND_PLAYER +void +_mp_main_create_view_by_item(struct appdata *ad, const char *argv1) +{ + mp_retm_if(argv1 == NULL, "argv1 is NULL"); + mp_retm_if(ad == NULL, "ad is NULL"); + + if (argv1) + { + if (strstr(argv1, MP_SHORTCUT_PLAYLIST) == argv1) + { + int playlist_id = -1; + char *id; + id = strtok((char *)argv1, MP_FUNC_ADD_TO_HOME_SEPARATION); + id = strtok(NULL, MP_FUNC_ADD_TO_HOME_SEPARATION); + if(id) + { + playlist_id = atoi(id); + DEBUG_TRACE("Playlist id is %d", playlist_id); + ad->launch_type = MP_LAUNCH_ADD_TO_HOME; + ad->loadtype = LOAD_PLAYLIST; + ad->request_play_id = playlist_id; + + mp_library_load(ad); + } + } + else if (strstr(argv1, MP_SHORTCUT_GROUP) == argv1) + { + char *id; + id = strtok((char *)argv1, MP_FUNC_ADD_TO_HOME_SEPARATION); + id = strtok(NULL, MP_FUNC_ADD_TO_HOME_SEPARATION); + if (id) + { + ad->request_group_type = (atoi(id)); + mp_debug("view_type is %d", ad->request_group_type); + + id = strtok(NULL, MP_FUNC_ADD_TO_HOME_SEPARATION); + + if (id) + { + IF_FREE(ad->request_group_name); + ad->request_group_name = g_strdup(id); + + DEBUG_TRACE("Reqest Album name is %s", ad->request_group_name); + ad->launch_type = MP_LAUNCH_ADD_TO_HOME; + ad->loadtype = LOAD_GROUP; + mp_library_load(ad); + } + } + } + else if (strstr(argv1, MP_SHORTCUT_SONG) == argv1) + { + char current_player_path[255] = { 0, }; + char temp[255] = { 0, }; + strncpy(temp, argv1, 255); + + int i = 0; + for (i = 0; i < strlen(temp); i++) + { + if (temp[i] == '/') + { + int j = i + 1; + while (temp[j]) + { + current_player_path[j - (i + 1)] = temp[j]; + j++; + } + DEBUG_TRACE("current_player_path is %s", current_player_path); + break; + } + } + + ad->launch_type = MP_LAUNCH_ADD_TO_HOME; + ad->loadtype = LOAD_TRACK; + + IF_FREE(ad->request_playing_path); + ad->request_playing_path = g_strdup(current_player_path); + + } + } +} +#endif + static Eina_Bool _mp_main_win_visibility_change_cb(void *data, int type, void *event) { struct appdata *ad = (struct appdata *)data; @@ -151,18 +236,29 @@ static Eina_Bool _mp_main_win_visibility_change_cb(void *data, int type, void *e mp_debug("hide main window"); mp_player_mgr_vol_type_unset(); - ad->prohibit_aul_relaunch = false; + ad->app_is_foreground = false; hided = true; - +#ifdef MP_SOUND_PLAYER + mp_play_view_progress_timer_freeze(ad); +#else mp_view_manager_freeze_progress_timer(ad); - mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); +#endif } else { mp_debug("show main window"); mp_player_mgr_vol_type_set(); - ad->prohibit_aul_relaunch = true; + ad->app_is_foreground = true; DEBUG_TRACE("load_type: %d", ad->loadtype); + + /* for refresh progressbar */ + ad->music_pos = mp_player_mgr_get_position() / 1000.0; + ad->music_length = mp_player_mgr_get_duration() / 1000.0; + +#ifdef MP_SOUND_PLAYER + mp_play_view_progress_timer_thaw(ad); +#else mp_view_manager_thaw_progress_timer(ad); +#endif } } @@ -177,8 +273,10 @@ static Eina_Bool _mp_main_win_focus_in_cb(void *data, int type, void *event) Ecore_X_Event_Window_Focus_In *ev = (Ecore_X_Event_Window_Focus_In *)event; if (ev->win == ad->xwin) { ad->is_focus_out = false; + if (ad->win_minicon && ad->b_minicontroller_show) + mp_minicontroller_destroy(ad); } - +#ifndef MP_SOUND_PLAYER int db_state = VCONFKEY_FILEMANAGER_DB_UPDATED; vconf_get_int(VCONFKEY_FILEMANAGER_DB_STATUS, &db_state); if(db_state == VCONFKEY_FILEMANAGER_DB_UPDATING) @@ -186,6 +284,8 @@ static Eina_Bool _mp_main_win_focus_in_cb(void *data, int type, void *event) DEBUG_TRACE("update list"); mp_view_manager_update_list_contents(mp_util_get_view_data(ad), true); } +#endif + return ECORE_CALLBACK_PASS_ON; } @@ -196,12 +296,66 @@ static Eina_Bool _mp_main_win_focus_out_cb(void *data, int type, void *event) Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)event; if (ev->win == ad->xwin) { + /* Testing Code. If a track is getting played or paused, + the MiniController should be displayed as soon as the main window goes to back ground. + When again the Music ICon in Main menu is pressed, the mini controller will be hidden and + The Main Screen of the Music Application will be displayed. */ + ad->is_focus_out = true; - mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL); + if (ad->player_state == PLAY_STATE_PAUSED || ad->player_state == PLAY_STATE_PLAYING) + { + if (!ad->win_minicon) + mp_minicontroller_create(ad); + else + mp_minicontroller_show(ad); + } + } + + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool _mp_main_client_message_cb(void *data, int type, void *event) +{ + struct appdata *ad = data; + MP_CHECK_FALSE(ad); + + Ecore_X_Event_Client_Message *ev = + (Ecore_X_Event_Client_Message *) event; + int new_angle = 0; + + if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE) + { + new_angle = ev->data.l[0]; + DEBUG_TRACE("ROTATION: %d", new_angle); + mp_minicontroller_rotate(ad, new_angle); + } + else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) + { + bool visible = false; + if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) + { + mp_debug("quickpanel show"); + visible = true; + } + else + { + mp_debug("quickpanel hide"); + visible = false; + } + mp_minicontroller_visible_set(ad, visible); } + return ECORE_CALLBACK_PASS_ON; } +static void __mp_main_lcd_state_changed_cb(power_state_e state, void *user_data) +{ + DEBUG_TRACE("power_state: %d", state); + + struct appdata *ad = user_data; + MP_CHECK(ad); +} + static Eina_Bool _mp_main_app_init_idler_cb(void *data) { @@ -213,212 +367,258 @@ _mp_main_app_init_idler_cb(void *data) { ERROR_TRACE("Error when noti init"); } - ad->key_down = - ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, mp_app_hard_key_down_cb, ad); - ad->key_down = - ecore_event_handler_add(ECORE_EVENT_KEY_UP, mp_app_hard_key_up_cb, ad); - ad->visibility_change = - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, _mp_main_win_visibility_change_cb, ad); - ad->focus_in = - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _mp_main_win_focus_in_cb, ad); - ad->focus_out = - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _mp_main_win_focus_out_cb, ad); + + ad->mouse_button_down = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, mp_app_mouse_event_cb, ad); + ad->mouse_button_up = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, mp_app_mouse_event_cb, ad); + ad->mouse_move = ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, mp_app_mouse_event_cb, ad); + /* window visibility change event */ + ad->visibility_change = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, _mp_main_win_visibility_change_cb, ad); + /* window focus in/out event */ + ad->focus_in = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _mp_main_win_focus_in_cb, ad); + ad->focus_out = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _mp_main_win_focus_out_cb, ad); + ad->client_msg = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _mp_main_client_message_cb, ad); mp_app_inotify_init(ad); elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_SHOW); - ad->app_init_idler = NULL; + + power_set_changed_cb(__mp_main_lcd_state_changed_cb, ad); + return ECORE_CALLBACK_CANCEL; } -static void -_mp_main_scale_set(struct appdata *ad) +static bool __mp_main_service_extra_data_cb(service_h service, const char *key, void *user_data) { - Evas_Coord w, h; - evas_object_geometry_get(ad->win_main, NULL, NULL, &w, &h); + MP_CHECK_FALSE(service); + char * value = NULL; + service_get_extra_data(service, key, &value); + DEBUG_TRACE("key: %s, value: %s", key, value); + IF_FREE(value); - if (w < h) - { - ad->scale = (double)w / 480; - } - else - { - ad->scale = (double)h / 480; - } - - DEBUG_TRACE("scale factor: %f", ad->scale); + return true; } static void -mp_main_parse_bundle(struct appdata *ad, bundle *b, char **request_title, char **path, int *lunching_by_menu_icon) +_mp_main_parse_service(struct appdata *ad, service_h service, char **request_title, char **path, int *lunching_by_menu_icon) { + MP_CHECK(service); + service_foreach_extra_data(service, __mp_main_service_extra_data_cb, NULL); - if (b) +#ifdef MP_SOUND_PLAYER + if(mp_util_get_uri_from_app_svc(service, ad, path)) { - const char *mime_type = NULL; - mime_type = (char *)bundle_get_val(b, AUL_K_MIME_TYPE); - if (mime_type) + DEBUG_TRACE("uri: %s", *path); + } + else + ERROR_TRACE("No uri..."); +#else + char *value = NULL; + char *uri = NULL; + + service_get_extra_data(service, "shortcut", &uri); + if (uri) + { + mp_debug("uri = %s", uri); + *lunching_by_menu_icon = 1; + *path = uri; + } + else + { + if (!service_get_extra_data(service, MP_PLAY_RECENT, &value)) { - if (!strcmp(mime_type, "music-player.uri")) - { - *path = g_strdup(bundle_get_val(b, AUL_K_MIME_CONTENT)); - *lunching_by_menu_icon = 1; - DEBUG_TRACE("bundle: mime_type[%s], contents[%s]\n", mime_type, *path); - } - else - { - *path = g_strdup(bundle_get_val(b, AUL_K_MIME_CONTENT)); - } + ad->launch_type = MP_LAUNCH_PLAY_RECENT; + ad->loadtype = LOAD_VOICE_UI; + IF_FREE(value); } - else if(mp_util_get_uri_from_app_svc(b, ad, path)) + else if (!service_get_extra_data(service, MP_PLAY_PLAYLIST, &value)) { - DEBUG_TRACE("launching by APP SVC. path: %s", *path); + *request_title = value; + ad->launch_type = MP_LAUNCH_PLAY_PLAYLIST; + ad->loadtype = LOAD_VOICE_UI; } - else + else if (!service_get_extra_data(service, MP_PLAY_ARTIST, &value)) { - *path = g_strdup(bundle_get_val(b, MP_B_PATH)); - if (!*path) - { - if (bundle_del(b, MP_PLAY_RECENT) == 0) - { - ad->launch_type = MP_LAUNCH_PLAY_RECENT; - ad->loadtype = LOAD_PLAY; - } - else if (bundle_get_val(b, MP_PLAY_PLAYLIST)) - { - *request_title = (char *)bundle_get_val(b, MP_PLAY_PLAYLIST); - ad->launch_type = MP_LAUNCH_PLAY_PLAYLIST; - ad->loadtype = LOAD_PLAY; - } - else if (bundle_get_val(b, MP_PLAY_ARTIST)) - { - *request_title = (char *)bundle_get_val(b, MP_PLAY_ARTIST); - ad->launch_type = MP_LAUNCH_PLAY_GROUP; - ad->loadtype = LOAD_PLAY; - ad->track_type = AUDIO_SVC_TRACK_BY_ARTIST; - ad->group_type = AUDIO_SVC_GROUP_BY_ARTIST; - } - else if (bundle_get_val(b, MP_PLAY_ALBUM)) - { - *request_title = (char *)bundle_get_val(b, MP_PLAY_ALBUM); - ad->launch_type = MP_LAUNCH_PLAY_GROUP; - ad->loadtype = LOAD_PLAY; - ad->track_type = AUDIO_SVC_TRACK_BY_ALBUM; - ad->group_type = AUDIO_SVC_GROUP_BY_ALBUM; - } - else if (bundle_get_val(b, MP_PLAY_GENRE)) - { - *request_title = (char *)bundle_get_val(b, MP_PLAY_GENRE); - ad->launch_type = MP_LAUNCH_PLAY_GROUP; - ad->loadtype = LOAD_PLAY; - ad->track_type = AUDIO_SVC_TRACK_BY_GENRE; - ad->group_type = AUDIO_SVC_GROUP_BY_GENRE; - } - else if (bundle_get_val(b, MP_PLAY_SOMETHING)) - { - *request_title = (char *)bundle_get_val(b, MP_PLAY_SOMETHING); - ad->launch_type = MP_LAUNCH_PLAY_SOMETHING; - ad->loadtype = LOAD_PLAY; - ad->track_type = AUDIO_SVC_TRACK_ALL; - } - - } + *request_title = value; + ad->launch_type = MP_LAUNCH_PLAY_GROUP; + ad->loadtype = LOAD_VOICE_UI; + ad->track_type = MP_TRACK_BY_ARTIST; + ad->group_type = MP_GROUP_BY_ARTIST; } - if(*path) - DEBUG_TRACE("Path is %s", *path); - - if(bundle_get_val(b, MP_MM_KEY)) + else if (!service_get_extra_data(service, MP_PLAY_ALBUM, &value)) + { + *request_title = value; + ad->launch_type = MP_LAUNCH_PLAY_GROUP; + ad->loadtype = LOAD_VOICE_UI; + ad->track_type = MP_TRACK_BY_ALBUM; + ad->group_type = MP_GROUP_BY_ALBUM; + } + else if (!service_get_extra_data(service, MP_PLAY_GENRE, &value)) + { + *request_title = value; + ad->launch_type = MP_LAUNCH_PLAY_GROUP; + ad->loadtype = LOAD_VOICE_UI; + ad->track_type = MP_TRACK_BY_GENRE; + ad->group_type = MP_GROUP_BY_GENRE; + } + else if (!service_get_extra_data(service, MP_PLAY_FOLDER, &value)) + { + *request_title = value; + ad->launch_type = MP_LAUNCH_PLAY_GROUP; + ad->loadtype = LOAD_VOICE_UI; + ad->track_type = MP_TRACK_BY_FOLDER; + ad->group_type = MP_GROUP_BY_FOLDER; + } + else if (!service_get_extra_data(service, MP_PLAY_SOMETHING, &value)) + { + *request_title = value; + ad->launch_type = MP_LAUNCH_PLAY_SOMETHING; + ad->loadtype = LOAD_VOICE_UI; + ad->track_type = MP_TRACK_ALL; + } + else if(!service_get_extra_data(service, MP_MM_KEY, &value)) { DEBUG_TRACE("mm key event, ad->player_state : %d", ad->player_state); + ad->prohibit_activate_win = true; if(ad->player_state == PLAY_STATE_PAUSED) { + ad->launch_type = MP_LAUNCH_DEFAULT; + ad->loadtype = LOAD_DEFAULT; mp_play_control_play_cb(ad, NULL, SIGNAL_PLAY, NULL); - ad->loadtype = LOAD_MM_KEY; } else { ad->launch_type = MP_LAUNCH_PLAY_RECENT; - ad->loadtype = LOAD_PLAY; + ad->loadtype = LOAD_VOICE_UI; } + IF_FREE(value); } } +#endif +} + +static void +_mp_main_win_profile_changed_cb(void *data, Evas_Object *obj, void *event) +{ + struct appdata *ad = data; + MP_CHECK(ad); + MP_CHECK(ad->base_layout_main); + + const char *profile = elm_config_profile_get(); + mp_debug("profile = %s", profile); + if (!g_strcmp0(profile, "desktop")) + elm_layout_theme_set(ad->base_layout_main, "layout", "application", "noindicator"); + else + elm_layout_theme_set(ad->base_layout_main, "layout", "application", "default"); + evas_object_size_hint_weight_set(ad->base_layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(ad->base_layout_main); +} + +static void +_mp_atexit_cb(void) +{ + ERROR_TRACE("%%%%%%%%%%%%%%%%%%%%%"); + ERROR_TRACE("#exit() invoked. music-player is exiting"); + ERROR_TRACE("%%%%%%%%%%%%%%%%%%%%%"); } /**< Called before main loop */ -static int +static bool mp_create(void *data) { struct appdata *ad = data; - int ret = 0; - MP_CHECK_VAL(ad, -1); + elm_config_preferred_engine_set("opengl_x11"); + atexit(_mp_atexit_cb); - ret = appcore_set_i18n(PACKAGE, LOCALEDIR); - mp_retv_if(ret, -1); + MP_CHECK_VAL(ad, EINA_FALSE); - appcore_set_event_callback(APPCORE_EVENT_LOW_BATTERY, _mp_main_low_battery_cb, ad); + MP_TA_ACUM_ITEM_END("main_to_create", 0); + MP_TA_ACUM_ITEM_BEGIN(" mp_create", 0); + MP_TA_ACUM_ITEM_BEGIN(" elm_theme_extension_add", 0); /* do extension add before add elm object.*/ elm_theme_extension_add(NULL, THEME_NAME); + MP_TA_ACUM_ITEM_END(" elm_theme_extension_add", 0); + MP_TA_ACUM_ITEM_BEGIN(" create_window_time", 0); ad->win_main = mp_create_win(PACKAGE); + mp_retv_if(ad->win_main == NULL, EINA_FALSE); evas_event_callback_add(evas_object_evas_get(ad->win_main), EVAS_CALLBACK_RENDER_FLUSH_POST, _mp_evas_flush_post, ad); - - mp_retv_if(ad->win_main == NULL, -1); + evas_object_smart_callback_add(ad->win_main, "profile,changed", _mp_main_win_profile_changed_cb, ad); ad->xwin = elm_win_xwindow_get(ad->win_main); + MP_TA_ACUM_ITEM_END(" create_window_time", 0); - mp_widget_create_bgimg(ad->win_main); + MP_TA_ACUM_ITEM_BEGIN(" create_bg_img", 0); + ad->bgimage = mp_widget_create_bgimg(ad->win_main); ad->evas = evas_object_evas_get(ad->win_main); + MP_TA_ACUM_ITEM_END(" create_bg_img", 0); + MP_TA_ACUM_ITEM_BEGIN(" mp_player_mgr_session_init", 0); + /*initialize session type */ if (!mp_player_mgr_session_init()) { ERROR_TRACE("Error when set session"); - return -1; + return EINA_FALSE; } + MP_TA_ACUM_ITEM_END(" mp_player_mgr_session_init", 0); + MP_TA_ACUM_ITEM_BEGIN(" mp_setting_init()", 0); mp_setting_init(ad); + MP_TA_ACUM_ITEM_END(" mp_setting_init()", 0); + MP_TA_ACUM_ITEM_BEGIN(" music_init_time", 0); if (!_mp_main_init(ad)) { ERROR_TRACE("Fail when init music"); - return -1; + return EINA_FALSE; } + MP_TA_ACUM_ITEM_END(" music_init_time", 0); - _mp_main_scale_set(ad); - + MP_TA_ACUM_ITEM_BEGIN(" mp_http_mgr_create", 0); mp_http_mgr_create(ad); + MP_TA_ACUM_ITEM_END(" mp_http_mgr_create", 0); ad->app_init_idler = ecore_idler_add(_mp_main_app_init_idler_cb, ad); - return 0; + MP_TA_ACUM_ITEM_BEGIN(" mp_language_mgr_create", 0); + mp_language_mgr_create(); + MP_TA_ACUM_ITEM_END(" mp_language_mgr_create", 0); + + MP_TA_ACUM_ITEM_END(" mp_create", 0); + MP_TA_ACUM_ITEM_BEGIN("create_to_reset", 0); + return EINA_TRUE; } /**< Called after main loop */ -static int +static void mp_terminate(void *data) { struct appdata *ad = data; DEBUG_TRACE_FUNC(); - MP_CHECK_VAL(ad, 0); + MP_CHECK(ad); + mp_language_mgr_destroy(); + + mp_ecore_idler_del(ad->mss_startup_idler); mp_ecore_idler_del(ad->playing_err_idler); mp_ecore_idler_del(ad->bt_pause_idler); mp_ecore_idler_del(ad->app_init_idler); mp_ecore_timer_del(ad->longpress_timer); - mp_ecore_timer_del(ad->live_pos_timer); mp_util_stop_vibration(ad); mp_ecore_timer_del(ad->vib_timer); - mp_util_ungrab_mm_keys(ad); + mp_app_ungrab_mm_keys(); if (ad->key_down) ecore_event_handler_del(ad->key_down); + if (ad->mouse_button_down) + ecore_event_handler_del(ad->mouse_button_down); if (ad->visibility_change) { ecore_event_handler_del(ad->visibility_change); ad->visibility_change = NULL; @@ -438,7 +638,9 @@ mp_terminate(void *data) mp_player_mgr_destroy(ad); } - vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_OFF); + if (!mp_util_is_other_player_playing()) + vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_OFF); + mp_minicontroller_destroy(ad); mp_player_mgr_vol_type_unset(); if (!mp_player_mgr_session_finish()) ERROR_TRACE("Error when set session"); @@ -446,59 +648,110 @@ mp_terminate(void *data) mp_http_mgr_destory(ad); - if (ad->media_svc_handle) { - media_svc_disconnect(ad->media_svc_handle); - } + mp_media_info_disconnect(); mp_setting_deinit(ad); if (!mp_app_noti_ignore()) ERROR_TRACE("Error when ignore noti"); - return 0; +#ifdef MP_SOUND_PLAYER + sp_view_mgr_destroy(ad->view_mgr); + ad->view_mgr = NULL; +#endif + + MP_TA_ACUM_ITEM_SHOW_RESULT_TO(MP_TA_SHOW_FILE); + MP_TA_RELEASE(); + + return; } /**< Called when every window goes back */ -static int +static void mp_pause(void *data) { +// struct appdata *ad = data; + DEBUG_TRACE_FUNC(); - return 0; + return; } /**< Called when any window comes on top */ -static int +static void mp_resume(void *data) { DEBUG_TRACE_FUNC(); - return 0; + return; } /**< Called at the first idler and relaunched by AUL*/ -static int -mp_reset(bundle * b, void *data) +static void +mp_service(service_h service, void *data) { startfunc; + struct appdata *ad = data; - mp_retv_if(ad == NULL, -1); + mp_ret_if(ad == NULL); + + mp_retm_if(ad->app_is_foreground, "relaunch not allowed.. "); + if (!ad->app_is_foreground) + ad->app_is_foreground = true; - mp_retvm_if(ad->prohibit_aul_relaunch, 0, "relaunch not allowed.. "); - if (!ad->prohibit_aul_relaunch) - ad->prohibit_aul_relaunch = true; + MP_TA_ACUM_ITEM_END("create_to_reset", 0); + MP_TA_ACUM_ITEM_BEGIN(" mp_service", 0); + MP_TA_ACUM_ITEM_BEGIN(" _mp_main_is_launching_available", 0); if (!_mp_main_is_launching_available(ad)) - return -1; + return; + MP_TA_ACUM_ITEM_END(" _mp_main_is_launching_available", 0); char *request_title = NULL; int lunching_by_menu_icon = 0; - char *path; + char *path = NULL; + + MP_TA_ACUM_ITEM_BEGIN(" parse_bundle", 0); + _mp_main_parse_service(ad, service, &request_title, &path, &lunching_by_menu_icon); + MP_TA_ACUM_ITEM_END(" parse_bundle", 0); + +#ifdef MP_SOUND_PLAYER + if (path) { + _mp_main_set_current_playing_item(ad, path); + free(path); + } + else { + mp_error("no path"); + _mp_main_exit_cb(ad, NULL, NULL); + + return; + } + + IF_FREE(ad->latest_playing_key_id); + if (!ad->base_layout_main) { + ad->base_layout_main = mp_widget_create_layout_main(ad->win_main); - mp_main_parse_bundle(ad, b, &request_title, &path, &lunching_by_menu_icon); + ad->loadtype = LOAD_TRACK; + /* create base navi bar */ + Evas_Object *navibar = mp_widget_navigation_new(ad->base_layout_main, ad); + elm_object_part_content_set(ad->base_layout_main, "elm.swallow.content", navibar); + + ad->view_mgr = sp_view_mgr_create(navibar); + } + + mp_play_destory(ad); + mp_play_view_load(ad); + ad->paused_by_user = FALSE; + mp_play_new_file(data, TRUE); +#else if (path) { - _mp_main_set_current_playing_item(ad, path); - IF_FREE(ad->request_playing_path); - ad->request_playing_path = g_strdup(path); + if (lunching_by_menu_icon) + _mp_main_create_view_by_item(ad, path); + else + { + _mp_main_set_current_playing_item(ad, path); + IF_FREE(ad->request_playing_path); + ad->request_playing_path = g_strdup(path); + } free(path); } @@ -506,8 +759,15 @@ mp_reset(bundle * b, void *data) if (ad->launch_type != MP_LAUNCH_DEFAULT) { + //destory popup mp_popup_destroy(ad); + + //destroy info view.. mp_view_manager_pop_info_view(ad); + + //destroy ug. + mp_ug_destory_all(ad); + } if (ad->launch_type != MP_LAUNCH_DEFAULT && ad->loadtype == LOAD_TRACK) @@ -523,8 +783,7 @@ mp_reset(bundle * b, void *data) ad->paused_by_user = FALSE; } - else if (ad->launch_type >= MP_LAUNCH_PLAY_RECENT - && ad->launch_type <= MP_LAUNCH_PLAY_SOMETHING) + else if (ad->launch_type >= MP_LAUNCH_PLAY_RECENT && ad->launch_type <= MP_LAUNCH_PLAY_SOMETHING) { IF_FREE(ad->latest_playing_key_id); ad->load_play_view = true; @@ -532,47 +791,101 @@ mp_reset(bundle * b, void *data) ad->paused_by_user = FALSE; - if (!mp_play_view_load_by_play(ad, request_title)) - return -1; + if (!mp_play_view_load_by_voice_ui(ad, request_title)) + return; } else if (ad->launch_type == MP_LAUNCH_DEFAULT) { + MP_TA_ACUM_ITEM_BEGIN(" load_library_view", 0); if (ad->base_layout_main == NULL) mp_library_create(ad); + MP_TA_ACUM_ITEM_END(" load_library_view", 0); } +#endif - - enum appcore_rm mode; - appcore_get_rotation_state(&mode); - + MP_TA_ACUM_ITEM_BEGIN(" evas_object_show()-win", 0); evas_object_show(ad->win_main); + MP_TA_ACUM_ITEM_END(" evas_object_show()-win", 0); - if(ad->loadtype != LOAD_MM_KEY) + if(!ad->prohibit_activate_win) + { + DEBUG_TRACE("activate window"); + MP_TA_ACUM_ITEM_BEGIN(" elm_win_activate()", 0); elm_win_activate(ad->win_main); + MP_TA_ACUM_ITEM_END(" elm_win_activate()", 0); + } + MP_TA_ACUM_ITEM_BEGIN(" mp_player_mgr_vol_type_set", 0); mp_player_mgr_vol_type_set(); + MP_TA_ACUM_ITEM_END(" mp_player_mgr_vol_type_set", 0); + + MP_TA_ACUM_ITEM_END("MP-LAUNCH_TIME", 0); + MP_TA_ACUM_ITEM_END(" mp_service", 0); endfunc; - return 0; + return; +} + +static void +mp_low_battery(void *data) +{ + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + + if (mp_check_battery_available()) + { + mp_app_exit(ad); + } + return; +} + +void +mp_device_orientation_cb(app_device_orientation_e orientation, void *user_data) +{ + +} + +static void +__mp_language_changed_cb(void *user_data) +{ + DEBUG_TRACE(""); + struct appdata *ad = user_data; + mp_popup_destroy(ad); +#ifndef MP_SOUND_PLAYER + mp_view_manager_pop_info_view(ad); +#endif + mp_ug_destory_all(ad); + mp_language_mgr_update(); } int main(int argc, char *argv[]) { struct appdata ad; - struct appcore_ops ops = { - .create = mp_create, - .terminate = mp_terminate, - .pause = mp_pause, - .resume = mp_resume, - .reset = mp_reset, - }; + app_event_callback_s event_callbacks; + + event_callbacks.create = mp_create; + event_callbacks.terminate = mp_terminate; + event_callbacks.pause = mp_pause; + event_callbacks.resume = mp_resume; + event_callbacks.service = mp_service; + event_callbacks.low_memory = NULL; + event_callbacks.low_battery = mp_low_battery; + event_callbacks.device_orientation = mp_device_orientation_cb; + event_callbacks.language_changed = __mp_language_changed_cb; + event_callbacks.region_format_changed = NULL; + DEBUG_TRACE(" starting music main"); + MP_TA_INIT(); + MP_TA_ACUM_ITEM_BEGIN("MP-LAUNCH_TIME", 0); + MP_TA_ACUM_ITEM_BEGIN(" main", 0); memset(&ad, 0x0, sizeof(struct appdata)); - ops.data = &ad; - return appcore_efl_main(PACKAGE, &argc, &argv, &ops); + MP_TA_ACUM_ITEM_END(" main", 0); + MP_TA_ACUM_ITEM_BEGIN("main_to_create", 0); + + return app_efl_main(&argc, &argv, &event_callbacks, &ad); } diff --git a/src/view/include/mp-edit-view.h b/src/view/include/mp-edit-view.h index 7fc754e..e1a9bfd 100755 --- a/src/view/include/mp-edit-view.h +++ b/src/view/include/mp-edit-view.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -17,13 +17,15 @@ #include "music.h" #include "mp-view-layout.h" - Evas_Object * mp_edit_view_create(view_data_t * view_data); + Evas_Object * mp_edit_view_create(view_data_t * view_data); void mp_edit_view_back_button_cb(void *data, Evas_Object * obj, void *event_info); void mp_edit_view_create_new_cancel_cb(void *data, Evas_Object * obj, void *event_info); void mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info); void mp_edit_view_delete_cb(void *data, Evas_Object * obj, void *event_info); void mp_edit_view_add_to_plst_cb(void *data, Evas_Object * obj, void *event_info); + void mp_edit_view_share_cb(void *data, Evas_Object * obj, void *event_info); void mp_edit_view_excute_edit(mp_layout_data_t * layout_data, mp_edit_operation_t edit_operation); void mp_edit_view_cencel_cb(void *data, Evas_Object * obj, void *event_info); void mp_edit_view_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info); +bool mp_edit_view_get_selected_track_list(void *data, GList **p_list); diff --git a/src/view/include/mp-group-view.h b/src/view/include/mp-group-view.h index 2138e53..320fbc2 100755 --- a/src/view/include/mp-group-view.h +++ b/src/view/include/mp-group-view.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,20 +14,14 @@ * limitations under the License. */ - -#ifndef __MP_GROUP_VIEW_H__ -#define __MP_GROUP_VIEW_H__ - #include "music.h" + Evas_Object * mp_group_view_create(struct appdata *ad, mp_view_type_t type); + void mp_group_view_destroy(Evas_Object * group_view); + void mp_group_view_refresh(Evas_Object * group_view); + bool mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, mp_group_type_e type); + Evas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part); + char *mp_group_view_album_list_label_get(void *data, Evas_Object * obj, const char *part); + void mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_info); + char *mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part); + Evas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part); -Evas_Object * mp_group_view_create(struct appdata *ad, mp_view_type_t type); -void mp_group_view_destroy(Evas_Object * group_view); -void mp_group_view_refresh(Evas_Object * group_view); -Evas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part); -char *mp_group_view_album_list_label_get(void *data, Evas_Object * obj, const char *part); -void mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_info); -char *mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part); -Evas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part); -bool mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, audio_svc_group_type_e type); - -#endif //__MP_GROUP_VIEW_H__ diff --git a/src/view/include/mp-library.h b/src/view/include/mp-library.h index b0d64e8..619f1fc 100755 --- a/src/view/include/mp-library.h +++ b/src/view/include/mp-library.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -22,29 +22,30 @@ #include "mp-view-manager.h" #include "mp-setting-ctrl.h" -#define STR_MP_ALL_TRACKS N_("IDS_MUSIC_HEADER_SONGS") -#define STR_MP_PLAYLISTS N_("IDS_MUSIC_BODY_PLAYLISTS") -#define STR_MP_ALBUMS N_("IDS_MUSIC_TAB4_ALBUMS") -#define STR_MP_ARTISTS N_("IDS_MUSIC_TAB4_ARTISTS") -#define STR_MP_GENRES N_("IDS_MUSIC_TAB4_GENRES") -#define STR_MP_COMPOSERS N_("IDS_MUSIC_TAB4_COMPOSERS") -#define STR_MP_CONDUCTORS N_("IDS_MUSIC_TAB4_CONDUCTORS") -#define STR_MP_YEARS N_("IDS_MUSIC_TAB4_YEARS") -#define STR_MP_PODCASTS N_("IDS_MUSIC_TAB4_PODCASTS") -#define STR_MP_MOST_PLAYED N_("IDS_MUSIC_BODY_MOST_PLAYED") -#define STR_MP_RECENTLY_ADDED N_("IDS_MUSIC_BODY_RECENTLY_ADDED") -#define STR_MP_RECENTLY_PLAYED N_("IDS_MUSIC_BODY_RECENTLY_PLAYED") -#define STR_MP_QUICK_LIST N_("IDS_MUSIC_BODY_FAVOURITES") -#define STR_MP_ADD_TO_PLAYLIST N_("IDS_MUSIC_BODY_ADD_TO_PLAYLIST") +#define STR_MP_ALL_TRACKS ("IDS_MUSIC_TAB4_ALL") +#define STR_MP_PLAYLISTS ("IDS_MUSIC_BODY_PLAYLISTS") +#define STR_MP_ALBUMS ("IDS_MUSIC_TAB4_ALBUMS") +#define STR_MP_ARTISTS ("IDS_MUSIC_TAB4_ARTISTS") +#define STR_MP_GENRES ("IDS_MUSIC_TAB4_GENRES") +#define STR_MP_COMPOSERS ("IDS_MUSIC_TAB4_COMPOSERS") +#define STR_MP_CONDUCTORS ("IDS_MUSIC_TAB4_CONDUCTORS") +#define STR_MP_YEARS ("IDS_MUSIC_TAB4_YEARS") +#define STR_MP_PODCASTS ("IDS_MUSIC_TAB4_PODCASTS") +#define STR_MP_FOLDERS ("IDS_COM_BODY_FOLDERS") +#define STR_MP_MOST_PLAYED ("IDS_MUSIC_BODY_MOST_PLAYED") +#define STR_MP_RECENTLY_ADDED ("IDS_MUSIC_BODY_RECENTLY_ADDED") +#define STR_MP_RECENTLY_PLAYED ("IDS_MUSIC_BODY_RECENTLY_PLAYED") +#define STR_MP_QUICK_LIST ("IDS_MUSIC_BODY_FAVOURITES") +#define STR_MP_ADD_TO_PLAYLIST ("IDS_MUSIC_BODY_ADD_TO_PLAYLIST") +#define STR_MP_ALLSHARE_TAB ("Nearby device") void mp_library_create(struct appdata *ad); void mp_library_update_view(struct appdata *ad); -void mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info); void mp_library_now_playing_hide(struct appdata *ad); void mp_library_now_playing_set(struct appdata *ad); bool mp_library_load(struct appdata *ad); void mp_view_manager_clear(struct appdata *ad); -void mp_library_controlbar_visible_set(struct appdata *ad, bool visible); +void mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info); #endif //__MP_LIBRARY_H_ diff --git a/src/view/include/mp-play-view.h b/src/view/include/mp-play-view.h index 3150885..0df3915 100755 --- a/src/view/include/mp-play-view.h +++ b/src/view/include/mp-play-view.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,25 +14,30 @@ * limitations under the License. */ - - #ifndef __MP_PLAY_VIEW_H_ #define __MP_PLAY_VIEW_H_ #include "music.h" +#ifndef MP_SOUND_PLAYER #include "mp-view-layout.h" +#endif +bool mp_play_view_set_screen_mode(void *data, int mode); bool mp_play_view_stop_transit(void *data); bool mp_play_view_pop(void *data); bool mp_play_view_load(void *data); -bool mp_play_view_load_by_path(struct appdata *ad, char *path); bool mp_play_view_load_track(void *data); +#ifdef MP_SOUND_PLAYER +void mp_play_view_unswallow_info_ug_layout(struct appdata *ad); +#else +bool mp_play_view_load_by_path(struct appdata *ad, char *path); bool mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effect_value); -bool mp_play_view_refresh(void *data); +#endif +bool mp_play_view_refresh(void *data); // use for refresh playing view -bool mp_play_view_create_library(void *data); +bool mp_play_view_create_library(void *data); //create base layout bool mp_play_view_create(void *data); bool mp_play_view_destory(void *data); @@ -45,10 +50,11 @@ void mp_play_view_set_snd_path_sensitivity(void *data); void mp_play_view_info_cb(void *data, Evas_Object * obj, void *event_info); void mp_play_view_back_clicked_cb(void *data, Evas_Object * obj, void *event_info); -bool mp_play_view_load_by_play(struct appdata *ad, const char *request_title); +bool mp_play_view_load_by_voice_ui(struct appdata *ad, const char *request_title); void mp_play_view_info_back_cb(void *data, Evas_Object * obj, void *event_info); void mp_play_view_show_default_info(struct appdata *ad); void mp_play_view_update_snd_path(struct appdata *ad); +void mp_play_view_update_dmr_icon_state(struct appdata *ad); bool mp_play_view_set_menu_state(void *data, bool show, bool animation); void mp_play_view_set_snd_path_cb(void *data, Evas_Object *obj, void *event_info); diff --git a/src/view/include/mp-playlist-view.h b/src/view/include/mp-playlist-view.h index b48b141..09dcba5 100755 --- a/src/view/include/mp-playlist-view.h +++ b/src/view/include/mp-playlist-view.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,13 +14,11 @@ * limitations under the License. */ - #ifndef __MP_PLAYLIST_VIEW_H_ #define __MP_PLAYLIST_VIEW_H_ #include "music.h" #include "mp-view-layout.h" - Evas_Object * mp_playlist_view_create(struct appdata *ad, mp_view_type_t type); void mp_playlist_view_destroy(Evas_Object * playlist); void mp_playlist_view_refresh(Evas_Object * playlist); diff --git a/src/view/include/mp-track-view.h b/src/view/include/mp-track-view.h index ed961fc..3e184b7 100755 --- a/src/view/include/mp-track-view.h +++ b/src/view/include/mp-track-view.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/src/view/mp-edit-view.c b/src/view/mp-edit-view.c index ebdd6f2..9ec1f43 100755 --- a/src/view/mp-edit-view.c +++ b/src/view/mp-edit-view.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #include "mp-edit-view.h" #include "mp-view-layout.h" #include "mp-library.h" @@ -26,19 +24,6 @@ #include "mp-menu.h" #include "mp-play-list.h" #include "mp-playlist-view.h" -#include "mp-popup.h" - -static void -_mp_edit_view_destroy_view(view_data_t * view_data) -{ - startfunc; - MP_CHECK(view_data); - MP_CHECK_VIEW_DATA(view_data); - mp_view_manager_pop_view_content(view_data, true, TRUE); - if (view_data->ad->notify) - evas_object_del(view_data->ad->notify); - endfunc; -} void mp_edit_view_back_button_cb(void *data, Evas_Object * obj, void *event_info) @@ -51,8 +36,7 @@ mp_edit_view_back_button_cb(void *data, Evas_Object * obj, void *event_info) evas_object_smart_callback_del(obj, "clicked", mp_edit_view_back_button_cb); mp_view_manager_pop_view_content(view_data, FALSE, FALSE); - if (view_data->ad->notify) - evas_object_del(view_data->ad->notify); + mp_evas_object_del(view_data->ad->notify); } static char * @@ -60,13 +44,34 @@ _mp_edit_view_get_view_title(mp_layout_data_t * layout_data) { char *title = NULL; - GET_SYS_STR("IDS_COM_SK_SELECT"); - + title = "IDS_COM_BODY_EDIT"; return title; } void +mp_edit_view_share_cb(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE(""); + + mp_layout_data_t *layout_data = (mp_layout_data_t *) data; + MP_CHECK(layout_data); + MP_CHECK_LAYOUT_DATA(layout_data); + + mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress"); + + if (layout_data->checked_count <= 0) + { + mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_NOTHING_SELECTED")); + return; + } + + mp_genlist_popup_create(layout_data->ad->win_main, MP_POPUP_LIST_SHARE, data, layout_data->ad); + + return; +} + +void mp_edit_view_create_new_cancel_cb(void *data, Evas_Object * obj, void *event_info) { DEBUG_TRACE(""); @@ -87,6 +92,7 @@ void mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info) { DEBUG_TRACE_FUNC(); + mp_playlist_h playlist_handle; mp_layout_data_t *layout_data = (mp_layout_data_t *) data; MP_CHECK(layout_data); MP_CHECK_LAYOUT_DATA(layout_data); @@ -109,7 +115,13 @@ mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info) } converted_name = elm_entry_markup_to_utf8(name); - plst_uid = mp_util_create_playlist(ad, converted_name); + if(layout_data->edit_playlist_handle) + { + mp_media_info_playlist_handle_destroy(layout_data->edit_playlist_handle); + layout_data->edit_playlist_handle = NULL; + } + + plst_uid = mp_util_create_playlist(ad, converted_name, &playlist_handle); IF_FREE(converted_name); if (plst_uid < 0) return; @@ -117,6 +129,7 @@ mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info) mp_view_manager_pop_view_content(view_data, FALSE, TRUE); layout_data->edit_playlist_id = plst_uid; + layout_data->edit_playlist_handle = playlist_handle; mp_edit_view_excute_edit(layout_data, MP_EDIT_ADD_TO_PLAYLIST); if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST) @@ -138,18 +151,16 @@ _mp_edit_view_create_playlist_cb(void *data, Evas_Object * obj, void *event_info Evas_Object *create_plst_layout = NULL; char *new_playlist_name = NULL; - new_playlist_name = mp_util_get_new_playlist_name(view_data->ad->media_svc_handle); + new_playlist_name = mp_util_get_new_playlist_name(); create_plst_layout = mp_common_create_editfield_layout(view_data->navibar, view_data->ad, new_playlist_name); IF_FREE(new_playlist_name); mp_retm_if(create_plst_layout == NULL, "create_plst_layout is NULL"); mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT); - mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_OPT_ADD_PLAYLIST"), layout_data); evas_object_show(create_plst_layout); mp_popup_destroy(layout_data->ad); - } static void @@ -166,6 +177,11 @@ _mp_edit_view_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info mp_edit_view_excute_edit(layout_data, MP_EDIT_ADD_TO_PLAYLIST); } +static void _mp_edit_view_popup_del_cb(void *data, Evas * e, Evas_Object * eo, void *event_info) +{ + mp_media_list_h list = data; + mp_media_info_group_list_destroy(list); +} void mp_edit_view_add_to_plst_cb(void *data, Evas_Object * obj, void *event_info) @@ -196,40 +212,39 @@ mp_edit_view_add_to_plst_cb(void *data, Evas_Object * obj, void *event_info) _mp_edit_view_create_playlist_cb, layout_data); int i = 0, count = -1, ret = -1; - ret = audio_svc_count_playlist(layout_data->ad->media_svc_handle, "", "", &count); - - if (ret != AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count); + if (ret != 0) { - ERROR_TRACE("Error in audio_svc_list_get_count (%d)\n", ret); - evas_object_del(popup); + ERROR_TRACE("Error in mp_media_info_group_list_count (%d)\n", ret); return; } if (count) { - AudioHandleType *playlists = NULL; - ret = audio_svc_playlist_new(&playlists, count); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to make new playlist"); + mp_media_list_h list = NULL; - ret = audio_svc_get_playlist(layout_data->ad->media_svc_handle, "", "", 0, count, playlists); - if (ret != AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_group_list_create(&list, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count); + if (ret != 0) { WARN_TRACE("Fail to get playlist"); - audio_svc_playlist_free(playlists); return; } for (i = 0; i < count; i++) { char *name = NULL; - int size; int id; + mp_media_info_h item = NULL; + item = mp_media_info_group_list_nth_item(list, i); - ret = audio_svc_playlist_get_val(playlists, i, AUDIO_SVC_PLAYLIST_NAME, &name, &size, - AUDIO_SVC_PLAYLIST_ID, &id, -1); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); + ret = mp_media_info_group_get_main_info(item, &name); + mp_retm_if(ret != 0, "Fail to get value"); + ret = mp_media_info_group_get_playlist_id(item, &id); + mp_retm_if(ret != 0, "Fail to get value"); mp_genlist_popup_item_append(popup, name, NULL, _mp_edit_view_add_to_playlist_cb, (void *)id); } + + evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_edit_view_popup_del_cb, list); } evas_object_show(popup); @@ -241,14 +256,13 @@ _mp_edit_view_edit_idler_cb(void *data) mp_layout_data_t *layout_data = (mp_layout_data_t *) data; struct appdata *ad = NULL; mp_genlist_item_data_t *item = NULL; - AudioHandleType *item_handle = NULL; - int ret = AUDIO_SVC_ERROR_NONE; + mp_media_info_h item_handle = NULL; + int ret = 0; int plst_id = -1; char *fid = NULL; int uid = 0; char *file_path; char *title; - int size; bool error_occured = FALSE; MP_CHECK_FALSE(layout_data); @@ -262,6 +276,13 @@ _mp_edit_view_edit_idler_cb(void *data) WARN_TRACE("CHECK here..."); goto END; } + + if(elm_genlist_item_select_mode_get(layout_data->current_edit_item) == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) + { + layout_data->current_edit_item = elm_genlist_item_next_get(layout_data->current_edit_item); + return EINA_TRUE; + } + item = elm_object_item_data_get(layout_data->current_edit_item); if (!item) @@ -270,8 +291,8 @@ _mp_edit_view_edit_idler_cb(void *data) goto END; } - if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type - || AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) + if (MP_TRACK_BY_ALBUM == layout_data->track_type + || MP_TRACK_BY_ARTIST == layout_data->track_type) layout_data->category = MP_LAYOUT_TRACK_LIST; if (item->checked) @@ -284,24 +305,20 @@ _mp_edit_view_edit_idler_cb(void *data) { layout_data->current_edit_item = elm_genlist_item_next_get(layout_data->current_edit_item); - item_handle = (AudioHandleType *) (item->handle); + item_handle = (item->handle); if (!item_handle) { WARN_TRACE("CHECK here..."); goto END; } - if (item_handle) - { - ret = audio_svc_playlist_get_val(item_handle, 0, AUDIO_SVC_PLAYLIST_ID, - &plst_id, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + ret = mp_media_info_group_get_playlist_id(item_handle, &plst_id); + MP_CHECK_EXCEP(ret == 0); - ret = audio_svc_delete_playlist(ad->media_svc_handle, plst_id); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + ret = mp_media_info_playlist_delete_from_db(plst_id); + MP_CHECK_EXCEP(ret == 0); - DEBUG_TRACE("playlist (%d) deleted", plst_id); - } + DEBUG_TRACE("playlist (%d) deleted", plst_id); elm_object_item_del(item->it); layout_data->is_item_del = true; layout_data->item_count--; @@ -313,75 +330,44 @@ _mp_edit_view_edit_idler_cb(void *data) { layout_data->current_edit_item = elm_genlist_item_next_get(layout_data->current_edit_item); - item_handle = (AudioHandleType *) (item->handle); + item_handle = (item->handle); if (item_handle) { if (layout_data->playlist_id >= 0) { - ret = audio_svc_playlist_item_get_val(item_handle, 0, - AUDIO_SVC_PLAYLIST_ITEM_UID, - &uid, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - ret = audio_svc_remove_item_from_playlist_by_uid(ad->media_svc_handle, - layout_data->playlist_id, - uid); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + int member_id = 0; + ret = mp_media_info_get_playlist_member_id(item_handle, &member_id); + MP_CHECK_EXCEP(ret == 0); + ret = mp_media_info_playlist_remove_media(layout_data->playlist_handle, member_id); + MP_CHECK_EXCEP(ret == 0); DEBUG_TRACE("playlist id = %d, id = %d", plst_id, uid); - - if (ad->playing_list) { - if (ad->playing_list->playlist_id == layout_data->playlist_id) { - mp_debug("delete track from now playing list"); - fid = mp_util_get_fid_by_handle(layout_data, item_handle); - mp_play_list_delete_item(ad->playing_list, fid); - } - } } - else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_ADDED_TIME) + else if (layout_data->track_type == MP_TRACK_BY_ADDED_TIME) + { + ret = mp_media_info_set_added_time(item_handle, 0); + MP_CHECK_EXCEP(ret == 0); + } + else if (layout_data->track_type == MP_TRACK_BY_PLAYED_TIME) { - ret = audio_svc_list_item_get_val(item_handle, 0, - AUDIO_SVC_LIST_ITEM_AUDIO_ID, - &fid, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, - AUDIO_SVC_TRACK_DATA_ADDED_TIME, - 0, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - DEBUG_TRACE("playlist id = %d, id = %d", plst_id, fid); + ret = mp_media_info_set_played_time(item_handle, 0); + MP_CHECK_EXCEP(ret == 0); } - else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYED_TIME) + else if (layout_data->track_type == MP_TRACK_BY_FAVORITE) { - ret = audio_svc_list_item_get_val(item_handle, 0, - AUDIO_SVC_LIST_ITEM_AUDIO_ID, - &fid, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, - AUDIO_SVC_TRACK_DATA_PLAYED_TIME, - 0, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - DEBUG_TRACE("playlist id = %d, id = %d", plst_id, fid); + ret = mp_media_info_set_favorite(item_handle, false); + MP_CHECK_EXCEP(ret == 0); } - else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYED_COUNT) + else if (layout_data->track_type == MP_TRACK_BY_PLAYED_COUNT) { - ret = audio_svc_list_item_get_val(item_handle, 0, - AUDIO_SVC_LIST_ITEM_AUDIO_ID, - &fid, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, - AUDIO_SVC_TRACK_DATA_PLAYED_COUNT, - 0, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - DEBUG_TRACE("playlist id = %d, id = %d", plst_id, fid); + ret = mp_media_info_set_played_count(item_handle, 0); + MP_CHECK_EXCEP(ret == 0); } else { - ret = audio_svc_list_item_get_val(item_handle, 0, - AUDIO_SVC_LIST_ITEM_AUDIO_ID, - &fid, &size, - AUDIO_SVC_LIST_ITEM_PATHNAME, - &file_path, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - if (mp_util_delete_track(layout_data->ad, fid, file_path, false) - != MP_FILE_DELETE_ERR_NONE) + ret = mp_media_info_get_media_id(item_handle, &fid); + ret = mp_media_info_get_file_path(item_handle, &file_path); + MP_CHECK_EXCEP(ret == 0); + if (mp_util_delete_track(layout_data->ad, fid, file_path, false) != MP_FILE_DELETE_ERR_NONE) { DEBUG_TRACE("Fail to delete item, fid: %d, path: %s", fid, file_path); @@ -392,30 +378,19 @@ _mp_edit_view_edit_idler_cb(void *data) } if (!error_occured) { - if (AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) { - int index = -1; - int sub_index = -1; - bool ret_val = FALSE; - /* get group index and sub index when the status is artist album */ - ret_val = mp_common_track_get_aa_index(0, layout_data, item->it, FALSE); - if (ret_val) { - index = layout_data->selected_group_index; - sub_index = layout_data->selected_album_sub_index; - layout_data->aa_item_count[index]--; - if (layout_data->aa_item_count[index] < 1) { - /* delete group title if this album have no item */ - elm_object_item_del(layout_data->aa_group[index]); - } else { - /* update group title */ - elm_genlist_item_item_class_update(layout_data->aa_group[index], - layout_data->aa_group_itc); - } + if (MP_TRACK_BY_ARTIST == layout_data->track_type) { + if(!elm_genlist_item_parent_get(elm_genlist_item_next_get(item->it)) + && !elm_genlist_item_parent_get(elm_genlist_item_prev_get(item->it))) + { + elm_object_item_del(elm_genlist_item_parent_get(item->it)); + } + else + { + elm_genlist_item_update(elm_genlist_item_parent_get(item->it)); } - DEBUG_TRACE("index=%d, sub_index=%d, ret_val=%d", index, sub_index, ret_val); - } else if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) { + } else if (MP_TRACK_BY_ALBUM == layout_data->track_type) { /* update group title */ - elm_genlist_item_item_class_update(layout_data->album_group, - layout_data->album_group_itc); + elm_genlist_item_update(layout_data->album_group); } elm_object_item_del(item->it); layout_data->is_item_del = true; @@ -424,97 +399,6 @@ _mp_edit_view_edit_idler_cb(void *data) } break; } - case MP_LAYOUT_GROUP_LIST: - { - item_handle = (AudioHandleType *) (item->handle); - if (item_handle) - { - audio_svc_track_type_e item_type = AUDIO_SVC_TRACK_ALL; - int count = 0; - char *path = NULL; - int size = 0; - - ret = audio_svc_group_item_get_val(item_handle, 0, - AUDIO_SVC_GROUP_ITEM_MAIN_INFO, - &title, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - MP_CHECK_EXCEP(title); - - item_type = mp_menu_get_track_type_by_group(layout_data->group_type); - - if (!layout_data->group_track_handle) - { - ret = audio_svc_count_list_item(ad->media_svc_handle, item_type, title, "", "", "", - &count); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - MP_CHECK_EXCEP(count > 0); - mp_debug("track_count: %d", count); - - ret = audio_svc_list_item_new(&layout_data->group_track_handle, - count); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - - ret = audio_svc_get_list_item(ad->media_svc_handle, item_type, title, NULL, NULL, - NULL, 0, count, - layout_data->group_track_handle); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - - layout_data->edit_track_index = count - 1; - layout_data->group_item_delete_error = false; - } - ret = audio_svc_list_item_get_val(layout_data->group_track_handle, - layout_data->edit_track_index, - AUDIO_SVC_LIST_ITEM_PATHNAME, &path, - &size, AUDIO_SVC_LIST_ITEM_AUDIO_ID, - &fid, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - MP_CHECK_EXCEP(path); - - music_list_item *cur_item = - mp_play_list_get_current_item(layout_data->view_data->ad-> - playing_list); - if ((cur_item != NULL) && !g_strcmp0(cur_item->key_id, fid)) - { - DEBUG_TRACE("Playing file is not deleted., fid: %s, path: %s", - fid, path); - layout_data->error_count++; - layout_data->group_item_delete_error = TRUE; - } - else - { - if (mp_util_delete_track(layout_data->ad, 0, path, FALSE) != - MP_FILE_DELETE_ERR_NONE) - { - DEBUG_TRACE("Fail to delete item, fid: %s, path: %s", - fid, path); - layout_data->error_count++; - layout_data->group_item_delete_error = TRUE; - } - } - DEBUG_TRACE("layout_data->edit_track_index: %d", - layout_data->edit_track_index); - if (layout_data->edit_track_index <= 0) - { - DEBUG_TRACE("all tracks in %s deleted.", title); - layout_data->current_edit_item = - elm_genlist_item_next_get(layout_data-> - current_edit_item); - audio_svc_list_item_free(layout_data->group_track_handle); - layout_data->group_track_handle = NULL; - if (!layout_data->group_item_delete_error) - { - elm_object_item_del(item->it); - layout_data->is_item_del = true; - layout_data->item_count--; - layout_data->checked_count--; - } - } - else - layout_data->edit_track_index--; - - } - break; - } default: WARN_TRACE("unexpected case..."); break; @@ -523,36 +407,30 @@ _mp_edit_view_edit_idler_cb(void *data) } else if (layout_data->edit_operation == MP_EDIT_ADD_TO_PLAYLIST) { +#ifdef MP_PLAYLIST_MAX_ITEM_COUNT if (layout_data->playlist_track_count >= MP_PLAYLIST_MAX_ITEM_COUNT) { DEBUG_TRACE("unable to add more tracks..."); goto mp_exception; } +#endif switch (layout_data->category) { case MP_LAYOUT_TRACK_LIST: { layout_data->current_edit_item = elm_genlist_item_next_get(layout_data->current_edit_item); - item_handle = (AudioHandleType *) (item->handle); + item_handle = (item->handle); if (item_handle) { - if (layout_data->playlist_id >= 0) - { - ret = audio_svc_playlist_item_get_val(item_handle, 0, - AUDIO_SVC_PLAYLIST_ITEM_AUDIO_ID, - &fid, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - } - else + ret = mp_media_info_get_media_id(item_handle, &fid); + MP_CHECK_EXCEP(ret == 0); + + if (!mp_util_add_to_playlist_by_key(layout_data->edit_playlist_id, fid)) { - ret = audio_svc_list_item_get_val(item_handle, 0, - AUDIO_SVC_LIST_ITEM_AUDIO_ID, - &fid, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - } - if (!mp_util_add_to_playlist_by_key(ad->media_svc_handle, layout_data->edit_playlist_id, fid)) + mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD")); goto mp_exception; + } else layout_data->playlist_track_count++; } @@ -560,48 +438,46 @@ _mp_edit_view_edit_idler_cb(void *data) } case MP_LAYOUT_GROUP_LIST: { - item_handle = (AudioHandleType *) (item->handle); + item_handle = (item->handle); if (item_handle) { - audio_svc_track_type_e item_type = AUDIO_SVC_TRACK_ALL; + mp_track_type_e item_type = MP_TRACK_ALL; int count = 0; - int size = 0; + mp_media_info_h item = NULL; - ret = audio_svc_group_item_get_val(item_handle, 0, - AUDIO_SVC_GROUP_ITEM_MAIN_INFO, - &title, &size, -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + if (layout_data->view_data->view_type == MP_VIEW_TYPE_FOLDER) + { + ret = mp_media_info_group_get_sub_info(item_handle, &title); + } + else + { + ret = mp_media_info_group_get_main_info(item_handle, &title); + } + MP_CHECK_EXCEP(ret == 0); MP_CHECK_EXCEP(title); item_type = mp_menu_get_track_type_by_group(layout_data->group_type); if (!layout_data->group_track_handle) { - ret = audio_svc_count_list_item(ad->media_svc_handle, item_type, title, "", "", "", - &count); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + ret = mp_media_info_list_count(item_type, title, NULL, NULL, 0, &count); + + MP_CHECK_EXCEP(ret == 0); MP_CHECK_EXCEP(count > 0); mp_debug("track_count: %d", count); - ret = audio_svc_list_item_new(&layout_data->group_track_handle, - count); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - - ret = audio_svc_get_list_item(ad->media_svc_handle, item_type, title, NULL, NULL, - NULL, 0, count, - layout_data->group_track_handle); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); + ret = mp_media_info_list_create(&layout_data->group_track_handle, item_type, title, NULL, NULL, 0, 0, count); + MP_CHECK_EXCEP(ret == 0); layout_data->edit_track_index = count - 1; layout_data->group_item_delete_error = false; } - ret = audio_svc_list_item_get_val(layout_data->group_track_handle, - layout_data->edit_track_index, - AUDIO_SVC_LIST_ITEM_AUDIO_ID, &fid, &size, - -1); - MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE); - if (!mp_util_add_to_playlist_by_key(ad->media_svc_handle, layout_data->edit_playlist_id, fid)) + item = mp_media_info_list_nth_item(layout_data->group_track_handle, layout_data->edit_track_index); + ret = mp_media_info_get_media_id(item, &fid); + MP_CHECK_EXCEP(ret == 0); + + if (!mp_util_add_to_playlist_by_key(layout_data->edit_playlist_id, fid)) goto mp_exception; else layout_data->playlist_track_count++; @@ -610,9 +486,8 @@ _mp_edit_view_edit_idler_cb(void *data) { DEBUG_TRACE("all tracks in %s added.", title); layout_data->current_edit_item = - elm_genlist_item_next_get(layout_data-> - current_edit_item); - audio_svc_list_item_free(layout_data->group_track_handle); + elm_genlist_item_next_get(layout_data->current_edit_item); + mp_media_info_list_destroy(layout_data->group_track_handle); layout_data->group_track_handle = NULL; } else @@ -643,17 +518,17 @@ _mp_edit_view_edit_idler_cb(void *data) DEBUG_TRACE("no more items"); END: - mp_popup_response(ad->popup[MP_POPUP_PROGRESS], 0); + mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_YES); layout_data->edit_idler = NULL; return EINA_FALSE; mp_exception: if (layout_data->group_track_handle) { - audio_svc_list_item_free(layout_data->group_track_handle); + mp_media_info_list_destroy(layout_data->group_track_handle); layout_data->group_track_handle = NULL; } - mp_popup_response(ad->popup[MP_POPUP_PROGRESS], 0); + mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_NO); layout_data->edit_idler = NULL; return EINA_FALSE; @@ -668,8 +543,7 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev MP_CHECK(layout_data); MP_CHECK_LAYOUT_DATA(layout_data); MP_CHECK(obj); - - evas_object_del(obj); + mp_evas_object_del(obj); struct appdata *ad = layout_data->ad; MP_CHECK(ad); @@ -682,35 +556,13 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev if (layout_data->group_track_handle) { - audio_svc_list_item_free(layout_data->group_track_handle); + mp_media_info_list_destroy(layout_data->group_track_handle); layout_data->group_track_handle = NULL; } - if(mp_view_manager_count_view_content(layout_data->view_data) > 1) + if(mp_view_manager_count_view_content(layout_data->view_data) >= 1) mp_view_manager_update_list_contents(layout_data->view_data, TRUE); - if (layout_data->item_count < 1) - { - if(mp_view_manager_count_view_content(layout_data->view_data) > 1) - { - int category = layout_data->category; - int view_type = layout_data->view_data->view_type; - _mp_edit_view_destroy_view(layout_data->view_data); - if ((category == MP_LAYOUT_TRACK_LIST) - && (view_type == MP_VIEW_TYPE_PLAYLIST)) - { - mp_util_create_notify(ad, GET_SYS_STR("IDS_COM_POP_REMOVED")); - } - else - { - mp_util_create_notify(ad, GET_SYS_STR("IDS_COM_POP_DELETED")); - } - return; - } - else - mp_view_manager_update_list_contents(layout_data->view_data, TRUE); - } - int selected_count = layout_data->selected_count; mp_edit_view_cencel_cb(layout_data, NULL, NULL); @@ -724,16 +576,6 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev } else { - bool deleted = FALSE; - if (layout_data->genlist) { - int before_count = (int)evas_object_data_get(layout_data->genlist, "item_count_before_delete"); - int current_count = elm_genlist_items_count(layout_data->genlist); - - mp_debug("before: %d, after: %d", before_count, current_count); - if (before_count > current_count) - deleted = TRUE; - } - if ((selected_count == 1) && layout_data->error_count) { if ((layout_data->category == MP_LAYOUT_TRACK_LIST) @@ -746,7 +588,7 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev mp_util_create_notify(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING")); } } - else if (deleted) + else { if ((layout_data->category == MP_LAYOUT_TRACK_LIST) && (layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST)) @@ -762,6 +604,7 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev layout_data->ad->edit_in_progress = false; + // elm_toolbar_item_selected_set() must be called at last. After that layout_data is not valid anymore... if (layout_data->edit_operation == MP_EDIT_ADD_TO_PLAYLIST && layout_data->ad->b_add_tracks) { layout_data->ad->b_add_tracks = FALSE; @@ -798,9 +641,9 @@ mp_edit_view_excute_edit(mp_layout_data_t * layout_data, mp_edit_operation_t edi if (edit_operation == MP_EDIT_ADD_TO_PLAYLIST) { - audio_svc_count_playlist_item(layout_data->ad->media_svc_handle, layout_data->edit_playlist_id, NULL, NULL, - &layout_data->playlist_track_count); + mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, layout_data->edit_playlist_id, &layout_data->playlist_track_count); DEBUG_TRACE("number of tracks in playlist: %d", layout_data->playlist_track_count); +#ifdef MP_PLAYLIST_MAX_ITEM_COUNT if (layout_data->playlist_track_count >= MP_PLAYLIST_MAX_ITEM_COUNT) { if (layout_data->ad->b_add_tracks) @@ -815,6 +658,7 @@ mp_edit_view_excute_edit(mp_layout_data_t * layout_data, mp_edit_operation_t edi IF_FREE(noti_str); return; } +#endif } layout_data->edit_idler = ecore_idler_add(_mp_edit_view_edit_idler_cb, layout_data); @@ -849,20 +693,17 @@ _mp_edit_view_excute_delete_cb(void *data, Evas_Object * obj, void *event_info) MP_CHECK(layout_data); MP_CHECK_LAYOUT_DATA(layout_data); - evas_object_del(obj); MP_CHECK(layout_data->ad); layout_data->ad->popup_delete = NULL; - if ((int)event_info == MP_POPUP_NO) + mp_evas_object_del(obj); + + int response = (int)event_info; + if (response == MP_POPUP_NO) { return; } - if (layout_data->genlist) { - int count = elm_genlist_items_count(layout_data->genlist); - evas_object_data_set(layout_data->genlist, "item_count_before_delete", (void *)count); - } - mp_edit_view_excute_edit(layout_data, MP_EDIT_DELETE); endfunc; @@ -882,8 +723,7 @@ mp_edit_view_cencel_cb(void *data, Evas_Object * obj, void *event_info) ad = layout_data->ad; - if (layout_data->ad->notify) - evas_object_del(layout_data->ad->notify); + mp_evas_object_del(layout_data->ad->notify); mp_view_layout_set_edit_mode(layout_data, false); mp_util_unset_rename(layout_data); /* Cancel the rename mode */ @@ -909,7 +749,7 @@ mp_edit_view_delete_cb(void *data, Evas_Object * obj, void *event_info) ad = layout_data->ad; - Evas_Object *popup = elm_popup_add(ad->win_main); + Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, layout_data, _mp_edit_view_excute_delete_cb, ad); evas_object_data_set(popup, "layout_data", layout_data); ad->popup_delete = popup; @@ -917,15 +757,15 @@ mp_edit_view_delete_cb(void *data, Evas_Object * obj, void *event_info) if ((layout_data->category == MP_LAYOUT_TRACK_LIST) && (layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST)) { - mp_popup_desc_set(popup, GET_STR("IDS_MUSIC_POP_REMOVE_Q")); + elm_object_text_set(popup, GET_STR("IDS_MUSIC_POP_REMOVE_Q")); } else { - mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q")); + elm_object_text_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q")); } - mp_popup_set_response_cb(popup, _mp_edit_view_excute_delete_cb, layout_data); - mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_YES"), MP_POPUP_YES); - mp_popup_button_set(popup, "button2", GET_SYS_STR("IDS_COM_SK_NO"), MP_POPUP_NO); + + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_YES"), MP_POPUP_YES); + mp_popup_button_set(popup, MP_POPUP_BTN_2, GET_SYS_STR("IDS_COM_SK_NO"), MP_POPUP_NO); evas_object_show(popup); @@ -967,7 +807,6 @@ mp_edit_view_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info) elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked); } - //elm_genlist_item_update(item->it); elm_genlist_item_fields_update(item->it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT); mp_util_create_selectioninfo_with_count(layout_data->ad, layout_data->checked_count); mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count); @@ -988,7 +827,7 @@ mp_edit_view_create(view_data_t * view_data) mp_layout_data_t *layout_data = evas_object_data_get(top_view, "layout_data"); MP_CHECK_LAYOUT_DATA(layout_data); - if (layout_data->category == MP_LAYOUT_TRACK_LIST && layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYLIST) + if (layout_data->category == MP_LAYOUT_TRACK_LIST && layout_data->track_type == MP_TRACK_BY_PLAYLIST) reorder = TRUE; mp_view_layout_set_layout_data(top_view, MP_LAYOUT_EDIT_MODE, TRUE, MP_LAYOUT_REORDER_MODE, reorder, -1); @@ -1004,3 +843,42 @@ mp_edit_view_create(view_data_t * view_data) return NULL; } + +bool +mp_edit_view_get_selected_track_list(void *data, GList **p_list) +{ + struct appdata *ad = data; + MP_CHECK_FALSE(ad); + + Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad); + MP_CHECK_FALSE(top_view); + + mp_layout_data_t *layout_data = evas_object_data_get(top_view, "layout_data"); + MP_CHECK_FALSE(layout_data); /* not list layout */ + + if (layout_data->category != MP_LAYOUT_TRACK_LIST || !layout_data->edit_mode) + { + mp_debug("Not track list (edit mode)"); + return false; + } + + if (layout_data->checked_count > 0) + { + Elm_Object_Item *gl_item = elm_genlist_first_item_get(layout_data->genlist); + char *path = NULL; + while (gl_item) { + mp_genlist_item_data_t *item = elm_object_item_data_get(gl_item); + if (item && item->checked) { + mp_media_info_get_file_path(item->handle, &path); + if (path) { + *p_list = g_list_append(*p_list, path); + } + } + + gl_item = elm_genlist_item_next_get(gl_item); + } + } + + return true; +} + diff --git a/src/view/mp-group-view.c b/src/view/mp-group-view.c index 00cbc02..1c485e7 100755 --- a/src/view/mp-group-view.c +++ b/src/view/mp-group-view.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,8 +15,8 @@ */ - #include "mp-library.h" +#include "mp-ta.h" #include "mp-player-debug.h" #include "mp-common.h" #include "music.h" @@ -26,21 +26,32 @@ #include "mp-edit-view.h" #include "mp-util.h" #include "mp-widget.h" +#include "mp-play-view.h" -static void _mp_group_view_push_group_content(view_data_t * view_data, Evas_Object * content); static void _mp_group_view_push_item_content(view_data_t * view_data, Evas_Object * content, char *title); -static Elm_Genlist_Item_Class g_track_class_sweep = { - .item_style = "music_player/1icon.3text", - .func.text_get = mp_common_track_list_label_get, - .func.content_get = mp_common_track_list_icon_get, -}; +static Elm_Genlist_Item_Class * +_mp_group_view_get_track_list_itc(int list_type) +{ + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + MP_CHECK_NULL(itc); + + if (list_type == MP_TRACK_BY_ARTIST || list_type == MP_TRACK_BY_ALBUM) { + itc->item_style = "music_player/2text"; + itc->decorate_item_style = "mode/slide4"; + } else if (list_type == MP_TRACK_BY_FOLDER) { + itc->item_style = "music_player/folder_track"; + itc->decorate_item_style = "mode/slide4.text"; + } else { + itc->item_style = "music_player/1icon.3text"; + itc->decorate_item_style = "mode/slide4.text"; + } -static Elm_Genlist_Item_Class g_aa_track_class_sweep = { - .item_style = "music_player/2text", - .func.text_get = mp_common_track_list_label_get, - .func.content_get = mp_common_track_list_icon_get, -}; + itc->func.text_get = mp_common_track_list_label_get; + itc->func.content_get = mp_common_track_list_icon_get; + + return itc; +} static int _mp_group_view_get_list_type_by_group_type(int type) @@ -48,23 +59,26 @@ _mp_group_view_get_list_type_by_group_type(int type) int list_type = 0; switch (type) { - case AUDIO_SVC_GROUP_BY_ALBUM: - list_type = AUDIO_SVC_TRACK_BY_ALBUM; + case MP_GROUP_BY_ALBUM: + list_type = MP_TRACK_BY_ALBUM; break; - case AUDIO_SVC_GROUP_BY_ARTIST: - list_type = AUDIO_SVC_TRACK_BY_ARTIST; + case MP_GROUP_BY_ARTIST: + list_type = MP_TRACK_BY_ARTIST; break; - case AUDIO_SVC_GROUP_BY_ARTIST_ALBUM: - list_type = AUDIO_SVC_TRACK_BY_ARTIST_ALBUM; + case MP_GROUP_BY_ARTIST_ALBUM: + list_type = MP_TRACK_BY_ARTIST_ALBUM; break; - case AUDIO_SVC_GROUP_BY_GENRE: - list_type = AUDIO_SVC_TRACK_BY_GENRE; + case MP_GROUP_BY_GENRE: + list_type = MP_TRACK_BY_GENRE; break; - case AUDIO_SVC_GROUP_BY_YEAR: - list_type = AUDIO_SVC_TRACK_BY_YEAR; + case MP_GROUP_BY_YEAR: + list_type = MP_TRACK_BY_YEAR; break; - case AUDIO_SVC_GROUP_BY_COMPOSER: - list_type = AUDIO_SVC_TRACK_BY_COMPOSER; + case MP_GROUP_BY_COMPOSER: + list_type = MP_TRACK_BY_COMPOSER; + break; + case MP_GROUP_BY_FOLDER: + list_type = MP_TRACK_BY_FOLDER; break; default: @@ -74,7 +88,7 @@ _mp_group_view_get_list_type_by_group_type(int type) } static Evas_Object * -_mp_group_create_detail_view_layout(view_data_t * view_data, char *name, audio_svc_group_type_e type) +_mp_group_create_detail_view_layout(view_data_t * view_data, char *type_str, mp_group_type_e type) { int list_type = 0; int category = MP_LAYOUT_TRACK_LIST; @@ -87,13 +101,7 @@ _mp_group_create_detail_view_layout(view_data_t * view_data, char *name, audio_s mp_assert(layout); list_type = _mp_group_view_get_list_type_by_group_type(type); - - if (AUDIO_SVC_TRACK_BY_ARTIST == list_type - || AUDIO_SVC_TRACK_BY_ALBUM == list_type) { - itc = &g_aa_track_class_sweep; - } else { - itc = &g_track_class_sweep; - } + itc = _mp_group_view_get_track_list_itc(list_type); mp_genlist_cb_t genlist_cbs; memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t)); @@ -102,7 +110,7 @@ _mp_group_create_detail_view_layout(view_data_t * view_data, char *name, audio_s mp_view_layout_set_layout_data(layout, MP_LAYOUT_CATEGORY_TYPE, category, MP_LAYOUT_TRACK_LIST_TYPE, list_type, - MP_LAYOUT_TYPE_STR, name, + MP_LAYOUT_TYPE_STR, type_str, MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, itc, -1); mp_view_layout_update(layout); @@ -111,8 +119,38 @@ _mp_group_create_detail_view_layout(view_data_t * view_data, char *name, audio_s } +static char * +_get_folder_name_by_id(char *folder_id) +{ + mp_retvm_if(!folder_id, NULL, "File path is null..."); + mp_media_list_h media_list = NULL; + int count; + char *folder_name = NULL; + + mp_media_info_group_list_count(MP_GROUP_BY_FOLDER, NULL, NULL, &count); + mp_media_info_group_list_create(&media_list, MP_GROUP_BY_FOLDER, NULL, NULL, 0, count); + + int i = 0; + for (i = 0; i < count; i++) + { + mp_media_info_h info; + char *id = NULL; + info = mp_media_info_group_list_nth_item(media_list, i); + mp_media_info_group_get_folder_id(info, & id); + if(!g_strcmp0(folder_id, id)){ + mp_media_info_group_get_main_info (info, &folder_name); + folder_name = g_strdup(folder_name); + IF_FREE(id); + break; + } + IF_FREE(id); + } + mp_media_info_group_list_destroy(media_list); + return folder_name; +} + bool -mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, audio_svc_group_type_e type) +mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, mp_group_type_e type) { startfunc; @@ -120,21 +158,29 @@ mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, audio_sv MP_CHECK_FALSE(view_data); MP_CHECK_VIEW_DATA(view_data); Evas_Object *view_layout = _mp_group_create_detail_view_layout(view_data, group_name, type); - _mp_group_view_push_item_content(view_data, view_layout, group_name); + if(type == MP_GROUP_BY_FOLDER) + { + char *folder_name = _get_folder_name_by_id(group_name); + _mp_group_view_push_item_content(view_data, view_layout, folder_name); + IF_FREE(folder_name); + } + else + _mp_group_view_push_item_content(view_data, view_layout, group_name); endfunc; return true; } + void mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_info) { DEBUG_TRACE(""); - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; int index = (int)data; char *name = NULL; - int size = 0; + char *folder_id = 0; Elm_Object_Item *gli = (Elm_Object_Item *) event_info; MP_CHECK(gli); @@ -155,41 +201,54 @@ mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_in return; } - view_data_t *view_data = evas_object_data_get(layout_data->navibar, "view_data"); + mp_media_info_h item_handle = NULL; + view_data_t *view_data = evas_object_data_get(layout_data->ad->naviframe, "view_data"); MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); if (layout_data->view_mode == MP_VIEW_MODE_SEARCH) { layout_data->group_type = gli_data->group_type; - if (gli_data->group_type == AUDIO_SVC_GROUP_BY_ARTIST) - ret = audio_svc_group_item_get_val(layout_data->artist_handle, index, - AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); - else if (gli_data->group_type == AUDIO_SVC_GROUP_BY_ALBUM) - ret = audio_svc_group_item_get_val(layout_data->album_handle, index, - AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); + if (gli_data->group_type == MP_GROUP_BY_ARTIST) + { + item_handle = mp_media_info_group_list_nth_item(layout_data->artist_handle, index); + ret = mp_media_info_group_get_main_info(item_handle, &name); + } + else if (gli_data->group_type == MP_GROUP_BY_ALBUM) + { + item_handle = mp_media_info_group_list_nth_item(layout_data->album_handle, index); + ret = mp_media_info_group_get_main_info(item_handle, &name); + } else { ERROR_TRACE("never should be here..."); return; } - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); + mp_retm_if(ret != 0, "Fail to get value"); mp_retm_if(name == NULL, "Fail to get value"); } else { - ret = audio_svc_group_item_get_val(layout_data->svc_handle, index, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, - &name, &size, -1); + item_handle = mp_media_info_group_list_nth_item(layout_data->svc_handle, index); + ret = mp_media_info_group_get_main_info(item_handle, &name); + if (view_data->view_type == MP_VIEW_TYPE_FOLDER) + ret = mp_media_info_group_get_folder_id(item_handle, &folder_id); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); + mp_retm_if(ret != 0, "Fail to get value"); mp_retm_if(name == NULL, "Fail to get value"); } - DEBUG_TRACE("name: %s, type: %d", name, layout_data->group_type); Evas_Object *view_layout = NULL; - view_layout = _mp_group_create_detail_view_layout(view_data, name, layout_data->group_type); + if (view_data->view_type == MP_VIEW_TYPE_FOLDER && layout_data->view_mode != MP_VIEW_MODE_SEARCH) + { + view_layout = _mp_group_create_detail_view_layout(view_data, folder_id, layout_data->group_type); + } + else + { + view_layout = _mp_group_create_detail_view_layout(view_data, name, layout_data->group_type); + } mp_util_reset_genlist_mode_item(layout_data->genlist); @@ -198,25 +257,25 @@ mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_in } static void -_mp_group_view_push_group_content(view_data_t * view_data, Evas_Object * content) +_mp_group_view_set_title(view_data_t * view_data) { char *title = NULL; MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); - mp_view_manager_push_view_content(view_data, content, MP_VIEW_CONTENT_LIST); - if (view_data->view_type == MP_VIEW_TYPE_ALBUM) - title = GET_STR("IDS_MUSIC_TAB4_ALBUMS"); + title = "IDS_MUSIC_TAB4_ALBUMS"; else if (view_data->view_type == MP_VIEW_TYPE_ARTIST) - title = GET_STR("IDS_MUSIC_TAB4_ARTISTS"); + title = "IDS_MUSIC_TAB4_ARTISTS"; else if (view_data->view_type == MP_VIEW_TYPE_GENRE) - title = GET_STR("IDS_MUSIC_TAB4_GENRES"); + title = "IDS_MUSIC_TAB4_GENRES"; else if (view_data->view_type == MP_VIEW_TYPE_COMPOSER) - title = GET_STR("IDS_MUSIC_TAB4_COMPOSERS"); + title = "IDS_MUSIC_TAB4_COMPOSERS"; else if (view_data->view_type == MP_VIEW_TYPE_YEAR) - title = GET_STR("IDS_MUSIC_TAB4_YEARS"); + title = "IDS_MUSIC_TAB4_YEARS"; + else if (view_data->view_type == MP_VIEW_TYPE_FOLDER) + title = "IDS_MUSIC_TAB4_FOLDERS"; else DEBUG_TRACE("unexpected type: %d", view_data->view_type); @@ -234,6 +293,63 @@ _mp_group_view_push_item_content(view_data_t * view_data, Evas_Object * content, mp_view_manager_set_title_and_buttons(view_data, title, view_data); } +static void +_mp_group_view_playall_button_cb(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE_FUNC(); + + struct appdata *ad = NULL; + mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + + MP_CHECK(layout_data); + MP_CHECK_LAYOUT_DATA(layout_data); + ad = layout_data->ad; + + mp_media_info_h handle = data; + MP_CHECK(handle); + + int count = 0; + char *folder_id = NULL; + int ret = 0; + + /* get playlist name */ + ret = mp_media_info_group_get_folder_id(handle, &folder_id); + MP_CHECK(folder_id); + + /* get playlist data by name */ + mp_layout_data_t *layout_data_new = calloc(1, sizeof(mp_layout_data_t)); + MP_CHECK(layout_data_new); + MP_SET_LAYOUT_DATA_MAGIC(layout_data_new); + layout_data_new->ad = ad; + + layout_data_new->track_type = MP_TRACK_BY_FOLDER; + layout_data_new->type_str = folder_id; + + mp_media_info_list_count(MP_TRACK_BY_FOLDER, folder_id, NULL, NULL, 0, &count); + mp_media_info_list_create(&layout_data_new->svc_handle, + MP_TRACK_BY_FOLDER, folder_id, NULL, NULL, 0, 0, count); + + layout_data_new->item_count = count; + + mp_play_view_load_by_index(layout_data_new, 0, false); + + /* set the flag for update playlist view when back from playview */ + if (ad->playing_view != NULL) + { + ad->playing_view->b_play_all = true; + } + + if (layout_data_new->svc_handle) + { + mp_media_info_list_destroy(layout_data_new->svc_handle); + } + + free(layout_data_new); + + endfunc; +} + + Evas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part) { @@ -241,22 +357,65 @@ mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part) mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; MP_CHECK_NULL(item); - AudioHandleType *svc_item = (AudioHandleType *) (item->handle); + mp_media_info_h svc_item = (item->handle); mp_retv_if(svc_item == NULL, NULL); mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); MP_CHECK_LAYOUT_DATA(layout_data); char *thumb_name = NULL; - int size; - audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_THUMBNAIL_PATH, &thumb_name, &size, -1); + mp_media_info_group_get_thumbnail_path(svc_item, &thumb_name); if (!strcmp(part, "elm.icon")) { icon = mp_util_create_thumb_icon(obj, thumb_name, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE); } + Evas_Object *button; + if (!strcmp(part, "elm.slide.swallow.1")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/multiline"); + elm_object_text_set(button, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"); + evas_object_smart_callback_add(button, "clicked", mp_menu_add_to_playlist_cb, item->handle); + evas_object_data_set(button, "layout_data", layout_data); + return button; + } + else if (!strcmp(part, "elm.slide.swallow.2")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/multiline"); + elm_object_text_set(button, GET_STR("Play all")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "Play all"); + evas_object_smart_callback_add(button, "clicked", _mp_group_view_playall_button_cb, item->handle); + evas_object_data_set(button, "layout_data", layout_data); + return button; + } + else if (!g_strcmp0(part, "elm.icon.storage")) + { + char *folder = NULL; + icon = NULL; + int ret = mp_media_info_group_get_sub_info(svc_item, &folder); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + if (folder) { + const char *icon_path = NULL; + if (g_strstr_len(folder, strlen(MP_PHONE_ROOT_PATH), MP_PHONE_ROOT_PATH)) + icon_path = MP_ICON_STORAGE_PHONE; + else if (g_strstr_len(folder, strlen(MP_MMC_ROOT_PATH), MP_MMC_ROOT_PATH)) + icon_path = MP_ICON_STORAGE_MMC; + else + icon_path = MP_ICON_STORAGE_EXTERNAL; + + icon = elm_icon_add(obj); + MP_CHECK_NULL(icon); + elm_icon_file_set(icon, icon_path, NULL); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + return icon; + } + } + Evas_Object *check = NULL; if (elm_genlist_decorate_mode_get(obj) || layout_data->ad->b_add_tracks) @@ -277,40 +436,84 @@ char * mp_group_view_album_list_label_get(void *data, Evas_Object * obj, const char *part) { char *name = NULL; - int size = 0; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; MP_CHECK_NULL(item); - AudioHandleType *svc_item = (AudioHandleType *) (item->handle); + mp_media_info_h svc_item = (item->handle); mp_retv_if(svc_item == NULL, NULL); - if (!strcmp(part, "elm.text.1")) + if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1")) { - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_group_get_main_info(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); if (!name || !strlen(name)) name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); - return elm_entry_utf8_to_markup(name); + + if (!strcmp(part, "elm.text.1")) + return elm_entry_utf8_to_markup(name); + else + return g_strdup(name); } else if (!strcmp(part, "elm.text.2")) { - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_SUB_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_group_get_sub_info(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); if (!name || !strlen(name)) name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); - return strdup(name); + return g_strdup(name); } else if (!strcmp(part, "elm.text.3")) { int count = -1; - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_group_get_main_info(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + + ret = mp_media_info_list_count(MP_TRACK_BY_ALBUM, name, NULL, NULL, 0, &count); + mp_retvm_if(ret != 0, NULL, "Fail to get count"); + mp_retvm_if(count < 0, NULL, "Fail to get count"); + return g_strdup_printf("(%d)", count); + } - ret = audio_svc_count_list_item(item->media_svc_handle, AUDIO_SVC_TRACK_BY_ALBUM, name, "", "", "", &count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get count"); + DEBUG_TRACE("Unusing part: %s", part); + return NULL; +} + +static char * +_mp_group_view_folder_list_label_get(void *data, Evas_Object * obj, const char *part) +{ + char *name = NULL; + int ret = 0; + mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; + MP_CHECK_NULL(item); + mp_media_info_h svc_item = (item->handle); + mp_retv_if(svc_item == NULL, NULL); + + if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1")) + { + ret = mp_media_info_group_get_main_info(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + if (!name || !strlen(name)) + name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); + return strdup(name); + } + else if (!strcmp(part, "elm.text.2")) + { + ret = mp_media_info_group_get_sub_info(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + if (!name || !strlen(name)) + name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); + return mp_util_shorten_path(name); + } + else if (!strcmp(part, "elm.text.3")) + { + int count = -1; + ret = mp_media_info_group_get_folder_id(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + ret = mp_media_info_list_count(MP_TRACK_BY_FOLDER, name, NULL, NULL, 0, &count); + mp_retvm_if(ret != 0, NULL, "Fail to get count"); mp_retvm_if(count < 0, NULL, "Fail to get count"); return g_strdup_printf("(%d)", count); } @@ -323,20 +526,19 @@ char * mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part) { char *name = NULL; - int size = 0; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; MP_CHECK_NULL(item); - AudioHandleType *svc_item = (AudioHandleType *) (item->handle); + mp_media_info_h svc_item = (item->handle); mp_retv_if(svc_item == NULL, NULL); mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); MP_CHECK_NULL(layout_data); - if (!strcmp(part, "elm.text.1")) + if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1")) { - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_group_get_main_info(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); if (!name || !strlen(name)) name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); if(layout_data->filter_str) @@ -345,20 +547,22 @@ mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part) bool res = false; markup_name = (char *)mp_util_search_markup_keyword(name, layout_data->filter_str, &res); if(res) - return strdup(markup_name); - } else + return g_strdup(markup_name); + } else if (!strcmp(part, "elm.text.1")) return elm_entry_utf8_to_markup(name); + else + return g_strdup(name); } else if (!strcmp(part, "elm.text.2")) { int count = -1; - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_group_get_main_info(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); int list_type = _mp_group_view_get_list_type_by_group_type(item->group_type); DEBUG_TRACE("name: %s, list_type: %d", name, list_type); - ret = audio_svc_count_list_item(item->media_svc_handle, list_type, name, "", "", "", &count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get count"); + ret = mp_media_info_list_count(list_type, name, NULL, NULL, 0, &count); + mp_retvm_if(ret != 0, NULL, "Fail to get count"); mp_retvm_if(count < 0, NULL, "Fail to get count"); return g_strdup_printf("(%d)", count); } @@ -366,22 +570,50 @@ mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part) return NULL; } -static Elm_Genlist_Item_Class g_group_class_sweep = { - .item_style = "music_player/1icon.2text", - .func.text_get = mp_group_view_list_label_get, - .func.content_get = mp_group_view_icon_get, -}; - -static Elm_Genlist_Item_Class g_album_class_sweep = { - .item_style = "music_player/1icon.3text", - .func.text_get = mp_group_view_album_list_label_get, - .func.content_get = mp_group_view_icon_get, -}; - static mp_genlist_cb_t g_group_list_cbs = { .selected_cb = mp_group_view_group_list_select_cb, }; +static Elm_Genlist_Item_Class* +_mp_group_view_get_group_list_itec(mp_view_type_t view_type) +{ + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + MP_CHECK_NULL(itc); + + switch (view_type) { + case MP_VIEW_TYPE_ALBUM: + itc->item_style = "music_player/1icon.3text"; + itc->decorate_item_style = "mode/slide"; + itc->func.text_get = mp_group_view_album_list_label_get; + itc->func.content_get = mp_group_view_icon_get; + break; + + case MP_VIEW_TYPE_ARTIST: + case MP_VIEW_TYPE_GENRE: + case MP_VIEW_TYPE_COMPOSER: + case MP_VIEW_TYPE_YEAR: + itc->item_style = "music_player/1icon.2text"; + itc->decorate_item_style = "mode/slide"; + itc->func.text_get = mp_group_view_list_label_get; + itc->func.content_get = mp_group_view_icon_get; + break; + + case MP_VIEW_TYPE_FOLDER: + itc->item_style = "music_player/folder"; + itc->decorate_item_style = "mode/slide2"; + itc->func.text_get = _mp_group_view_folder_list_label_get; + itc->func.content_get = mp_group_view_icon_get; + break; + + default: + elm_genlist_item_class_free(itc); + itc = NULL; + } + + return itc; +} + + Evas_Object * mp_group_view_create(struct appdata *ad, mp_view_type_t view_type) { @@ -390,62 +622,60 @@ mp_group_view_create(struct appdata *ad, mp_view_type_t view_type) Elm_Genlist_Item_Class *itc; - Evas_Object *navibar = mp_widget_navigation_new(ad->ctrl_bar, ad); - - view_data_t *view_data = calloc(sizeof(view_data_t), 1); - MP_SET_VIEW_DATA_MAGIC(view_data); - view_data->ad = ad; - view_data->navibar = navibar; + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); view_data->view_type = view_type; + Evas_Object *view_layout = mp_view_layout_create(ad->tabbar, view_data, MP_VIEW_MODE_DEFAULT); - evas_object_data_set(navibar, "view_data", view_data); - Evas_Object *view_layout = mp_view_layout_create(navibar, view_data, MP_VIEW_MODE_DEFAULT); + mp_layout_data_t *layout_data = NULL; + layout_data = evas_object_data_get(view_layout, "layout_data"); + MP_CHECK_NULL(layout_data); + evas_object_data_set(ad->controlbar_layout, "layout_data", layout_data); if (view_type == MP_VIEW_TYPE_ALBUM) { DEBUG_TRACE("album view"); - list_type = AUDIO_SVC_GROUP_BY_ALBUM; - - itc = &g_album_class_sweep; + list_type = MP_GROUP_BY_ALBUM; } else if (view_type == MP_VIEW_TYPE_ARTIST) { DEBUG_TRACE("artist view"); - list_type = AUDIO_SVC_GROUP_BY_ARTIST; - itc = &g_group_class_sweep; + list_type = MP_GROUP_BY_ARTIST; } else if (view_type == MP_VIEW_TYPE_GENRE) { DEBUG_TRACE("genre view"); - list_type = AUDIO_SVC_GROUP_BY_GENRE; - itc = &g_group_class_sweep; + list_type = MP_GROUP_BY_GENRE; } else if (view_type == MP_VIEW_TYPE_COMPOSER) { DEBUG_TRACE("composer view"); - list_type = AUDIO_SVC_GROUP_BY_COMPOSER; - itc = &g_group_class_sweep; + list_type = MP_GROUP_BY_COMPOSER; } else if (view_type == MP_VIEW_TYPE_YEAR) { DEBUG_TRACE("year view"); - list_type = AUDIO_SVC_GROUP_BY_YEAR; - itc = &g_group_class_sweep; + list_type = MP_GROUP_BY_YEAR; + } + else if (view_type == MP_VIEW_TYPE_FOLDER) + { + DEBUG_TRACE("folder view"); + list_type = MP_GROUP_BY_FOLDER; } else { ERROR_TRACE("unexpected type: %d", view_type); - evas_object_del(navibar); return NULL; } + itc = _mp_group_view_get_group_list_itec(view_type); + mp_view_layout_set_layout_data(view_layout, MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_GROUP_LIST, MP_LAYOUT_GROUP_LIST_TYPE, list_type, MP_LAYOUT_LIST_CB, &g_group_list_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, itc, -1); - _mp_group_view_push_group_content(view_data, view_layout); + _mp_group_view_set_title(view_data); - return navibar; + return view_layout; } void diff --git a/src/view/mp-library.c b/src/view/mp-library.c index 67535fb..a480ee0 100755 --- a/src/view/mp-library.c +++ b/src/view/mp-library.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,9 +14,8 @@ * limitations under the License. */ - - #include "mp-library.h" +#include "mp-ta.h" #include "mp-setting-ctrl.h" #include "mp-player-debug.h" #include "mp-common.h" @@ -30,7 +29,7 @@ static void _mp_library_init(void *data); static Evas_Object *_mp_library_create_layout_main(Evas_Object * parent); -static Evas_Object *_mp_library_create_control_bar(struct appdata *ad); +static Evas_Object *_mp_library_create_tabbar(struct appdata *ad); static void _mp_library_controlbar_item_append(struct appdata *ad, mp_setting_menu_t * menu_state); static bool _mp_library_check_request_item(struct appdata *ad); @@ -52,10 +51,19 @@ _mp_library_create_layout_main(Evas_Object * parent) Evas_Object *layout; mp_retv_if(parent == NULL, NULL); + MP_TA_ACUM_ITEM_BEGIN(" elm_layout_add", 0); layout = elm_layout_add(parent); + MP_TA_ACUM_ITEM_END(" elm_layout_add", 0); mp_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n"); - elm_layout_theme_set(layout, "layout", "application", "default"); + MP_TA_ACUM_ITEM_BEGIN(" elm_layout_theme_set", 0); + const char *profile = elm_config_profile_get(); + mp_debug("elm_profile = %s", profile); + if (!g_strcmp0(profile, "desktop")) + elm_layout_theme_set(layout, "layout", "application", "noindicator"); + else + elm_layout_theme_set(layout, "layout", "application", "default"); + MP_TA_ACUM_ITEM_END(" elm_layout_theme_set", 0); evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(parent, layout); @@ -65,38 +73,43 @@ _mp_library_create_layout_main(Evas_Object * parent) } static Evas_Object * -_mp_library_create_control_bar(struct appdata *ad) +_mp_library_create_tabbar(struct appdata *ad) { Evas_Object *obj; - obj = elm_toolbar_add(ad->controlbar_layout); + /* create controlbar */ + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_add()", 0); + + obj = elm_toolbar_add(ad->naviframe); elm_toolbar_shrink_mode_set(obj, ELM_TOOLBAR_SHRINK_EXPAND); - mp_retvm_if(obj == NULL, NULL, "Fail to create control bar"); - elm_object_style_set(obj, "music/tabbar"); elm_toolbar_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_ALWAYS); + elm_object_style_set(obj, "tabbar"); + MP_TA_ACUM_ITEM_END(" elm_toolbar_add()", 0); + mp_retvm_if(obj == NULL, NULL, "Fail to create control bar"); + + MP_TA_ACUM_ITEM_BEGIN(" mp_setting_menu_get_state", 0); mp_setting_menu_t menu_state; mp_setting_menu_get_state(&menu_state); + MP_TA_ACUM_ITEM_END(" mp_setting_menu_get_state", 0); - ad->ctrl_bar = obj; + ad->tabbar = obj; + MP_TA_ACUM_ITEM_BEGIN(" _mp_library_controlbar_item_append", 0); _mp_library_controlbar_item_append(ad, &menu_state); + MP_TA_ACUM_ITEM_END(" _mp_library_controlbar_item_append", 0); evas_object_show(obj); - elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.controlbar", obj); - return obj; } +// update menu when menu changed while bgm. static void _mp_library_menu_changed(mp_setting_menu_t * menu_state, void *data) { struct appdata *ad = (struct appdata *)data; - Evas_Object *obj; - obj = ad->ctrl_bar; - MP_CHECK(ad->library->ctltab_songs); - MP_CHECK(obj); + MP_CHECK(ad->tabbar); DEBUG_TRACE("loadtype=%d", ad->loadtype); if (ad->loadtype == LOAD_TRACK) @@ -105,12 +118,19 @@ _mp_library_menu_changed(mp_setting_menu_t * menu_state, void *data) return; } - ad->music_setting_change_flag = true; + //set data from music setting ad->library->albums = menu_state->albums; ad->library->artists = menu_state->artists; ad->library->genres = menu_state->genres; ad->library->composers = menu_state->composers; ad->library->years = menu_state->years; + ad->library->folders = menu_state->folders; + + if (ad->setting_ug) { + mp_debug("setting ug on playing view.. reserve menu change"); + ad->music_setting_change_flag = true; + return; + } mp_util_set_library_controlbar_items(ad); } @@ -122,38 +142,83 @@ _mp_library_controlbar_item_append(struct appdata *ad, mp_setting_menu_t * menu_ Evas_Object *obj; - obj = ad->ctrl_bar; + obj = ad->tabbar; + ad->library->first_append = true; + MP_TA_ACUM_ITEM_BEGIN(" CONTROLBAR_SYSTEM_ICON_SONGS", 0); ad->library->ctltab_songs = elm_toolbar_item_append(obj, MP_CTRBAR_ICON_SONGS, GET_STR(STR_MP_ALL_TRACKS), mp_library_view_change_cb, ad); + mp_language_mgr_register_object_item(ad->library->ctltab_songs, STR_MP_ALL_TRACKS); + MP_TA_ACUM_ITEM_END(" CONTROLBAR_SYSTEM_ICON_SONGS", 0); + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_item_append", 0); + ad->library->first_append = false; ad->library->ctltab_plist = elm_toolbar_item_append(obj, MP_CTRBAR_ICON_PLAYLIST, GET_STR(STR_MP_PLAYLISTS), mp_library_view_change_cb, ad); + mp_language_mgr_register_object_item( ad->library->ctltab_plist,STR_MP_PLAYLISTS); + MP_TA_ACUM_ITEM_END(" elm_toolbar_item_append", 0); + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_item_append", 0); if (menu_state->albums) + { ad->library->ctltab_album = elm_toolbar_item_append(obj, MP_CTRBAR_ICON_ALBUM, GET_STR(STR_MP_ALBUMS), mp_library_view_change_cb, ad); - + mp_language_mgr_register_object_item( ad->library->ctltab_album, STR_MP_ALBUMS); + } + MP_TA_ACUM_ITEM_END(" elm_toolbar_item_append", 0); + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_item_append", 0); if (menu_state->artists) + { ad->library->ctltab_artist = elm_toolbar_item_append(obj, MP_CTRBAR_ICON_ARTIST, GET_STR(STR_MP_ARTISTS), mp_library_view_change_cb, ad); - + mp_language_mgr_register_object_item( ad->library->ctltab_artist, STR_MP_ARTISTS); + } + MP_TA_ACUM_ITEM_END(" elm_toolbar_item_append", 0); + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_item_append", 0); if (menu_state->genres) + { ad->library->ctltab_genres = elm_toolbar_item_append(obj, MP_CTRBAR_ICON_GENRE, GET_STR(STR_MP_GENRES), mp_library_view_change_cb, ad); - + mp_language_mgr_register_object_item( ad->library->ctltab_genres, STR_MP_GENRES); + } + MP_TA_ACUM_ITEM_END(" elm_toolbar_item_append", 0); + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_item_append", 0); if (menu_state->composers) + { ad->library->ctltab_composer = elm_toolbar_item_append(obj, MP_CTRBAR_ICON_COMPOSER, GET_STR(STR_MP_COMPOSERS), mp_library_view_change_cb, ad); - + mp_language_mgr_register_object_item( ad->library->ctltab_composer,STR_MP_COMPOSERS); + } + MP_TA_ACUM_ITEM_END(" elm_toolbar_item_append", 0); + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_item_append", 0); if (menu_state->years) + { ad->library->ctltab_year = elm_toolbar_item_append(obj, MP_CTRBAR_ICON_YEAR, GET_STR(STR_MP_YEARS), mp_library_view_change_cb, ad); + mp_language_mgr_register_object_item( ad->library->ctltab_year, STR_MP_YEARS); + } + MP_TA_ACUM_ITEM_END(" elm_toolbar_item_append", 0); + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_item_append", 0); + if (menu_state->folders) + { + ad->library->ctltab_folder = + elm_toolbar_item_append(obj, MP_CTRBAR_ICON_FOLDER, GET_SYS_STR(STR_MP_FOLDERS), mp_library_view_change_cb, ad); + mp_language_mgr_register_object_item(ad->library->ctltab_folder, STR_MP_FOLDERS); + } + MP_TA_ACUM_ITEM_END(" elm_toolbar_item_append", 0); mp_setting_menu_set_callback(_mp_library_menu_changed, ad); } +/** + * load view use for _mp_library_view_change_cb + * + * @param void *data, Evas_Object* navi_bar + * @return FALSE or TRUE if it success create + * @author aramie.kim@samsung.com + */ + static bool _mp_library_load_request_view(void *data, Evas_Object * navi_bar) { @@ -169,12 +234,14 @@ _mp_library_load_request_view(void *data, Evas_Object * navi_bar) mp_debug("group name = %s", ad->request_group_name); mp_group_view_create_by_group_name(navi_bar, ad->request_group_name, ad->request_group_type); IF_FREE(ad->request_group_name); + ad->update_default_view = TRUE; } else if (ad->request_play_id > -1) { mp_debug("play list id = %d", ad->request_play_id); mp_playlist_view_create_by_id(navi_bar, ad->request_play_id); ad->request_play_id = -1; + ad->update_default_view = TRUE; } else { @@ -187,66 +254,126 @@ _mp_library_load_request_view(void *data, Evas_Object * navi_bar) return true; } +static Elm_Object_Item * +_mp_library_get_request_control_item(struct appdata *ad) +{ + Elm_Object_Item *select_request_item = NULL; + + if (ad->loadtype == LOAD_DEFAULT) + { + select_request_item = ad->library->ctltab_songs; + } + else if (ad->loadtype == LOAD_PLAYLIST) + { + select_request_item = ad->library->ctltab_plist; + } + else if (ad->loadtype == LOAD_GROUP) + { + mp_setting_menu_t menu_state; + mp_setting_menu_get_state(&menu_state); + + if (ad->request_group_type == MP_GROUP_BY_ARTIST) + { + if (menu_state.artists) + select_request_item = ad->library->ctltab_artist; + } + else if (ad->request_group_type == MP_GROUP_BY_ALBUM) + { + if (menu_state.albums) + select_request_item = ad->library->ctltab_album; + } + else if (ad->request_group_type == MP_GROUP_BY_GENRE) + { + if (menu_state.genres) + select_request_item = ad->library->ctltab_genres; + } + else if (ad->request_group_type == MP_GROUP_BY_COMPOSER) + { + if (menu_state.composers) + select_request_item = ad->library->ctltab_composer; + } + else if (ad->request_group_type == MP_GROUP_BY_YEAR) + { + if (menu_state.years) + select_request_item = ad->library->ctltab_year; + } + else if (ad->request_group_type == MP_GROUP_BY_FOLDER) + { + if (menu_state.folders) + select_request_item = ad->library->ctltab_folder; + } + else + { + mp_error("can not support that value"); + } + } + + return select_request_item; +} + + static void _mp_library_show_selected_view(struct appdata *ad, const char *label) { MP_CHECK(ad); - MP_CHECK(ad->library); MP_CHECK(label); - Evas_Object *navi_bar = NULL; + Evas_Object *content = NULL; view_data_t *view_data = NULL; + mp_layout_data_t *layout_data = NULL; - DEBUG_TRACE("label: %s", label); + DEBUG_TRACE("selected view: %s", label); - if (ad->notify != NULL) - { - evas_object_del(ad->notify); - } - if (ad->notify_layout != NULL) - { - evas_object_del(ad->notify_layout); - } + mp_evas_object_del(ad->notify); + mp_evas_object_del(ad->notify_layout); - ad->notify = NULL; - ad->notify_layout = NULL; + content = elm_object_part_content_unset(ad->controlbar_layout, "elm.swallow.content"); - if (ad->library->cur_view) + if (content) { + DEBUG_TRACE("destory previous view"); mp_view_manager_unswallow_info_ug_layout(ad); - evas_object_del(ad->library->cur_view); - ad->library->cur_view = NULL; - mp_view_manager_clear(ad); + evas_object_del(content); + content = NULL; } if (!strcmp(label, GET_STR(STR_MP_ALL_TRACKS))) { - navi_bar = mp_track_view_create(ad); - mp_track_view_update_title_button(navi_bar); + MP_TA_ACUM_ITEM_BEGIN(" mp_track_view_create", 0); + content = mp_track_view_create(ad); + MP_TA_ACUM_ITEM_END(" mp_track_view_create", 0); + MP_TA_ACUM_ITEM_BEGIN(" mp_track_view_update_title_button", 0); + mp_track_view_update_title_button(ad->naviframe); + MP_TA_ACUM_ITEM_END(" mp_track_view_update_title_button", 0); } else if (!strcmp(label, GET_STR(STR_MP_ALBUMS))) { - navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_ALBUM); + content = mp_group_view_create(ad, MP_VIEW_TYPE_ALBUM); } else if (!strcmp(label, GET_STR(STR_MP_ARTISTS))) { - navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_ARTIST); + content = mp_group_view_create(ad, MP_VIEW_TYPE_ARTIST); } else if (!strcmp(label, GET_STR(STR_MP_GENRES))) { - navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_GENRE); + content = mp_group_view_create(ad, MP_VIEW_TYPE_GENRE); } else if (!strcmp(label, GET_STR(STR_MP_YEARS))) { - navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_YEAR); + content = mp_group_view_create(ad, MP_VIEW_TYPE_YEAR); } else if (!strcmp(label, GET_STR(STR_MP_COMPOSERS))) { - navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_COMPOSER); + content = mp_group_view_create(ad, MP_VIEW_TYPE_COMPOSER); } + else if (!strcmp(label, GET_SYS_STR(STR_MP_FOLDERS))) + { + content = mp_group_view_create(ad, MP_VIEW_TYPE_FOLDER); + } + else if (!strcmp(label, GET_STR(STR_MP_PLAYLISTS))) { - navi_bar = mp_playlist_view_create(ad, MP_VIEW_TYPE_PLAYLIST); + content = mp_playlist_view_create(ad, MP_VIEW_TYPE_PLAYLIST); } else { @@ -254,44 +381,55 @@ _mp_library_show_selected_view(struct appdata *ad, const char *label) return; } + MP_CHECK(content); + + layout_data = evas_object_data_get(content, "layout_data"); + MP_CHECK(layout_data); + if (strcmp(label, GET_STR(STR_MP_ALL_TRACKS))) { ad->b_add_tracks = FALSE; } - elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.content", navi_bar); - ad->library->cur_view = navi_bar; + elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.content", content); + mp_view_layout_update(content); - if (!_mp_library_load_request_view(ad, navi_bar)) + if (!_mp_library_load_request_view(ad, ad->naviframe)) { DEBUG_TRACE("Update default layout..."); - view_data = (view_data_t *) evas_object_data_get(ad->library->cur_view, "view_data"); + view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); - Evas_Object *view_layout = mp_view_manager_get_last_view_layout(ad); if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST) { - mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data"); - if (layout_data) - mp_playlist_view_update_navibutton(layout_data); + mp_playlist_view_update_navibutton(layout_data); } - - mp_view_layout_update(view_layout); } - evas_object_show(navi_bar); + evas_object_show(content); } -void -mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info) +void mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info) { struct appdata *ad = (struct appdata *)data; Elm_Object_Item *it; + view_data_t *view_data = mp_util_get_view_data(ad); MP_CHECK(ad); DEBUG_TRACE_FUNC(); + if (ad->library->first_append && ad->launch_type == MP_LAUNCH_ADD_TO_HOME) { + WARN_TRACE("add to home.. first view change"); + ad->library->first_append = false; + return; + } + + if(mp_view_manager_count_view_content(view_data) > 1) + { + DEBUG_TRACE("pop to first view"); + mp_view_manager_pop_view_content(view_data, true, true); + } it = elm_toolbar_selected_item_get(obj); mp_retm_if(it == NULL, "tab item is NULL"); const char *label = elm_object_item_text_get(it); @@ -303,58 +441,6 @@ mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info) } -static Elm_Object_Item * -_mp_library_get_request_control_item(struct appdata *ad) -{ - Elm_Object_Item *select_request_item = NULL; - - if (ad->loadtype == LOAD_DEFAULT) - { - select_request_item = ad->library->ctltab_songs; - } - else if (ad->loadtype == LOAD_PLAYLIST) - { - select_request_item = ad->library->ctltab_plist; - } - else if (ad->loadtype == LOAD_GROUP) - { - mp_setting_menu_t menu_state; - mp_setting_menu_get_state(&menu_state); - - if (ad->request_group_type == AUDIO_SVC_GROUP_BY_ARTIST) - { - if (menu_state.artists) - select_request_item = ad->library->ctltab_artist; - } - else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_ALBUM) - { - if (menu_state.albums) - select_request_item = ad->library->ctltab_album; - } - else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_GENRE) - { - if (menu_state.genres) - select_request_item = ad->library->ctltab_genres; - } - else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_COMPOSER) - { - if (menu_state.composers) - select_request_item = ad->library->ctltab_composer; - } - else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_YEAR) - { - if (menu_state.years) - select_request_item = ad->library->ctltab_year; - } - else - { - mp_error("can not support that value"); - } - } - - return select_request_item; -} - static bool _mp_library_check_request_item(struct appdata *ad) { @@ -362,58 +448,78 @@ _mp_library_check_request_item(struct appdata *ad) char *popup_text = NULL; int count = -1; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; MP_CHECK_FALSE(ad); if (!ad->request_group_name && ad->request_play_id > -1) { - char plst_name[AUDIO_SVC_PLAYLIST_NAME_SIZE] = ""; - ret = audio_svc_get_playlist_name_by_playlist_id(ad->media_svc_handle, ad->request_play_id, plst_name, - AUDIO_SVC_PLAYLIST_NAME_SIZE); + int i = 0; + mp_media_list_h list = NULL; + + ret = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count); + MP_CHECK_FALSE(ret == 0); + + ret = mp_media_info_group_list_create(&list, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count); + MP_CHECK_FALSE(ret == 0); + + for(i=0; irequest_play_id) + { + break; + } + } - if (!(ret == AUDIO_SVC_ERROR_NONE && g_strcmp0(plst_name, ""))) + if (i == count) { IF_FREE(ad->request_group_name); ad->request_play_id = -1; mp_error("removed play list"); - popup_text = g_strdup_printf(GET_STR("IDS_MUSIC_BODY_NO_PLAYLISTS")); + popup_text = g_strdup(GET_STR("IDS_MUSIC_BODY_NO_PLAYLISTS")); } } else if (ad->request_group_name) { - audio_svc_track_type_e list_type = AUDIO_SVC_TRACK_ALL; + mp_track_type_e list_type = MP_TRACK_ALL; switch (ad->request_group_type) { - case AUDIO_SVC_GROUP_BY_ALBUM: + case MP_GROUP_BY_ALBUM: DEBUG_TRACE("create album detail view"); - list_type = AUDIO_SVC_TRACK_BY_ALBUM; + list_type = MP_TRACK_BY_ALBUM; break; - case AUDIO_SVC_GROUP_BY_ARTIST: + case MP_GROUP_BY_ARTIST: DEBUG_TRACE("create artist detail view"); - list_type = AUDIO_SVC_TRACK_BY_ARTIST; + list_type = MP_TRACK_BY_ARTIST; break; - case AUDIO_SVC_GROUP_BY_GENRE: + case MP_GROUP_BY_GENRE: DEBUG_TRACE("create genre detail view"); - list_type = AUDIO_SVC_TRACK_BY_GENRE; + list_type = MP_TRACK_BY_GENRE; break; - case AUDIO_SVC_GROUP_BY_YEAR: + case MP_GROUP_BY_YEAR: DEBUG_TRACE("create year detail view"); - list_type = AUDIO_SVC_TRACK_BY_YEAR; + list_type = MP_TRACK_BY_YEAR; break; - case AUDIO_SVC_GROUP_BY_COMPOSER: + case MP_GROUP_BY_COMPOSER: DEBUG_TRACE("create composer detail view"); - list_type = AUDIO_SVC_TRACK_BY_COMPOSER; + list_type = MP_TRACK_BY_COMPOSER; + break; + case MP_GROUP_BY_FOLDER: + DEBUG_TRACE("create folder detail view"); + list_type = MP_TRACK_BY_FOLDER; break; default: break; } - ret = audio_svc_count_list_item(ad->media_svc_handle, list_type, ad->request_group_name, NULL, NULL, NULL, &count); - + ret = mp_media_info_list_count(list_type, ad->request_group_name, NULL, NULL, 0, &count); mp_debug("group cout %d", count); - if (!(ret == AUDIO_SVC_ERROR_NONE && count > 0)) + if (!(ret == 0 && count > 0)) { mp_error("removed group"); char *fmt = GET_STR("IDS_MUSIC_POP_PS_REMOVED"); @@ -432,14 +538,14 @@ _mp_library_check_request_item(struct appdata *ad) { mp_error("removed file"); IF_FREE(ad->request_playing_path); - popup_text = g_strdup(GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST")); + popup_text = g_strdup_printf(GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST")); } } if (popup_text) { mp_widget_text_popup(ad, popup_text); - IF_FREE(popup_text); + free(popup_text); return false; } @@ -451,26 +557,30 @@ _mp_library_get_control_tab_label(struct appdata *ad) { MP_CHECK_NULL(ad); char *label = NULL; - if (ad->request_group_type == AUDIO_SVC_GROUP_BY_ARTIST) + if (ad->request_group_type == MP_GROUP_BY_ARTIST) { label = GET_STR(STR_MP_ARTISTS); } - else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_ALBUM) + else if (ad->request_group_type == MP_GROUP_BY_ALBUM) { label = GET_STR(STR_MP_ALBUMS); } - else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_GENRE) + else if (ad->request_group_type == MP_GROUP_BY_GENRE) { label = GET_STR(STR_MP_GENRES); } - else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_COMPOSER) + else if (ad->request_group_type == MP_GROUP_BY_COMPOSER) { label = GET_STR(STR_MP_COMPOSERS); } - else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_YEAR) + else if (ad->request_group_type == MP_GROUP_BY_YEAR) { label = GET_STR(STR_MP_YEARS); } + else if (ad->request_group_type == MP_GROUP_BY_FOLDER) + { + label = GET_SYS_STR(STR_MP_FOLDERS); + } else { mp_error("can not support that value"); @@ -478,6 +588,14 @@ _mp_library_get_control_tab_label(struct appdata *ad) return label; } +/** + * load library use for add to home case + * + * @param struct appdata *ad, char *path, int fid + * @return FALSE or TRUE if it success create + * @author aramie.kim@samsung.com + */ + bool mp_library_load(struct appdata * ad) { @@ -491,13 +609,14 @@ mp_library_load(struct appdata * ad) } else { + //Select current tab Elm_Object_Item *selected_item = NULL; Elm_Object_Item *select_request_item = NULL; - if (!ad->ctrl_bar) - _mp_library_create_control_bar(ad); + if (!ad->tabbar) + _mp_library_create_tabbar(ad); else - selected_item = elm_toolbar_selected_item_get(ad->ctrl_bar); + selected_item = elm_toolbar_selected_item_get(ad->tabbar); select_request_item = _mp_library_get_request_control_item(ad); @@ -505,14 +624,15 @@ mp_library_load(struct appdata * ad) { view_data_t *view_data = NULL; - if (ad->library->cur_view) + if (ad->naviframe) { - view_data = evas_object_data_get(ad->library->cur_view, "view_data"); + //clear all item + view_data = evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK_FALSE(view_data); MP_CHECK_VIEW_DATA(view_data); mp_view_manager_pop_view_content(view_data, TRUE, TRUE); - _mp_library_load_request_view(ad, ad->library->cur_view); + _mp_library_load_request_view(ad, ad->naviframe); } else mp_error("invalid cur_view"); @@ -528,7 +648,7 @@ mp_library_load(struct appdata * ad) { char *label = _mp_library_get_control_tab_label(ad); MP_CHECK_FALSE(label); - _mp_library_show_selected_view(ad, label); + elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE); } else ERROR_TRACE("It shouldn't be here.."); @@ -546,18 +666,42 @@ mp_library_create(struct appdata *ad) { startfunc; + Evas_Object *tabbar = NULL; + view_data_t *view_data = NULL; + + //init _mp_library_init(ad); + //create layout_main + MP_TA_ACUM_ITEM_BEGIN(" _mp_library_create_layout_main", 0); ad->base_layout_main = _mp_library_create_layout_main(ad->win_main); mp_retm_if(ad->base_layout_main == NULL, "library view layout is not initialized"); + MP_TA_ACUM_ITEM_END(" _mp_library_create_layout_main", 0); - ad->controlbar_layout = mp_common_load_edj(ad->base_layout_main, EDJ_NAME, "control_layout"); + ad->naviframe = mp_widget_navigation_new(ad->base_layout_main, ad); + + view_data = calloc(sizeof(view_data_t), 1); + MP_SET_VIEW_DATA_MAGIC(view_data); + view_data->ad = ad; + view_data->navibar = ad->naviframe; + + evas_object_data_set(ad->naviframe, "view_data", view_data); + + MP_TA_ACUM_ITEM_BEGIN(" elm_layout_add", 0); + ad->controlbar_layout = elm_layout_add(ad->base_layout_main); MP_CHECK(ad->controlbar_layout); - mp_library_controlbar_visible_set(ad, true); + elm_layout_theme_set(ad->controlbar_layout, "layout", "tabbar", "default"); + MP_TA_ACUM_ITEM_END(" elm_layout_add", 0); - elm_object_part_content_set(ad->base_layout_main, "elm.swallow.content", ad->controlbar_layout); + mp_view_manager_push_view_content(view_data, ad->controlbar_layout, MP_VIEW_CONTENT_LIST); - _mp_library_create_control_bar(ad); + elm_object_part_content_set(ad->base_layout_main, "elm.swallow.content", ad->naviframe); + + //create control tab + MP_TA_ACUM_ITEM_BEGIN(" _mp_library_create_tabbar", 0); + tabbar = _mp_library_create_tabbar(ad); + elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.tabbar", tabbar); + MP_TA_ACUM_ITEM_END(" _mp_library_create_tabbar", 0); if(ad->loadtype == LOAD_TRACK) { @@ -566,9 +710,13 @@ mp_library_create(struct appdata *ad) } Elm_Object_Item *reqeust_item = _mp_library_get_request_control_item(ad); + + //select tabbar item if (reqeust_item) { + MP_TA_ACUM_ITEM_BEGIN(" elm_toolbar_item_selected_set", 0); elm_toolbar_item_selected_set(reqeust_item, EINA_TRUE); + MP_TA_ACUM_ITEM_END(" elm_toolbar_item_selected_set", 0); } else { @@ -587,11 +735,9 @@ void mp_library_update_view(struct appdata *ad) { MP_CHECK(ad); - MP_CHECK(ad->library); - Evas_Object *cur_view = ad->library->cur_view; - MP_CHECK(ad->library->cur_view); + MP_CHECK(ad->naviframe); - view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data"); + view_data_t *cur_view_data = evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK(cur_view_data); MP_CHECK_VIEW_DATA(cur_view_data); @@ -604,7 +750,7 @@ mp_library_now_playing_hide(struct appdata *ad) if (ad->show_now_playing) { ad->show_now_playing = FALSE; - view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->library->cur_view, "view_data"); + view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); @@ -615,7 +761,7 @@ mp_library_now_playing_hide(struct appdata *ad) void mp_library_now_playing_set(struct appdata *ad) { - view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->library->cur_view, "view_data"); + view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); @@ -627,13 +773,4 @@ mp_library_now_playing_set(struct appdata *ad) mp_view_manager_set_now_playing(view_data, TRUE); } -void -mp_library_controlbar_visible_set(struct appdata *ad, bool visible) -{ - MP_CHECK(ad); - if(visible) - edje_object_signal_emit(_EDJ(ad->controlbar_layout), "show.control", "music_app"); - else - edje_object_signal_emit(_EDJ(ad->controlbar_layout), "hide.control", "music_app"); -} diff --git a/src/view/mp-play-view.c b/src/view/mp-play-view.c index 837ad03..6dd430e 100755 --- a/src/view/mp-play-view.c +++ b/src/view/mp-play-view.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,7 +14,6 @@ * limitations under the License. */ - #include #include "music.h" #include "mp-play-view.h" @@ -24,32 +23,66 @@ #include "mp-player-drm.h" #include "mp-smart-event-box.h" #include "mp-file-tag-info.h" -#include "mp-common.h" #include "mp-player-mgr.h" #include "mp-player-debug.h" #include "mp-play-list.h" #include "mp-util.h" -#include "mp-library.h" #include "mp-app.h" #include "mp-menu.h" #include "mp-widget.h" #include "mp-popup.h" +#include "mp-ug-launch.h" #include "mp-streaming-mgr.h" +#include "mp-minicontroller.h" +#include "mp-setting-ctrl.h" + +#ifdef MP_SOUND_PLAYER +#include "sp-view-manager.h" +#else +#include "mp-common.h" +#include "mp-library.h" +#endif + +#ifndef ABS +#define ABS(x) ((x) < 0 ? -(x) : (x)) +#endif + +#define MAIN_W 480 +#define MAIN_H 800 + +#define HD_SCREEN_WIDTH 720.0 +#define HD_INFO_RIGHT_WIDTH 550.0 #define HD_ALBUM_IMAGE_H_SCALE 720/1280 +#define PROGRESS_BAR_POSITION 20 /*80 */ +#define LS_PROGRESS_BAR_POSITION 340 /*400 */ + #define CTR_EDJ_SIG_SRC "ctrl_edj" #define CTR_PROG_SIG_SRC "ctrl_prog" #define PLAYVIEW_TRANSIT_TIME (0.35) #define FAVOUR_LONG_PRESS_TIME (1.5) +#define ALBUMART_IMAGE_COLOR 160 +#define ALBUMART_IMAGE_SHADOW_RGBA 60, 60, 60, 123 +#define ALBUMART_IMAGE_SHADOW_RGBA1 100, 100, 100, 123 +#define ALBUMART_IMAGE_SHADOW_RGBA2 0, 0, 0, 123 +#define EVAS_OBJ_SHOW(obj) if(obj){evas_object_show(obj);} +#define EVAS_OBJ_HIDE(obj) if(obj){evas_object_hide(obj);} +#define EVAS_OBJ_MOVE(obj, x, y) if(obj){evas_object_move(obj, x, y);} +static void _mp_play_view_set_album_art(void *data, char *file_path); +static void _mp_play_view_album_art_update(void *data); +Evas_Object *_mp_play_view_create_bg_map(void *data, Evas_Object * parents, music_list_item * current_item); + static void _mp_play_progress_val_set(void *data, double position); static bool _mp_play_view_init_progress_bar(void *data); static bool _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_left); static void _mp_play_view_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_info); static Evas_Object *_mp_play_view_create_ctrl_layout(void *data, Evas_Object * parents, Evas_Object ** progress, bool remove_signal); +#ifndef MP_SOUND_PLAYER static void _mp_play_view_start_request(void *data, Evas_Object * obj, void *event_info); +#endif static void _mp_play_view_glist_free_cb(gpointer data); @@ -69,18 +102,28 @@ _mp_play_view_init(void *data) playing_view->layout = NULL; playing_view->play_view = NULL; playing_view->play_control = NULL; - playing_view->play_menu = NULL; //information, shuffle, repeat + playing_view->play_menu = NULL; //information, srs, shuffle, repeat playing_view->play_progressbar = NULL; playing_view->play_info = NULL; + playing_view->albumart_img = NULL; playing_view->albumart_bg = NULL; + playing_view->albumart_image_reflection = NULL; + playing_view->pre_albumart_image_reflection = NULL; playing_view->flick_direction = 0; ad->volume_long_pressed = false; playing_view->play_view_next = NULL; + playing_view->x = 0; + playing_view->y = 0; + playing_view->favour_longpress = 0; + playing_view->favourite_timer = NULL; playing_view->progressbar_timer = NULL; + playing_view->play_view_screen_mode = MP_SCREEN_MODE_PORTRAIT; + playing_view->transition_state = false; + playing_view->b_play_all = false; endfunc; @@ -102,8 +145,11 @@ mp_play_view_back_clicked_cb(void *data, Evas_Object * obj, void *event_info) mp_evas_object_del(ad->playing_view->play_icon); { - MP_CHECK(ad->library); - view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data"); +#ifdef MP_SOUND_PLAYER + mp_play_view_unswallow_info_ug_layout(ad); + sp_view_mgr_pop_view_content(ad->view_mgr, FALSE); +#else + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK(view_data); mp_view_manager_pop_view_content(view_data, FALSE, FALSE); @@ -112,6 +158,7 @@ mp_play_view_back_clicked_cb(void *data, Evas_Object * obj, void *event_info) mp_util_set_library_controlbar_items(ad); ad->music_setting_change_flag = false; } +#endif } if (ad->buffering_popup) mp_streaming_mgr_buffering_popup_control(ad, false); @@ -144,12 +191,50 @@ mp_play_view_info_back_cb(void *data, Evas_Object * obj, void *event_info) struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress"); + ad->info_click_flag = FALSE; mp_playing_view *playing_view = ad->playing_view; - _mp_play_view_clear_animator(ad); - view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data"); - mp_view_manager_pop_view_content(view_data, FALSE, FALSE); - if (playing_view) - playing_view->play_info = NULL; + //show albumart_image_reflection + if (playing_view && playing_view->albumart_image_reflection) + { + evas_object_show(playing_view->albumart_image_reflection); + evas_object_show(playing_view->albumart_image); + } + if(ad->info_ug) + { + int first_view = (int)evas_object_data_get(ad->info_ug_layout, "first_view"); + if(first_view) + { + ad->info_back_play_view_flag = TRUE; +#ifdef MP_SOUND_PLAYER + mp_play_view_unswallow_info_ug_layout(ad); + sp_view_mgr_pop_view_content(ad->view_mgr, FALSE); +#else + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); + mp_view_manager_pop_view_content(view_data, FALSE, FALSE); +#endif + if (playing_view) + playing_view->play_info = NULL; + } + else + { + ad->info_back_play_view_flag = FALSE; + mp_ug_send_message(ad, MP_UG_MESSAGE_BACK); + } + } + else + { + _mp_play_view_clear_animator(ad); + ad->info_back_play_view_flag = TRUE; +#ifdef MP_SOUND_PLAYER + mp_play_view_unswallow_info_ug_layout(ad); + sp_view_mgr_pop_view_content(ad->view_mgr, FALSE); +#else + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); + mp_view_manager_pop_view_content(view_data, FALSE, FALSE); +#endif + if (playing_view) + playing_view->play_info = NULL; + } endfunc; return; } @@ -175,17 +260,26 @@ static char * _mp_play_view_info_gl_label_get(void *data, Evas_Object * obj, const char *part) { mp_media_info_t *info = (mp_media_info_t *)data; + char *text; if (!g_strcmp0(part, "elm.text.1")) { MP_CHECK_NULL(info); DEBUG_TRACE("%s", info->header); - return g_strdup(info->header); + if(info->header && strstr(info->header, "IDS_COM")) + text = GET_SYS_STR(info->header); + else + text = GET_STR(info->header); + return g_strdup(text); } else if (!g_strcmp0(part, "elm.text.2")) { MP_CHECK_NULL(info); - return elm_entry_utf8_to_markup(info->detail); + if(info->detail && strstr(info->detail, "IDS_COM")) + text = GET_SYS_STR(info->detail); + else + text = GET_STR(info->detail); + return g_strdup(text); } return NULL; @@ -202,6 +296,9 @@ _mp_play_view_info_gl_item_del(void *data, Evas_Object * obj) } static Elm_Genlist_Item_Class info_view_info_item_class = { + .version = ELM_GENGRID_ITEM_CLASS_VERSION, + .refcount = 0, + .delete_me = EINA_FALSE, .item_style = "multiline/music_player/info", .func.text_get = _mp_play_view_info_gl_label_get, .func.del = _mp_play_view_info_gl_item_del, @@ -229,6 +326,8 @@ _ecore_animator_cb(void *data) if(item) elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + mp_language_mgr_register_genlist_item(item); + ad->minfo_list = g_list_delete_link(ad->minfo_list, ad->minfo_list); return EINA_TRUE; } @@ -269,6 +368,32 @@ _mp_play_view_glist_free_cb(gpointer data) _mp_play_view_info_gl_item_del(data, NULL); } +static void +_mp_play_view_append_drm_info(Evas_Object *genlist, const char *path) +{ + startfunc; + MP_CHECK(genlist); + MP_CHECK(path); + + GList *rs_list = mp_drm_get_right_status(path); + if (rs_list) { + mp_debug("show right_status"); + GList *current = rs_list; + while (current) { + mp_drm_right_status_t *rs = current->data; + if (rs) + _mp_play_view_create_info_item(genlist, + rs->type, + rs->validity); + + current = current->next; + } + + mp_drm_free_right_status(rs_list); + rs_list = NULL; + } +} + static Evas_Object * _mp_play_view_create_info_detail(Evas_Object * parent, void *data) { @@ -280,24 +405,26 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) int ret = 0; Evas_Object *genlist; - AudioHandleType *svc_audio_item; + mp_media_info_h svc_audio_item; char *pathname = NULL, *title = NULL, *album = NULL, *artist = NULL, *thumbname = NULL, *genre = NULL; - char *author = NULL, *copyright = NULL, *format = NULL; - int duration = 0, track = 0, size = 0; - - audio_svc_item_new(&svc_audio_item); - ret = audio_svc_get_item_by_audio_id(ad->media_svc_handle, cur_item->key_id, svc_audio_item); - ret = audio_svc_item_get_val(svc_audio_item, AUDIO_SVC_TRACK_DATA_PATHNAME, &pathname, &size, - AUDIO_SVC_TRACK_DATA_TITLE, &title, &size, - AUDIO_SVC_TRACK_DATA_ALBUM, &album, &size, - AUDIO_SVC_TRACK_DATA_ARTIST, &artist, &size, - AUDIO_SVC_TRACK_DATA_THUMBNAIL_PATH, &thumbname, &size, - AUDIO_SVC_TRACK_DATA_GENRE, &genre, &size, - AUDIO_SVC_TRACK_DATA_COPYRIGHT, ©right, &size, - AUDIO_SVC_TRACK_DATA_AUTHOR, &author, &size, - AUDIO_SVC_TRACK_DATA_DURATION, &duration, - AUDIO_SVC_TRACK_DATA_TRACK_NUM, &track, - AUDIO_SVC_TRACK_DATA_FORMAT, &format, &size, -1); + char *author = NULL, *copyright = NULL, *format = NULL, *track_num = NULL; + int duration = 0; + + { + ret = mp_media_info_create(&svc_audio_item, cur_item->key_id); + + mp_media_info_get_file_path(svc_audio_item, &pathname); + mp_media_info_get_title(svc_audio_item, &title); + mp_media_info_get_album(svc_audio_item, &album); + mp_media_info_get_artist(svc_audio_item, &artist); + mp_media_info_get_thumbnail_path(svc_audio_item, &thumbname); + mp_media_info_get_genre(svc_audio_item, &genre); + mp_media_info_get_copyright(svc_audio_item, ©right); + mp_media_info_get_composer(svc_audio_item, &author); + mp_media_info_get_duration(svc_audio_item, &duration); + mp_media_info_get_track_num(svc_audio_item, &track_num); + mp_media_info_get_format(svc_audio_item, &format); + } _mp_play_view_clear_animator(ad); @@ -308,24 +435,16 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); evas_object_data_set(genlist, "ad", ad); - if (ret == AUDIO_SVC_ERROR_NONE) + if (ret == 0) { - if (artist && strlen(artist)) - { - - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_ARTIST"), artist); - - } - - _mp_play_view_create_info_item(genlist, GET_SYS_STR("IDS_COM_BODY_DETAILS_TITLE"), title); + if (artist && strlen(artist)) + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ARTIST"), artist); + _mp_play_view_create_info_item(genlist, ("IDS_COM_BODY_DETAILS_TITLE"), title); if (album && strlen(album)) - { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_ALBUM"), album); - - } + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ALBUM"), album); char duration_format[10] = { 0, }; int dur_sec = duration / 1000; @@ -333,74 +452,56 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) int min = dur_sec / 60; snprintf(duration_format, sizeof(duration_format), "%02u:%02u", min, sec); - - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_TRACK_LENGTH"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_LENGTH"), duration_format); if (genre && strlen(genre)) - { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_GENRE"), genre); - - } + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_GENRE"), genre); if (author && strlen(author)) - { - - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_AUTHOR"), author); - - } + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_AUTHOR"), author); if (copyright && strlen(copyright)) - { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_COPYRIGHT"), copyright); - - } + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_COPYRIGHT"), copyright); - if(mp_drm_file_right(cur_item->filename)) { if (mp_drm_get_description(ad, cur_item->filename)) - - _mp_play_view_create_info_item(genlist, - GET_STR("IDS_MUSIC_BODY_DESCRIPTION"), + _mp_play_view_create_info_item(genlist, + ("IDS_MUSIC_BODY_DESCRIPTION"), ad->drm_info.description); else - - _mp_play_view_create_info_item(genlist, - GET_STR("IDS_MUSIC_BODY_DESCRIPTION"), + _mp_play_view_create_info_item(genlist, + ("IDS_MUSIC_BODY_DESCRIPTION"), "-"); if (ad->drm_info.forward) - - _mp_play_view_create_info_item(genlist, - GET_STR("IDS_MUSIC_BODY_FORWARDING"), - GET_STR("IDS_MUSIC_BODY_POSSIBLE")); + _mp_play_view_create_info_item(genlist, + ("IDS_MUSIC_BODY_FORWARDING"), + ("IDS_MUSIC_BODY_POSSIBLE")); else + _mp_play_view_create_info_item(genlist, + ("IDS_MUSIC_BODY_FORWARDING"), + ("IDS_MUSIC_BODY_IMPOSSIBLE")); - _mp_play_view_create_info_item(genlist, - GET_STR("IDS_MUSIC_BODY_FORWARDING"), - GET_STR("IDS_MUSIC_BODY_IMPOSSIBLE")); - + /* right status */ + _mp_play_view_append_drm_info(genlist, cur_item->filename); } - if (track > 0) + if (track_num && strlen(track_num)) { - char *track_num = g_strdup_printf("%d", track); - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_TRACK_NUMBER"), track_num); - - SAFE_FREE(track_num); + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_NUMBER"), track_num); } if (format && strlen(format)) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_FORMAT"), format); + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_FORMAT"), format); } - - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_MUSIC_LOCATION"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_MUSIC_LOCATION"), cur_item->filename); } else @@ -411,7 +512,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) if (tag_info.artist && strlen(tag_info.artist)) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_ARTIST"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ARTIST"), tag_info.artist); } @@ -419,7 +520,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) if (tag_info.title && strlen(tag_info.title)) { - _mp_play_view_create_info_item(genlist, GET_SYS_STR("IDS_COM_BODY_DETAILS_TITLE"), + _mp_play_view_create_info_item(genlist, ("IDS_COM_BODY_DETAILS_TITLE"), tag_info.title); } @@ -427,7 +528,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) if (tag_info.album && strlen(tag_info.album)) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_ALBUM"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ALBUM"), tag_info.album); } @@ -439,14 +540,14 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) snprintf(duration_format, sizeof(duration_format), "%02u:%02u", min, sec); - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_TRACK_LENGTH"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_LENGTH"), duration_format); if (tag_info.genre && strlen(tag_info.genre)) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_GENRE"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_GENRE"), tag_info.genre); } @@ -454,7 +555,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) if (tag_info.author && strlen(tag_info.author)) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_AUTHOR"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_AUTHOR"), tag_info.author); } @@ -462,35 +563,36 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) if (tag_info.copyright && strlen(tag_info.copyright)) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_COPYRIGHT"), tag_info.copyright); + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_COPYRIGHT"), tag_info.copyright); } - if(mp_drm_file_right(cur_item->filename)) { if (mp_drm_get_description(ad, cur_item->filename)) _mp_play_view_create_info_item(genlist, - GET_STR("IDS_MUSIC_BODY_DESCRIPTION"), + ("IDS_MUSIC_BODY_DESCRIPTION"), ad->drm_info.description); else _mp_play_view_create_info_item(genlist, - GET_STR("IDS_MUSIC_BODY_DESCRIPTION"), + ("IDS_MUSIC_BODY_DESCRIPTION"), "-"); if (ad->drm_info.forward) _mp_play_view_create_info_item(genlist, - GET_STR("IDS_MUSIC_BODY_FORWARDING"), - GET_STR("IDS_MUSIC_BODY_POSSIBLE")); + ("IDS_MUSIC_BODY_FORWARDING"), + ("IDS_MUSIC_BODY_POSSIBLE")); else _mp_play_view_create_info_item(genlist, - GET_STR("IDS_MUSIC_BODY_FORWARDING"), - GET_STR("IDS_MUSIC_BODY_IMPOSSIBLE")); + ("IDS_MUSIC_BODY_FORWARDING"), + ("IDS_MUSIC_BODY_IMPOSSIBLE")); + /* right status */ + _mp_play_view_append_drm_info(genlist, cur_item->filename); } if (tag_info.track && strlen(tag_info.track)) @@ -498,7 +600,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) if (!strstr(tag_info.track, "-") && g_strcmp0(tag_info.track, "0")) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_TRACK_NUMBER"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_NUMBER"), tag_info.track); } @@ -507,7 +609,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) if (tag_info.rating && strlen(tag_info.rating)) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_PARENT_RATING"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_PARENT_RATING"), tag_info.rating); } @@ -525,14 +627,14 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) if (format) { - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_FORMAT"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_FORMAT"), format->str); g_string_free(format, TRUE); } - _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_MUSIC_LOCATION"), + _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_MUSIC_LOCATION"), cur_item->filename); @@ -540,7 +642,8 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data) } evas_object_show(genlist); - audio_svc_item_free(svc_audio_item); + + mp_media_info_destroy(svc_audio_item); elm_object_part_content_set(parent, "mi_content", genlist); return genlist; } @@ -566,6 +669,7 @@ mp_play_view_create_info_contents(Evas_Object * parent, void *data) elm_object_part_content_set(info_view_left_area, "video_play_img", video_play_img); evas_object_show(video_play_img); + //add current albumart image Evas_Object *album_image = elm_image_add(info_view_left_area); if (strlen(cur_item->albumart) && mp_util_is_image_valid(ad->evas, cur_item->albumart)) { @@ -581,7 +685,9 @@ mp_play_view_create_info_contents(Evas_Object * parent, void *data) evas_object_event_callback_add(video_play_img, EVAS_CALLBACK_MOUSE_MOVE, NULL, NULL); evas_object_event_callback_add(video_play_img, EVAS_CALLBACK_MOUSE_UP, _mp_play_view_sb_click_info_albumart, ad); + /***********create left area end********************/ + /***********create right area start********************/ Evas_Object *right_base_box = mp_common_load_edj(parent, PLAY_VIEW_EDJ_NAME, "base_box_no_xml"); MP_CHECK(right_base_box); elm_object_part_content_set(parent, "base_box", right_base_box); @@ -593,10 +699,13 @@ mp_play_view_create_info_contents(Evas_Object * parent, void *data) elm_object_part_content_set(right_base_box, "no_sim_media_content", right_base_box_detail); evas_object_show(right_base_box_detail); edje_object_part_text_set(_EDJ(right_base_box_detail), "title", GET_STR("IDS_MUSIC_BODY_DETAILS_MEADIA_INFO")); + mp_language_mgr_register_object(right_base_box_detail, OBJ_TYPE_EDJE_OBJECT, "title", "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"); Evas_Object *item = _mp_play_view_create_info_detail(right_base_box_detail, ad); MP_CHECK(item); elm_object_part_content_set(right_base_box_detail, "mi_scroller", item); + /***********create right area end********************/ + //add scroller to right area elm_object_part_content_set(parent, "no_xml_no_sim_detail_scroller", right_base_box_detail); } @@ -606,10 +715,9 @@ _mp_play_view_popup_bt_cb(void *data, Evas_Object * obj, void *event_info) DEBUG_TRACE_FUNC(); struct appdata *ad = (struct appdata *)data; - int ret = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT); - - if (ret != MM_ERROR_NONE) - WARN_TRACE("Error: mm_sound_route_set_system_policy(0x%x)", ret); + int ret = sound_manager_set_active_route(SOUND_ROUTE_OUT_BLUETOOTH); + if (ret != SOUND_MANAGER_ERROR_NONE) + WARN_TRACE("Error: sound_manager_set_route_policy(0x%x)", ret); else elm_radio_value_set(ad->radio_group, MP_SND_PATH_BT); @@ -622,35 +730,26 @@ _mp_play_view_popup_headphone_cb(void *data, Evas_Object * obj, void *event_info DEBUG_TRACE_FUNC(); struct appdata *ad = (struct appdata *)data; - int ret = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP); - if (ret != MM_ERROR_NONE) - WARN_TRACE("Error: mm_sound_route_set_system_policy(0x%x)", ret); + int ret = sound_manager_set_active_route(SOUND_ROUTE_OUT_WIRED_ACCESSORY); + if (ret != SOUND_MANAGER_ERROR_NONE) + WARN_TRACE("Error: sound_manager_set_route_policy(0x%x)", ret); else elm_radio_value_set(ad->radio_group, MP_SND_PATH_EARPHONE); mp_popup_destroy(ad); } - +//2 merge play view at 20110118 static void _mp_play_view_popup_speaker_cb(void *data, Evas_Object * obj, void *event_info) { DEBUG_TRACE_FUNC(); struct appdata *ad = (struct appdata *)data; - int earjack = 0; int ret = 0; - - if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack)) - WARN_TRACE("Earjack state get Fail..."); - - if (earjack) - ret = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY); - else - ret = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP); - - if (ret != MM_ERROR_NONE) - WARN_TRACE("Error: mm_sound_route_set_system_policy(0x%x)", ret); + ret = sound_manager_set_active_route(SOUND_ROUTE_OUT_SPEAKER); + if (ret != SOUND_MANAGER_ERROR_NONE) + WARN_TRACE("Error: sound_manager_set_route_policy(0x%x)", ret); else elm_radio_value_set(ad->radio_group, MP_SND_PATH_SPEAKER); @@ -681,7 +780,7 @@ mp_play_view_update_snd_path(struct appdata *ad) MP_CHECK(ad); bool popup_exist = false; - int bt_connected = 0; + bool bt_connected = false; int earjack = 0; static char *bt_name; int ret = 0; @@ -697,10 +796,10 @@ mp_play_view_update_snd_path(struct appdata *ad) if(popup_exist) { IF_FREE(bt_name); - ret = mm_sound_route_get_a2dp_status(&bt_connected, &bt_name); - if (ret != MM_ERROR_NONE) + ret = sound_manager_get_a2dp_status(&bt_connected, &bt_name); + if (ret != SOUND_MANAGER_ERROR_NONE) { - WARN_TRACE("Fail to mm_sound_route_get_a2dp_status ret = [%d]", ret); + WARN_TRACE("Fail to sound_manager_get_a2dp_status ret = [%d]", ret); } if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack)) WARN_TRACE("Earjack state get Fail..."); @@ -711,6 +810,7 @@ mp_play_view_update_snd_path(struct appdata *ad) } else { + // TODO: updating list is not working now.. there is timing issue... complete it after MMFW support.. evas_object_del(popup); } } @@ -731,9 +831,10 @@ mp_play_view_set_snd_path_cb(void *data, Evas_Object *obj, void *event_info) Evas_Object *popup = NULL; int ret = 0; - int bt_connected = 0; + bool bt_connected = false; int earjack = 0; + // use bt_name as static. bt_name can be used again in gl_label_get function when genlist of popup scrolled. static char *bt_name = NULL; popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_SOUND_PATH, ad, ad); @@ -747,10 +848,10 @@ mp_play_view_set_snd_path_cb(void *data, Evas_Object *obj, void *event_info) evas_object_data_set(genlist, "ad", ad); IF_FREE(bt_name); - ret = mm_sound_route_get_a2dp_status(&bt_connected, &bt_name); - if (ret != MM_ERROR_NONE) + ret = sound_manager_get_a2dp_status(&bt_connected, &bt_name); + if (ret != SOUND_MANAGER_ERROR_NONE) { - WARN_TRACE("Fail to mm_sound_route_get_a2dp_status ret = [%d]", ret); + WARN_TRACE("Fail to sound_manager_get_a2dp_status ret = [%d]", ret); } if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack)) @@ -770,7 +871,10 @@ _mp_play_view_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_in struct appdata *ad = playing_view->ad; MP_CHECK(ad); + mp_evas_object_del(playing_view->albumart_image_reflection); + mp_evas_object_del(playing_view->pre_albumart_image_reflection); playing_view->flick_direction = 0; + playing_view->hide_image_flag = false; //hide mute popup if (playing_view->play_view) edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*"); @@ -779,16 +883,24 @@ _mp_play_view_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_in //reset flag ad->volume_long_pressed = false; + mp_ecore_timer_del(playing_view->favourite_timer); mp_ecore_timer_del(playing_view->progressbar_timer); mp_ecore_timer_del(playing_view->show_ctrl_timer); - if(ad->playing_view == playing_view) + if(ad->backup_playing_view == playing_view) + { + IF_FREE(ad->backup_playing_view); + ad->backup_layout_play_view = NULL; + } + else if(ad->playing_view == playing_view) { IF_FREE(ad->playing_view); } else ERROR_TRACE("++++++++ check here ++++++++++"); + mp_ecore_idler_del(ad->playview_show_idler); + endfunc; return; @@ -802,15 +914,27 @@ mp_play_view_show_default_info(struct appdata *ad) MP_CHECK(playing_view); mp_evas_object_del(playing_view->play_info); + Evas_Object *parent = NULL; +#ifdef MP_SOUND_PLAYER + parent = sp_view_mgr_get_naviframe(ad->view_mgr); +#else + parent = ad->naviframe; +#endif playing_view->play_info = - mp_common_load_edj(ad->library->cur_view, PLAY_VIEW_EDJ_NAME, "richinfo/base_layout"); + mp_common_load_edj(parent, PLAY_VIEW_EDJ_NAME, "richinfo/test_rich_info"); mp_play_view_create_info_contents(playing_view->play_info, ad); - view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data"); +#ifdef MP_SOUND_PLAYER + sp_view_mgr_push_view_content(ad->view_mgr, playing_view->play_info, SP_VIEW_TYPE_INFO); + sp_view_mgr_set_title_label(ad->view_mgr, GET_STR("IDS_MUSIC_BODY_DETAILSMEADIAINFO")); + sp_view_mgr_set_back_button(ad->view_mgr, mp_play_view_info_back_cb, ad); +#else + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); mp_view_manager_push_view_content(view_data, playing_view->play_info, MP_VIEW_CONTENT_INFO); - mp_view_manager_set_title_and_buttons(view_data, GET_SYS_STR("IDS_COM_BODY_DETAILS"), + mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_BODY_DETAILSMEADIAINFO", ad); +#endif } void @@ -818,11 +942,20 @@ mp_play_view_info_cb(void *data, Evas_Object * obj, void *event_info) { struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); + if (ad->info_click_flag && !ad->info_ug) + return ; + if (!ad->info_ug) + ad->info_click_flag = TRUE; + else + ad->info_click_flag = FALSE; + ad->info_back_play_view_flag = FALSE; mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress"); mp_playing_view *playing_view = ad->playing_view; MP_CHECK(playing_view); + EVAS_OBJ_HIDE(playing_view->albumart_img); + EVAS_OBJ_HIDE(playing_view->albumart_image_reflection); //hide mute popup if (playing_view->play_view) edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*"); @@ -866,10 +999,10 @@ _mp_play_view_load_track_info(void *data, music_list_item * item) MP_CHECK_FALSE(current_item); DEBUG_TRACE("category: %d", current_item->category); - if (current_item->category == AUDIO_SVC_CATEGORY_MUSIC) + if (current_item->category == MP_MEDIA_TYPE_MUSIC) { if (current_item->key_id > 0 - && mp_util_is_item_in_playlist(ad->media_svc_handle, AUDIO_SVC_FAVORITE_LIST_ID, current_item->key_id)) + && current_item->favorite) { edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_on", "play_view"); } @@ -883,7 +1016,15 @@ _mp_play_view_load_track_info(void *data, music_list_item * item) edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_invisible", "play_view"); } - mp_view_manager_play_view_title_label_set(ad, item->title); + if (item == current_item) { + #ifdef MP_SOUND_PLAYER + sp_view_mgr_play_view_title_label_set(ad->view_mgr, item->title); + #else + mp_view_manager_play_view_title_label_set(ad, item->title); + #endif + } + if(playing_view->play_head) + elm_object_item_text_set(playing_view->play_head, current_item->title); edje_object_part_text_set(_EDJ(playing_view->play_title), "artist", current_item->artist); edje_object_part_text_set(_EDJ(playing_view->play_title), "album", current_item->album); @@ -907,23 +1048,54 @@ _mp_play_view_create_next_item(music_list_item * next_item, void *data) mp_debug("next item : %s", next_item->title); - next_view = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_play_view"); - evas_object_size_hint_max_set(next_view, 480 * ad->scale, 800 * ad->scale); + next_view = elm_layout_add(playing_view->layout); + + if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE) + { + mp_debug_temp + (" invalid state MP_SCREEN_MODE_LANDSCAPE MP_SCREEN_MODE_LANDSCAPE MP_SCREEN_MODE_LANDSCAPE MP_SCREEN_MODE_LANDSCAPE"); + elm_layout_file_set(next_view, PLAY_VIEW_EDJ_NAME, "mp_play_view_landscape"); + evas_object_size_hint_max_set(next_view, 480 * elm_scale_get(), 480 * elm_scale_get()); + evas_object_size_hint_align_set(next_view, EVAS_HINT_FILL, EVAS_HINT_EXPAND); + evas_object_size_hint_weight_set(next_view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(ad->win_main, next_view); + } + else + { + + next_view = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_play_view"); + evas_object_size_hint_max_set(next_view, 480 * elm_scale_get(), 800 * elm_scale_get()); + } evas_object_show(next_view); - album_img = evas_object_image_add(ad->evas); - int w, h; - ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); - evas_object_image_load_size_set(album_img, w, h*HD_ALBUM_IMAGE_H_SCALE); - evas_object_image_fill_set(album_img, 0, 0, w, h*HD_ALBUM_IMAGE_H_SCALE); - if (strlen(next_item->albumart) && mp_util_is_image_valid(ad->evas, next_item->albumart)) + if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE) { - evas_object_image_file_set(album_img, next_item->albumart, NULL); + album_img = elm_bg_add(next_view); + if (strlen(next_item->albumart) && mp_util_is_image_valid(ad->evas, next_item->albumart)) + { + elm_bg_file_set(album_img, next_item->albumart, NULL); + } + else + { + elm_bg_file_set(album_img, DEFAULT_THUMBNAIL, NULL); + } } else { - evas_object_image_file_set(album_img, DEFAULT_THUMBNAIL, NULL); + album_img = evas_object_image_add(ad->evas); + int w, h; + ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); + evas_object_image_load_size_set(album_img, w, h*HD_ALBUM_IMAGE_H_SCALE); + evas_object_image_fill_set(album_img, 0, 0, w, h*HD_ALBUM_IMAGE_H_SCALE); + if (strlen(next_item->albumart) && mp_util_is_image_valid(ad->evas, next_item->albumart)) + { + evas_object_image_file_set(album_img, next_item->albumart, NULL); + } + else + { + evas_object_image_file_set(album_img, DEFAULT_THUMBNAIL, NULL); + } } elm_object_part_content_set(next_view, "album_art", album_img); @@ -990,6 +1162,9 @@ _mp_play_view_eventbox_flick_left_cb(void *data, Evas_Object * obj, void *event_ mp_playing_view *playing_view = ad->playing_view; MP_CHECK(playing_view); + if (ad->playing_list && ad->playing_list->count <= 1) + return; + music_list_item *next_item = NULL; if (mp_play_list_get_next_item(data, ad->playing_list, &next_item, TRUE)== MP_PLST_RET_OK) @@ -1014,6 +1189,9 @@ _mp_play_view_eventbox_flick_right_cb(void *data, Evas_Object * obj, void *event mp_playing_view *playing_view = ad->playing_view; MP_CHECK(playing_view); + if (ad->playing_list && ad->playing_list->count <= 1) + return; + music_list_item *next_item = NULL; if (mp_play_list_get_prev_item(data, ad->playing_list, &next_item)) @@ -1031,6 +1209,20 @@ _mp_play_view_eventbox_flick_right_cb(void *data, Evas_Object * obj, void *event return; } +static Eina_Bool +_mp_play_view_favourite_timer_cb(void *data) +{ + struct appdata *ad = (struct appdata *)data; + mp_retvm_if(!ad, ECORE_CALLBACK_CANCEL, "ad"); + + mp_playing_view *playing_view = ad->playing_view; + mp_retvm_if(!playing_view, ECORE_CALLBACK_CANCEL, "ad"); + + mp_ecore_timer_del(playing_view->favourite_timer); + + return ECORE_CALLBACK_CANCEL; +} + static void _mp_play_view_favourite_cb(void *data, Evas_Object * o, const char *emission, const char *source) { @@ -1042,42 +1234,65 @@ _mp_play_view_favourite_cb(void *data, Evas_Object * o, const char *emission, co DEBUG_TRACE("%s", emission); - if (!strcmp(emission, "favorite_up")) + if (!strcmp(emission, "favorite_down")) { - music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); - MP_CHECK(current_item); + playing_view->favour_longpress = 0; - if (current_item->key_id > 0 - && mp_util_is_item_in_playlist(ad->media_svc_handle, AUDIO_SVC_FAVORITE_LIST_ID, current_item->key_id)) + mp_ecore_timer_del(playing_view->favourite_timer); + + playing_view->favourite_timer = + ecore_timer_add(FAVOUR_LONG_PRESS_TIME, _mp_play_view_favourite_timer_cb, ad); + } + else if (!strcmp(emission, "favorite_up")) + { + mp_ecore_timer_del(playing_view->favourite_timer); + + if (playing_view->favour_longpress) { - int ret = AUDIO_SVC_ERROR_NONE; - ret = audio_svc_remove_item_from_playlist_by_audio_id(ad->media_svc_handle, AUDIO_SVC_FAVORITE_LIST_ID, - current_item->key_id); - if (ret == AUDIO_SVC_ERROR_NONE) { - edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_off", - "play_view"); - mp_util_create_notify(ad, GET_SYS_STR("IDS_COM_POP_REMOVED")); - } + playing_view->favour_longpress = 0; } else { - int ret = AUDIO_SVC_ERROR_NONE; - ret = audio_svc_add_item_to_playlist(ad->media_svc_handle, AUDIO_SVC_FAVORITE_LIST_ID, current_item->key_id); - if (ret == AUDIO_SVC_ERROR_NONE) { - edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_on", - "play_view"); + int ret = 0; + mp_media_info_h media = NULL; + music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK(current_item); + + ret = mp_media_info_create(&media, current_item->key_id); + MP_CHECK(ret == 0); + ret = mp_media_info_set_favorite(media, !current_item->favorite); + mp_media_info_destroy(media); + if(ret) + { + if(current_item->favorite) + mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD")); + else + mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_ITEM_NOT_REMOVE")); + + return; + } + current_item->favorite = !current_item->favorite; + + if (!current_item->favorite) + { + edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_off", "play_view"); + mp_util_create_notify(ad, GET_SYS_STR("IDS_COM_POP_REMOVED")); + } + else + { + edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_on", "play_view"); mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_ADDED")); } + } } - - MP_CHECK(ad->library); - MP_CHECK(ad->library->cur_view); - view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->library->cur_view, "view_data"); +#ifndef MP_SOUND_PLAYER + MP_CHECK(ad->naviframe); + view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK(view_data); if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST) mp_library_update_view(ad); - +#endif return; } @@ -1088,6 +1303,8 @@ _mp_play_view_progressbar_down_cb(void *data, Evas * e, Evas_Object * obj, void if (data == NULL && obj == NULL && event_info == NULL) return; + evas_object_data_set(obj, "pressed", (void *)1); + struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); @@ -1105,12 +1322,6 @@ _mp_play_view_progressbar_down_cb(void *data, Evas * e, Evas_Object * obj, void return; } - if (ad->player_state == PLAY_STATE_PLAYING) - { - mp_player_mgr_pause(ad); - playing_view->paused_by_progressbar = true; - } - mp_play_view_progress_timer_freeze(ad); evas_object_geometry_get(progressbar, &x, NULL, &w, NULL); current = ev->canvas.x - x; @@ -1132,12 +1343,23 @@ _mp_play_view_progressbar_down_cb(void *data, Evas * e, Evas_Object * obj, void } static void +_mp_play_view_progressbar_seek_done_cb(void *data) +{ + startfunc; + struct appdata *ad = data; + + mp_play_view_progress_timer_thaw(ad); +} + +static void _mp_play_view_progressbar_up_cb(void *data, Evas * e, Evas_Object * obj, void *event_info) { startfunc; if (data == NULL && obj == NULL && event_info == NULL) return; + evas_object_data_set(obj, "pressed", (void *)0); + struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); @@ -1154,6 +1376,7 @@ _mp_play_view_progressbar_up_cb(void *data, Evas * e, Evas_Object * obj, void *e ERROR_TRACE("Invaild player_state : %d", ad->player_state); return; } + evas_object_geometry_get(progressbar, &x, NULL, &w, NULL); current = ev->canvas.x - x; @@ -1170,15 +1393,13 @@ _mp_play_view_progressbar_up_cb(void *data, Evas * e, Evas_Object * obj, void *e ad->music_length = duration / 1000.; ad->music_pos = ratio * ad->music_length; - mp_play_view_update_progressbar(ad); - mp_player_mgr_set_position(ad->music_pos * 1000); + if (mp_player_mgr_set_position(ad->music_pos * 1000, _mp_play_view_progressbar_seek_done_cb, ad)) + mp_play_view_update_progressbar(ad); + else + _mp_play_view_progressbar_seek_done_cb(ad); + - if (playing_view->paused_by_progressbar) - { - mp_player_mgr_resume(ad); - playing_view->paused_by_progressbar = false; - } return; } @@ -1188,6 +1409,12 @@ _mp_play_progressbar_move_cb(void *data, Evas * e, Evas_Object * obj, void *even if (data == NULL && obj == NULL && event_info == NULL) return; + int pressed = (int)evas_object_data_get(obj, "pressed"); + if (!pressed) { + mp_debug("-_- progressbar is not pressed yet!"); + return; + } + struct appdata *ad = (struct appdata *)data; MP_CHECK(ad); @@ -1203,9 +1430,10 @@ _mp_play_progressbar_move_cb(void *data, Evas * e, Evas_Object * obj, void *even } Evas_Object *progressbar = obj; - int duration = 0, w = 0, current = 0; + int w = 0, current = 0; int x; double ratio = 0.0; + int new_pos; if (ad->player_state == PLAY_STATE_INIT) return; @@ -1220,12 +1448,14 @@ _mp_play_progressbar_move_cb(void *data, Evas * e, Evas_Object * obj, void *even current = w; ratio = (double)current / w; - duration = mp_player_mgr_get_duration(); - - ad->music_length = duration / 1000.; - ad->music_pos = ratio * ad->music_length; - mp_play_view_update_progressbar(ad); + new_pos= ratio * ad->music_length; + if(new_pos != mp_player_mgr_get_position()/1000 ) + { + mp_player_mgr_set_position(ad->music_pos*1000, NULL, NULL); + ad->music_pos = new_pos; + mp_play_view_update_progressbar(ad); + } return; } @@ -1240,7 +1470,7 @@ _mp_play_view_update_progressbar_cb(void *data) mp_playing_view *playing_view = ad->playing_view; MP_CHECK_CANCEL(playing_view); - if(!ad->prohibit_aul_relaunch) + if(!ad->app_is_foreground) { WARN_TRACE("Check here.. progress timer should be freezed.."); ecore_timer_freeze(playing_view->progressbar_timer); @@ -1261,6 +1491,7 @@ _mp_play_view_update_progressbar_cb(void *data) if (get_length != ad->music_length || get_pos != ad->music_pos) { + // update only value is changed ad->music_length = get_length; ad->music_pos = get_pos; @@ -1323,7 +1554,7 @@ _mp_play_view_add_progress_timer(void *data) mp_ecore_timer_del(playing_view->progressbar_timer); playing_view->progressbar_timer = ecore_timer_add(0.1, _mp_play_view_update_progressbar_cb, ad); - if(ad->player_state != PLAY_STATE_PLAYING || !ad->prohibit_aul_relaunch) + if(ad->player_state != PLAY_STATE_PLAYING || !ad->app_is_foreground) ecore_timer_freeze(playing_view->progressbar_timer); return; @@ -1388,6 +1619,8 @@ _mp_play_view_create_menu(void *data) edje_object_signal_callback_add(_EDJ(playing_view->play_menu), "favorite_up", "*", _mp_play_view_favourite_cb, ad); + if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE) + evas_object_size_hint_max_set(playing_view->play_menu, elm_scale_get(), 70 * elm_scale_get()); edje_object_signal_callback_add(_EDJ(playing_view->play_menu), SIGNAL_SHUFFLE, "*", mp_play_control_menu_cb, ad); edje_object_signal_callback_add(_EDJ(playing_view->play_menu), SIGNAL_SHUFNON, "*", mp_play_control_menu_cb, @@ -1412,21 +1645,41 @@ mp_play_view_set_snd_path_sensitivity(void *data) MP_CHECK(ad); int ret = 0; - int bt_connected = 0; + bool bt_connected = 0; char *bt_name = NULL; int earjack = 0; Elm_Object_Item *navi_item = NULL; + Elm_Object_Item *land_navi_item = NULL; Evas_Object *btn = NULL; + Evas_Object *land_btn = NULL; mp_playing_view *playing_view = ad->playing_view; MP_CHECK(playing_view); + if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE) + { + DEBUG_TRACE(""); + land_navi_item = playing_view->play_head; + } +#ifdef MP_SOUND_PLAYER + navi_item = sp_view_mgr_get_play_view_navi_item(ad->view_mgr); +#else navi_item = mp_view_manager_get_play_view_navi_item(ad); +#endif if(navi_item) btn = elm_object_item_part_content_get(navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN); - ret = mm_sound_route_get_a2dp_status(&bt_connected, &bt_name); + if(land_navi_item) + land_btn = elm_object_item_part_content_get(land_navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN); + + + ret = sound_manager_get_a2dp_status(&bt_connected, &bt_name); + if (ret != SOUND_MANAGER_ERROR_NONE) + { + WARN_TRACE("Fail to sound_manager_get_a2dp_status ret = [%d]", ret); + } + if (!bt_connected) { if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack)) @@ -1440,30 +1693,71 @@ mp_play_view_set_snd_path_sensitivity(void *data) elm_object_item_part_content_unset(navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN); evas_object_del(btn); } + if(land_btn) + { + elm_object_item_part_content_unset(land_navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN); + evas_object_del(land_btn); + } } else { if(!btn && navi_item) { - Evas_Object *btn = mp_widget_create_title_btn(ad->library->cur_view, NULL, MP_ICON_SOUND_PATH, + Evas_Object *parent = NULL; +#ifdef MP_SOUND_PLAYER + parent = sp_view_mgr_get_naviframe(ad->view_mgr); +#else + parent = ad->naviframe; +#endif + Evas_Object *btn = mp_widget_create_title_btn(parent, NULL, MP_ICON_SOUND_PATH, mp_play_view_set_snd_path_cb, ad); elm_object_item_part_content_set(navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN, btn); } + if(!land_btn && land_navi_item) + { + Evas_Object *btn = mp_widget_create_title_btn(playing_view->land_naviframe, NULL, MP_ICON_SOUND_PATH, + mp_play_view_set_snd_path_cb, ad); + elm_object_item_part_content_set(land_navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN, btn); + } } } static void mp_play_view_back_cb(void *data, Evas_Object *obj, const char *emission, const char *source) { +#ifdef MP_SOUND_PLAYER + struct appdata *ad = (struct appdata *)data; +#else view_data_t *view_data = (view_data_t *) data; MP_CHECK(view_data); MP_CHECK_VIEW_DATA(view_data); struct appdata *ad = view_data->ad; +#endif MP_CHECK(ad); mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress"); - mp_common_back_button_cb(data, obj, NULL); +#ifdef MP_SOUND_PLAYER + if (ad->player_state == PLAY_STATE_PLAYING || ad->player_state == PLAY_STATE_PAUSED) { + mp_debug("mm player alive"); + elm_win_lower(ad->win_main); + } else { + mp_debug("terminate"); + mp_app_exit(ad); + } +#else + if(ad->direct_win_minimize) + elm_win_lower(ad->win_main); + else + mp_common_back_button_cb(data, obj, NULL); + + if (ad->music_setting_change_flag) + { + mp_debug("# menu update #"); + mp_util_set_library_controlbar_items(ad); + ad->music_setting_change_flag = false; + } +#endif } static bool @@ -1478,7 +1772,11 @@ _mp_play_view_create_control_bar(void *data) Evas_Object *play_control = NULL, *play_icon = NULL; - play_control = + if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE) + play_control = + mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/main/control_ls"); + else + play_control = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/main/control"); MP_CHECK_FALSE(play_control); @@ -1493,12 +1791,20 @@ _mp_play_view_create_control_bar(void *data) elm_object_part_content_set(play_control, "buttons", play_icon); evas_object_data_set(play_control, "buttons", play_icon); - - edje_object_signal_callback_add(_EDJ(play_icon), "info_clicked", CTR_EDJ_SIG_SRC, mp_play_view_back_cb, +#ifdef MP_SOUND_PLAYER + edje_object_signal_callback_add(_EDJ(play_icon), "info_clicked", CTR_EDJ_SIG_SRC, mp_play_view_back_cb, ad); +#else + edje_object_signal_callback_add(_EDJ(play_icon), "info_clicked", CTR_EDJ_SIG_SRC, mp_play_view_back_cb, mp_util_get_view_data(ad)); - +#endif edje_object_signal_callback_add(_EDJ(play_icon), "volume_clicked", CTR_EDJ_SIG_SRC, mp_play_control_volume_cb, ad); +#ifdef MP_FEATURE_VOLMUE_MUTE + edje_object_signal_callback_add(_EDJ(play_icon), "vol_btn_down", CTR_EDJ_SIG_SRC, + mp_play_control_volume_down_cb, ad); + edje_object_signal_callback_add(_EDJ(play_icon), "vol_btn_up", CTR_EDJ_SIG_SRC, mp_play_control_volume_up_cb, + ad); +#endif edje_object_signal_callback_add(_EDJ(play_icon), "play_clicked", CTR_EDJ_SIG_SRC, mp_play_control_play_cb, ad); edje_object_signal_callback_add(_EDJ(play_icon), "pause_clicked", CTR_EDJ_SIG_SRC, mp_play_control_play_cb, ad); @@ -1508,8 +1814,8 @@ _mp_play_view_create_control_bar(void *data) edje_object_signal_callback_add(_EDJ(play_icon), "rew_btn_down", CTR_EDJ_SIG_SRC, mp_play_control_rew_cb, ad); edje_object_signal_callback_add(_EDJ(play_icon), "rew_btn_up", CTR_EDJ_SIG_SRC, mp_play_control_rew_cb, ad); - MMPlayerStateType player_state = mp_player_mgr_get_state(); - if (player_state != MM_PLAYER_STATE_PLAYING) + player_state_e player_state = mp_player_mgr_get_state(); + if (player_state != PLAYER_STATE_PLAYING) edje_object_signal_emit(_EDJ(play_icon), "play", CTR_PROG_SIG_SRC); else edje_object_signal_emit(_EDJ(play_icon), "pause", CTR_PROG_SIG_SRC); @@ -1608,7 +1914,7 @@ _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_ return FALSE; } - if (playing_view->transition_state) + if (playing_view->transition_state) // transiton(transition_state) should be transiit callback { mp_debug("skip_by transiton effect"); return FALSE; @@ -1618,7 +1924,7 @@ _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_ mp_play_view_progress_timer_freeze(ad); - mp_play_view_set_menu_state(ad, ad->show_optional_menu, false); + mp_play_view_set_menu_state(ad, false, false); mp_debug("current index = %d, set index = %d", current_item->list_index, it->list_index); @@ -1626,9 +1932,7 @@ _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_ mp_play_list_item_copy(&playing_view->playing_list_item, it); next = _mp_play_view_create_next_item(it, ad); - MP_CHECK_FALSE(next); - playing_view->play_view_next = next; elm_object_part_content_set(playing_view->layout, "list_content_temp", next); edje_object_signal_callback_add(elm_layout_edje_get(playing_view->layout), "transit_done", "*", @@ -1649,6 +1953,15 @@ _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_ playing_view->transition_state = true; + if (!playing_view->play_view_screen_mode) + { + mp_evas_object_del(playing_view->albumart_image); + playing_view->albumart_image = _mp_play_view_create_bg_map(data, playing_view->play_view, it); + elm_object_part_content_set(playing_view->play_view, "album_art", playing_view->albumart_image); + evas_object_show(playing_view->albumart_image); + evas_object_repeat_events_set(playing_view->albumart_image, 1); + } + return true; } @@ -1660,17 +1973,29 @@ _mp_play_view_push_navibar(void *data) mp_playing_view *playing_view = ad->playing_view; MP_CHECK_FALSE(playing_view); + { + elm_object_part_content_set(playing_view->layout, "list_content", playing_view->play_view); + + mp_playing_view *playing_view = ad->playing_view; + MP_CHECK_FALSE(playing_view); - elm_object_part_content_set(playing_view->layout, "list_content", playing_view->play_view); - view_data_t *view_data = NULL; +#ifdef MP_SOUND_PLAYER + sp_view_mgr_push_view_content(ad->view_mgr, playing_view->layout, SP_VIEW_TYPE_PLAY); + sp_view_mgr_set_title_label(ad->view_mgr, GET_SYS_STR("IDS_COM_SK_PLAY")); + mp_play_view_set_snd_path_sensitivity(ad); +#else + MP_CHECK_FALSE(ad->naviframe); - MP_CHECK_FALSE(ad->library); - MP_CHECK_FALSE(ad->library->cur_view); + view_data_t *view_data = NULL; + view_data = evas_object_data_get(ad->naviframe, "view_data"); + MP_CHECK_FALSE(view_data); + mp_view_manager_push_view_content(view_data, playing_view->layout, MP_VIEW_CONTENT_PLAY); - view_data = evas_object_data_get(ad->library->cur_view, "view_data"); - MP_CHECK_FALSE(view_data); - mp_view_manager_push_view_content(view_data, playing_view->layout, MP_VIEW_CONTENT_PLAY); - mp_view_manager_set_title_and_buttons(view_data, GET_SYS_STR("IDS_COM_SK_PLAY"), ad); + MP_TA_ACUM_ITEM_BEGIN(" mp_view_manager_set_title_and_buttons", 0); + mp_view_manager_set_title_and_buttons(view_data, NULL, ad); + MP_TA_ACUM_ITEM_END(" mp_view_manager_set_title_and_buttons", 0); +#endif + } return true; @@ -1681,11 +2006,18 @@ _mp_play_view_play_option_cb(void *data, Evas_Object * obj, const char *emission { MP_CHECK(emission); - if (!strcmp(emission, "option_3_clicked")) + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + + if (!strcmp(emission, "option_1_clicked")) + mp_menu_share_cb(data, obj, NULL); + else if (!strcmp(emission, "option_2_clicked")) + mp_menu_set_cb(data, obj, NULL); + else if (!strcmp(emission, "option_3_clicked")) { - struct appdata *ad = (struct appdata *)data; - MP_CHECK(ad); - mp_play_view_info_cb(data, obj, NULL); + MP_CHECK(ad->playing_view); + if (ad->playing_view->play_view_screen_mode != MP_SCREEN_MODE_LANDSCAPE) + mp_play_view_info_cb(data, obj, NULL); } } @@ -1704,7 +2036,12 @@ _mp_play_view_create_ctrl_layout(void *data, Evas_Object * parents, Evas_Object elm_object_part_content_set(parents, "player_info", ctrl_layout); - *progress = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/progress_box"); + //2 Create progress bar + if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE) + *progress = + mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/progress_box_ls"); + else + *progress = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/progress_box"); Evas_Object *play_progress = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/progress_box/progress_bar"); @@ -1731,18 +2068,51 @@ _mp_play_view_create_ctrl_layout(void *data, Evas_Object * parents, Evas_Object elm_object_part_content_set(playing_view->layout, "player_info", play_info); playing_view->play_title = play_info; - Evas_Object *play_options = - mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "player_view_options"); - elm_object_part_content_set(playing_view->layout, "player_options", play_options); + if (playing_view->play_view_screen_mode != MP_SCREEN_MODE_LANDSCAPE) + { + Evas_Object *play_options = + mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "player_view_options"); + + edje_object_part_text_set(_EDJ(play_options), "option_1", GET_SYS_STR("IDS_COM_BUTTON_SHARE")); + mp_language_mgr_register_object(play_options, OBJ_TYPE_EDJE_OBJECT, "option_1", "IDS_COM_BUTTON_SHARE"); + edje_object_part_text_set(_EDJ(play_options), "option_2", GET_SYS_STR("IDS_COM_SK_SET")); + mp_language_mgr_register_object(play_options, OBJ_TYPE_EDJE_OBJECT, "option_2", "IDS_COM_SK_SET"); + edje_object_part_text_set(_EDJ(play_options), "option_3", GET_SYS_STR("IDS_COM_BODY_DETAILS")); + mp_language_mgr_register_object(play_options, OBJ_TYPE_EDJE_OBJECT, "option_3", "IDS_COM_BODY_DETAILS"); - edje_object_part_text_set(_EDJ(play_options), "option_3", GET_SYS_STR("IDS_COM_BODY_DETAILS")); + elm_object_part_content_set(playing_view->layout, "player_options", play_options); - edje_object_signal_callback_add(_EDJ(play_options), "option_3_clicked", "*", _mp_play_view_play_option_cb, - ad); + edje_object_signal_callback_add(_EDJ(play_options), "option_1_clicked", "*", _mp_play_view_play_option_cb, + ad); + edje_object_signal_callback_add(_EDJ(play_options), "option_2_clicked", "*", _mp_play_view_play_option_cb, + ad); + edje_object_signal_callback_add(_EDJ(play_options), "option_3_clicked", "*", _mp_play_view_play_option_cb, + ad); + } return ctrl_layout; } +static void +_mp_play_view_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + struct appdata *ad = data; + MP_CHECK(ad); + + mp_playing_view *playing_view = ad->playing_view; + MP_CHECK(playing_view); + + Evas_Coord w, h; + edje_object_part_geometry_get(_EDJ(playing_view->play_view), "album_bg", NULL, NULL, &w, &h); + mp_debug("album bg size = [%d * %d]", w, h); + + if (playing_view->albumart_bg) + { + evas_object_image_load_size_set(playing_view->albumart_bg, w, h); + evas_object_image_fill_set(playing_view->albumart_bg, 0, 0, w, h); + } +} + static bool _mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bool b_next) @@ -1756,10 +2126,16 @@ _mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bo MP_CHECK_FALSE(playing_view); //2 Create playing view - playing_view->play_view = mp_common_load_edj(parents_layout, PLAY_VIEW_EDJ_NAME, "mp_play_view"); + if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE) + playing_view->play_view = + mp_common_load_edj(parents_layout, PLAY_VIEW_EDJ_NAME, "mp_play_view_landscape"); + else + playing_view->play_view = mp_common_load_edj(parents_layout, PLAY_VIEW_EDJ_NAME, "mp_play_view"); MP_CHECK_FALSE(playing_view->play_view); + evas_object_event_callback_add(playing_view->play_view, EVAS_CALLBACK_RESIZE, _mp_play_view_resize_cb, ad); + //hide mute popup edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*"); @@ -1771,18 +2147,22 @@ _mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bo evas_object_smart_callback_add(event_box, "mouse.flick.left", _mp_play_view_eventbox_flick_left_cb, ad); evas_object_smart_callback_add(event_box, "mouse.flick.right", _mp_play_view_eventbox_flick_right_cb, ad); - evas_object_show(event_box); elm_object_part_content_set(playing_view->play_view, "event_box", event_box); evas_object_data_set(playing_view->play_view, "event_box", event_box); - mp_evas_object_del(playing_view->albumart_bg); - playing_view->albumart_bg = evas_object_image_add(ad->evas); - int w, h; - ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); - evas_object_image_load_size_set(playing_view->albumart_bg, w, h*HD_ALBUM_IMAGE_H_SCALE); - evas_object_image_fill_set(playing_view->albumart_bg, 0, 0, w, h*HD_ALBUM_IMAGE_H_SCALE); + if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE) + { // landscape mode + playing_view->albumart_img = elm_bg_add(playing_view->play_view); + elm_bg_load_size_set(playing_view->albumart_img, MP_PLAY_VIEW_ARTWORK_SIZE, MP_PLAY_VIEW_ARTWORK_SIZE); + elm_object_part_content_set(playing_view->play_view, "album_art", playing_view->albumart_img); + } + else + { + mp_evas_object_del(playing_view->albumart_bg); + playing_view->albumart_bg = evas_object_image_add(ad->evas); elm_object_part_content_set(playing_view->play_view, "album_bg", playing_view->albumart_bg); + } playing_view->play_ctrl = _mp_play_view_create_ctrl_layout(ad, playing_view->play_view, &playing_view->play_progressbar, FALSE); @@ -1797,6 +2177,28 @@ _mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bo return TRUE; } +static Eina_Bool +_mp_play_view_idler_cb(void *data) +{ + startfunc; + + struct appdata *ad = (struct appdata *)data; + MP_CHECK_FALSE(ad); + MP_CHECK_FALSE(ad->playing_view->albumart_bg); + + Evas_Coord img_x, img_y, img_w, img_h; + evas_object_geometry_get(ad->playing_view->albumart_bg, &img_x, &img_y, &img_w, &img_h); + + ad->album_image_w = img_w; + ad->album_image_h = img_h; + + _mp_play_view_album_art_update(ad); + ad->playview_show_idler = NULL; + + endfunc; + return EINA_FALSE; +} + static bool _mp_play_view_create_layout(void *data) { @@ -1816,15 +2218,25 @@ _mp_play_view_create_layout(void *data) return TRUE; } - MP_CHECK_FALSE(ad->library); - MP_CHECK_FALSE(ad->library->cur_view); - playing_view->layout = - mp_common_load_edj(ad->library->cur_view, PLAY_VIEW_EDJ_NAME, "mp_play_view_layout"); - MP_CHECK_FALSE(playing_view->layout); + { + Evas_Object *parent = NULL; +#ifdef MP_SOUND_PLAYER + parent = sp_view_mgr_get_naviframe(ad->view_mgr); +#else + MP_CHECK_FALSE(ad->naviframe); + parent = ad->naviframe; +#endif + playing_view->layout = + mp_common_load_edj(parent, PLAY_VIEW_EDJ_NAME, "mp_play_view_layout"); + MP_CHECK_FALSE(playing_view->layout); + } + MP_CHECK_FALSE(playing_view->layout); evas_object_event_callback_add(playing_view->layout, EVAS_CALLBACK_DEL, _mp_play_view_destory_cb, playing_view); //2 Create playing view + MP_TA_ACUM_ITEM_BEGIN(" mp_play_view_create_playing_layout", 0); _mp_play_view_create_playing_layout(ad, playing_view->layout, FALSE); + MP_TA_ACUM_ITEM_END(" mp_play_view_create_playing_layout", 0); //2 Create menu layout _mp_play_view_create_menu(ad); @@ -1833,7 +2245,12 @@ _mp_play_view_create_layout(void *data) _mp_play_view_create_control_bar(ad); //2 Push at navibar + MP_TA_ACUM_ITEM_BEGIN(" mp_play_view_push_navibar", 0); _mp_play_view_push_navibar(ad); + MP_TA_ACUM_ITEM_END(" mp_play_view_push_navibar", 0); + + if(!ad->playview_show_idler) + ad->playview_show_idler = ecore_idler_add(_mp_play_view_idler_cb, ad); mp_debug(""); @@ -1841,6 +2258,7 @@ _mp_play_view_create_layout(void *data) return true; } + void _mp_play_view_delete_progress_timer(void *data) { @@ -1866,8 +2284,8 @@ mp_play_view_set_menu_state(void *data, bool show, bool anim) mp_debug("set hide state"); mp_ecore_timer_del(ad->longpress_timer); - _mp_play_view_menu_visible_set(ad, FALSE, anim); + _mp_play_view_menu_visible_set(ad, FALSE, anim); } else { @@ -1888,11 +2306,16 @@ mp_play_view_progress_timer_thaw(void *data) mp_playing_view *playing_view = ad->playing_view; MP_CHECK(playing_view); + MP_CHECK(playing_view->progressbar_timer); - if (playing_view->progressbar_timer && ad->player_state == PLAY_STATE_PLAYING) + if (ad->player_state == PLAY_STATE_PLAYING) { ecore_timer_thaw(playing_view->progressbar_timer); } + else if (ad->player_state == PLAY_STATE_PAUSED) + { + mp_play_view_update_progressbar(ad); + } } void @@ -1981,8 +2404,370 @@ mp_play_view_stop_transit(void *data) return true; } -bool -mp_play_view_load_track(void *data) +static void +_mp_play_view_album_art_update(void *data) +{ + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + mp_playing_view *playing_view = ad->playing_view; + MP_CHECK(playing_view); + + Evas_Coord img_x, img_y, img_w, img_h; + evas_object_geometry_get(playing_view->albumart_image, &img_x, &img_y, &img_w, &img_h); + if ( playing_view->albumart_width <= 0 && playing_view->albumart_height <= 0 + && ad->album_image_w > 0 && ad->album_image_h > 0 + && img_w == ad->album_image_w && img_h == ad->album_image_h ) { + playing_view->albumart_width = img_w; + playing_view->albumart_height = img_h; + } + DEBUG_TRACE ("albumart_width=%d, albumart_height=%d", playing_view->albumart_width, playing_view->albumart_height); + + if (0 == img_x && playing_view->albumart_width == img_w && playing_view->albumart_height == img_h) + { + mp_evas_object_del(playing_view->pre_albumart_image_reflection); + } + if (ad->info_ug_base && !ad->info_back_play_view_flag) + { + EVAS_OBJ_HIDE(playing_view->albumart_image_reflection); + EVAS_OBJ_HIDE(playing_view->pre_albumart_image_reflection); + } + else + { + EVAS_OBJ_SHOW(playing_view->albumart_image_reflection); + EVAS_OBJ_SHOW(playing_view->pre_albumart_image_reflection); + } + + double zoomx = 1.0, zoomy = 1.0; + int x = 0, y = 0; + int albumart_image_raw_w = 0, albumart_image_raw_h = 0; + int albumart_image_x = 0, albumart_image_y = 0, albumart_image_w = 0, albumart_image_h = 0; + + if (playing_view->albumart_image_reflection) + { + if (playing_view->flick_direction == 1) + { + x = img_x + playing_view->albumart_width; + } + else if (playing_view->flick_direction == 2) + { + x = img_x - playing_view->albumart_width; + } + y = img_y + playing_view->albumart_height; + + evas_object_geometry_get(playing_view->albumart_image_reflection, &albumart_image_x, + &albumart_image_y, &albumart_image_w, &albumart_image_h); + evas_object_image_size_get(playing_view->albumart_image_reflection, &albumart_image_raw_w, + &albumart_image_raw_h); + + x = x - (albumart_image_raw_w - playing_view->albumart_width) / 2; + y = y - (albumart_image_raw_h - playing_view->albumart_height) / 2; + zoomx = playing_view->albumart_width / ((double)albumart_image_raw_w); + zoomy = playing_view->albumart_height / ((double)albumart_image_raw_h); + + Evas_Map *m2 = evas_map_new(4); + MP_CHECK(m2); + evas_map_smooth_set(m2, EINA_TRUE); + evas_map_point_coord_set(m2, 0, x, y, 0); + evas_map_point_image_uv_set(m2, 0, 0, albumart_image_raw_h); + if (img_x == 0 && playing_view->hide_image_flag) + { + evas_map_point_color_set(m2, 0, ALBUMART_IMAGE_SHADOW_RGBA1); + } + else + { + evas_map_point_color_set(m2, 0, ALBUMART_IMAGE_SHADOW_RGBA); + } + + evas_map_point_coord_set(m2, 1, (x + albumart_image_raw_w), y, 0); + evas_map_point_image_uv_set(m2, 1, albumart_image_raw_w, albumart_image_raw_h); + if (img_x == 0 && playing_view->hide_image_flag) + { + evas_map_point_color_set(m2, 1, ALBUMART_IMAGE_SHADOW_RGBA1); + } + else + { + evas_map_point_color_set(m2, 1, ALBUMART_IMAGE_SHADOW_RGBA); + } + + evas_map_point_coord_set(m2, 2, (x + albumart_image_raw_w), (y + albumart_image_raw_h), 0); + evas_map_point_image_uv_set(m2, 2, albumart_image_raw_w, 0); + evas_map_point_color_set(m2, 2, ALBUMART_IMAGE_SHADOW_RGBA2); + + evas_map_point_coord_set(m2, 3, x, (y + albumart_image_raw_h), 0); + evas_map_point_image_uv_set(m2, 3, 0, 0); + evas_map_point_color_set(m2, 3, ALBUMART_IMAGE_SHADOW_RGBA2); + + evas_map_util_3d_rotate(m2, 0, 0, 0, x + (albumart_image_raw_w / 2), y + (albumart_image_raw_h / 2), 0); + evas_map_util_3d_perspective(m2, x, y, 0, albumart_image_raw_w * 10); + evas_map_util_zoom(m2, zoomx, zoomy, x + (albumart_image_raw_w / 2), y + (albumart_image_raw_h / 2)); + evas_object_map_enable_set(playing_view->albumart_image_reflection, EINA_TRUE); + evas_object_map_set(playing_view->albumart_image_reflection, m2); + evas_map_free(m2); + + evas_object_repeat_events_set(playing_view->albumart_image_reflection, 1); + } + + if (playing_view->pre_albumart_image_reflection) + { + x = img_x; + y = img_y + playing_view->albumart_height; + evas_object_geometry_get(playing_view->pre_albumart_image_reflection, &albumart_image_x, + &albumart_image_y, &albumart_image_w, &albumart_image_h); + evas_object_image_size_get(playing_view->pre_albumart_image_reflection, &albumart_image_raw_w, + &albumart_image_raw_h); + x = x - (albumart_image_raw_w - playing_view->albumart_width) / 2; + y = y - (albumart_image_raw_h - playing_view->albumart_height) / 2; + zoomx = playing_view->albumart_width / ((double)albumart_image_raw_w); + zoomy = playing_view->albumart_height / ((double)albumart_image_raw_h); + + Evas_Map *m4 = evas_map_new(4); + MP_CHECK(m4); + evas_map_smooth_set(m4, EINA_TRUE); + evas_map_point_coord_set(m4, 0, x, y, 0); + evas_map_point_image_uv_set(m4, 0, 0, albumart_image_raw_h); + if (img_x == 0 && playing_view->hide_image_flag) + { + evas_map_point_color_set(m4, 0, ALBUMART_IMAGE_SHADOW_RGBA1); + } + else + { + evas_map_point_color_set(m4, 0, ALBUMART_IMAGE_SHADOW_RGBA); + } + + evas_map_point_coord_set(m4, 1, (x + albumart_image_raw_w), y, 0); + evas_map_point_image_uv_set(m4, 1, albumart_image_raw_w, albumart_image_raw_h); + if (img_x == 0 && playing_view->hide_image_flag) + { + evas_map_point_color_set(m4, 1, ALBUMART_IMAGE_SHADOW_RGBA1); + } + else + { + evas_map_point_color_set(m4, 1, ALBUMART_IMAGE_SHADOW_RGBA); + } + + evas_map_point_coord_set(m4, 2, (x + albumart_image_raw_w), (y + albumart_image_raw_h), 0); + evas_map_point_image_uv_set(m4, 2, albumart_image_raw_w, 0); + evas_map_point_color_set(m4, 2, ALBUMART_IMAGE_SHADOW_RGBA2); + + evas_map_point_coord_set(m4, 3, x, (y + albumart_image_raw_h), 0); + evas_map_point_image_uv_set(m4, 3, 0, 0); + evas_map_point_color_set(m4, 3, ALBUMART_IMAGE_SHADOW_RGBA2); + + evas_map_util_3d_rotate(m4, 0, 0, 0, x + (albumart_image_raw_w / 2), y + (albumart_image_raw_h / 2), 0); + evas_map_util_zoom(m4, zoomx, zoomy, x + (albumart_image_raw_w / 2), y + (albumart_image_raw_h / 2)); + evas_map_util_3d_perspective(m4, x, y, 0, albumart_image_raw_w * 10); + evas_object_map_enable_set(playing_view->pre_albumart_image_reflection, EINA_TRUE); + evas_object_map_set(playing_view->pre_albumart_image_reflection, m4); + evas_map_free(m4); + } +} + + +static void +_mp_play_view_bg_map_move(void *data, Evas * e, Evas_Object * obj, void *event_info) +{ + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + mp_playing_view *playing_view = ad->playing_view; + MP_CHECK(ad->playing_view); + + _mp_play_view_album_art_update(data); + + if (playing_view->hide_image_flag && playing_view->flick_direction == 0) + { + EVAS_OBJ_HIDE(playing_view->pre_albumart_image_reflection); + } + + EVAS_OBJ_SHOW(obj); +} + +static void +_mp_play_view_bg_map_resize(void *data, Evas * e, Evas_Object * obj, void *event_info) +{ + startfunc; + + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + mp_playing_view *playing_view = ad->playing_view; + MP_CHECK(playing_view); + + playing_view->hide_image_flag = true; + + if (playing_view->hide_image_flag && playing_view->flick_direction == 0) + { + EVAS_OBJ_HIDE(playing_view->pre_albumart_image_reflection); + } + + endfunc; +} + + +static void +_mp_play_view_bg_map_hide(void *data, Evas * e, Evas_Object * obj, void *event_info) +{ + startfunc; + + endfunc; +} + +static void +_mp_play_view_bg_map_show(void *data, Evas * e, Evas_Object * obj, void *event_info) +{ + startfunc; + + if (!data) + { + return; + } + + _mp_play_view_album_art_update(data); + EVAS_OBJ_SHOW(obj); + + endfunc; +} + +static void +_mp_play_view_texture_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_info) +{ + startfunc; + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + MP_CHECK(ad->playing_view); + + if(obj == ad->playing_view->albumart_image_reflection) + ad->playing_view->albumart_image_reflection = NULL; + else if(obj == ad->playing_view->pre_albumart_image_reflection) + ad->playing_view->pre_albumart_image_reflection = NULL; + else + ERROR_TRACE("++++++++ check here ++++++++++"); +} + +static Evas_Object * +_mp_play_view_load_texture(void *data, const char *const tex_path, const int tex_size_width, const int tex_size_height) +{ + struct appdata *ad = (struct appdata *)data; + MP_CHECK_NULL(ad); + + Evas_Object *o = evas_object_image_add(ad->evas); + evas_object_image_file_set(o, tex_path, NULL); + int w = 0, h = 0; + evas_object_image_size_get(o, &w, &h); + evas_object_image_fill_set(o, 0, 0, w, h); + evas_object_resize(o, w, h); + evas_object_image_smooth_scale_set(o, 0); + + evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _mp_play_view_texture_destory_cb, ad); + + EVAS_OBJ_HIDE(o); + return o; +} + +static void +_mp_play_view_set_album_art(void *data, char *file_path) +{ + startfunc; + struct appdata *ad = (struct appdata *)data; + MP_CHECK(ad); + mp_playing_view *playing_view = ad->playing_view; + MP_CHECK(ad->playing_view); + + EVAS_OBJ_HIDE(playing_view->albumart_image); + + if (playing_view->albumart_image_reflection) + { + mp_evas_object_del(playing_view->pre_albumart_image_reflection); + playing_view->pre_albumart_image_reflection = playing_view->albumart_image_reflection; + playing_view->albumart_image_reflection = NULL; + evas_object_hide(playing_view->pre_albumart_image_reflection); + playing_view->hide_image_flag = false; + } + playing_view->albumart_image_reflection = + _mp_play_view_load_texture(data, file_path, 0, 0); + + endfunc; +} + +Evas_Object * +_mp_play_view_create_bg_map(void *data, Evas_Object * parents, music_list_item * current_item) +{ + startfunc; + struct appdata *ad = (struct appdata *)data; + MP_CHECK_NULL(ad); + MP_CHECK_NULL(parents); + mp_playing_view *playing_view = ad->playing_view; + MP_CHECK_NULL(ad->playing_view); + + Evas_Object *obj = NULL; + Evas *evas = NULL; + + evas = evas_object_evas_get(parents); + + if (evas == NULL) + { + return NULL; + } + + obj = edje_object_add(evas); + + MP_CHECK_NULL(current_item); + + //2 get alubmart + if (!strstr(PREFIX, current_item->albumart) && mp_util_is_image_valid(ad->evas, current_item->albumart)) + { + mp_debug(" draw album art"); + _mp_play_view_set_album_art(data, current_item->albumart); + } + else + { + _mp_play_view_set_album_art(data, DEFAULT_THUMBNAIL); + } + + if (playing_view->albumart_image_reflection) + { + evas_object_smart_member_add(playing_view->albumart_image_reflection, obj); + } + + evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _mp_play_view_bg_map_resize, data); + evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _mp_play_view_bg_map_move, data); + evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _mp_play_view_bg_map_show, data); + evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _mp_play_view_bg_map_hide, data); + + endfunc; + return obj; +} + +static void +_mp_play_view_update_option_btn_sensitivity(struct appdata *ad) +{ + startfunc; + + MP_CHECK(ad); + mp_playing_view *playing_view = ad->playing_view; + MP_CHECK(playing_view); + + music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK(current_item); + + const char *filename =current_item->filename; + + if (playing_view->play_view_screen_mode != MP_SCREEN_MODE_LANDSCAPE) + { + Evas_Object *play_options = elm_object_part_content_get(playing_view->layout, "player_options"); + MP_CHECK(play_options); + + const char *signal = NULL; + if (mp_check_file_exist(filename)) + signal = "sig_enable_option_btn"; + else + signal = "sig_disable_option_btn"; + + edje_object_signal_emit(_EDJ(play_options), signal, "c_source"); + } +} + + +bool +mp_play_view_load_track(void *data) { startfunc; @@ -1996,26 +2781,66 @@ mp_play_view_load_track(void *data) music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); MP_CHECK_FALSE(current_item); - // get alubmart - if (!strstr(PREFIX, current_item->albumart) && mp_util_is_image_valid(ad->evas, current_item->albumart)) - { - evas_object_image_file_set(playing_view->albumart_bg, current_item->albumart, NULL); + DEBUG_TRACE("ad->screen_mode=%d,flick_direction=%d", ad->screen_mode, playing_view->flick_direction); + if (playing_view->play_view_screen_mode) + { // landscape mode + // get alubmart + if (!strstr(PREFIX, current_item->albumart) && mp_util_is_image_valid(ad->evas, current_item->albumart)) + { + elm_bg_file_set(playing_view->albumart_img, current_item->albumart, NULL); + } + else + { + elm_bg_file_set(playing_view->albumart_img, DEFAULT_THUMBNAIL, NULL); + } + evas_object_show(playing_view->albumart_img); } else - { - evas_object_image_file_set(playing_view->albumart_bg, DEFAULT_THUMBNAIL, NULL); + { //portrait mode + if (playing_view->flick_direction || MP_SCREEN_MODE_PORTRAIT == ad->screen_mode) + { + // get alubmart + if (!strstr(PREFIX, current_item->albumart) && mp_util_is_image_valid(ad->evas, current_item->albumart)) + { + evas_object_image_file_set(playing_view->albumart_bg, current_item->albumart, NULL); + } + else + { + evas_object_image_file_set(playing_view->albumart_bg, DEFAULT_THUMBNAIL, NULL); + } + evas_object_show(playing_view->albumart_bg); + + mp_evas_object_del(playing_view->albumart_image); + music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); + playing_view->albumart_image = + _mp_play_view_create_bg_map(data, playing_view->play_view, current_item); + elm_object_part_content_set(playing_view->play_view, "album_art", playing_view->albumart_image); + evas_object_show(playing_view->albumart_image); + evas_object_repeat_events_set(playing_view->albumart_image, 1); + playing_view->flick_direction = 0; + } } - evas_object_show(playing_view->albumart_bg); - - playing_view->flick_direction = 0; + MP_TA_ACUM_ITEM_BEGIN(" _mp_play_view_load_track_info", 0); _mp_play_view_load_track_info(data, mp_play_list_get_current_item(ad->playing_list)); + MP_TA_ACUM_ITEM_END(" _mp_play_view_load_track_info", 0); + + /* disable share/set button when file do not exist */ + _mp_play_view_update_option_btn_sensitivity(ad); endfunc; return true; } +#ifndef MP_SOUND_PLAYER +/** + * load play view by path use for add to home case + * + * @param struct appdata *ad, char *path, int fid + * @return FALSE or TRUE if it success create + * @author aramie.kim@samsung.com + */ bool mp_play_view_load_by_path(struct appdata * ad, char *path) @@ -2039,16 +2864,15 @@ mp_play_view_load_by_path(struct appdata * ad, char *path) if (ad->playing_view) { - evas_object_del(ad->playing_view->play_control); + mp_evas_object_del(ad->playing_view->play_control); _mp_play_view_create_control_bar(ad); mp_play_view_play_item(ad, current_item, false, true); } else { mp_play_view_load(ad); - MP_CHECK_FALSE(ad->library); - MP_CHECK_FALSE(ad->library->cur_view); - evas_object_smart_callback_add(ad->library->cur_view, "transition,finished", + MP_CHECK_FALSE(ad->naviframe); + evas_object_smart_callback_add(ad->naviframe, "transition,finished", _mp_play_view_start_request, ad); } @@ -2059,6 +2883,7 @@ mp_play_view_load_by_path(struct appdata * ad, char *path) static void _mp_play_view_start_request(void *data, Evas_Object * obj, void *event_info) { + MP_TA_ACUM_ITEM_END("navi_frame_transition_time", 0); struct appdata *ad = (struct appdata *)data; mp_retm_if(!ad, "ad"); @@ -2071,7 +2896,7 @@ _mp_play_view_start_request(void *data, Evas_Object * obj, void *event_info) _mp_play_view_init_progress_bar(data); - evas_object_smart_callback_del(ad->library->cur_view, "transition,finished", _mp_play_view_start_request); + evas_object_smart_callback_del(ad->naviframe, "transition,finished", _mp_play_view_start_request); endfunc; @@ -2099,10 +2924,21 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec else reqest_play = true; - if (layout_data->view_mode == MP_VIEW_MODE_DEFAULT) - result = mp_play_list_create_play_list(ad, layout_data->svc_handle, layout_data->item_count, index, layout_data->playlist_id); //set current item here!!1 - else - result = mp_play_list_create_play_list(ad, layout_data->track_handle, layout_data->track_count, index, layout_data->playlist_id); //use track_handle when playback started from search result... + MP_TA_ACUM_ITEM_BEGIN(" create_play_list", 0); + mp_media_list_h svc_handle = NULL; + int item_count = 0; + if (layout_data->view_mode == MP_VIEW_MODE_DEFAULT) { + svc_handle = layout_data->svc_handle; //set current item here!!1 + item_count = layout_data->item_count; + } + else { + svc_handle = layout_data->track_handle; //use track_handle when playback started from search result... + item_count = layout_data->track_count; + } + + result = mp_play_list_create_play_list(ad, svc_handle, item_count, index, layout_data->playlist_id); //set current item here!!1 + + MP_TA_ACUM_ITEM_END(" create_play_list", 0); current_item = mp_play_list_get_current_item(ad->playing_list); //reget current item @@ -2110,8 +2946,12 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec MP_CHECK_EXCEP(result); MP_CHECK_EXCEP(ad->playing_list); - if (ad->loadtype != LOAD_PLAY) + // TODO: support recent play for voice ui. + if (ad->loadtype != LOAD_VOICE_UI) { + MP_TA_ACUM_ITEM_BEGIN(" mp_setting_save_last_played", 0); mp_setting_save_last_played(layout_data); //store playlist info. + MP_TA_ACUM_ITEM_END(" mp_setting_save_last_played", 0); + } if (layout_data->type_str) ad->playing_list->type_string = g_strdup(layout_data->type_str); @@ -2122,7 +2962,7 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec ad->playing_list->item_type = layout_data->track_type; - if (ad->loadtype == LOAD_PLAY) //when there is no transition effect, directly play track. + if (ad->loadtype == LOAD_VOICE_UI) //when there is no transition effect, directly play track. { ad->paused_by_user = FALSE; mp_play_destory(ad); @@ -2144,11 +2984,14 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec } else { + MP_TA_ACUM_ITEM_BEGIN(" mp_play_view_load", 0); mp_play_view_load(ad); + MP_TA_ACUM_ITEM_END(" mp_play_view_load", 0); { if (reqest_play) - evas_object_smart_callback_add(ad->library->cur_view, "transition,finished", + evas_object_smart_callback_add(ad->naviframe, "transition,finished", _mp_play_view_start_request, ad); + } } } @@ -2161,7 +3004,7 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec return false; } - +#endif bool mp_play_view_play_item(void *data, struct music_list_item * it, bool effect_value, bool move_left) @@ -2177,7 +3020,7 @@ mp_play_view_play_item(void *data, struct music_list_item * it, bool effect_valu if (effect_value && (ad->playing_list->count > 1)) { - if(ad->prohibit_aul_relaunch) + if(ad->app_is_foreground) _mp_play_view_transit_by_item(data, it, move_left); else { @@ -2200,6 +3043,77 @@ mp_play_view_play_item(void *data, struct music_list_item * it, bool effect_valu return true; } + + +bool +mp_play_view_set_screen_mode(void *data, int mode) +{ + startfunc; + + struct appdata *ad = (struct appdata *)data; + MP_CHECK_FALSE(ad); + + if (mode == MP_SCREEN_MODE_LANDSCAPE) + { + mp_playing_view *playing_view = ad->playing_view; + + if (playing_view) + { + playing_view->play_view_screen_mode = mode; + + if (playing_view->layout) + { + evas_object_hide(playing_view->layout); + + mp_play_view_stop_transit(data); + + if (playing_view->layout) + { + ad->backup_layout_play_view = playing_view->layout; + playing_view->layout = NULL; + } + + ad->backup_playing_view = playing_view; + if(playing_view->progressbar_timer) + ecore_timer_freeze(playing_view->progressbar_timer); + + ad->playing_view = NULL; + } + } + } + else + { + if (mp_play_list_get_current_item(ad->playing_list) + && ad->backup_playing_view && ad->backup_layout_play_view) + { + ad->playing_view = ad->backup_playing_view; + ad->playing_view->layout = ad->backup_layout_play_view; + ad->playing_view->play_view_screen_mode = MP_SCREEN_MODE_PORTRAIT; + + mp_play_view_stop_transit(ad); //reset transition effect + + _mp_play_view_set_menu_item(ad); //reset menu item + + mp_play_view_refresh(ad); + + evas_object_show(ad->playing_view->layout); + evas_object_show(ad->base_layout_main); + + ad->backup_playing_view = NULL; + ad->backup_layout_play_view = NULL; + + } + else + evas_object_show(ad->base_layout_main); + + } + + endfunc; + + return true; +} + +#ifndef MP_SOUND_PLAYER bool mp_play_view_create_library(void *data) { @@ -2215,8 +3129,6 @@ mp_play_view_create_library(void *data) mp_library_create(ad); MP_CHECK_FALSE(ad->library); - - elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE); } ad->b_add_tracks = 0; @@ -2227,6 +3139,14 @@ mp_play_view_create_library(void *data) return true; } +#endif +/** + * create play view + * + * @param data ,appdata + * @return FALSE or TRUE if it success create + * @author aramie.kim@samsung.com + */ bool mp_play_view_create(void *data) @@ -2258,7 +3178,9 @@ mp_play_view_destory(void *data) MP_CHECK_FALSE(playing_view); if (playing_view->layout) + { mp_evas_object_del(playing_view->layout); //=> call _mp_play_view_layout_del_cb watchout + } else IF_FREE(ad->playing_view); @@ -2273,15 +3195,21 @@ mp_play_view_load(void *data) struct appdata *ad = (struct appdata *)data; MP_CHECK_FALSE(ad); + MP_TA_ACUM_ITEM_BEGIN(" mp_play_view_create", 0); mp_play_view_create(data); + MP_TA_ACUM_ITEM_END(" mp_play_view_create", 0); mp_playing_view *playing_view = ad->playing_view; MP_CHECK_FALSE(playing_view); + MP_TA_ACUM_ITEM_BEGIN(" _mp_play_view_create_layout", 0); _mp_play_view_create_layout(data); + MP_TA_ACUM_ITEM_END(" _mp_play_view_create_layout", 0); MP_CHECK_FALSE(playing_view->layout); + MP_TA_ACUM_ITEM_BEGIN(" mp_play_view_refresh", 0); mp_play_view_refresh(data); + MP_TA_ACUM_ITEM_END(" mp_play_view_refresh", 0); endfunc; @@ -2297,7 +3225,14 @@ mp_play_view_pop(void *data) mp_playing_view *playing_view = ad->playing_view; MP_CHECK_FALSE(playing_view); +#ifdef MP_SOUND_PLAYER + mp_play_view_unswallow_info_ug_layout(ad); + + if (ad->playing_view) + sp_view_mgr_pop_view_to(ad->view_mgr, SP_VIEW_TYPE_PLAY); +#else mp_view_manager_pop_play_view(ad); +#endif endfunc; return true; } @@ -2313,17 +3248,19 @@ mp_play_view_refresh(void *data) mp_playing_view *playing_view = ad->playing_view; MP_CHECK_FALSE(playing_view); + MP_TA_ACUM_ITEM_BEGIN(" mp_play_view_load_track", 0); mp_play_view_load_track(ad); + MP_TA_ACUM_ITEM_END(" mp_play_view_load_track", 0); - mp_play_view_set_menu_state(ad, ad->show_optional_menu, false); + mp_play_view_set_menu_state(ad, false, false); _mp_play_view_init_progress_bar(data); const Evas_Object *play_icon = elm_object_part_content_get(ad->playing_view->play_control, "buttons"); if (play_icon != NULL) { - MMPlayerStateType player_state = mp_player_mgr_get_state(); - if (player_state != MM_PLAYER_STATE_PLAYING) + player_state_e player_state = mp_player_mgr_get_state(); + if (player_state != PLAYER_STATE_PLAYING) { edje_object_signal_emit(_EDJ(play_icon), "play", CTR_PROG_SIG_SRC); } @@ -2332,18 +3269,34 @@ mp_play_view_refresh(void *data) edje_object_signal_emit(_EDJ(play_icon), "pause", CTR_PROG_SIG_SRC); } } + endfunc; return true; } +#ifdef MP_SOUND_PLAYER +void mp_play_view_unswallow_info_ug_layout(struct appdata *ad) +{ + MP_CHECK(ad); + + if(ad->info_ug_base) + { + edje_object_part_unswallow(ad->info_ug_base, ad->info_ug_layout); + evas_object_hide(ad->info_ug_layout); + mp_ug_send_message(ad, MP_UG_MESSAGE_DEL); + } +} + +#else static void _mp_play_view_popup_response_cb(void *data, Evas_Object * obj, void *event_info) { + mp_evas_object_del(obj); mp_app_exit(data); } bool -mp_play_view_load_by_play(struct appdata *ad, const char *request_title) +mp_play_view_load_by_voice_ui(struct appdata *ad, const char *request_title) { startfunc; MP_CHECK_FALSE(ad); @@ -2371,10 +3324,7 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title) if (layout_data->svc_handle) { - if (layout_data->playlist_id < 0) - audio_svc_list_item_free(layout_data->svc_handle); - else - audio_svc_playlist_item_free(layout_data->svc_handle); + mp_media_info_list_destroy(layout_data->svc_handle); } } else @@ -2426,7 +3376,7 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title) if (layout_data->svc_handle) { - audio_svc_playlist_item_free(layout_data->svc_handle); + mp_media_info_list_destroy(layout_data->svc_handle); } } else @@ -2455,7 +3405,7 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title) if (layout_data->svc_handle) { - audio_svc_group_item_free(layout_data->svc_handle); + mp_media_info_group_list_destroy(layout_data->svc_handle); } } else @@ -2484,7 +3434,7 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title) if (layout_data->svc_handle) { - audio_svc_group_item_free(layout_data->svc_handle); + mp_media_info_group_list_destroy(layout_data->svc_handle); } } else @@ -2503,14 +3453,15 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title) if (!success) { - Evas_Object *popup = elm_popup_add(ad->win_main); - mp_popup_desc_set(popup, popup_txt); - mp_popup_set_response_cb(popup, _mp_play_view_popup_response_cb, ad); - mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES); - mp_popup_timeout_set(popup, 3.0); + Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, ad, _mp_play_view_popup_response_cb, ad); + elm_object_text_set(popup, popup_txt); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES); + mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT); evas_object_show(ad->win_main); evas_object_show(popup); } endfunc; return true; } +#endif + diff --git a/src/view/mp-playlist-view.c b/src/view/mp-playlist-view.c index b6e8521..b372e41 100755 --- a/src/view/mp-playlist-view.c +++ b/src/view/mp-playlist-view.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,9 +14,8 @@ * limitations under the License. */ - - #include "mp-library.h" +#include "mp-ta.h" #include "mp-player-debug.h" #include "mp-common.h" #include "music.h" @@ -28,24 +27,34 @@ #include "mp-widget.h" #include "mp-widget.h" #include "mp-menu.h" +#include "mp-play-list.h" +#include "mp-play.h" +#include "mp-play-view.h" -static void _mp_playlist_view_push_group_content(view_data_t * view_data, Evas_Object * content); static void _mp_playlist_view_push_item_content(view_data_t * view_data, Evas_Object * content, char *title); static void _mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *event_info); -static Elm_Genlist_Item_Class g_track_class_sweep = { - .item_style = "music_player/1icon.3text", - .func.text_get = mp_common_track_list_label_get, - .func.content_get = mp_common_track_list_icon_get, -}; +static Elm_Genlist_Item_Class * +_mp_playlist_view_get_track_sweep_itc() +{ + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); + MP_CHECK_NULL(itc); + + itc->item_style = "music_player/1icon.3text"; + itc->decorate_item_style = "mode/slide4.text"; + itc->func.text_get = mp_common_track_list_label_get; + itc->func.content_get = mp_common_track_list_icon_get; + + return itc; +} static void _mp_playlist_view_auto_playlist_list_select_cb(void *data, Evas_Object * obj, void *event_info) { - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; int index = (int)data; char *name = NULL; - int size = 0; + mp_media_info_h media; Elm_Object_Item *gli = (Elm_Object_Item *) event_info; elm_genlist_item_selected_set(gli, FALSE); @@ -67,15 +76,14 @@ _mp_playlist_view_auto_playlist_list_select_cb(void *data, Evas_Object * obj, vo return; } - view_data_t *view_data = evas_object_data_get(layout_data->navibar, "view_data"); + view_data_t *view_data = evas_object_data_get(layout_data->ad->naviframe, "view_data"); mp_retm_if(!view_data, "view_data is null"); MP_CHECK_VIEW_DATA(view_data); mp_retm_if(mp_view_manager_count_view_content(view_data) != 1, "detail view_layout might be destroying...."); - - ret = audio_svc_playlist_get_val(layout_data->default_playlists, index, AUDIO_SVC_PLAYLIST_NAME, &name, &size, - -1); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); + media = mp_media_info_group_list_nth_item(layout_data->default_playlists, index); + ret = mp_media_info_group_get_main_info(media, &name); + mp_retm_if(ret != 0, "Fail to get value"); mp_retm_if(name == NULL, "Fail to get value"); DEBUG_TRACE("playlist name: %s, playlist id: %d", name); @@ -86,38 +94,45 @@ _mp_playlist_view_auto_playlist_list_select_cb(void *data, Evas_Object * obj, vo memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t)); genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb; - if (!strcmp(GET_STR(STR_MP_MOST_PLAYED), name)) + if (!strcmp((STR_MP_MOST_PLAYED), name)) { mp_view_layout_set_layout_data(view_layout, MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST, - MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_PLAYED_COUNT, - MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep, + MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYED_COUNT, + MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), MP_LAYOUT_LIST_CB, &genlist_cbs, -1); } - else if (!strcmp(GET_STR(STR_MP_RECENTLY_ADDED), name)) + else if (!strcmp((STR_MP_RECENTLY_ADDED), name)) { mp_view_layout_set_layout_data(view_layout, MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST, - MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_ADDED_TIME, - MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep, + MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_ADDED_TIME, + MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), MP_LAYOUT_LIST_CB, &genlist_cbs, -1); } - else if (!strcmp(GET_STR(STR_MP_RECENTLY_PLAYED), name)) + else if (!strcmp((STR_MP_RECENTLY_PLAYED), name)) { mp_view_layout_set_layout_data(view_layout, MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST, - MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_PLAYED_TIME, - MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep, + MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYED_TIME, + MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), + MP_LAYOUT_LIST_CB, &genlist_cbs, -1); + } + else if (!strcmp((STR_MP_QUICK_LIST), name)) + { + mp_view_layout_set_layout_data(view_layout, + MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST, + MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_FAVORITE, + MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), MP_LAYOUT_LIST_CB, &genlist_cbs, -1); } else { mp_view_layout_set_layout_data(view_layout, MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST, - MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_PLAYLIST, - MP_LAYOUT_PLAYLIT_ID, AUDIO_SVC_FAVORITE_LIST_ID, + MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYLIST, MP_LAYOUT_LIST_CB, &genlist_cbs, - MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep, -1); + MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), -1); } _mp_playlist_view_push_item_content(view_data, view_layout, name); @@ -129,28 +144,53 @@ bool mp_playlist_view_create_by_id(Evas_Object * obj, int p_id) { startfunc; - + char *name = NULL; + mp_media_list_h list = NULL; + int count = 0; + int res = 0; + int i = 0; + mp_media_info_h media = NULL; + mp_genlist_cb_t genlist_cbs; + Evas_Object *view_layout = NULL; view_data_t *view_data = evas_object_data_get(obj, "view_data"); mp_retvm_if(!view_data, FALSE, "view_data is null"); MP_CHECK_VIEW_DATA(view_data); - Evas_Object *view_layout = mp_view_layout_create(obj, view_data, MP_VIEW_MODE_DEFAULT); + MP_CHECK_FALSE(p_id >= 0); + + view_layout = mp_view_layout_create(obj, view_data, MP_VIEW_MODE_DEFAULT); - mp_genlist_cb_t genlist_cbs; memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t)); genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb; - char name[AUDIO_SVC_PLAYLIST_NAME_SIZE] = { '0' }; + res = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count); + MP_CHECK_FALSE(res == 0); + MP_CHECK_FALSE(count > 0); - audio_svc_get_playlist_name_by_playlist_id(view_data->ad->media_svc_handle, p_id, name, AUDIO_SVC_PLAYLIST_NAME_SIZE); + res = mp_media_info_group_list_create(&list, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count); + MP_CHECK_FALSE(res == 0); - if (p_id >= 0) + for(i=0; inavibar, "view_data"); + view_data_t *view_data = evas_object_data_get(layout_data->ad->naviframe, "view_data"); mp_retm_if(!view_data, "view_data is null"); MP_CHECK_VIEW_DATA(view_data); mp_retm_if(layout_data->rename_mode, "rename mode.. ignore selection..."); mp_retm_if(mp_view_manager_count_view_content(view_data) != 1, "detail view_layout might be destroying...."); - ret = audio_svc_playlist_get_val(layout_data->svc_handle, index, AUDIO_SVC_PLAYLIST_ID, &p_id, - AUDIO_SVC_PLAYLIST_NAME, &name, &size, -1); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); + item_data = elm_object_item_data_get(gli); + MP_CHECK(item_data); + + ret = mp_media_info_group_get_playlist_id(item_data->handle, &p_id); + mp_retm_if(ret != 0, "Fail to get value"); + + ret = mp_media_info_group_get_main_info(item_data->handle, &name); + mp_retm_if(ret != 0, "Fail to get value"); mp_retm_if(name == NULL, "Fail to get value"); DEBUG_TRACE("playlist name: %s, playlist id: %d", name, p_id); @@ -223,10 +269,11 @@ _mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *e { mp_view_layout_set_layout_data(view_layout, MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST, - MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_PLAYLIST, + MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYLIST, MP_LAYOUT_PLAYLIT_ID, p_id, + MP_LAYOUT_PLAYLIT_HANDLE, item_data->handle, MP_LAYOUT_LIST_CB, &genlist_cbs, - MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep, -1); + MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), -1); } else WARN_TRACE("invalid playlist!!"); @@ -238,16 +285,6 @@ _mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *e } -static void -_mp_playlist_view_push_group_content(view_data_t * view_data, Evas_Object * content) -{ - mp_retm_if(!view_data, "view_data is NULL"); - MP_CHECK_VIEW_DATA(view_data); - - mp_view_manager_push_view_content(view_data, content, MP_VIEW_CONTENT_LIST); - mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_BODY_PLAYLISTS"), view_data); -} - void mp_playlist_view_add_button_cb(void *data, Evas_Object * obj, void *event_info) { @@ -313,7 +350,7 @@ mp_playlist_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_i } converted_name = elm_entry_markup_to_utf8(name); - plst_uid = mp_util_create_playlist(ad, converted_name); + plst_uid = mp_util_create_playlist(ad, converted_name, NULL); IF_FREE(converted_name); if (plst_uid < 0) return; @@ -336,13 +373,12 @@ mp_playlist_view_create_playlist_button_cb(void *data, Evas_Object * obj, void * Evas_Object *create_plst_layout = NULL; - new_playlist_name = mp_util_get_new_playlist_name(view_data->ad->media_svc_handle); + new_playlist_name = mp_util_get_new_playlist_name(); create_plst_layout = mp_common_create_editfield_layout(view_data->navibar, view_data->ad, new_playlist_name); IF_FREE(new_playlist_name); mp_retm_if(create_plst_layout == NULL, "create_plst_layout is NULL"); mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST); - mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_BODY_CREATE_PLAYLIST"), view_data); evas_object_show(create_plst_layout); @@ -353,34 +389,35 @@ _mp_playlist_view_label_get(void *data, Evas_Object * obj, const char *part) { mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; MP_CHECK_NULL(item); - AudioHandleType *plst_item = (AudioHandleType *) (item->handle); - + mp_media_info_h plst_item = (item->handle); MP_CHECK_NULL(plst_item); - int ret = AUDIO_SVC_ERROR_NONE; - if (!strcmp(part, "elm.text.1")) + int ret = 0; + if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1")) { char *name = NULL; - int size; - ret = audio_svc_playlist_get_val(plst_item, 0, AUDIO_SVC_PLAYLIST_NAME, &name, &size, -1); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get value"); + ret = mp_media_info_group_get_main_info(plst_item, &name); + mp_retvm_if(ret != 0, NULL, "Fail to get value"); mp_retvm_if(name == NULL, NULL, "Fail to get value"); - return strdup(name); + + if (!strcmp(part, "elm.text.1")) + return elm_entry_utf8_to_markup(GET_STR(name)); + else + return g_strdup(GET_STR(name)); } else if(!strcmp(part, "elm.text.2")) { int count = -1; int plst_id = -1; - ret = audio_svc_playlist_get_val(plst_item, 0, AUDIO_SVC_PLAYLIST_ID, &plst_id, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); - MP_CHECK_NULL(plst_id > 0); + ret = mp_media_info_group_get_playlist_id(plst_item, &plst_id); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + MP_CHECK_NULL(plst_id >= 0); - ret = audio_svc_count_playlist_item(item->media_svc_handle, plst_id, NULL, NULL, &count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get count"); + ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, plst_id, &count); + mp_retvm_if(ret != 0, NULL, "Fail to get count"); mp_retvm_if(count < 0, NULL, "Fail to get count"); return g_strdup_printf("(%d)", count); - } return NULL; @@ -398,9 +435,11 @@ mp_playlist_view_rename_done_cb(void *data, Evas_Object * obj, void *event_info) mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress"); + /* save */ + mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) elm_object_item_data_get(layout_data->rename_git); MP_CHECK(item); - AudioHandleType *plst = (AudioHandleType *) (item->handle); + mp_media_info_h plst = (item->handle); MP_CHECK(plst); bool rename_success = FALSE; @@ -412,19 +451,18 @@ mp_playlist_view_rename_done_cb(void *data, Evas_Object * obj, void *event_info) mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST")); else { - int count = 0; - ret = audio_svc_count_playlist_by_name(layout_data->ad->media_svc_handle, text, &count); - if (ret != AUDIO_SVC_ERROR_NONE) + bool exist = false; + ret = mp_media_info_playlist_is_exist(text, &exist); + if (ret != 0) { ERROR_TRACE("Fail to get playlist count by name: %d", ret); mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST")); } else { - if (count > 0) { + if (exist) { char *origin_name = NULL; - int size = 0; - audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_NAME, &origin_name, &size, -1); + mp_media_info_group_get_main_info(plst, &origin_name); if (origin_name && !g_strcmp0(origin_name, text)) { mp_debug("Not edited.. rename OK"); rename_success = TRUE; @@ -434,16 +472,11 @@ mp_playlist_view_rename_done_cb(void *data, Evas_Object * obj, void *event_info) SAFE_FREE(msg); } } else { - audio_svc_playlist_set_val(plst, 0, AUDIO_SVC_PLAYLIST_NAME, text, AUDIO_SVC_METADATA_LEN_MAX, -1); - - int plst_id = -1; - audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_ID, &plst_id, -1); - ret = audio_svc_update_playlist_name(layout_data->ad->media_svc_handle, plst_id, text); - if (ret == AUDIO_SVC_ERROR_NONE) { - mp_debug("audio_svc_update_playlist_name().. OK"); + ret = mp_media_info_playlist_rename(plst, text); + if (ret == 0) { + mp_debug("mp_media_info_playlist_rename().. OK"); rename_success = TRUE; } - } } } @@ -501,62 +534,210 @@ _mp_playlist_rename_button_cb(void *data, Evas_Object * obj, void *event_info) mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count); } + +static bool +_mp_playlist_view_get_playlist_data_by_name(void *data, char *name) +{ + DEBUG_TRACE_FUNC(); + + MP_CHECK_FALSE(data); + MP_CHECK_FALSE(name); + + int ret = 0; + char *playlist_name = name; + mp_layout_data_t *layout_data = data; + + mp_media_list_h svc_handle = NULL; + int count = -1; + int playlist_id = -1; + + if (!strcmp((STR_MP_MOST_PLAYED), playlist_name)) + { + playlist_id = -1; + + mp_media_info_list_count(MP_TRACK_BY_PLAYED_COUNT, NULL, NULL, NULL, 0, &count); + DEBUG_TRACE("music count=%d\n", count); + + ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_PLAYED_COUNT, NULL, NULL, NULL, 0, 0, count); + if (ret != 0) + { + DEBUG_TRACE("fail to get list item: %d", ret); + ret = mp_media_info_list_destroy(svc_handle); + svc_handle = NULL; + } + } + else if (!strcmp((STR_MP_RECENTLY_ADDED), playlist_name)) + { + playlist_id = -1; + mp_media_info_list_count(MP_TRACK_BY_ADDED_TIME, NULL, NULL, NULL, 0, &count); + DEBUG_TRACE("music count=%d\n", count); + + /* get music item data */ + ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_ADDED_TIME, NULL, NULL, NULL, 0, 0, count); + if (ret != 0) + { + DEBUG_TRACE("fail to get list item: %d", ret); + ret = mp_media_info_list_destroy(svc_handle); + svc_handle = NULL; + } + } + else if (!strcmp((STR_MP_RECENTLY_PLAYED), playlist_name)) + { + playlist_id = -1; + + mp_media_info_list_count(MP_TRACK_BY_PLAYED_TIME, NULL, NULL, NULL, 0, &count); + DEBUG_TRACE("music count=%d\n", count); + + /* get music item data */ + ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_PLAYED_TIME, NULL, NULL, NULL, 0, 0, count); + if (ret != 0) + { + DEBUG_TRACE("fail to get list item: %d", ret); + ret = mp_media_info_list_destroy(svc_handle); + svc_handle = NULL; + } + } + else if (!strcmp((STR_MP_QUICK_LIST), playlist_name)) + { + mp_media_info_list_count(MP_TRACK_BY_FAVORITE, NULL, NULL, NULL, 0, &count); + DEBUG_TRACE("music count=%d\n", count); + + /* get music item data */ + ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_FAVORITE, NULL, NULL, NULL, 0, 0, count); + if (ret != 0) + { + DEBUG_TRACE("fail to get list item: %d", ret); + ret = mp_media_info_list_destroy(svc_handle); + svc_handle = NULL; + } + } + else + { + ret = mp_media_info_playlist_get_id_by_name(playlist_name, &playlist_id); + mp_retvm_if(ret != 0, FALSE, "ret: %d, playlist_name: %s", ret, playlist_name); + mp_retvm_if(playlist_id < 0, FALSE, "id is not valid.. %d", playlist_id); + + ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, &count); + mp_retvm_if(ret != 0, FALSE, "ret: %d", ret); + + if (count <= 0) + { + DEBUG_TRACE("Recently played tracks were removed..."); + return NULL; + } + + ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, 0, count); + if (ret != 0) + { + WARN_TRACE("fail to get list item: %d", ret); + } + } + + layout_data->playlist_id = playlist_id; + layout_data->item_count = count; + layout_data->svc_handle = svc_handle; + + return TRUE; +} + +static void +_mp_playlist_view_playall_button_cb(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE_FUNC(); + + struct appdata *ad = NULL; + mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + + MP_CHECK(layout_data); + MP_CHECK_LAYOUT_DATA(layout_data); + ad = layout_data->ad; + + mp_media_info_h handle = data; + MP_CHECK(handle); + + int playlist_id = -1; + char *playlist_name = NULL; + int size = -1; + int ret = 0; + + /* get playlist name */ + ret = mp_media_info_group_get_main_info(handle, &playlist_name); + ret = mp_media_info_group_get_playlist_id(handle, &playlist_id); + mp_retm_if(playlist_name == NULL, "Fail to get playlist_name"); + DEBUG_TRACE("playlist_id=%d, size=%d, playlist_name=%s\n", playlist_id, size, playlist_name); + + /* get playlist data by name */ + mp_layout_data_t *layout_data_new = calloc(1, sizeof(mp_layout_data_t)); + MP_CHECK(layout_data_new); + MP_SET_LAYOUT_DATA_MAGIC(layout_data_new); + layout_data_new->ad = ad; + + if (!_mp_playlist_view_get_playlist_data_by_name(layout_data_new, playlist_name)) + { + IF_FREE(layout_data_new->type_str); + IF_FREE(layout_data_new->filter_str); + free(layout_data_new); + + return; + } + + mp_play_view_load_by_index(layout_data_new, 0, false); + + /* set the flag for update playlist view when back from playview */ + if (ad->playing_view != NULL) + { + ad->playing_view->b_play_all = true; + } + + if (layout_data_new->svc_handle) + { + mp_media_info_list_destroy(layout_data_new->svc_handle); + } + + IF_FREE(layout_data_new->type_str); + IF_FREE(layout_data_new->filter_str); + free(layout_data_new); + + endfunc; +} + static Evas_Object * _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part) { mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; MP_CHECK_NULL(item); - AudioHandleType *plst = (AudioHandleType *) (item->handle); - + mp_media_info_h plst = (item->handle); MP_CHECK_NULL(plst); Evas_Object *eo = NULL; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); int playlist_id = 0; char *thumb_path = NULL; char *name = NULL; - int size; mp_retvm_if(!layout_data, NULL, "list data is NULL !!!"); MP_CHECK_LAYOUT_DATA(layout_data); - ret = audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_ID, &playlist_id, - AUDIO_SVC_PLAYLIST_THUMBNAIL_PATH, &thumb_path, &size, AUDIO_SVC_PLAYLIST_NAME, - &name, &size, -1); + mp_media_info_group_get_playlist_id(plst, &playlist_id); + ret = mp_media_info_group_get_thumbnail_path(plst, &thumb_path); + mp_retvm_if(ret != 0, NULL, "Fail to get value"); + ret = mp_media_info_group_get_main_info(plst, &name); + mp_retvm_if(ret != 0, NULL, "Fail to get value"); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get value"); if (!strcmp(part, "elm.icon")) { if (!playlist_id) { - if (!strcmp(GET_STR(STR_MP_MOST_PLAYED), name)) - { - eo = mp_util_create_thumb_icon(obj, THUMBNAIL_MOST_PLAYED, MP_LIST_ICON_SIZE, + eo = mp_util_create_thumb_icon(obj, thumb_path, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE); - } - else if (!strcmp(GET_STR(STR_MP_RECENTLY_ADDED), name)) - { - eo = mp_util_create_thumb_icon(obj, THUMBNAIL_RECENTLY_ADDED, MP_LIST_ICON_SIZE, - MP_LIST_ICON_SIZE); - } - else if (!strcmp(GET_STR(STR_MP_RECENTLY_PLAYED), name)) - { - eo = mp_util_create_thumb_icon(obj, THUMBNAIL_RECENTLY_PLAYED, MP_LIST_ICON_SIZE, - MP_LIST_ICON_SIZE); - } - else - { - eo = mp_util_create_thumb_icon(obj, THUMBNAIL_QUICK_LIST, MP_LIST_ICON_SIZE, - MP_LIST_ICON_SIZE); - } } else { if (thumb_path == NULL) { int count = 0; - audio_svc_count_playlist_item(item->media_svc_handle, playlist_id, NULL, NULL, &count); + mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, &count); if (count <= 0) eo = mp_util_create_thumb_icon(obj, THUMBNAIL_PLAYLIST_NOITEM, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE); @@ -580,6 +761,39 @@ _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part) } } + Evas_Object *button; + if (!strcmp(part, "elm.slide.swallow.1")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/multiline"); + elm_object_text_set(button, GET_STR("Play all")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "Play all"); + evas_object_smart_callback_add(button, "clicked", _mp_playlist_view_playall_button_cb, plst); + evas_object_data_set(button, "layout_data", layout_data); + return button; + } + else if (!strcmp(part, "elm.slide.swallow.2")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/multiline"); + elm_object_text_set(button, GET_SYS_STR("IDS_COM_BODY_RENAME")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_BODY_RENAME"); + evas_object_smart_callback_add(button, "clicked", _mp_playlist_rename_button_cb, item->it); + evas_object_data_set(button, "layout_data", layout_data); + return button; + } + else if (!strcmp(part, "elm.slide.swallow.3")) + { + button = elm_button_add(obj); + elm_object_style_set(button, "sweep/delete"); + elm_object_text_set(button, GET_SYS_STR("IDS_COM_OPT_DELETE")); + mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_OPT_DELETE"); + evas_object_smart_callback_add(button, "clicked", mp_menu_delete_cb, plst); + evas_object_data_set(button, "layout_data", layout_data); + + return button; + } + Evas_Object *btn = NULL, *check = NULL, *edit_field = NULL, *entry = NULL; if (elm_genlist_decorate_mode_get(obj)) @@ -601,7 +815,6 @@ _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part) if (item->it) { evas_object_smart_callback_add(btn, "clicked", _mp_playlist_rename_button_cb, item->it); - evas_object_propagate_events_set(btn, EINA_FALSE); evas_object_data_set(btn, "layout_data", layout_data); } return btn; @@ -610,7 +823,7 @@ _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part) if (!strcmp(part, "elm.flip.content")) { - edit_field = mp_widget_create_editfield(obj, AUDIO_SVC_PLAYLIST_NAME_SIZE - 1, NULL, layout_data->ad); + edit_field = mp_widget_create_editfield(obj, MP_PLAYLIST_NAME_SIZE - 1, NULL, layout_data->ad); entry = mp_widget_editfield_entry_get(edit_field); name = elm_entry_utf8_to_markup(name); elm_entry_entry_set(entry, name); @@ -625,18 +838,27 @@ _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part) return edit_field; } + //} return eo; } static Elm_Genlist_Item_Class g_playlist_class_sweep = { + .version = ELM_GENGRID_ITEM_CLASS_VERSION, + .refcount = 0, + .delete_me = EINA_FALSE, .item_style = "music_player/1icon.2text", + .decorate_item_style = "mode/slide3", .func.text_get = _mp_playlist_view_label_get, .func.content_get = _mp_playlist_view_icon_get, }; static Elm_Genlist_Item_Class g_playlist_class = { + .version = ELM_GENGRID_ITEM_CLASS_VERSION, + .refcount = 0, + .delete_me = EINA_FALSE, .item_style = "music_player/1icon.2text", + .decorate_item_style = "mode/slide", .func.text_get = _mp_playlist_view_label_get, .func.content_get = _mp_playlist_view_icon_get, }; @@ -650,26 +872,24 @@ Evas_Object * mp_playlist_view_create(struct appdata *ad, mp_view_type_t view_type) { DEBUG_TRACE("view_type: %d", view_type); - Evas_Object *navibar = mp_widget_navigation_new(ad->ctrl_bar, ad); - - view_data_t *view_data = calloc(sizeof(view_data_t), 1); - MP_SET_VIEW_DATA_MAGIC(view_data); - view_data->ad = ad; - view_data->navibar = navibar; + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); view_data->view_type = view_type; - DEBUG_TRACE("view_data->navibar: %x", view_data->navibar); + Evas_Object *view_layout = mp_view_layout_create(ad->tabbar, view_data, MP_VIEW_MODE_DEFAULT); - evas_object_data_set(navibar, "view_data", view_data); + mp_layout_data_t *layout_data = NULL; + layout_data = evas_object_data_get(view_layout, "layout_data"); + MP_CHECK_NULL(layout_data); + evas_object_data_set(ad->controlbar_layout, "layout_data", layout_data); - Evas_Object *view_layout = mp_view_layout_create(navibar, view_data, MP_VIEW_MODE_DEFAULT); mp_view_layout_set_layout_data(view_layout, MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_PLAYLIST_LIST, MP_LAYOUT_LIST_CB, &g_playlist_list_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, &g_playlist_class_sweep, MP_LAYOUT_GENLIST_AUTO_PLAYLIST_ITEMCLASS, &g_playlist_class, -1); - _mp_playlist_view_push_group_content(view_data, view_layout); - return navibar; + mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_BODY_PLAYLISTS", view_data); + + return view_layout; } void @@ -712,10 +932,9 @@ mp_playlist_view_reset_rename_mode(struct appdata *ad) { MP_CHECK_FALSE(ad); - MP_CHECK_FALSE(ad->library); - MP_CHECK_FALSE(ad->library->cur_view); + MP_CHECK_FALSE(ad->naviframe); - view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data"); + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); MP_CHECK_FALSE(view_data); mp_layout_data_t *layout_data = NULL; diff --git a/src/view/mp-track-view.c b/src/view/mp-track-view.c index 7fb6812..4ccd5d7 100755 --- a/src/view/mp-track-view.c +++ b/src/view/mp-track-view.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,9 +14,8 @@ * limitations under the License. */ - - #include "mp-library.h" +#include "mp-ta.h" #include "mp-player-debug.h" #include "mp-common.h" #include "music.h" @@ -38,15 +37,14 @@ mp_track_view_add_to_playlist_done_cb(void *data, Evas_Object * obj, void *event if (view_data->ad->notify != NULL) { evas_object_del(view_data->ad->notify); + view_data->ad->notify = NULL; } if (view_data->ad->notify_layout != NULL) { evas_object_del(view_data->ad->notify_layout); + view_data->ad->notify_layout = NULL; } - view_data->ad->notify = NULL; - view_data->ad->notify_layout = NULL; - mp_layout_data_t *layout_data = NULL; layout_data = evas_object_data_get(mp_view_manager_get_first_view_layout(view_data->ad), "layout_data"); if (layout_data) @@ -75,15 +73,14 @@ mp_track_view_add_to_playlist_cancel_cb(void *data, Evas_Object * obj, void *eve if (view_data->ad->notify != NULL) { evas_object_del(view_data->ad->notify); + view_data->ad->notify = NULL; } if (view_data->ad->notify_layout != NULL) { evas_object_del(view_data->ad->notify_layout); + view_data->ad->notify_layout = NULL; } - view_data->ad->notify = NULL; - view_data->ad->notify_layout = NULL; - Evas_Object *view_layout = mp_view_manager_get_last_view_layout(view_data->ad); MP_CHECK(view_layout); @@ -97,33 +94,33 @@ Evas_Object * mp_track_view_create(struct appdata *ad) { DEBUG_TRACE(""); - Evas_Object *navibar = mp_widget_navigation_new(ad->ctrl_bar, ad); - view_data_t *view_data = calloc(sizeof(view_data_t), 1); - MP_SET_VIEW_DATA_MAGIC(view_data); - view_data->ad = ad; - view_data->navibar = navibar; + view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data"); + view_data->view_type = MP_VIEW_TYPE_SONGS; + Evas_Object *view_layout = mp_view_layout_create(ad->tabbar, view_data, MP_VIEW_MODE_DEFAULT); - evas_object_data_set(navibar, "view_data", view_data); - Evas_Object *view_layout = mp_view_layout_create(navibar, view_data, MP_VIEW_MODE_DEFAULT); + Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new(); - Elm_Genlist_Item_Class itc; - memset(&itc, 0, sizeof(Elm_Genlist_Item_Class)); - itc.item_style = "music_player/1icon.3text"; - itc.func.text_get = mp_common_track_list_label_get; - itc.func.content_get = mp_common_track_list_icon_get; + itc->item_style = "music_player/1icon.3text"; + itc->decorate_item_style = "mode/slide4.text"; + itc->func.text_get = mp_common_track_list_label_get; + itc->func.content_get = mp_common_track_list_icon_get; mp_genlist_cb_t genlist_cbs; memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t)); genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb; mp_view_layout_set_layout_data(view_layout, - MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_ALL, - MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, &itc, -1); + MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_ALL, + MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, itc, -1); + + mp_layout_data_t *layout_data = NULL; + layout_data = evas_object_data_get(view_layout, "layout_data"); + MP_CHECK_NULL(layout_data); - mp_view_manager_push_view_content(view_data, view_layout, MP_VIEW_CONTENT_LIST); + evas_object_data_set(ad->controlbar_layout, "layout_data", layout_data); - return navibar; + return view_layout; } void @@ -160,11 +157,11 @@ mp_track_view_update_title_button(Evas_Object * track_view) if (view_data->ad->b_add_tracks) { - mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_OPT_ADD_PLAYLIST"), view_data); + mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_OPT_ADD_PLAYLIST", view_data); } else { - mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_HEADER_SONGS"), view_data); + mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_HEADER_SONGS", view_data); } } diff --git a/src/widget/include/mp-minicontroller.h b/src/widget/include/mp-minicontroller.h new file mode 100755 index 0000000..a8dde91 --- /dev/null +++ b/src/widget/include/mp-minicontroller.h @@ -0,0 +1,38 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __MP_MINICONTROLLER_H__ +#define __MP_MINICONTROLLER_H__ + +#include "mp-ta.h" +#include "music.h" +#include "mp-item.h" +#include "mp-player-control.h" +#include "mp-play-view.h" +#include "mp-common.h" +#include "mp-minicontroller.h" +#include "mp-player-mgr.h" +#include "mp-player-debug.h" + +int mp_minicontroller_create(struct appdata *ad); +int mp_minicontroller_hide(struct appdata *ad); +int mp_minicontroller_show(struct appdata *ad); +int mp_minicontroller_destroy(struct appdata *ad); +void mp_minicontroller_update(struct appdata *ad); +void mp_minicontroller_rotate(struct appdata *ad, int angle); +void mp_minicontroller_visible_set(struct appdata *ad, bool visible); + +#endif diff --git a/src/widget/include/mp-popup.h b/src/widget/include/mp-popup.h index 79a9a3e..1a5388f 100755 --- a/src/widget/include/mp-popup.h +++ b/src/widget/include/mp-popup.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,7 +14,6 @@ * limitations under the License. */ - #ifndef __MP_popup_H_ #define __MP_popup_H_ @@ -22,39 +21,29 @@ typedef enum _mp_popup_t { + MP_POPUP_PV_SET_AS = 0, + MP_POPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME, + MP_POPUP_PV_SHARE, + MP_POPUP_LIST_SHARE, MP_POPUP_SOUND_PATH, MP_POPUP_ADD_TO_PLST, } mp_popup_t; -#define mp_popup_title_set(obj, title) elm_object_part_text_set((obj), "title,text", (title)) -#define mp_popup_desc_set(obj, desc) elm_object_text_set((obj), (desc)) -#define mp_popup_content_set(obj, content) elm_object_content_set((obj), (content)) - -#define mp_popup_btn_popup_set(obj, popup) do { \ - if (obj) { \ - evas_object_data_set((obj), "popup", (popup)); \ - } \ -} while (0) -#define mp_popup_btn_popup_get(obj) evas_object_data_get((obj), "popup") -#define mp_popup_btn_response_set(obj, response) do { \ - if (obj) { \ - evas_object_data_set((obj), "response", (void *)(response)); \ - } \ -} while (0) -#define mp_popup_btn_response_get(obj) (int)evas_object_data_get((obj), "response") - +typedef enum { + MP_POPUP_BTN_1, + MP_POPUP_BTN_2, + MP_POPUP_BTN_3, + MP_POPUP_BTN_MAX, +} popup_button_t; Elm_Object_Item *mp_genlist_popup_item_append(Evas_Object * popup, char *label, Evas_Object * icon, void *cb, void *data); Evas_Object *mp_genlist_popup_create(Evas_Object * parent, mp_popup_t type, void *user_data, struct appdata *ad); -Evas_Object *mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *user_data, void *response_cb, +Evas_Object *mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *user_data, Evas_Smart_Cb response_cb, struct appdata *ad); void mp_popup_destroy(struct appdata *ad); - -void mp_popup_set_response_cb(Evas_Object *popup, Evas_Smart_Cb response_cb, void *data); void mp_popup_response(Evas_Object *popup, int response); -Evas_Object *mp_popup_button_set(Evas_Object *popup, const char *part, const char *text, int response); +bool mp_popup_button_set(Evas_Object *popup, popup_button_t btn_index, const char *text, int response); void mp_popup_timeout_set(Evas_Object *popup, double timeout); -void mp_popup_block_clicked_set(Evas_Object *popup); #endif // __MP_contextpopup_H_ diff --git a/src/widget/include/mp-search.h b/src/widget/include/mp-search.h index b2b3e45..473be7e 100755 --- a/src/widget/include/mp-search.h +++ b/src/widget/include/mp-search.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,7 +15,6 @@ */ - #ifndef __MP_SEARCH_H_ #define __MP_SEARCH_H_ #include diff --git a/src/widget/include/mp-smart-event-box.h b/src/widget/include/mp-smart-event-box.h index a2aac6f..374276e 100755 --- a/src/widget/include/mp-smart-event-box.h +++ b/src/widget/include/mp-smart-event-box.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #ifndef __MP_SMART_EVENT_BOX_H_ #define __MP_SMART_EVENT_BOX_H_ diff --git a/src/widget/include/mp-view-layout.h b/src/widget/include/mp-view-layout.h index 85cfcdd..ed4d25c 100755 --- a/src/widget/include/mp-view-layout.h +++ b/src/widget/include/mp-view-layout.h @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,8 +14,6 @@ * limitations under the License. */ - - #ifndef __MP_VIEW_LAYOUT_H_ #define __MP_VIEW_LAYOUT_H_ @@ -40,9 +38,10 @@ typedef enum enum { MP_LAYOUT_CATEGORY_TYPE = 1, //track list or group list or playlist - MP_LAYOUT_TRACK_LIST_TYPE, //audio_svc_track_type_e - MP_LAYOUT_GROUP_LIST_TYPE, //audio_svc_group_type_e + MP_LAYOUT_TRACK_LIST_TYPE, //mp_track_type_e + MP_LAYOUT_GROUP_LIST_TYPE, //mp_group_type_e MP_LAYOUT_PLAYLIT_ID, + MP_LAYOUT_PLAYLIT_HANDLE, MP_LAYOUT_TYPE_STR, //type_str for db query MP_LAYOUT_FILTER_STR, MP_LAYOUT_GENLIST_ITEMCLASS, //item class of genlist @@ -50,6 +49,7 @@ enum MP_LAYOUT_LIST_CB, MP_LAYOUT_EDIT_MODE, MP_LAYOUT_REORDER_MODE, + MP_LAYOUT_PLST_HANDLE_TYPE, }; typedef struct @@ -58,14 +58,21 @@ typedef struct genlist_cb_t auto_playlist_cb; } mp_genlist_cb_t; +typedef enum +{ + MP_SQUARE_VIEW_GENGRID, + MP_SQUARE_VIEW_GENLIST +} mp_square_view_type_e; + typedef struct { int magic; mp_list_category_t category; - audio_svc_track_type_e track_type; - audio_svc_group_type_e group_type; + mp_track_type_e track_type; + mp_group_type_e group_type; int playlist_id; + mp_media_info_h playlist_handle; char *type_str; char *filter_str; @@ -79,25 +86,24 @@ typedef struct int item_count; int track_count; //for create playing list from search result. - AudioHandleType *svc_handle; - AudioHandleType *track_handle; //for search - AudioHandleType *artist_handle; //for search - AudioHandleType *album_handle; //for search - AudioHandleType *default_playlists; - - Evas_Object *navibar; //parent navibar of layout + mp_media_list_h svc_handle; + mp_media_list_h track_handle; //for search + mp_media_list_h artist_handle; //for search + mp_media_list_h album_handle; //for search + mp_media_list_h default_playlists; Evas_Object *layout; Evas_Object *genlist; Evas_Object *search_bar; Evas_Object *now_playing; Evas_Object *box; //content of confomant, genlist or sentinal should be contained in it. + Evas_Object *index_fast; Evas_Object *sentinel; Evas_Object *isf_entry; Ecore_IMF_Context *imf_context; - Elm_Genlist_Item_Class itc; + Elm_Genlist_Item_Class *itc; Elm_Genlist_Item_Class auto_playlist_item_class; Elm_Object_Item *selected_it; //Selected genlist item; @@ -109,6 +115,7 @@ typedef struct view_data_t *view_data; + char *old_name; Elm_Object_Item *rename_git; mp_view_mode_t view_mode; // to classify edit & search view. @@ -118,46 +125,40 @@ typedef struct Evas_Object *now_playing_progress; Ecore_Timer *progress_timer; - //added for append item in idler callback. + // append item in idler callback. + char *fast_scrooll_index; Ecore_Idler *load_item_idler; Ecore_Idler *block_size_idler; - //added for genlist edit mode + // genlist edit mode Evas_Object *select_all_layout; Evas_Object *select_all_checkbox; Eina_Bool select_all_checked; int checked_count; - //support cancel while processing edit function. + mp_plst_type_t plst_handle_type; + + // support cancel while processing edit function. Ecore_Idler *edit_idler; Ecore_Idler *reorder_idler; Elm_Object_Item *current_edit_item; int selected_count; //use to store checked count when editing strared. int error_count; - AudioHandleType *group_track_handle; //for deleting group items + mp_media_list_h group_track_handle; //for deleting group items int edit_track_index; //for deleting group items bool group_item_delete_error; //for deleting group items mp_edit_operation_t edit_operation; int playlist_track_count; //number of tracks in playlist.. int edit_playlist_id; //playlist_id tracks to be added. + mp_playlist_h edit_playlist_handle; char *navibar_title; void *callback_data; int default_playlist_count; - Elm_Object_Item **aa_group; //group item for artist-album list. - Elm_Genlist_Item_Class *aa_group_itc; //group for album list. - int aa_group_count; // count of group item - int selected_group_index; //selected index for group - AudioHandleType *aa_handle; //handle for artist-album group - int selected_album_sub_index; //selected index for artist-album sub genlist - int *aa_item_count; //item count for artist-album sub genlist bool album_delete_flag; //flag for delete album item - int selected_index; //selected index for group Elm_Object_Item *album_group; //group item for album track view. - Elm_Genlist_Item_Class *album_group_itc; //group for album track view. - AudioHandleType *album_track_handle; //group item handle for album track view Eina_Bool is_item_del; //set it true if elm_object_item_del() used. When play track after delete track, svc_handle mismatch with list. @@ -167,9 +168,9 @@ typedef struct { Elm_Object_Item *it; // Genlist Item pointer Eina_Bool checked; // Check status - audio_svc_group_type_e group_type; //use this to classify ablum or artist when group item seleted in search view. - AudioHandleType *handle; - MediaSvcHandle *media_svc_handle; + mp_group_type_e group_type; //use this to classify ablum or artist when group item seleted in search view. + mp_media_info_h handle; + bool unregister_lang_mgr; } mp_genlist_item_data_t; #define MP_LAYOUT_DATA_MAGIC 0x810522bb diff --git a/src/widget/mp-minicontroller.c b/src/widget/mp-minicontroller.c new file mode 100755 index 0000000..a23ce6e --- /dev/null +++ b/src/widget/mp-minicontroller.c @@ -0,0 +1,446 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include "mp-minicontroller.h" +#include "mp-player-control.h" +#include "mp-play.h" +#include "Ecore.h" +#include "mp-player-mgr.h" +#include "mp-util.h" +#include "mp-widget.h" +#include "mp-setting-ctrl.h" + +#define MINI_CONTROLLER_WIDTH (720) +#define MINI_CONTROLLER_WIDTH_LANDSCAPE (1280) +#define MINI_CONTROLLER_HEIGHT (170) +#define WL_INDI_H 27 //Window Layout Indicator Height +#define PAUSE_TIME_OUT 120 + +#define CTR_EDJ_SIG_SRC "ctrl_edj" +#define CTR_PROG_SIG_SRC "ctrl_prog" + +#define BUFFER_MAX 256 + +static void _minicontroller_action_cb(void *data, Evas_Object * obj, const char *emission, const char *source); +static Evas_Object *_load_edj(Evas_Object * parent, const char *file, const char *group); +static Evas_Object *_create_bgimg(Evas_Object * parent); +static Evas_Object *_load_minicontroller(struct appdata *ad); + +static inline void +_mp_minicontroller_update_elapsed_time(struct appdata *ad) +{ + MP_CHECK(ad); + MP_CHECK(ad->minicontroller_layout); + + + int sec = mp_player_mgr_get_position() / 1000; + int min = sec / 60; + sec = sec % 60; + + char *time_text = g_strdup_printf("%02d:%02d", min, sec); + if (time_text) { + edje_object_part_text_set(_EDJ(ad->minicontroller_layout), "elm.elapsed_time", time_text); + free(time_text); + time_text = NULL; + } +} + +static Eina_Bool +_minicontroller_update_progresstime_cb(void *data) +{ + struct appdata *ad = data; + mp_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL"); + + if (ad->player_state == PLAY_STATE_PLAYING) + { + _mp_minicontroller_update_elapsed_time(ad); + } + + return ECORE_CALLBACK_RENEW; +} + +static void +_minicontroller_progress_timer_add(void *data) +{ + struct appdata *ad = data; + mp_retm_if(ad == NULL, "appdata is NULL"); + DEBUG_TRACE(); + + mp_ecore_timer_del(ad->minicon_progress_timer); + + _mp_minicontroller_update_elapsed_time(ad); + if (ad->player_state == PLAY_STATE_PLAYING) + ad->minicon_progress_timer = ecore_timer_add(1.0, _minicontroller_update_progresstime_cb, ad); +} + +static void +_minicontroller_action_cb(void *data, Evas_Object * obj, const char *emission, const char *source) +{ + DEBUG_TRACE("emission: %s, source: %s\n", emission, source); + + struct appdata *ad = (struct appdata *)data; + mp_retm_if(ad == NULL, "appdata is NULL"); + + if (source) + + { + if (strcmp(source, "rew_btn_down") == 0) + { + DEBUG_TRACE("REW"); + mp_play_control_rew_cb(data, obj, "rew_btn_down", CTR_EDJ_SIG_SRC); + + } + else if (strcmp(source, "rew_btn_up") == 0) + { + DEBUG_TRACE("REW_up"); + mp_play_control_rew_cb(data, obj, "rew_btn_up", CTR_EDJ_SIG_SRC); + + + } + else if (strcmp(source, "play") == 0) + { + + if (ad->minicon_timer) //Destroy the Hide out Timer. + { + ecore_timer_del(ad->minicon_timer); + ad->minicon_timer = NULL; + } + if (ad->player_state == PLAY_STATE_PLAYING) + { + mp_play_control_play_cb(data, obj, SIGNAL_PAUSE, source); + edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_pause", + "play.pause.image"); + } + else + { + mp_play_control_play_cb(data, obj, SIGNAL_PLAY, source); + edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_play", + "play.pause.image"); + + } + } + + else if (strcmp(source, "ff_btn_down") == 0) + { + DEBUG_TRACE("FWD_down"); + mp_play_control_ff_cb(data, obj, "ff_btn_down", CTR_EDJ_SIG_SRC); + + } + else if (strcmp(source, "ff_btn_up") == 0) + { + DEBUG_TRACE("FWD_up"); + mp_play_control_ff_cb(data, obj, "ff_btn_up", CTR_EDJ_SIG_SRC); + + + } + else if (!g_strcmp0(source, "repeat")) + { + DEBUG_TRACE("REPEAT"); + int repeat_state = 0; + mp_setting_get_repeat_state(&repeat_state); + repeat_state++; + repeat_state %= 3; + ad->play_rep_state = repeat_state; + mp_setting_set_repeat_state(repeat_state); + mp_play_control_repeat_set(ad, repeat_state); + } + else if (!g_strcmp0(source, "shuffle")) + { + DEBUG_TRACE("SHUFFLE"); + int shuffle_state = 0; + mp_setting_get_shuffle_state(&shuffle_state); + shuffle_state = !shuffle_state; + ad->play_shuffle_state = shuffle_state; + mp_setting_set_shuffle_state(shuffle_state); + mp_play_control_shuffle_set(ad, shuffle_state); + } + else if (strcmp(source, "albumart") == 0) + { + //mp_minicontroller_destroy(ad); + DEBUG_TRACE("albumart"); + ad->load_play_view = true; + elm_win_activate(ad->win_main); + return; + } + mp_minicontroller_update(ad); + + } + + + +} + +static Evas_Object * +_load_edj(Evas_Object * parent, const char *file, const char *group) +{ + Evas_Object *eo; + int r; + + eo = elm_layout_add(parent); + if (eo) + { + r = elm_layout_file_set(eo, file, group); + if (!r) + { + evas_object_del(eo); + return NULL; + } + evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(parent, eo); + evas_object_show(eo); + } + + return eo; +} + +static Evas_Object * +_create_bgimg(Evas_Object * parent) +{ + Evas_Object *bg; + + mp_retvm_if(parent == NULL, NULL, "parent is NULL"); + + DEBUG_TRACE_FUNC(); + + bg = elm_bg_add(parent); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(parent, bg); + evas_object_color_set(bg, 37, 37, 37, 255); + evas_object_show(bg); + + return bg; +} + +static Evas_Object * +_load_minicontroller(struct appdata *ad) +{ + DEBUG_TRACE_FUNC(); + mp_retvm_if(ad == NULL, NULL, "appdata is NULL"); + Evas_Object *win = NULL; + Evas_Object *eo = NULL; + Evas_Object *icon = NULL; + + win = minicontrol_win_add("musicplayer-mini"); + if (!win) + return NULL; + + double scale = elm_config_scale_get(); + evas_object_resize(win, MINI_CONTROLLER_WIDTH * scale, MINI_CONTROLLER_HEIGHT * scale); + + _create_bgimg(win); + ad->win_minicon = win; + + /* load edje */ + eo = _load_edj(win, MINICON_EDJ_NAME, "music-minicontroller"); + if (!eo) + return NULL; + + icon = elm_icon_add(eo); + ad->minicon_icon = icon; + edje_object_signal_callback_add(_EDJ(eo), "clicked", "*", _minicontroller_action_cb, ad); + + evas_object_show(win); + //evas_object_show(eo); + + return eo; +} + +int +mp_minicontroller_create(struct appdata *ad) +{ + DEBUG_TRACE_FUNC(); + mp_retvm_if(ad == NULL, -1, "appdata is NULL"); + + if (!(ad->minicontroller_layout && ad->win_minicon)) + { + ad->minicontroller_layout = _load_minicontroller(ad); + if (ad->minicontroller_layout == NULL) + { + DEBUG_TRACE("ERROR"); + return -1; + } + } + + + mp_minicontroller_show(ad); + return 0; +} + + +int +mp_minicontroller_show(struct appdata *ad) +{ + DEBUG_TRACE("minicontroller view show!!"); + mp_retvm_if(ad == NULL, -1, "appdata is NULL"); + + ad->b_minicontroller_show = TRUE; + mp_minicontroller_update(ad); + evas_object_show(ad->win_minicon); + return 0; + +} + +void +mp_minicontroller_update(struct appdata *ad) +{ + + DEBUG_TRACE(); + mp_retm_if(ad == NULL, "appdata is NULL"); + + if (ad->player_state == PLAY_STATE_PLAYING) + { + edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_pause", "play.pause.image"); + + if (ad->minicon_visible) + _minicontroller_progress_timer_add(ad); + } + else + { + edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_play", + "play.pause.image"); + } + + if (ad->playing_list) { + music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list); + MP_CHECK(current_item); + DEBUG_TRACE("album art is %s", current_item->albumart); + if (strlen(current_item->album) > 0 && mp_util_is_image_valid(ad->evas, current_item->albumart)) + elm_icon_file_set(ad->minicon_icon, current_item->albumart, NULL); + else + elm_icon_file_set(ad->minicon_icon, DEFAULT_THUMBNAIL, NULL); + edje_object_part_swallow(_EDJ(ad->minicontroller_layout), "albumart_image", ad->minicon_icon); + edje_object_part_text_set(_EDJ(ad->minicontroller_layout), "elm.text", current_item->title); + edje_object_part_text_set(_EDJ(ad->minicontroller_layout), "elm.text.2", current_item->artist); + + if (!ad->minicon_progress_timer) + _mp_minicontroller_update_elapsed_time(ad); + + const char *signal = NULL; + /* repeat state */ + int repeat_state = 0; + mp_setting_get_repeat_state(&repeat_state); + if (repeat_state == MP_SETTING_REP_ALL) + signal = "set_repeat_all"; + else if (repeat_state == MP_SETTING_REP_1) + signal = "set_repeat_one"; + else + signal = "set_repeat_none"; + edje_object_signal_emit(_EDJ(ad->minicontroller_layout), signal, "c_source"); + + /* shuffle state */ + int shuffle_state = false; + mp_setting_get_shuffle_state(&shuffle_state); + if (shuffle_state) + signal = "set_shuffle_on"; + else + signal = "set_shuffle_off"; + edje_object_signal_emit(_EDJ(ad->minicontroller_layout), signal, "c_source"); + + evas_object_show(ad->minicontroller_layout); + } +} + +int +mp_minicontroller_hide(struct appdata *ad) +{ + DEBUG_TRACE("minicontroller view hide!!\n"); + mp_retvm_if(ad == NULL, -1, "appdata is NULL"); + + evas_object_hide(ad->win_minicon); + ad->b_minicontroller_show = FALSE; + + if (ad->minicon_timer) + { + ecore_timer_del(ad->minicon_timer); + ad->minicon_timer = NULL; + } + + if (ad->minicon_progress_timer) + { + ecore_timer_del(ad->minicon_progress_timer); + ad->minicon_progress_timer = NULL; + } + + return 0; + +} + +int +mp_minicontroller_destroy(struct appdata *ad) +{ + DEBUG_TRACE("minicontroller view destroy!!"); + mp_retvm_if(ad == NULL, -1, "appdata is NULL"); + + if (ad->minicontroller_layout != NULL) + { + evas_object_hide(ad->minicontroller_layout); + evas_object_del(ad->minicontroller_layout); + ad->minicontroller_layout = NULL; + ad->b_minicontroller_show = FALSE; + } + + if (ad->win_minicon) + { + evas_object_del(ad->win_minicon); + ad->win_minicon = NULL; + } + + ad->minicon_visible = false; + + return 0; +} + +void +mp_minicontroller_rotate(struct appdata *ad, int angle) +{ + MP_CHECK(ad); + + int w = 0; + const char *signal = NULL; + if (angle == 90 || angle == 270) { + signal = "sig_set_landscape_mode"; + w = MINI_CONTROLLER_WIDTH_LANDSCAPE; + } else { + signal = "sig_set_portrait_mode"; + w = MINI_CONTROLLER_WIDTH; + } + + edje_object_signal_emit(_EDJ(ad->minicontroller_layout), signal, "c_source"); + + double scale = elm_scale_get(); + evas_object_resize(ad->win_minicon, w * scale, MINI_CONTROLLER_HEIGHT * scale); + elm_win_rotation_with_resize_set(ad->win_minicon, angle); +} + +void +mp_minicontroller_visible_set(struct appdata *ad, bool visible) +{ + MP_CHECK(ad); + + ad->minicon_visible = visible; + if (visible) + { + _minicontroller_progress_timer_add(ad); + + } + else + { + mp_ecore_timer_del(ad->minicon_progress_timer); + } +} + diff --git a/src/widget/mp-popup.c b/src/widget/mp-popup.c index f3fa552..6170b29 100755 --- a/src/widget/mp-popup.c +++ b/src/widget/mp-popup.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,9 +14,7 @@ * limitations under the License. */ - #include -#include #include "music.h" #include "mp-menu.h" #include "mp-popup.h" @@ -25,33 +23,22 @@ #include "mp-view-layout.h" #include "mp-play-list.h" #include "mp-common.h" -#include "mm_sound.h" +#include +#include "mp-util.h" #include "mp-widget.h" -typedef struct { - Evas_Object *popup; - Evas_Smart_Cb response_cb; - void *cb_data; - int response; -} Popup_Cb_Data; - static Elm_Genlist_Item_Class itc; -static Evas_Object *g_popup_win = NULL; +typedef struct { + struct appdata *ad; + mp_popup_type type; -static void -_mp_popup_response_cb(void *data, Evas_Object * obj, void *event_info) -{ - DEBUG_TRACE("response callback=%d", (int)event_info); - if (g_popup_win) - { - evas_object_del(g_popup_win); - g_popup_win = NULL; - } + Evas_Smart_Cb response_cb; + void *cb_data; +} Popup_Data; - if ((int)event_info != 5) - evas_object_del(obj); -} +#define mp_popup_set_popup_data(obj, data) evas_object_data_set((obj), "popup_data", (data)) +#define mp_popup_get_popup_data(obj) evas_object_data_get((obj), "popup_data") static char * _mp_popup_gl_label_get(void *data, Evas_Object * obj, const char *part) @@ -78,7 +65,7 @@ _mp_popup_gl_icon_get(void *data, Evas_Object * obj, const char *part) elm_radio_state_value_set(radio, MP_SND_PATH_EARPHONE); evas_object_data_set(radio, "idx", (void *)(MP_SND_PATH_EARPHONE)); } - else if (!strcmp(GET_SYS_STR("Speaker"), data)) + else if (!strcmp(GET_STR("Speaker"), data)) { elm_radio_state_value_set(radio, MP_SND_PATH_SPEAKER); evas_object_data_set(radio, "idx", (void *)(MP_SND_PATH_SPEAKER)); @@ -97,7 +84,7 @@ _mp_popup_gl_icon_get(void *data, Evas_Object * obj, const char *part) } static void -_mp_popup_set_min_size(Evas_Object *box, int cnt) +mp_popup_set_min_size(Evas_Object *box, int cnt) { int min_h = 0; MP_CHECK(box); @@ -107,24 +94,30 @@ _mp_popup_set_min_size(Evas_Object *box, int cnt) min_h = MP_POPUP_GENLIST_ITEM_H*cnt + cnt -1; evas_object_size_hint_min_set(box, - MP_POPUP_GENLIST_ITEM_W * elm_scale_get(), min_h * elm_scale_get()); + MP_POPUP_GENLIST_ITEM_W * elm_config_scale_get(), min_h * elm_config_scale_get()); +} + +static void +_mp_popup_cancel_button_cb(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_del(obj); } static Evas_Object * -_mp_popup_create_min_style_popup(Evas_Object * parent, char *title, int cnt) +_mp_popup_create_min_style_popup(Evas_Object * parent, char *title, int cnt, + void *user_data, Evas_Smart_Cb cb, struct appdata *ad) { Evas_Object *genlist = NULL; Evas_Object *box = NULL; - Evas_Object *popup = elm_popup_add(parent); + Evas_Object *popup = mp_popup_create(parent, MP_POPUP_GENLIST, title, user_data, cb, ad); MP_CHECK_NULL(popup); elm_object_style_set(popup, "min_menustyle"); - mp_popup_title_set(popup, title); box = elm_box_add(popup); MP_CHECK_NULL(box); - _mp_popup_set_min_size(box, cnt); + mp_popup_set_min_size(box, cnt); genlist = elm_genlist_add(box); MP_CHECK_NULL(genlist); @@ -135,32 +128,153 @@ _mp_popup_create_min_style_popup(Evas_Object * parent, char *title, int cnt) evas_object_show(genlist); elm_box_pack_end(box, genlist); - mp_popup_content_set(popup, box); + elm_object_content_set(popup, box); evas_object_show(box); - mp_popup_set_response_cb(popup, _mp_popup_response_cb, NULL); - mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO); evas_object_show(popup); return popup; } static Evas_Object * -_mp_popup_sound_path_create(Evas_Object * parent, void *data) +_mp_popup_pv_set_as_create(Evas_Object * parent, void *user_data, bool add_to_home, struct appdata *ad) +{ + DEBUG_TRACE(""); + MP_CHECK_NULL(ad); + Evas_Object *popup = NULL; + Elm_Object_Item *item; + Evas_Object *genlist; + + popup = _mp_popup_create_min_style_popup(parent, GET_SYS_STR("IDS_COM_SK_SET"), add_to_home ? 3:2, NULL, _mp_popup_cancel_button_cb, ad); + MP_CHECK_NULL(popup); + + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO); + + itc.item_style = "1text"; + itc.func.text_get = _mp_popup_gl_label_get; + itc.func.content_get = NULL; + itc.func.state_get = NULL; + itc.func.del = NULL; + + genlist = evas_object_data_get(popup, "genlist"); + MP_CHECK_NULL(genlist); + + if (add_to_home) + { + + } + + item = elm_genlist_item_append(genlist, &itc, GET_STR(CALL_RINGTONE), NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_set_as_select_cb, user_data); + + item = elm_genlist_item_append(genlist, &itc, GET_STR(CALLER_RINGTONE), NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_set_as_select_cb, user_data); + + return popup; +} + +static Evas_Object * +_mp_popup_pv_share_create(Evas_Object * parent, void *user_data, struct appdata *ad) +{ + DEBUG_TRACE(""); + MP_CHECK_NULL(ad); + Evas_Object *popup = NULL; + Elm_Object_Item *item; + Evas_Object *genlist; + int option_count; +#ifdef MP_FEATURE_WIFI_SHARE + option_count = 4; +#else + option_count = 3; +#endif + popup = _mp_popup_create_min_style_popup(parent, GET_SYS_STR("IDS_COM_BUTTON_SHARE"), option_count, NULL, _mp_popup_cancel_button_cb, ad); + + MP_CHECK_NULL(popup); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO); + + itc.item_style = "1text"; + itc.func.text_get = _mp_popup_gl_label_get; + itc.func.content_get = NULL; + itc.func.state_get = NULL; + itc.func.del = NULL; + genlist = evas_object_data_get(popup, "genlist"); + MP_CHECK_NULL(genlist); + + item = elm_genlist_item_append(genlist, &itc, BLUETOOTH_SYS, NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data); + + item = elm_genlist_item_append(genlist, &itc, EMAIL_SYS, NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data); + item = elm_genlist_item_append(genlist, &itc, MESSAGE_SYS, NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data); +#ifdef MP_FEATURE_WIFI_SHARE + item = elm_genlist_item_append(genlist, &itc, WIFI_SYS, NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data); +#endif + + return popup; +} + +static Evas_Object * +_mp_popup_list_share_create(Evas_Object * parent, void *user_data, struct appdata *ad) +{ + DEBUG_TRACE(""); + MP_CHECK_NULL(ad); + Evas_Object *popup = NULL; + Elm_Object_Item *item; + Evas_Object *genlist; + int option_count; +#ifdef MP_FEATURE_WIFI_SHARE + option_count = 4; +#else + option_count = 3; +#endif + + popup = _mp_popup_create_min_style_popup(parent, GET_SYS_STR("IDS_COM_BUTTON_SHARE"), option_count, NULL, _mp_popup_cancel_button_cb, ad); + MP_CHECK_NULL(popup); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO); + + itc.item_style = "1text"; + itc.func.text_get = _mp_popup_gl_label_get; + itc.func.content_get = NULL; + itc.func.state_get = NULL; + itc.func.del = NULL; + + genlist = evas_object_data_get(popup, "genlist"); + MP_CHECK_NULL(genlist); + + item = elm_genlist_item_append(genlist, &itc, BLUETOOTH_SYS, NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data); + item = elm_genlist_item_append(genlist, &itc, EMAIL_SYS, NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data); + + item = elm_genlist_item_append(genlist, &itc, MESSAGE_SYS, NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data); +#ifdef MP_FEATURE_WIFI_SHARE + item = elm_genlist_item_append(genlist, &itc, WIFI_SYS, NULL, + ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data); +#endif + + return popup; +} + +static Evas_Object * +_mp_popup_sound_path_create(Evas_Object * parent, void *data, struct appdata *ad) { DEBUG_TRACE_FUNC(); + MP_CHECK_NULL(ad); Evas_Object *popup = NULL; - int bt_connected = 0; + bool bt_connected = false; int earjack = 0; int ret = 0; char *bt_name = NULL; int cnt = 1; - ret = mm_sound_route_get_a2dp_status(&bt_connected, &bt_name); - if (ret != MM_ERROR_NONE) + ret = sound_manager_get_a2dp_status(&bt_connected, &bt_name); + if (ret != SOUND_MANAGER_ERROR_NONE) { - WARN_TRACE("Fail to mm_sound_route_get_a2dp_status ret = [%d]", ret); + WARN_TRACE("Fail to sound_manager_get_a2dp_status ret = [%d]", ret); } IF_FREE(bt_name); if(bt_connected) @@ -171,7 +285,9 @@ _mp_popup_sound_path_create(Evas_Object * parent, void *data) if(earjack) cnt++; - popup = _mp_popup_create_min_style_popup(parent, GET_STR("Sound path"), cnt); + popup = _mp_popup_create_min_style_popup(parent, GET_SYS_STR("IDS_COM_HEADER_AUDIO_DEVICE_ABB"), cnt, NULL, _mp_popup_cancel_button_cb, ad); + MP_CHECK_NULL(popup); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO); return popup; } @@ -180,15 +296,17 @@ static Evas_Object * _mp_popup_add_to_playlist_create(Evas_Object * parent, void *data, struct appdata *ad) { DEBUG_TRACE_FUNC(); - + MP_CHECK_NULL(ad); Evas_Object *popup = NULL; int ret; int count = 0; - ret = audio_svc_count_playlist(ad->media_svc_handle, "", "", &count); + ret = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count); DEBUG_TRACE("count,%d", count); - popup = _mp_popup_create_min_style_popup(parent, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), count+1); + popup = _mp_popup_create_min_style_popup(parent, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), count+1, NULL, _mp_popup_cancel_button_cb, ad); + MP_CHECK_NULL(popup); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO); return popup; } @@ -267,11 +385,23 @@ mp_genlist_popup_create(Evas_Object * parent, mp_popup_t type, void *user_data, switch (type) { + case MP_POPUP_PV_SET_AS: + popup = _mp_popup_pv_set_as_create(parent, user_data, false, ad); + break; + case MP_POPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME: + popup = _mp_popup_pv_set_as_create(parent, user_data, false, ad); + break; + case MP_POPUP_PV_SHARE: + popup = _mp_popup_pv_share_create(parent, user_data, ad); + break; + case MP_POPUP_LIST_SHARE: + popup = _mp_popup_list_share_create(parent, user_data, ad); + break; case MP_POPUP_ADD_TO_PLST: popup = _mp_popup_add_to_playlist_create(parent, user_data, ad); break; case MP_POPUP_SOUND_PATH: - popup = _mp_popup_sound_path_create(parent, user_data); + popup = _mp_popup_sound_path_create(parent, user_data, ad); evas_object_data_set(popup, "sound_path", (char *)1); break; default: @@ -295,23 +425,37 @@ mp_popup_destroy(struct appdata *ad) int i = 0; for(i=0; i < MP_POPUP_MAX; i++) { - if (ad->popup[i]) + if (ad->popup[i] && i != MP_POPUP_NOTIFY) { - mp_popup_response(ad->popup[i], -1); + mp_evas_object_del(ad->popup[i]); ad->popup[i] = NULL; } } } +static void +_mp_popup_destroy_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Popup_Data *popup_data = data; + MP_CHECK(popup_data); + + if (popup_data->type < MP_POPUP_MAX && popup_data->ad) + { + popup_data->ad->popup[popup_data->type] = NULL; + } + + SAFE_FREE(popup_data); +} + + Evas_Object * -mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *user_data, void *response_cb, +mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *user_data, Evas_Smart_Cb response_cb, struct appdata *ad) { Evas_Object *popup = NULL; Evas_Object *progressbar = NULL; MP_CHECK_NULL(parent); - MP_CHECK_NULL(type); MP_CHECK_NULL(ad); if (_mp_popup_popup_exist(ad, type)) @@ -320,12 +464,34 @@ mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *use return NULL; } + popup = elm_popup_add(ad->win_main); + MP_CHECK_NULL(popup); + + Popup_Data *popup_data = (Popup_Data *)calloc(1, sizeof(Popup_Data)); + mp_assert(popup_data); + + popup_data->ad = ad; + popup_data->type = type; + popup_data->response_cb = response_cb; + popup_data->cb_data = user_data; + mp_popup_set_popup_data(popup, popup_data); + + evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_popup_destroy_cb, popup_data); + + if (title) + elm_object_part_text_set(popup, "title,text", title); + switch (type) { - case MP_POPUP_PROGRESS: - popup = elm_popup_add(ad->win_main); - MP_CHECK_NULL(popup); + case MP_POPUP_NORMAL: + DEBUG_TRACE("MP_POPUP_NORMAL"); + break; + + case MP_POPUP_GENLIST: + DEBUG_TRACE("MP_POPUP_GENLIST"); + break; + case MP_POPUP_PROGRESS: progressbar = elm_progressbar_add(popup); MP_CHECK_NULL(progressbar); @@ -335,20 +501,17 @@ mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *use evas_object_show(progressbar); elm_progressbar_pulse(progressbar, EINA_TRUE); - mp_popup_title_set(popup, title); - mp_popup_content_set(popup, progressbar); + elm_object_content_set(popup, progressbar); - mp_popup_set_response_cb(popup, response_cb, user_data); - mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO); - - evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_popup_del_cb, ad); - evas_object_data_set(popup, "type", (void *)type); + mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO); + break; + case MP_POPUP_NOTIFY: + DEBUG_TRACE("MP_POPUP_NOTIFY"); break; default: DEBUG_TRACE("Unsupported type: %d", type); - return NULL; } evas_object_show(popup); @@ -359,64 +522,67 @@ mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *use } -static void -_mp_poup_button_response_cb(void *data, Evas_Object *obj, void *event_info) -{ - MP_CHECK(data); - Evas_Object *popup = data; - - int response = mp_popup_btn_response_get(obj); - mp_popup_response(popup, response); -} - void -mp_popup_set_response_cb(Evas_Object *popup, Evas_Smart_Cb response_cb, void *data) +mp_popup_response(Evas_Object *popup, int response) { MP_CHECK(popup); - evas_object_data_set(popup, "popup_response_cb", response_cb); - evas_object_data_set(popup, "popup_response_cb_data", data); + Popup_Data *popup_data = mp_popup_get_popup_data(popup); + MP_CHECK(popup_data); + + if (popup_data->response_cb) + popup_data->response_cb(popup_data->cb_data, popup, (void *)response); + else + mp_evas_object_del(popup); } -void -mp_popup_response(Evas_Object *popup, int response) + +static void +_mp_popup_button_clicked_cb(void *data, Evas_Object *obj, void *event_info) { + Evas_Object *popup = data; MP_CHECK(popup); - Evas_Smart_Cb response_cb = evas_object_data_get(popup, "popup_response_cb"); - void *cb_data = evas_object_data_get(popup, "popup_response_cb_data"); + Popup_Data *popup_data = mp_popup_get_popup_data(popup); + MP_CHECK(popup_data); - if (response_cb) - response_cb(cb_data, popup, (void *)response); - else - evas_object_del(popup); + int response = mp_evas_object_response_get(obj); + mp_popup_response(popup, response); } -Evas_Object * -mp_popup_button_set(Evas_Object *popup, const char *part, const char *text, int response) +bool +mp_popup_button_set(Evas_Object *popup, popup_button_t btn_index, const char *text, int response) { - MP_CHECK_NULL(popup); - MP_CHECK_NULL(part); - - if (g_strcmp0(part, "button1") && g_strcmp0(part, "button2") && g_strcmp0(part, "button3")) { - mp_error("invalid part"); - return NULL; + MP_CHECK_FALSE(popup); + MP_CHECK_FALSE(text); + if (btn_index == MP_POPUP_BTN_MAX) { + mp_error("invalid button type"); + return FALSE; } - Evas_Object *button = mp_widget_create_button(popup, NULL, (char *)text, NULL, _mp_poup_button_response_cb, popup); + bool ret = FALSE; + + static char *part[MP_POPUP_BTN_MAX] = { + "button1", + "button2", + "button3", + }; + + Evas_Object *button = mp_widget_create_button(popup, "popup_button/default", (char *)text, NULL, _mp_popup_button_clicked_cb, popup); if (button) { - elm_object_part_content_set(popup, part, button); - mp_popup_btn_popup_set(button, popup); - mp_popup_btn_response_set(button, response); + elm_object_part_content_set(popup, part[btn_index], button); + mp_evas_object_response_set(button, response); + ret = TRUE; } - return button; + return ret; } static void -_mp_poup_default_response_cb(void *data, Evas_Object *obj, void *event_info) +__mp_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info) { - mp_popup_response(obj, (int)data); + int response = (int)data; + mp_popup_response(obj, response); } void @@ -425,13 +591,7 @@ mp_popup_timeout_set(Evas_Object *popup, double timeout) MP_CHECK(popup); elm_popup_timeout_set(popup, timeout); - evas_object_smart_callback_add(popup, "timeout", _mp_poup_default_response_cb, (void *)MP_POPUP_DEL); + evas_object_smart_callback_add(popup, "timeout", __mp_popup_timeout_cb, (void *)MP_POPUP_NO); + evas_object_smart_callback_add(popup, "block,clicked", __mp_popup_timeout_cb, (void *)MP_POPUP_NO); } -void -mp_popup_block_clicked_set(Evas_Object *popup) -{ - MP_CHECK(popup); - - evas_object_smart_callback_add(popup, "block,clicked", _mp_poup_default_response_cb, (void *)MP_POPUP_DEL); -} diff --git a/src/widget/mp-search.c b/src/widget/mp-search.c index c4b7a9e..b18d08c 100755 --- a/src/widget/mp-search.c +++ b/src/widget/mp-search.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,13 +14,13 @@ * limitations under the License. */ - - #include "music.h" #include "mp-search.h" #include "mp-player-debug.h" #include "mp-view-layout.h" +#define MP_SEARCHBAR_W 400*elm_scale_get() + void _mp_search_view_activated_cb(void *data, Evas_Object * obj, void *event_info) { @@ -54,6 +54,7 @@ _mp_search_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, elm_entry_entry_set(entry, ""); } + Evas_Object * mp_search_create_new(Evas_Object * parent, Evas_Smart_Cb change_cb, void *change_cb_data, Evas_Smart_Cb cancel_cb, void *cancel_cb_data) { @@ -69,8 +70,9 @@ mp_search_create_new(Evas_Object * parent, Evas_Smart_Cb change_cb, void *change if (cancel_cb) { Evas_Object *cancel_btn = elm_button_add(sb); - elm_object_style_set(cancel_btn, "searchbar/default"); + elm_object_style_set(cancel_btn, "multiline"); elm_object_text_set(cancel_btn, GET_SYS_STR("IDS_COM_SK_CANCEL")); + mp_language_mgr_register_object(cancel_btn, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_SK_CANCEL"); evas_object_smart_callback_add(cancel_btn, "clicked", cancel_cb, cancel_cb_data); elm_object_part_content_set(sb, "button_cancel", cancel_btn); @@ -96,7 +98,7 @@ mp_search_create_new(Evas_Object * parent, Evas_Smart_Cb change_cb, void *change static Elm_Entry_Filter_Limit_Size limit_filter_data; limit_filter_data.max_char_count = 0; - limit_filter_data.max_byte_count = AUDIO_SVC_METADATA_LEN_MAX; + limit_filter_data.max_byte_count = MP_METADATA_LEN_MAX; elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data); evas_object_show(sb); diff --git a/src/widget/mp-smart-event-box.c b/src/widget/mp-smart-event-box.c index cfef47e..6a3af02 100755 --- a/src/widget/mp-smart-event-box.c +++ b/src/widget/mp-smart-event-box.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -14,7 +14,6 @@ * limitations under the License. */ - #include #include "mp-smart-event-box.h" #include "mp-player-debug.h" diff --git a/src/widget/mp-view-layout.c b/src/widget/mp-view-layout.c index d1638c0..b8762ff 100755 --- a/src/widget/mp-view-layout.c +++ b/src/widget/mp-view-layout.c @@ -1,11 +1,11 @@ /* - * Copyright 2012 Samsung Electronics Co., Ltd + * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.tizenopensource.org/license + * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,9 +15,9 @@ */ - #include "mp-view-layout.h" #include "mp-player-debug.h" +#include "mp-ta.h" #include "mp-library.h" #include "mp-widget.h" #include "mp-util.h" @@ -29,9 +29,15 @@ #include "mp-playlist-view.h" #include "mp-group-view.h" #include "mp-player-mgr.h" +#include "mp-popup.h" + +typedef struct{ + Elm_Object_Item *item; + char *text_ID; +}mp_group_item_data_t; -#define MP_INIT_ITEM_LOAD_COUNT 8 -#define MP_AUTO_PLAYLIST_COUNT 4 +#define MP_INIT_ITEM_LOAD_COUNT 9 +#define MP_SYS_PLAYLIST_COUNT 4 #define MP_GENLIST_DEFALT_BLOCK_SIZE 81 #define MP_MAX_TEXT_PRE_FORMAT_LEN 256 #define MP_MAX_ARTIST_NAME_WIDTH 320 @@ -41,6 +47,7 @@ static void _mp_view_layout_reorder(void *data, Evas_Object * obj, void *event_i static void _mp_view_layout_load_search_list_item(Evas_Object * view_layout); static void _mp_view_layout_load_list_item(Evas_Object * view_layout); static void _mp_view_layout_load_search_item(Evas_Object * view_layout); +static Evas_Object *_mp_view_layout_create_fastscroll_index(Evas_Object * parent, mp_layout_data_t * layout_data); static void _mp_view_layout_gl_del(void *data, Evas_Object * obj); static void _mp_view_layout_update_icon(Evas_Object * view_layout); @@ -90,11 +97,9 @@ _mp_view_layout_reorder_idle_cb(void *data) int err = -1; int old_order; int new_order = 1; - char *title; - int size; int uid; - audio_svc_count_playlist_item(layout_data->ad->media_svc_handle, layout_data->playlist_id, "", "", &count); + mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, layout_data->filter_str, layout_data->playlist_id, &count); if (count > 0) { list_item = elm_genlist_first_item_get(layout_data->genlist); @@ -106,40 +111,34 @@ _mp_view_layout_reorder_idle_cb(void *data) mp_genlist_item_data_t *gl_item = (mp_genlist_item_data_t *) elm_object_item_data_get(list_item); MP_CHECK_FALSE(gl_item); - AudioHandleType *item = (AudioHandleType *) (gl_item->handle); + mp_media_info_h item = (gl_item->handle); MP_CHECK_FALSE(item); if (item != NULL) { - err = audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE, - &title, &size, - AUDIO_SVC_PLAYLIST_ITEM_PLAY_ORDER, - &old_order, AUDIO_SVC_PLAYLIST_ITEM_UID, - &uid, -1); - DEBUG_TRACE("uid: %d, title: %s, old_order: %d", uid, title, old_order); + err = mp_media_info_get_playlist_member_id(item, &uid); + err = mp_media_info_playlist_get_play_order(layout_data->playlist_handle, uid, &old_order); + DEBUG_TRACE("uid: %d, old_order: %d", uid, old_order); if (old_order == new_order) { DEBUG_TRACE("same order.. skip.."); new_order++; continue; } - if (err != AUDIO_SVC_ERROR_NONE) + if (err != 0) { - ERROR_TRACE("Error in audio_svc_playlist_item_get_val (%d)\n", err); + ERROR_TRACE("Error in mp_media_info_playlist_get_play_order (%d)\n", err); break; } - err = audio_svc_update_playlist_item_play_order(layout_data->ad->media_svc_handle, layout_data->playlist_id, uid, - new_order++); - if (err != AUDIO_SVC_ERROR_NONE) + err = mp_media_info_playlist_set_play_order(layout_data->playlist_handle, uid, new_order++); + if (err != 0) { - ERROR_TRACE("Error in audio_svc_update_playlist_item_play_order (%d)\n", - err); + ERROR_TRACE("Error in mp_media_info_playlist_set_play_order (%d)\n", err); break; } } } while ((list_item = elm_genlist_item_next_get(list_item)) != NULL); } - mp_view_manager_update_list_contents(layout_data->view_data, TRUE); } layout_data->reorder_idler = NULL; return EINA_FALSE; @@ -149,17 +148,9 @@ static void _mp_view_layout_reorder(void *data, Evas_Object * obj, void *event_info) { DEBUG_TRACE(""); - mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data"); + mp_layout_data_t *layout_data = data; MP_CHECK_LAYOUT_DATA(layout_data); -#if 0 - if (rel_item) - { - if (move_after) - elm_genlist_item_move_after(rel_item, it); - else - elm_genlist_item_move_before(rel_item, it); - } -#endif + if(!layout_data->reorder_idler) layout_data->reorder_idler = ecore_idler_add(_mp_view_layout_reorder_idle_cb, layout_data); @@ -185,28 +176,28 @@ _mp_view_layout_genlist_del_cb(void *data, Evas * e, Evas_Object * obj, void *ev SAFE_FREE(layout_data->type_str); SAFE_FREE(layout_data->filter_str); if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST) - audio_svc_playlist_free(layout_data->svc_handle); + mp_media_info_group_list_destroy(layout_data->svc_handle); else if (layout_data->category == MP_LAYOUT_GROUP_LIST) - audio_svc_group_item_free(layout_data->svc_handle); + mp_media_info_group_list_destroy(layout_data->svc_handle); else - audio_svc_list_item_free(layout_data->svc_handle); + mp_media_info_list_destroy(layout_data->svc_handle); if (layout_data->track_handle) - audio_svc_list_item_free(layout_data->track_handle); + mp_media_info_list_destroy(layout_data->track_handle); if (layout_data->artist_handle) - audio_svc_group_item_free(layout_data->artist_handle); + mp_media_info_group_list_destroy(layout_data->artist_handle); if (layout_data->album_handle) - audio_svc_group_item_free(layout_data->album_handle); - /* free album svc group */ - if (layout_data->album_track_handle) - audio_svc_group_item_free(layout_data->album_track_handle); - /* free artist album svc group */ - if (layout_data->aa_handle) - audio_svc_group_item_free(layout_data->aa_handle); - IF_FREE(layout_data->aa_group); - IF_FREE(layout_data->aa_item_count); + mp_media_info_group_list_destroy(layout_data->album_handle); + + SAFE_FREE(layout_data->old_name); + IF_FREE(layout_data->fast_scrooll_index); IF_FREE(layout_data->navibar_title); + if (layout_data->itc) { + elm_genlist_item_class_free(layout_data->itc); + layout_data->itc = NULL; + } + free(layout_data); } endfunc; @@ -216,38 +207,36 @@ static void _mp_view_layout_append_auto_playlists(mp_layout_data_t * layout_data) { int i; - static char names[][50] = - { STR_MP_MOST_PLAYED, STR_MP_RECENTLY_ADDED, STR_MP_RECENTLY_PLAYED, STR_MP_QUICK_LIST }; - AudioHandleType *plst; + mp_media_list_h plst; MP_CHECK(layout_data); if (layout_data->default_playlists) - audio_svc_playlist_free(layout_data->default_playlists); + mp_media_info_group_list_destroy(layout_data->default_playlists); layout_data->default_playlist_count = 0; - audio_svc_playlist_new(&plst, MP_AUTO_PLAYLIST_COUNT); + mp_media_info_group_list_create(&plst, MP_GROUP_BY_SYS_PLAYLIST, NULL, NULL, 0, 0); layout_data->default_playlists = plst; - for (i = 0; i < MP_AUTO_PLAYLIST_COUNT; i++) + for (i = 0; i < MP_SYS_PLAYLIST_COUNT; i++) { - AudioHandleType *item; - audio_svc_playlist_get_item(plst, i, &item); - audio_svc_playlist_set_val(plst, i, AUDIO_SVC_PLAYLIST_NAME, GET_STR(names[i]), - AUDIO_SVC_METADATA_LEN_MAX, -1); + mp_media_info_h item; + item = mp_media_info_group_list_nth_item(plst, i); mp_genlist_item_data_t *item_data; item_data = calloc(1, sizeof(mp_genlist_item_data_t)); MP_CHECK(item_data); - item_data->media_svc_handle = layout_data->ad->media_svc_handle; - item_data->handle = (void *)item; + item_data->handle = item; + item_data->unregister_lang_mgr = true; + // func.del shouldn't be used in other place.... layout_data->auto_playlist_item_class.func.del = _mp_view_layout_gl_del; item_data->it = elm_genlist_item_append(layout_data->genlist, &(layout_data->auto_playlist_item_class), item_data, NULL, ELM_GENLIST_ITEM_NONE, layout_data->cb_func.auto_playlist_cb, (void *)i); + mp_language_mgr_register_genlist_item(item_data->it); layout_data->default_playlist_count++; if (layout_data->edit_mode) elm_object_item_disabled_set(item_data->it, EINA_TRUE); @@ -269,11 +258,19 @@ _mp_view_layout_sentinel_add(mp_layout_data_t * layout_data) { elm_layout_file_set(no_contents, EDJ_NAME, "no_result"); edje_object_part_text_set(_EDJ(no_contents), "elm.text", GET_SYS_STR("IDS_COM_BODY_NO_SEARCH_RESULTS")); + mp_language_mgr_register_object(no_contents, OBJ_TYPE_EDJE_OBJECT, "elm.text", "IDS_COM_BODY_NO_SEARCH_RESULTS"); } else { - elm_layout_file_set(no_contents, EDJ_NAME, "no_content"); + + if (layout_data->ad->screen_mode == MP_SCREEN_MODE_PORTRAIT) + elm_layout_file_set(no_contents, EDJ_NAME, "no_content"); + else { + elm_layout_file_set(no_contents, EDJ_NAME, "no_content_landscape"); + } + edje_object_part_text_set(_EDJ(no_contents), "elm.text", GET_SYS_STR("IDS_COM_BODY_NO_CONTENTS")); + mp_language_mgr_register_object(no_contents, OBJ_TYPE_EDJE_OBJECT, "elm.text", "IDS_COM_BODY_NO_CONTENTS"); } if (layout_data->genlist) @@ -288,6 +285,31 @@ _mp_view_layout_sentinel_add(mp_layout_data_t * layout_data) return no_contents; } +static int +_mp_view_layout_set_sentinel(mp_layout_data_t * layout_data, int count) +{ + if (0 >= count + && (layout_data->category != MP_LAYOUT_PLAYLIST_LIST + || (layout_data->filter_str && strlen(layout_data->filter_str)))) + { + ERROR_TRACE("no tracks"); + if (!layout_data->sentinel) + layout_data->sentinel = _mp_view_layout_sentinel_add(layout_data); + return -1; + } + + if (layout_data->sentinel) + { + elm_box_unpack(layout_data->box, layout_data->sentinel); + evas_object_del(layout_data->sentinel); + layout_data->sentinel = NULL; + elm_box_pack_end(layout_data->box, layout_data->genlist); + evas_object_show(layout_data->genlist); + } + + return 0; +} + static Eina_Bool _mp_view_layout_set_block_count_idle_cb(void *data) { @@ -301,10 +323,19 @@ _mp_view_layout_set_block_count_idle_cb(void *data) char * _mp_view_layout_gl_label_get_title(void *data, Evas_Object * obj, const char *part) { - MP_CHECK_NULL(data); + mp_group_item_data_t *item_data = data; + char *text = NULL; + + MP_CHECK_NULL(item_data); + if (!strcmp(part, "elm.text")) { - return strdup(data); + if(item_data->text_ID && strstr(item_data->text_ID, "IDS_COM")) + text = GET_SYS_STR(item_data->text_ID); + else + text = GET_STR(item_data->text_ID); + + return g_strdup(text); } return NULL; } @@ -313,22 +344,43 @@ static void _mp_view_layout_gl_del(void *data, Evas_Object * obj) { mp_genlist_item_data_t *item_data = (mp_genlist_item_data_t *) data; + if(item_data->unregister_lang_mgr) + mp_language_mgr_unregister_genlist_item(item_data->it); IF_FREE(item_data); } static void -_mp_view_layout_append_group_title(mp_layout_data_t * layout_data, char *title) +_mp_view_layout_group_gl_del(void *data, Evas_Object * obj) { - static Elm_Genlist_Item_Class itc = { - .item_style = "music_player/grouptitle", - .func.text_get = _mp_view_layout_gl_label_get_title, - }; + mp_group_item_data_t *item_data = data; + MP_CHECK(item_data); + mp_language_mgr_unregister_genlist_item(item_data->item); + free(item_data); +} + +static void +_mp_view_layout_append_group_title(mp_layout_data_t * layout_data, char *text_ID) +{ + static Elm_Genlist_Item_Class itc; + mp_group_item_data_t *item_data = NULL; - layout_data->search_group_git = - elm_genlist_item_append(layout_data->genlist, &itc, (void *)title, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + itc.version = ELM_GENGRID_ITEM_CLASS_VERSION; + itc.refcount = 0; + itc.delete_me = EINA_FALSE; + itc.item_style = "music_player/grouptitle"; + itc.func.text_get = _mp_view_layout_gl_label_get_title; + itc.func.del = _mp_view_layout_group_gl_del; + + item_data = calloc(1, sizeof(mp_group_item_data_t)); + item_data->text_ID = text_ID; + + item_data->item = layout_data->search_group_git = + elm_genlist_item_append(layout_data->genlist, &itc, item_data, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + + mp_language_mgr_register_genlist_item(item_data->item); MP_CHECK(layout_data->search_group_git); - elm_genlist_item_select_mode_set(layout_data->search_group_git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + } static char * @@ -336,35 +388,36 @@ _mp_view_layout_aa_list_label_get(void *data, Evas_Object * obj, const char *par { MP_CHECK_NULL(data); char *name = NULL; - int size = 0; - int ret = AUDIO_SVC_ERROR_NONE; - mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; - AudioHandleType *svc_item = (AudioHandleType *) (item->handle); + int ret = 0; + + mp_media_info_h svc_item = data; MP_CHECK_NULL(svc_item); if (!g_strcmp0(part, "elm.text.1")) { - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_get_album(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); if (!name || !strlen(name)) name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); return strdup(name); } else if (!g_strcmp0(part, "elm.text.2")) { - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_SUB_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_get_artist(svc_item, &name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); if (!name || !strlen(name)) name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); return strdup(name); } else if (!g_strcmp0(part, "elm.text.3")) { char *album_name = NULL; char *artist_name = NULL; - int track_num = -1; - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &album_name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_SUB_INFO, &artist_name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); - ret = audio_svc_count_list_item(item->media_svc_handle, AUDIO_SVC_TRACK_BY_ARTIST_ALBUM, album_name, artist_name, "", "", &track_num); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get track_num"); + int track_num = 0; + ret = mp_media_info_get_album(svc_item, &album_name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + ret = mp_media_info_get_artist(svc_item, &artist_name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); + + ret = mp_media_info_list_count(MP_TRACK_BY_ARTIST_ALBUM, album_name, artist_name, + NULL, 0, &track_num); + mp_retvm_if(ret != 0, NULL, "Fail to get track_num"); mp_retvm_if(track_num < 0, NULL, "Fail to get track_num"); return g_strdup_printf("%d", track_num); } @@ -377,17 +430,14 @@ static Evas_Object * _mp_view_layout_aa_list_icon_get(void *data, Evas_Object * obj, const char *part) { MP_CHECK_NULL(data); - mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data; - AudioHandleType *svc_item = (AudioHandleType *) (item->handle); + mp_media_info_h svc_item = data; MP_CHECK_NULL(svc_item); char *thumb_name = NULL; Evas_Object *icon = NULL; - int size = 0; - int ret = AUDIO_SVC_ERROR_NONE; - - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_THUMBNAIL_PATH, &thumb_name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + int ret = 0; + ret = mp_media_info_get_thumbnail_path(svc_item, &thumb_name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); if (!g_strcmp0(part, "elm.icon")) { icon = mp_util_create_thumb_icon(obj, thumb_name, MP_ALBUM_LIST_ICON_SIZE, MP_ALBUM_LIST_ICON_SIZE); @@ -396,103 +446,6 @@ _mp_view_layout_aa_list_icon_get(void *data, Evas_Object * obj, const char *part return icon; } -static char * -_mp_view_layout_album_list_get_artist_name(MediaSvcHandle *handle, AudioHandleType *svc_item) -{ - MP_CHECK_NULL(handle); - MP_CHECK_NULL(svc_item); - int ret = AUDIO_SVC_ERROR_NONE; - char *name = NULL; - int size = -1; - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_SUB_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); - - int count = -1; - int track_num = -1; - char *album_name = NULL; - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &album_name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); - - ret = audio_svc_count_list_item(handle, AUDIO_SVC_TRACK_BY_ALBUM, album_name, "", "", "", &count); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get count"); - mp_retvm_if(count < 0, NULL, "Fail to get count"); - - ret = audio_svc_count_list_item(handle, AUDIO_SVC_TRACK_BY_ARTIST_ALBUM, album_name, name, "", "", &track_num); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get track_num"); - mp_retvm_if(track_num < 0, NULL, "Fail to get track_num"); - DEBUG_TRACE("track_num=%d,count=%d", track_num, count); - if (track_num < count) { - char *artist = NULL; - AudioHandleType *svc_handle = NULL; - /* create album svc list */ - ret = audio_svc_list_item_new(&svc_handle, count); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to create svc list"); - /* get album svc list */ - ret = audio_svc_get_list_item(handle, AUDIO_SVC_TRACK_BY_ALBUM, album_name, NULL, - NULL, NULL, 0, count, svc_handle); - if (ret != AUDIO_SVC_ERROR_NONE) { - DEBUG_TRACE("Fail to get svc list"); - audio_svc_list_item_free(svc_handle); - return NULL; - } - /* get artist name */ - ret = audio_svc_list_item_get_val(svc_handle, 0, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1); - if (ret != AUDIO_SVC_ERROR_NONE || artist == NULL) { - DEBUG_TRACE("Fail to get value: ret: %d, artist: %s", ret, artist); - if (svc_handle) - audio_svc_list_item_free(svc_handle); - return NULL; - } - - char *artist_name = NULL; - int alloc_size = strlen(artist) + 1; - artist_name = (char *)g_malloc(alloc_size); - if (!artist_name) { - DEBUG_TRACE("Fail to allocate memory"); - if (svc_handle) - audio_svc_list_item_free(svc_handle); - return NULL; - } - memset(artist_name, 0, alloc_size); - if (artist) - strncat(artist_name, artist, strlen(artist)); - int index = 1; - for (; index < count; index++) { - /* get artist name */ - artist = NULL; - ret = audio_svc_list_item_get_val(svc_handle, index, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1); - if (ret != AUDIO_SVC_ERROR_NONE) { - DEBUG_TRACE("Fail to get value"); - if (svc_handle) - audio_svc_list_item_free(svc_handle); - return NULL; - } - - if (artist && !strstr(artist_name, artist)) { - alloc_size += strlen(artist) + 1; - artist_name = (char *)g_realloc(artist_name, alloc_size); - if (!artist_name) { - DEBUG_TRACE("Fail to reallocate memory"); - if (svc_handle) - audio_svc_list_item_free(svc_handle); - return NULL; - } - strncat(artist_name, ",", 1); - strncat(artist_name, artist, strlen(artist)); - DEBUG_TRACE("artist_name=%s,artist=%s", artist_name, artist); - } - } - DEBUG_TRACE("artist_name=%s", artist_name); - if (svc_handle) - audio_svc_list_item_free(svc_handle); - return artist_name; - } - - if (!name || !strlen(name)) - name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); - return g_strdup(name); -} - static Evas_Object * _mp_view_layout_get_label_slide(Evas_Object *parent, char *name, int font_size, char *color, int max_size) { @@ -531,28 +484,19 @@ _mp_view_layout_album_list_label_get(void *data, Evas_Object * obj, const char * { MP_CHECK_NULL(data); char *name = NULL; - int size = 0; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; mp_layout_data_t *layout_data = (mp_layout_data_t *) data; - AudioHandleType *svc_item = (AudioHandleType *) (layout_data->album_track_handle); + mp_media_info_h svc_item = mp_media_info_list_nth_item(layout_data->svc_handle, 0); MP_CHECK_NULL(svc_item); if (!g_strcmp0(part, "elm.text.1")) { - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_get_album(svc_item, &name); if (!name || !strlen(name)) name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); return strdup(name); } else if (!g_strcmp0(part, "elm.text.3")) { - char *album_name = NULL; - int track_num = -1; - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &album_name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); - ret = audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_BY_ALBUM, album_name, NULL, "", "", &track_num); - mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get track_num"); - mp_retvm_if(track_num < 0, NULL, "Fail to get track_num"); - return g_strdup_printf("%d", track_num); + return g_strdup_printf("%d", layout_data->item_count); } DEBUG_TRACE("Unusing part: %s", part); @@ -565,46 +509,47 @@ _mp_view_layout_album_list_icon_get(void *data, Evas_Object * obj, const char *p startfunc; MP_CHECK_NULL(data); mp_layout_data_t *layout_data = (mp_layout_data_t *) data; - AudioHandleType *svc_item = (AudioHandleType *) (layout_data->album_track_handle); + mp_media_info_h svc_item = mp_media_info_list_nth_item(layout_data->svc_handle, 0); MP_CHECK_NULL(svc_item); Evas_Object *icon = NULL; - int size = 0; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; if (!g_strcmp0(part, "elm.icon")) { char *thumb_name = NULL; - ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_THUMBNAIL_PATH, &thumb_name, &size, -1); - mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value"); + ret = mp_media_info_get_thumbnail_path(svc_item, &thumb_name); + mp_retvm_if((ret != 0), NULL, "Fail to get value"); icon = mp_util_create_thumb_icon(obj, thumb_name, MP_ALBUM_LIST_ICON_SIZE, MP_ALBUM_LIST_ICON_SIZE); } else if (!g_strcmp0(part, "elm.text.swallow")) { - char *name = _mp_view_layout_album_list_get_artist_name(layout_data->ad->media_svc_handle, svc_item); - if (name) { - icon = _mp_view_layout_get_label_slide(obj, name, 36, "FFFFFFFF", 42); - g_free(name); - } + char *name = NULL; + mp_media_info_get_artist(svc_item, &name); + if(!name) + name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN"); + icon = _mp_view_layout_get_label_slide(obj, name, 36, "FFFFFFFF", 42); } return icon; } -static void -_mp_view_layout_append_aa_group_title(mp_layout_data_t * layout_data, mp_genlist_item_data_t *item_data, int index) +static Elm_Object_Item * +_mp_view_layout_append_aa_group_title(mp_layout_data_t * layout_data, mp_media_info_h media) { - MP_CHECK(layout_data); - MP_CHECK(item_data); - MP_CHECK(index >= 0); + MP_CHECK_NULL(layout_data); + MP_CHECK_NULL(media); + Elm_Object_Item *item = NULL; static Elm_Genlist_Item_Class aa_group_itc = { + .version = ELM_GENGRID_ITEM_CLASS_VERSION, + .refcount = 0, + .delete_me = EINA_FALSE, .item_style = "music_player/dialogue_title", .func.text_get = _mp_view_layout_aa_list_label_get, .func.content_get = _mp_view_layout_aa_list_icon_get, }; - layout_data->aa_group_itc = &aa_group_itc; - layout_data->aa_group[index] = - elm_genlist_item_append(layout_data->genlist, layout_data->aa_group_itc, item_data, + item = elm_genlist_item_append(layout_data->genlist, &aa_group_itc, media, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); - MP_CHECK(layout_data->aa_group[index]); - elm_genlist_item_select_mode_set(layout_data->aa_group[index], ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + MP_CHECK_NULL(item); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + return item; } static void @@ -613,13 +558,15 @@ _mp_view_layout_append_album_group_title(mp_layout_data_t * layout_data) startfunc; MP_CHECK(layout_data); static Elm_Genlist_Item_Class album_group_itc = { + .version = ELM_GENGRID_ITEM_CLASS_VERSION, + .refcount = 0, + .delete_me = EINA_FALSE, .item_style = "music_player/album_title", .func.text_get = _mp_view_layout_album_list_label_get, .func.content_get = _mp_view_layout_album_list_icon_get, }; - layout_data->album_group_itc = &album_group_itc; layout_data->album_group = - elm_genlist_item_append(layout_data->genlist, layout_data->album_group_itc, layout_data, + elm_genlist_item_append(layout_data->genlist, &album_group_itc, layout_data, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); MP_CHECK(layout_data->album_group); elm_genlist_item_select_mode_set(layout_data->album_group, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); @@ -627,47 +574,12 @@ _mp_view_layout_append_album_group_title(mp_layout_data_t * layout_data) } static void -_mp_view_layout_add_album_group_title(mp_layout_data_t * layout_data) -{ - startfunc; - MP_CHECK(layout_data); - MP_CHECK(layout_data->svc_handle); - int ret = AUDIO_SVC_ERROR_NONE; - char *artist = NULL; - int size = -1; - ret = audio_svc_list_item_get_val(layout_data->svc_handle, 0, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1); - mp_retm_if((ret != AUDIO_SVC_ERROR_NONE), "Fail to get value"); - DEBUG_TRACE("artist=%s,type_str=%s", artist, layout_data->type_str); - /* create album svc group */ - AudioHandleType *group_handle = NULL; - ret = audio_svc_group_item_new(&group_handle, 1); - mp_retm_if((ret != AUDIO_SVC_ERROR_NONE), "Fail to create structure"); - DEBUG_TRACE("artist=%s,type_str=%s", artist, layout_data->type_str); - /* get album svc group */ - ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST_ALBUM, artist, NULL, - layout_data->type_str, NULL, 0, 1, group_handle); - if (ret != AUDIO_SVC_ERROR_NONE) { - DEBUG_TRACE("Fail to get group items"); - audio_svc_group_item_free(group_handle); - return; - } - /* free last album svc group */ - if (layout_data->album_track_handle) - audio_svc_group_item_free(layout_data->album_track_handle); - /* set album_track_handle value */ - layout_data->album_track_handle = group_handle; - - _mp_view_layout_append_album_group_title(layout_data); - endfunc; -} - -static void _mp_view_layout_load_search_list_item(Evas_Object * view_layout) { DEBUG_TRACE(""); - Elm_Genlist_Item_Class itc; + static Elm_Genlist_Item_Class itc; mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data"); mp_retm_if(!layout_data, "layout_data is null"); @@ -681,6 +593,9 @@ _mp_view_layout_load_search_list_item(Evas_Object * view_layout) else { memset(&itc, 0, sizeof(Elm_Genlist_Item_Class)); + itc.version = ELM_GENGRID_ITEM_CLASS_VERSION; + itc.refcount = 0; + itc.delete_me = EINA_FALSE; itc.item_style = "music_player/1icon.3text"; itc.func.text_get = mp_common_track_list_label_get; itc.func.content_get = mp_common_track_list_icon_get; @@ -691,7 +606,7 @@ _mp_view_layout_load_search_list_item(Evas_Object * view_layout) mp_view_layout_set_layout_data(view_layout, MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST, - MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_ALL, + MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_ALL, MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, &itc, -1); _mp_view_layout_load_list_item(view_layout); @@ -700,6 +615,15 @@ _mp_view_layout_load_search_list_item(Evas_Object * view_layout) } } +static void +_mp_view_layout_index_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *gl_item = data; + MP_CHECK(gl_item); + + elm_genlist_item_bring_in(gl_item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE); +} + static Eina_Bool _mp_view_layout_load_item_idler_cb(void *data) { @@ -716,58 +640,67 @@ _mp_view_layout_load_item_idler_cb(void *data) return EINA_FALSE; } - itc = &(layout_data->itc); + itc = layout_data->itc; sel_cb = layout_data->cb_func.selected_cb; for (index = MP_INIT_ITEM_LOAD_COUNT; index < layout_data->item_count; index++) { - AudioHandleType *item = NULL; + mp_media_info_h item = NULL; Elm_Object_Item *list_item = NULL; char *title = NULL; - int size = 0; if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST) { - ret = audio_svc_playlist_get_item(layout_data->svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) + item = mp_media_info_group_list_nth_item(layout_data->svc_handle, index); + if (!item) { - DEBUG_TRACE("Fail to audio_svc_playlist_get_item, ret[%d], index[%d]", ret, index); + DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, index[%d]", index); goto END; } - audio_svc_playlist_get_val(item, 0, AUDIO_SVC_PLAYLIST_NAME, &title, &size, -1); + mp_media_info_group_get_main_info(item, &title); } else if (layout_data->category == MP_LAYOUT_GROUP_LIST) { - ret = audio_svc_group_item_get(layout_data->svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) + item = mp_media_info_group_list_nth_item(layout_data->svc_handle, index); + if (item == NULL) { - DEBUG_TRACE("Fail to audio_svc_group_item_get, ret[%d], index[%d]", ret, index); + DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, index[%d]", index); goto END; } - audio_svc_group_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1); + ret = mp_media_info_group_get_main_info(item, &title); } else { - if (layout_data->playlist_id < 0) + item = mp_media_info_list_nth_item(layout_data->svc_handle, index); + if (!item) { - ret = audio_svc_list_item_get(layout_data->svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index); - goto END; - } - audio_svc_list_item_get_val(item, 0, AUDIO_SVC_LIST_ITEM_TITLE, &title, &size, -1); + DEBUG_TRACE("Fail to mp_media_info_list_nth_item, ret[%d], index[%d]", ret, index); + goto END; } - else + mp_media_info_get_title(item, &title); + } + bool make_group_title = FALSE; + + if (layout_data->fast_scrooll_index == NULL) + { + make_group_title = TRUE; + layout_data->fast_scrooll_index = mp_util_get_utf8_initial(title); + } + else + { + char *title_initial = mp_util_get_utf8_initial(title); + if (title_initial) { - ret = audio_svc_playlist_item_get(layout_data->svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) + if (strcmp(layout_data->fast_scrooll_index, title_initial) != 0) { - DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index); - goto END; + make_group_title = TRUE; + free(layout_data->fast_scrooll_index); + layout_data->fast_scrooll_index = title_initial; + } + else + { + free(title_initial); } - audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE, &title, &size, - -1); } } @@ -775,15 +708,19 @@ _mp_view_layout_load_item_idler_cb(void *data) item_data = calloc(1, sizeof(mp_genlist_item_data_t)); if (!item_data) goto END; - item_data->media_svc_handle = layout_data->ad->media_svc_handle; - item_data->handle = (void *)item; + item_data->handle = item; item_data->group_type = layout_data->group_type; + // func.del shouldn't be used in other place.... itc->func.del = _mp_view_layout_gl_del; item_data->it = list_item = elm_genlist_item_append(layout_data->genlist, itc, item_data, NULL, ELM_GENLIST_ITEM_NONE, sel_cb, (void *)index); + if (make_group_title && layout_data->index_fast != NULL) + { + elm_index_item_append(layout_data->index_fast, layout_data->fast_scrooll_index, _mp_view_layout_index_item_selected_cb, list_item); + } } END: @@ -866,7 +803,7 @@ _mp_view_layout_create_select_all(mp_layout_data_t * layout_data) MP_CHECK(layout_data); layout_data->select_all_layout = elm_layout_add(layout_data->box); - elm_layout_theme_set(layout_data->select_all_layout, "genlist", "item", "select_all/music/default"); + elm_layout_theme_set(layout_data->select_all_layout, "genlist", "item", "select_all/default"); evas_object_size_hint_weight_set(layout_data->select_all_layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL); evas_object_size_hint_align_set(layout_data->select_all_layout, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_event_callback_add(layout_data->select_all_layout, EVAS_CALLBACK_MOUSE_DOWN, @@ -880,6 +817,9 @@ _mp_view_layout_create_select_all(mp_layout_data_t * layout_data) edje_object_part_text_set(elm_layout_edje_get(layout_data->select_all_layout), "elm.text", GET_SYS_STR("IDS_COM_BODY_SELECT_ALL")); + + mp_language_mgr_register_object(layout_data->select_all_layout, OBJ_TYPE_EDJE_OBJECT, "elm.text", "IDS_COM_BODY_SELECT_ALL"); + elm_box_pack_start(layout_data->box, layout_data->select_all_layout); evas_object_show(layout_data->select_all_layout); } @@ -894,8 +834,8 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) gint album_count = 0; gint index = 0; - int ret = AUDIO_SVC_ERROR_NONE; - AudioHandleType *svc_handle = NULL; + int ret = 0; + mp_media_list_h svc_handle = NULL; mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data"); mp_retm_if(!layout_data, "layout_data is null"); @@ -905,22 +845,20 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) elm_genlist_clear(layout_data->genlist); - ret = audio_svc_count_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST, NULL, NULL, layout_data->filter_str, NULL, - &artist_count); - if (ret != AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_group_list_count(MP_GROUP_BY_ARTIST, NULL, layout_data->filter_str, &artist_count); + if (ret != 0) { DEBUG_TRACE("Fail to create structure"); goto END; } - ret = audio_svc_count_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ALBUM, NULL, NULL, layout_data->filter_str, NULL, - &album_count); - if (ret != AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_group_list_count(MP_GROUP_BY_ALBUM, NULL, layout_data->filter_str, &album_count); + if (ret != 0) { DEBUG_TRACE("Fail to create structure"); goto END; } - ret = audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_ALL, NULL, NULL, layout_data->filter_str, NULL, &track_count); - if (ret != AUDIO_SVC_ERROR_NONE) + ret = mp_media_info_list_count(MP_TRACK_ALL, NULL, NULL, layout_data->filter_str, 0, &track_count); + if (ret != 0) { DEBUG_TRACE("Fail to create structure"); goto END; @@ -929,24 +867,13 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) count = artist_count + album_count + track_count; layout_data->track_count = track_count; - if (0 >= count) - { - ERROR_TRACE("no tracks"); - if (!layout_data->sentinel) - layout_data->sentinel = _mp_view_layout_sentinel_add(layout_data); + if(_mp_view_layout_set_sentinel(layout_data, count)) goto END; - } - - if (layout_data->sentinel) - { - elm_box_unpack(layout_data->box, layout_data->sentinel); - evas_object_del(layout_data->sentinel); - layout_data->sentinel = NULL; - elm_box_pack_end(layout_data->box, layout_data->genlist); - evas_object_show(layout_data->genlist); - } static Elm_Genlist_Item_Class group_class = { + .version = ELM_GENGRID_ITEM_CLASS_VERSION, + .refcount = 0, + .delete_me = EINA_FALSE, .item_style = "music_player/1icon.2text", .func.text_get = mp_group_view_list_label_get, .func.content_get = mp_group_view_icon_get, @@ -954,6 +881,9 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) }; static Elm_Genlist_Item_Class track_class = { + .version = ELM_GENGRID_ITEM_CLASS_VERSION, + .refcount = 0, + .delete_me = EINA_FALSE, .item_style = "music_player/1icon.3text", .func.text_get = mp_common_track_list_label_get, .func.content_get = mp_common_track_list_icon_get, @@ -963,16 +893,9 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) if (artist_count) { DEBUG_TRACE("append artist list items"); - _mp_view_layout_append_group_title(layout_data, GET_STR("IDS_MUSIC_TAB4_ARTISTS")); - ret = audio_svc_group_item_new(&svc_handle, artist_count); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to create structure"); - goto END; - } - ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST, NULL, NULL, layout_data->filter_str, NULL, 0, - artist_count, svc_handle); - if (ret != AUDIO_SVC_ERROR_NONE) + _mp_view_layout_append_group_title(layout_data, ("IDS_MUSIC_TAB4_ARTISTS")); + ret = mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_ARTIST, NULL, layout_data->filter_str, 0, artist_count); + if (ret != 0) { DEBUG_TRACE("Fail to get items"); goto END; @@ -980,23 +903,23 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) for (index = 0; index < artist_count; index++) { - AudioHandleType *item = NULL; + mp_media_info_h item = NULL; Elm_Object_Item *list_item = NULL; char *title = NULL; - int size = 0; - ret = audio_svc_group_item_get(svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) + + item = mp_media_info_group_list_nth_item(svc_handle, index); + if (item == NULL) { - DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index); + DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index); goto END; } - audio_svc_group_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1); + ret = mp_media_info_group_get_main_info(item, &title); mp_genlist_item_data_t *item_data; item_data = calloc(1, sizeof(mp_genlist_item_data_t)); MP_CHECK(item_data); - item_data->handle = (void *)item; - item_data->group_type = AUDIO_SVC_GROUP_BY_ARTIST; + item_data->handle = item; + item_data->group_type = MP_GROUP_BY_ARTIST; item_data->it = list_item = elm_genlist_item_append(layout_data->genlist, &group_class, item_data, @@ -1007,7 +930,7 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) if (layout_data->artist_handle) { - audio_svc_group_item_free(layout_data->artist_handle); + mp_media_info_group_list_destroy(layout_data->artist_handle); layout_data->track_handle = NULL; } layout_data->artist_handle = svc_handle; @@ -1017,16 +940,10 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) if (album_count) { DEBUG_TRACE("append album_count list items"); - _mp_view_layout_append_group_title(layout_data, GET_STR("IDS_MUSIC_TAB4_ALBUMS")); - ret = audio_svc_group_item_new(&svc_handle, album_count); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to create structure"); - goto END; - } - ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ALBUM, NULL, NULL, layout_data->filter_str, NULL, 0, - album_count, svc_handle); - if (ret != AUDIO_SVC_ERROR_NONE) + _mp_view_layout_append_group_title(layout_data, ("IDS_MUSIC_TAB4_ALBUMS")); + + ret = mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_ALBUM, NULL, layout_data->filter_str, 0, album_count); + if (ret != 0) { DEBUG_TRACE("Fail to get items"); goto END; @@ -1034,24 +951,22 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) for (index = 0; index < album_count; index++) { - AudioHandleType *item = NULL; + mp_media_info_h item = NULL; Elm_Object_Item *list_item = NULL; char *title = NULL; - int size = 0; - ret = audio_svc_group_item_get(svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) + item = mp_media_info_group_list_nth_item(svc_handle, index); + if (item == NULL) { - DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index); + DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index); goto END; } - audio_svc_group_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1); + ret = mp_media_info_group_get_main_info(item, &title); mp_genlist_item_data_t *item_data; item_data = calloc(1, sizeof(mp_genlist_item_data_t)); MP_CHECK(item_data); - item_data->media_svc_handle = layout_data->ad->media_svc_handle; - item_data->handle = (void *)item; - item_data->group_type = AUDIO_SVC_GROUP_BY_ALBUM; + item_data->handle = item; + item_data->group_type = MP_GROUP_BY_ALBUM; item_data->it = list_item = elm_genlist_item_append(layout_data->genlist, &group_class, item_data, @@ -1062,7 +977,7 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) if (layout_data->album_handle) { - audio_svc_group_item_free(layout_data->album_handle); + mp_media_info_group_list_destroy(layout_data->album_handle); layout_data->track_handle = NULL; } layout_data->album_handle = svc_handle; @@ -1072,16 +987,10 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) if (track_count) { DEBUG_TRACE("append track_count list items"); - _mp_view_layout_append_group_title(layout_data, GET_STR("IDS_MUSIC_HEADER_SONGS")); - ret = audio_svc_list_item_new(&svc_handle, track_count); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to create structure"); - goto END; - } - ret = audio_svc_get_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_ALL, NULL, NULL, layout_data->filter_str, NULL, 0, - track_count, svc_handle); - if (ret != AUDIO_SVC_ERROR_NONE) + _mp_view_layout_append_group_title(layout_data, ("IDS_MUSIC_HEADER_SONGS")); + + ret = mp_media_info_list_create(&svc_handle, MP_TRACK_ALL, NULL, NULL, layout_data->filter_str, 0, 0, track_count); + if (ret != 0) { DEBUG_TRACE("Fail to get items"); goto END; @@ -1089,34 +998,25 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout) for (index = 0; index < track_count; index++) { - AudioHandleType *item = NULL; Elm_Object_Item *list_item = NULL; - char *title = NULL; - int size = 0; - ret = audio_svc_list_item_get(svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index); - goto END; - } - audio_svc_list_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1); + + mp_media_info_h item = NULL; + item = mp_media_info_list_nth_item(svc_handle, index); mp_genlist_item_data_t *item_data; item_data = calloc(1, sizeof(mp_genlist_item_data_t)); MP_CHECK(item_data); - item_data->media_svc_handle = layout_data->ad->media_svc_handle; - item_data->handle = (void *)item; + item_data->handle = item; item_data->it = list_item = elm_genlist_item_append(layout_data->genlist, &track_class, item_data, layout_data->search_group_git, ELM_GENLIST_ITEM_NONE, mp_common_track_genlist_sel_cb, (void *)index); - } if (layout_data->track_handle) { - audio_svc_list_item_free(layout_data->track_handle); + mp_media_info_list_destroy(layout_data->track_handle); layout_data->track_handle = NULL; } layout_data->track_handle = svc_handle; @@ -1133,9 +1033,15 @@ _mp_view_layout_load_aa_list_item(Evas_Object * view_layout) { startfunc; MP_CHECK(view_layout); - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; gint count = -1; + int i; + mp_media_list_h track_list = NULL; + mp_media_info_h media = NULL; + char *album = ""; + Elm_Object_Item *parent_group = NULL; + MP_TA_ACUM_ITEM_BEGIN(" _mp_view_layout_load_aa_list_item", 0); mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data"); mp_retm_if(!layout_data, "layout_data is null"); @@ -1153,154 +1059,64 @@ _mp_view_layout_load_aa_list_item(Evas_Object * view_layout) layout_data->load_item_idler = NULL; } + IF_FREE(layout_data->fast_scrooll_index); + Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist); if (item) { elm_genlist_item_bring_in(item, ELM_GENLIST_ITEM_SCROLLTO_IN); elm_genlist_clear(layout_data->genlist); } - audio_svc_count_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST_ALBUM, layout_data->type_str, NULL, - layout_data->filter_str, NULL, &count); - + ret = mp_media_info_list_count(MP_TRACK_BY_ARTIST, layout_data->type_str, NULL, NULL, 0, &count); + MP_CHECK(ret == 0); layout_data->item_count = count; - if (0 >= count - && (layout_data->category != MP_LAYOUT_PLAYLIST_LIST - || (layout_data->filter_str && strlen(layout_data->filter_str)))) - { - ERROR_TRACE("no tracks"); - if (!layout_data->sentinel) - layout_data->sentinel = _mp_view_layout_sentinel_add(layout_data); + if(_mp_view_layout_set_sentinel(layout_data, count)) goto END; - } - if (layout_data->sentinel) { - elm_box_unpack(layout_data->box, layout_data->sentinel); - evas_object_del(layout_data->sentinel); - layout_data->sentinel = NULL; - elm_box_pack_end(layout_data->box, layout_data->genlist); - evas_object_show(layout_data->genlist); - } + ret = mp_media_info_list_create(&track_list, MP_TRACK_BY_ARTIST, layout_data->type_str, NULL, NULL, 0, 0, count); + MP_CHECK(ret == 0); - /* create artist-album svc group */ - AudioHandleType *group_handle = NULL; - ret = audio_svc_group_item_new(&group_handle, count); - if (ret != AUDIO_SVC_ERROR_NONE) { - DEBUG_TRACE("Fail to create structure"); - goto END; - } - /* get artist-album svc group */ - ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST_ALBUM, layout_data->type_str, NULL, - layout_data->filter_str, NULL, 0, count, group_handle); - if (ret != AUDIO_SVC_ERROR_NONE) { - DEBUG_TRACE("Fail to get group items"); - audio_svc_group_item_free(group_handle); - goto END; - } - /* free last artist-album svc group */ - if (layout_data->aa_handle) - audio_svc_group_item_free(layout_data->aa_handle); - /* set aa_handle value */ - layout_data->aa_handle = group_handle; - /* set aa_group_count value */ - layout_data->aa_group_count = count; - - IF_FREE(layout_data->aa_group); - IF_FREE(layout_data->aa_item_count); - layout_data->aa_group = calloc(count, sizeof(Elm_Object_Item *)); - layout_data->aa_item_count = calloc(count, sizeof(int)); - if (!layout_data->aa_item_count || !layout_data->aa_group) { - DEBUG_TRACE("allocate memory fail"); - goto END; - } - int track_num = -1; - int size = 0; - ret = audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_BY_ARTIST, layout_data->type_str, - NULL, "", "", &track_num); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get track_num"); - - AudioHandleType *svc_handle = NULL; - /* create artist-album svc list */ - ret = audio_svc_list_item_new(&svc_handle, track_num); - /* get sub list track count */ - ret = audio_svc_get_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_BY_ARTIST, layout_data->type_str, NULL, - layout_data->filter_str, NULL, 0, track_num, svc_handle); - /* free last artist-album svc list */ if (layout_data->svc_handle) - audio_svc_group_item_free(layout_data->svc_handle); + mp_media_info_list_destroy(layout_data->svc_handle); /* set svc_handle value */ - layout_data->svc_handle = svc_handle; - - layout_data->item_count = track_num; - int group_index = 0; - int index = 0; + layout_data->svc_handle = track_list; Elm_Genlist_Item_Class *itc = NULL; - genlist_cb_t sel_cb = NULL; - itc = &(layout_data->itc); - sel_cb = layout_data->cb_func.selected_cb; + char *thumbnail_path = NULL; + itc = layout_data->itc; itc->func.del = _mp_view_layout_gl_del; itc->decorate_all_item_style = "music_edit_default"; - //itc->func.moved = _mp_view_layout_reorder; - evas_object_smart_callback_del(layout_data->genlist, "moved", _mp_view_layout_reorder); - evas_object_smart_callback_add(layout_data->genlist, "moved", _mp_view_layout_reorder, layout_data); - - DEBUG_TRACE("item_count=%d,count=%d", layout_data->item_count, count); - for (group_index = 0; group_index < count; group_index++) { - char *album_name = NULL; - int item_num = -1; - AudioHandleType *group_item = NULL; - /* get item value */ - ret = audio_svc_group_item_get(group_handle, group_index, &group_item); - if (ret != AUDIO_SVC_ERROR_NONE) { - DEBUG_TRACE("Fail to audio_svc_group_item_get, ret[%d]", ret); - goto END; + for(i=0; i< count; i++) + { + char *temp; + media = mp_media_info_list_nth_item(track_list, i); + mp_retm_if(!media, "Fail to get value"); + mp_media_info_get_album(media, &temp); + + if(g_strcmp0(album, temp)){ + album = temp; + parent_group = _mp_view_layout_append_aa_group_title(layout_data, media); + mp_media_info_get_thumbnail_path(media, &thumbnail_path); + }else if(!thumbnail_path){ + mp_media_info_get_thumbnail_path(media, &thumbnail_path); + if(thumbnail_path) + elm_object_item_data_set(parent_group, media); } - /* add artist-album group title */ - mp_genlist_item_data_t *group_item_data = NULL; - group_item_data = calloc(1, sizeof(mp_genlist_item_data_t)); - if (!group_item_data) { + mp_genlist_item_data_t *sub_item_data = NULL; + sub_item_data = calloc(1, sizeof(mp_genlist_item_data_t)); + if (!sub_item_data) { DEBUG_TRACE("allocate memory fail"); goto END; } - group_item_data->media_svc_handle = layout_data->ad->media_svc_handle; - group_item_data->handle = (void *)group_item; - _mp_view_layout_append_aa_group_title(layout_data, group_item_data, group_index); - - ret = audio_svc_group_item_get_val(group_handle, group_index, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, - &album_name, &size, -1); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); - - ret = audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_BY_ARTIST_ALBUM, album_name, - layout_data->type_str, "", "", &item_num); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get item_num"); - mp_retm_if(item_num < 0, "Fail to get item_num"); - layout_data->aa_item_count[group_index] = item_num; - - int sub_index = 0; - for (; sub_index < item_num; sub_index++) { - AudioHandleType *sub_item = NULL; - Elm_Object_Item *sub_list_item = NULL; - ret = audio_svc_list_item_get(svc_handle, index, &sub_item); - mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value"); - - mp_genlist_item_data_t *sub_item_data = NULL; - sub_item_data = calloc(1, sizeof(mp_genlist_item_data_t)); - if (!sub_item_data) { - DEBUG_TRACE("allocate memory fail"); - goto END; - } - sub_item_data->media_svc_handle = layout_data->ad->media_svc_handle; - sub_item_data->handle = (void *)sub_item; - Elm_Object_Item *parent_group = NULL; - parent_group = layout_data->aa_group[group_index]; - sub_item_data->it = sub_list_item = elm_genlist_item_append(layout_data->genlist, itc, sub_item_data, - parent_group, ELM_GENLIST_ITEM_NONE, - sel_cb, (void *)index); - ++index; - } + sub_item_data->handle = media; + + sub_item_data->it = elm_genlist_item_append(layout_data->genlist, itc, sub_item_data, + parent_group, ELM_GENLIST_ITEM_NONE, + layout_data->cb_func.selected_cb, (void *)i); + DEBUG_TRACE("0x%x", elm_genlist_item_parent_get(sub_item_data->it)); } if (layout_data->edit_mode || (layout_data->ad->b_add_tracks @@ -1322,14 +1138,11 @@ _mp_view_layout_load_aa_list_item(Evas_Object * view_layout) elm_genlist_select_mode_set(layout_data->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT); } - if (layout_data->reorder && layout_data->playlist_id > 0) { - elm_genlist_reorder_mode_set(layout_data->genlist, EINA_TRUE); - } else { - elm_genlist_reorder_mode_set(layout_data->genlist, EINA_FALSE); - } + elm_genlist_reorder_mode_set(layout_data->genlist, EINA_FALSE); END: layout_data->b_loading = FALSE; + MP_TA_ACUM_ITEM_END(" _mp_view_layout_load_aa_list_item", 0); endfunc; } @@ -1337,13 +1150,15 @@ static void _mp_view_layout_load_list_item(Evas_Object * view_layout) { startfunc; + int id = 0; //id for playlist or folder gint count = -1; gint load_count = -1; gint index = 0; - int ret = AUDIO_SVC_ERROR_NONE; + int ret = 0; Elm_Genlist_Item_Class *itc; genlist_cb_t sel_cb; + MP_TA_ACUM_ITEM_BEGIN(" _mp_view_layout_load_list_item", 0); mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data"); mp_retm_if(!layout_data, "layout_data is null"); @@ -1361,6 +1176,8 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout) layout_data->load_item_idler = NULL; } + IF_FREE(layout_data->fast_scrooll_index); + Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist); if (item) { @@ -1368,21 +1185,20 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout) elm_genlist_clear(layout_data->genlist); } + MP_TA_ACUM_ITEM_BEGIN(" mp_media_info_list_count", 0); + + if(layout_data->track_type == MP_TRACK_BY_PLAYLIST) + id = layout_data->playlist_id; if (layout_data->category == MP_LAYOUT_TRACK_LIST) { - if (layout_data->playlist_id < 0) - audio_svc_count_list_item(layout_data->ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL, - layout_data->filter_str, NULL, &count); - else - audio_svc_count_playlist_item(layout_data->ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, &count); + mp_media_info_list_count(layout_data->track_type, layout_data->type_str, NULL, layout_data->filter_str, id, &count); } else if (layout_data->category == MP_LAYOUT_GROUP_LIST) - audio_svc_count_group_item(layout_data->ad->media_svc_handle, layout_data->group_type, layout_data->type_str, NULL, - layout_data->filter_str, NULL, &count); + mp_media_info_group_list_count(layout_data->group_type, layout_data->type_str, layout_data->filter_str, &count); else if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST) { - audio_svc_count_playlist(layout_data->ad->media_svc_handle, layout_data->filter_str, NULL, &count); + mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, layout_data->filter_str, &count); _mp_view_layout_append_auto_playlists(layout_data); } else @@ -1390,89 +1206,74 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout) WARN_TRACE("category is not valid: %d", layout_data->category); goto END; } + MP_TA_ACUM_ITEM_END(" mp_media_info_list_count", 0); + layout_data->item_count = count; DEBUG_TRACE("count: %d", count); - if (0 >= count - && (layout_data->category != MP_LAYOUT_PLAYLIST_LIST - || (layout_data->filter_str && strlen(layout_data->filter_str)))) - { - ERROR_TRACE("no tracks"); - if (!layout_data->sentinel) - layout_data->sentinel = _mp_view_layout_sentinel_add(layout_data); + if(_mp_view_layout_set_sentinel(layout_data, count)) goto END; - } - if (layout_data->sentinel) - { - elm_box_unpack(layout_data->box, layout_data->sentinel); - evas_object_del(layout_data->sentinel); - layout_data->sentinel = NULL; - elm_box_pack_end(layout_data->box, layout_data->genlist); - evas_object_show(layout_data->genlist); - } + if(count < 0) + goto END; - AudioHandleType *svc_handle = NULL; - if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST) - ret = audio_svc_playlist_new(&svc_handle, count); - else if (layout_data->category == MP_LAYOUT_GROUP_LIST) - ret = audio_svc_group_item_new(&svc_handle, count); - else + MP_TA_ACUM_ITEM_BEGIN(" _mp_view_layout_create_fastscroll_index", 0); + if (layout_data->category != MP_LAYOUT_PLAYLIST_LIST && layout_data->view_mode != MP_VIEW_MODE_SEARCH) { - if (layout_data->playlist_id < 0) - ret = audio_svc_list_item_new(&svc_handle, count); + if (layout_data->index_fast) + elm_index_item_clear(layout_data->index_fast); else - ret = audio_svc_playlist_item_new(&svc_handle, count); + { + layout_data->index_fast = _mp_view_layout_create_fastscroll_index(view_layout, layout_data); + } } - if (ret != AUDIO_SVC_ERROR_NONE) + MP_TA_ACUM_ITEM_END(" _mp_view_layout_create_fastscroll_index", 0); + + MP_TA_ACUM_ITEM_BEGIN(" mp_media_info_list_create", 0); + + mp_media_list_h svc_handle; + + if (ret != 0) { DEBUG_TRACE("Fail to create structure"); goto END; } if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST) - ret = audio_svc_get_playlist(layout_data->ad->media_svc_handle, layout_data->filter_str, NULL, 0, count, svc_handle); + ret = mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_PLAYLIST, NULL, layout_data->filter_str, 0, count); else if (layout_data->category == MP_LAYOUT_GROUP_LIST) - ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, layout_data->group_type, layout_data->type_str, NULL, - layout_data->filter_str, NULL, 0, count, svc_handle); + ret = mp_media_info_group_list_create(&svc_handle, layout_data->group_type, layout_data->type_str, layout_data->filter_str, 0, count); else { - if (layout_data->playlist_id < 0) - ret = audio_svc_get_list_item(layout_data->ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL, - layout_data->filter_str, NULL, 0, count, svc_handle); - else - ret = audio_svc_get_playlist_item(layout_data->ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, 0, - count, svc_handle); + ret = mp_media_info_list_create(&svc_handle, layout_data->track_type, layout_data->type_str, NULL, layout_data->filter_str, id, 0, count); } - if (ret != AUDIO_SVC_ERROR_NONE) + if (ret != 0) { DEBUG_TRACE("Fail to get items"); - audio_svc_list_item_free(svc_handle); goto END; } if (layout_data->svc_handle) { if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST) - audio_svc_playlist_free(layout_data->svc_handle); + mp_media_info_group_list_destroy(layout_data->svc_handle); else if (layout_data->category == MP_LAYOUT_GROUP_LIST) - audio_svc_group_item_free(layout_data->svc_handle); + mp_media_info_group_list_destroy(layout_data->svc_handle); else { - if (layout_data->playlist_id < 0) - audio_svc_list_item_free(layout_data->svc_handle); - else - audio_svc_playlist_item_free(layout_data->svc_handle); + mp_media_info_list_destroy(layout_data->svc_handle); } } layout_data->svc_handle = svc_handle; + MP_TA_ACUM_ITEM_END(" mp_media_info_list_create", 0); + + MP_TA_ACUM_ITEM_BEGIN(" add_genlist_items", 0); - itc = &(layout_data->itc); + itc = layout_data->itc; sel_cb = layout_data->cb_func.selected_cb; itc->func.del = _mp_view_layout_gl_del; itc->decorate_all_item_style = "music_edit_default"; - //itc->func.moved = _mp_view_layout_reorder; evas_object_smart_callback_del(layout_data->genlist, "moved", _mp_view_layout_reorder); evas_object_smart_callback_add(layout_data->genlist, "moved", _mp_view_layout_reorder, layout_data); @@ -1493,77 +1294,96 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout) if (layout_data->playlist_id < 0 && MP_LAYOUT_TRACK_LIST == layout_data->category - && AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) - _mp_view_layout_add_album_group_title(layout_data); + && MP_TRACK_BY_ALBUM == layout_data->track_type) + _mp_view_layout_append_album_group_title(layout_data); for (index = 0; index < load_count; index++) { - AudioHandleType *item = NULL; + mp_media_info_h item = NULL; Elm_Object_Item *list_item = NULL; char *title = NULL; - int size = 0; - if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST) + MP_TA_ACUM_ITEM_BEGIN(" mp_media_info_list_nth_item", 0); + if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST || layout_data->category == MP_LAYOUT_GROUP_LIST) { - ret = audio_svc_playlist_get_item(svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) + item = mp_media_info_group_list_nth_item(svc_handle, index); + if (!item) { - DEBUG_TRACE("Fail to audio_svc_playlist_get_item, ret[%d], index[%d]", ret, index); + DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index); goto END; } - audio_svc_playlist_get_val(item, 0, AUDIO_SVC_PLAYLIST_NAME, &title, &size, -1); + mp_media_info_group_get_main_info(item, &title); } - else if (layout_data->category == MP_LAYOUT_GROUP_LIST) + else { - ret = audio_svc_group_item_get(svc_handle, index, &item); - if (ret != AUDIO_SVC_ERROR_NONE) + item = mp_media_info_list_nth_item(svc_handle, index); + ret = mp_media_info_get_title(item, &title); + if (ret != 0) { - DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index); + DEBUG_TRACE("Fail to mp_media_info_get_title, ret[%d], index[%d]", ret, index); goto END; } - audio_svc_group_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1); + } + MP_TA_ACUM_ITEM_END(" mp_media_info_list_nth_item", 0); + + MP_TA_ACUM_ITEM_BEGIN(" mp_util_get_utf8_initial", 0); + bool make_group_title = FALSE; + + if (layout_data->fast_scrooll_index == NULL) + { + make_group_title = TRUE; + layout_data->fast_scrooll_index = mp_util_get_utf8_initial(title); } else { - if (layout_data->playlist_id < 0) + char *title_initial = mp_util_get_utf8_initial(title); + if (title_initial) { - ret = audio_svc_list_item_get(svc_handle, index, &item); - audio_svc_list_item_get_val(item, 0, AUDIO_SVC_LIST_ITEM_TITLE, &title, &size, -1); - } - else - { - ret = audio_svc_playlist_item_get(svc_handle, index, &item); - audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE, &title, &size, - -1); - int play_order; - audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_PLAY_ORDER, - &play_order, -1); - } - - if (ret != AUDIO_SVC_ERROR_NONE) - { - DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index); - goto END; + if (strcmp(layout_data->fast_scrooll_index, title_initial) != 0) + { + make_group_title = TRUE; + free(layout_data->fast_scrooll_index); + layout_data->fast_scrooll_index = title_initial; + } + else + { + free(title_initial); + } } } + MP_TA_ACUM_ITEM_END(" mp_util_get_utf8_initial", 0); + + MP_TA_ACUM_ITEM_BEGIN(" elm_genlist_item_append", 0); + mp_genlist_item_data_t *item_data; item_data = calloc(1, sizeof(mp_genlist_item_data_t)); MP_CHECK(item_data); - item_data->media_svc_handle = layout_data->ad->media_svc_handle; - item_data->handle = (void *)item; + item_data->handle = item; item_data->group_type = layout_data->group_type; Elm_Object_Item *parent_group = NULL; if (layout_data->playlist_id < 0 && MP_LAYOUT_TRACK_LIST == layout_data->category - && AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) + && MP_TRACK_BY_ALBUM == layout_data->track_type) parent_group = layout_data->album_group; item_data->it = list_item = elm_genlist_item_append(layout_data->genlist, itc, item_data, parent_group, ELM_GENLIST_ITEM_NONE, sel_cb, (void *)index); + MP_TA_ACUM_ITEM_END(" elm_genlist_item_append", 0); + + MP_TA_ACUM_ITEM_BEGIN(" elm_index_item_append", 0); + if (make_group_title && layout_data->index_fast != NULL) + { + elm_index_item_append(layout_data->index_fast, layout_data->fast_scrooll_index, _mp_view_layout_index_item_selected_cb, list_item); + } + MP_TA_ACUM_ITEM_END(" elm_index_item_append", 0); + } + MP_TA_ACUM_ITEM_END(" add_genlist_items", 0); + + if (count > load_count && layout_data->view_mode != MP_VIEW_MODE_SEARCH) { if(!layout_data->load_item_idler) @@ -1597,7 +1417,7 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout) elm_genlist_select_mode_set(layout_data->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT); } - if (layout_data->reorder && layout_data->playlist_id > 0) + if (layout_data->reorder && layout_data->playlist_id > 0) // reordering of favorite list is not allowed.. elm_genlist_reorder_mode_set(layout_data->genlist, EINA_TRUE); else elm_genlist_reorder_mode_set(layout_data->genlist, EINA_FALSE); @@ -1605,6 +1425,118 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout) END: layout_data->b_loading = FALSE; endfunc; + MP_TA_ACUM_ITEM_END(" _mp_view_layout_load_list_item", 0); +} + +static void +_mp_view_layout_level_up(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE_FUNC(); + // get the level we are at (presumably 1) + int level = elm_index_item_level_get(obj); + const Elm_Object_Item *item; + int pindex; + char *title = NULL; + mp_media_info_h svc_handle = NULL; + const char *p_idx = NULL; + const char *c_idx = NULL; + const char *g_idx = NULL; + int ret; + mp_layout_data_t *layout_data = data; + MP_CHECK(layout_data); + MP_CHECK_LAYOUT_DATA(layout_data); + + if (level != 1) + return; + + // get the item selected at the previous level (0) + item = elm_index_selected_item_get(obj, level - 1); + elm_index_item_clear(obj); // clear the new level + + // this is a hack - but walk genlist items (maybe use your own data + // structs for this, but this is easy for a demo). + pindex = -1; + mp_genlist_item_data_t *gl_item = (mp_genlist_item_data_t *) elm_object_item_data_get(item); + MP_CHECK(gl_item); + svc_handle = (gl_item->handle); + MP_CHECK(svc_handle); + + ret = mp_media_info_get_title(svc_handle, &title); + mp_retm_if(ret != 0, "ret: %d", ret); + mp_retm_if(!title, "title is null"); + + g_idx = mp_util_get_index(title); + c_idx = mp_util_get_second_index(title); + + while (item) + { + mp_genlist_item_data_t *gl_item = (mp_genlist_item_data_t *) elm_object_item_data_get(item); + MP_CHECK(gl_item); + svc_handle = (gl_item->handle); + MP_CHECK(svc_handle); + ret = mp_media_info_get_title(svc_handle, &title); + + if (g_idx != mp_util_get_index(title)) + { + break; + } + + c_idx = mp_util_get_second_index(title); + if (c_idx != NULL && p_idx != c_idx) + { + elm_index_item_append(obj, c_idx, _mp_view_layout_index_item_selected_cb, item); + p_idx = c_idx; + } + item = elm_genlist_item_next_get(item); + } + + elm_index_level_go(obj, level); // go for the new level +} + +static void +_mp_view_layout_index_delayed_changed(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE_FUNC(); + // called on a change but delayed in case multiple changes happen in a + // short timespan + elm_genlist_item_bring_in(event_info, ELM_GENLIST_ITEM_SCROLLTO_TOP); +} + +static void +_mp_view_layout_index_changed(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE_FUNC(); + // this is calld on every change, no matter how often + return; +} + +static void +_mp_view_layout_index_selected(void *data, Evas_Object * obj, void *event_info) +{ + DEBUG_TRACE_FUNC(); + // called on final select + elm_genlist_item_bring_in(event_info, ELM_GENLIST_ITEM_SCROLLTO_TOP); +} + +static Evas_Object * +_mp_view_layout_create_fastscroll_index(Evas_Object * parent, mp_layout_data_t * layout_data) +{ + DEBUG_TRACE_FUNC(); + Evas_Object *index = NULL; + + // Create index + MP_TA_ACUM_ITEM_BEGIN(" elm_index_add()", 0); + index = elm_index_add(parent); + MP_TA_ACUM_ITEM_END(" elm_index_add()", 0); + elm_object_part_content_set(parent, "elm.swallow.content.index", index); + + evas_object_smart_callback_add(index, "level,up", _mp_view_layout_level_up, layout_data); + evas_object_smart_callback_add(index, "delay,changed", _mp_view_layout_index_delayed_changed, layout_data); + evas_object_smart_callback_add(index, "changed", _mp_view_layout_index_changed, layout_data); + evas_object_smart_callback_add(index, "selected", _mp_view_layout_index_selected, layout_data); + elm_index_level_go(index, 0); + + return index; } static void @@ -1650,7 +1582,9 @@ _mp_view_layout_create_now_playing(Evas_Object * parent, mp_layout_data_t * layo elm_object_part_content_set(playing_pannel, "thumb_image", thumbnail); layout_data->now_playing_icon = thumbnail; + MP_TA_ACUM_ITEM_BEGIN(" elm_progressbar_add()", 0); Evas_Object *progress = elm_progressbar_add(playing_pannel); + MP_TA_ACUM_ITEM_END(" elm_progressbar_add()", 0); elm_object_style_set(progress, "music/list_progress"); elm_progressbar_horizontal_set(progress, EINA_TRUE); evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -1712,14 +1646,18 @@ _mp_view_layout_create_layout(Evas_Object * parent, view_data_t * view_data, mp_ elm_object_part_content_set(layout, "list_content", box); Evas_Object *search_bar = mp_search_create_new(layout, - mp_view_layout_search_changed_cb, layout_data, - mp_common_back_button_cb, view_data); + mp_view_layout_search_changed_cb, layout_data, mp_common_back_button_cb, view_data); + if (!search_bar) { + mp_error("fail to create search bar"); + mp_evas_object_del(layout); + return NULL; + } elm_object_part_content_set(layout, "search_bar", search_bar); evas_object_show(search_bar); layout_data->search_bar = search_bar; } - else + else // use conformant to use auto scroll { layout = elm_layout_add(parent); mp_retvm_if(layout == NULL, NULL, "layout is NULL"); @@ -1757,6 +1695,7 @@ _mp_view_layout_create_layout(Evas_Object * parent, view_data_t * view_data, mp_ Evas_Object * mp_view_layout_create(Evas_Object * parent, view_data_t * view_data, mp_view_mode_t view_mode) { + MP_TA_ACUM_ITEM_BEGIN(" mp_view_layout_create", 0); startfunc; MP_CHECK_NULL(view_data); MP_CHECK_VIEW_DATA(view_data); @@ -1765,20 +1704,25 @@ mp_view_layout_create(Evas_Object * parent, view_data_t * view_data, mp_view_mod MP_SET_LAYOUT_DATA_MAGIC(layout_data); layout_data->ad = view_data->ad; - layout_data->navibar = parent; - - Evas_Object *layout = _mp_view_layout_create_layout(parent, view_data, layout_data, view_mode); - - layout_data->layout = layout; layout_data->view_data = view_data; layout_data->view_mode = view_mode; layout_data->playlist_id = -1; + Evas_Object *layout = _mp_view_layout_create_layout(parent, view_data, layout_data, view_mode); + if (!layout) { + mp_error("fail to create layout"); + SAFE_FREE(layout_data); + return NULL; + } + layout_data->layout = layout; + evas_object_show(layout); evas_object_data_set(layout, "layout_data", layout_data); + DEBUG_TRACE("layout_data: 0x%x", layout_data); endfunc; + MP_TA_ACUM_ITEM_END(" mp_view_layout_create", 0); return layout; } @@ -1832,6 +1776,12 @@ mp_view_layout_set_layout_data(Evas_Object * view_layout, ...) DEBUG_TRACE("layout_data->playlist_id = %d", layout_data->playlist_id); break; } + case MP_LAYOUT_PLAYLIT_HANDLE: + { + mp_media_info_h val = va_arg((var_args), mp_media_info_h); + layout_data->playlist_handle= val; + break; + } case MP_LAYOUT_TYPE_STR: { char *val = va_arg((var_args), char *); @@ -1867,8 +1817,13 @@ mp_view_layout_set_layout_data(Evas_Object * view_layout, ...) case MP_LAYOUT_GENLIST_ITEMCLASS: { Elm_Genlist_Item_Class *itc = va_arg((var_args), Elm_Genlist_Item_Class *); - if (itc) - memcpy(&(layout_data->itc), itc, sizeof(Elm_Genlist_Item_Class)); + if (itc) { + if (layout_data->itc) { + elm_genlist_item_class_free(layout_data->itc); + layout_data->itc = NULL; + } + layout_data->itc = itc; + } break; } case MP_LAYOUT_GENLIST_AUTO_PLAYLIST_ITEMCLASS: @@ -1886,6 +1841,13 @@ mp_view_layout_set_layout_data(Evas_Object * view_layout, ...) memcpy(&(layout_data->cb_func), cb_func, sizeof(layout_data->cb_func)); break; } + case MP_LAYOUT_PLST_HANDLE_TYPE: + { + int val = va_arg((var_args), int); + layout_data->plst_handle_type= val; + DEBUG_TRACE("layout_data->plst_handle_type = %d", layout_data->edit_mode); + break; + } default: DEBUG_TRACE("Invalid arguments"); } @@ -1918,9 +1880,11 @@ mp_view_layout_update(Evas_Object * view_layout) if (layout_data->view_mode != MP_VIEW_MODE_SEARCH) { if (layout_data->playlist_id < 0 && MP_LAYOUT_TRACK_LIST == layout_data->category - && AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) { + && MP_TRACK_BY_ARTIST == layout_data->track_type) { + /* loading artist-album track genlist */ _mp_view_layout_load_aa_list_item(view_layout); - } else { + } + else { _mp_view_layout_load_list_item(view_layout); } } @@ -1988,7 +1952,7 @@ _mp_view_layout_set_progress_pos(void *data) MP_CHECK(layout_data); MP_CHECK(layout_data->ad); - if(!layout_data->ad->prohibit_aul_relaunch) + if(!layout_data->ad->app_is_foreground) WARN_TRACE("Check here.. progress timer should be freezed.."); double pos = layout_data->ad->music_pos; @@ -2010,8 +1974,8 @@ _mp_view_layout_progress_timer_cb(void *data) MP_CHECK_LAYOUT_DATA(layout_data); MP_CHECK_FALSE(layout_data->ad); - layout_data->ad->music_pos = mp_player_mgr_get_position(); - layout_data->ad->music_length = mp_player_mgr_get_duration(); + layout_data->ad->music_pos = mp_player_mgr_get_position() / 1000.0; + layout_data->ad->music_length = mp_player_mgr_get_duration() / 1000.0; _mp_view_layout_set_progress_pos(data); return ECORE_CALLBACK_RENEW; @@ -2022,12 +1986,12 @@ mp_view_layout_show_now_playing(Evas_Object * view_layout) { mp_retm_if(!view_layout, "view_layout is null!!"); - edje_object_signal_emit(_EDJ(view_layout), "SHOW_NOW_PLAING", "music_app"); - mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data"); MP_CHECK(layout_data); MP_CHECK(layout_data->now_playing_progress); + edje_object_signal_emit(_EDJ(layout_data->layout), "SHOW_NOW_PLAING", "music_app"); + _mp_view_layout_set_progress_pos(layout_data); if (!layout_data->progress_timer) @@ -2094,6 +2058,7 @@ mp_view_layout_progress_timer_freeze(Evas_Object * view_layout) void mp_view_layout_set_now_playing_info(Evas_Object * view_layout) { + startfunc; mp_retm_if(!view_layout, "view_layout is null!!"); mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data"); mp_retm_if(!layout_data, "Layout data is null !!!!"); @@ -2166,7 +2131,7 @@ mp_view_layout_set_edit_mode(mp_layout_data_t * layout_data, bool edit_mode) elm_check_state_set(layout_data->select_all_checkbox, false); } - Elm_Object_Item *sweeped_item = (Elm_Object_Item *) elm_genlist_decorated_item_get(layout_data->genlist); + Elm_Object_Item *sweeped_item = (Elm_Object_Item *)elm_genlist_decorated_item_get(layout_data->genlist); if (sweeped_item) { elm_genlist_item_decorate_mode_set(sweeped_item, "slide", EINA_FALSE); diff --git a/target_images/music_player/01_controlbar_icon_albums.png b/target_images/music_player/01_controlbar_icon_albums.png deleted file mode 100755 index 9d22c0cb7853dbe36eed380d4ba0f686f71bc26f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2967 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 N002ovPDHLkV1iOod{F=Z diff --git a/target_images/music_player/01_controlbar_icon_artist.png b/target_images/music_player/01_controlbar_icon_artist.png deleted file mode 100755 index cdfc4da5c4d0a43e421560af3ea1bfc4d7a8a80e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv7~+vjCqE*Z=?j1DQaQBoMrx{V7nJ zU`dc)Fatw_!~XjM2Imvr7tHThSRYXMT-OCC`ODMAF{C2y?Iq8?!v;Jq7u8l)7QOm6 z{cYPr#YNFYd(Ow(b0`JaU*C6eV!ED;Z0XZ+P|YEqm!6hXdhjriI7` z9_xC@cH?8+W2G%Q5p3*gGLl9d>kaiRxC>`rWe_)Aq&lI^&FPvlGJrW1k;Ygh{UHy=95c|f-~hq1BhOn|OP7DzwWqU-!*Zls*9r{^$sn?;-N?<53c)I$ztaD0e F0ssrb!g2rr diff --git a/target_images/music_player/01_controlbar_icon_composer.png b/target_images/music_player/01_controlbar_icon_composer.png deleted file mode 100755 index 0b6a8c645620791580132ad1ecb5607848738ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv7~+vjCqE*Z=?j1DQaQBoMrx{V7nJ zU`dc)FayK;28a0y2?7P{4FdY_pWpAgIw}Mxxxv%LF{C2y?WNN~hZQ&+E;cz`v61@s zKi&GW>lF@**wV?n?YP-0GHo4okIqSMn$>$<>HaCJ$v dK5n>lnLVURHNjE3;1kg844$rjF6*2UngA}Ap5Fif diff --git a/target_images/music_player/01_controlbar_icon_genre.png b/target_images/music_player/01_controlbar_icon_genre.png deleted file mode 100755 index cc3ca3c5b63a6e37e189529afeec87afca9b58be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv7~+;{cx!*Z=?j1DQaQcrf8ph&fP? zKuM5aFayJWhxY;o_Y(@vE6iWt5HP{UWIIr9y{C&~NJZS+OK16-6+~Dc#{Cn#Qu%** zt_SZ%?uVPouibw)=X`K}QRtef_jsgFXjjA^d?MQOky}Fi%Z^OhcTxQ}!wlNFZi_I^ z2~Yees_=Tl3BH`DH?j+kPHJ3mRBl6*j$oHmzCsp{Td(jEMZRlgGRL{+2^PF-*G{QC z*15Xv@{iJK*7pii8(z!nT|3Qi+&Zt~ dpZ$2tEnLcfYp?6>l|ZL6c)I$ztaD0e0s!s0of-fD diff --git a/target_images/music_player/01_controlbar_icon_music_albums.png b/target_images/music_player/01_controlbar_icon_music_albums.png deleted file mode 100755 index 3b8bb7d95c2b3595b14a3495e19e3b27e191187c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv7~+vjCqE*Z=?j1DQaQBoMrx{V7nJ zU`dc)Fatw_!+rsU`vvm@4Eht!zhCb%Z`Wp^G+w-+t*m<CAM?mY~op2fginy}qTc)1ex3YtgYQid<5gTbF;DFBUOXj$5MZ*wI)mLB3Y= zoxEL#5?36!FFE5CQ(J8E`t7zNdCpT7YQAYZB^++>|8c-v|04#++m9C&--$RN=W*}q zgm(|b-poiae*d^e{`-aZ$q!8L1$7z6Jh&dxz*#oqqyLX7H+uFON}t<(#9E-<=iL!2 xp5`Ozi*NrwXQ&pjrDgZAmjY$ZiLWo4-@U5*Ys&nvw?Mxzc)I$ztaD0e0s#FiuQUJv diff --git a/target_images/music_player/01_controlbar_icon_playlists.png b/target_images/music_player/01_controlbar_icon_playlists.png deleted file mode 100755 index 87d9f5946d9c63296ece9bd73c5080080d0f3748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u#3?$#IayJ4}x&b~RuK&RR$b&HOlkuVLdO)Ro zB|(0{3=RzY8{R7z2;A>qKmWY+vsZyYnIcaY$B>G+vzHY48Vq>a0@npxn8E5eK|qI7 zhT*VefW^8)ofceKdFcnHJj)M~x%uOXarX4I&Q+X6hq4=@9!lQ4T~mA3`#5h`@p03x z>{`d8}7)#Tv<=R62O#<4^ N;OXk;vd$@?2>@KwcQyb3 diff --git a/target_images/music_player/01_controlbar_icon_songs.png b/target_images/music_player/01_controlbar_icon_songs.png deleted file mode 100644 index b47daf3757506632f6d07d8a52a5452e0ea9c340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3143 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 diff --git a/target_images/music_player/01_controlbar_icon_year.png b/target_images/music_player/01_controlbar_icon_year.png deleted file mode 100755 index 8d2268e32d72af7856c5090d72fba6f6092a3229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv7~+vjCqE*Z=?j1DQaQBoMrx{V7nJ zU`dc)FayJTf%6Fl`yCY4&%a;L&>t{G<>M)!G+x0g>B9X8--yV%rn;cVHz z@AWrtO$&CvSkiUv<@SWqHr~V6m%E$~G4B1_#MmM^C*5Gv>;n%B8X0FEoFI87k!i7& z@Uvy%!fGp*m#O*q@$b1|V99?#+EDdPq+u>YlPEjG#V*d6Ns`@*C6YHi43Vh*mw4dN z4z2n}9lMQ^x^8aP;nJ%W unf+qiy)!PYicZE%O0-ox#)9&t;ucLK6T9y~t<) diff --git a/target_images/music_player/02_controlbar_icon_synchronise_start_sync.png b/target_images/music_player/02_controlbar_icon_synchronise_start_sync.png new file mode 100644 index 0000000000000000000000000000000000000000..e91d2e4c8c122e0d83af79ab84974fde7cd86a39 GIT binary patch literal 1431 zcmV;I1!($-P)E=0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%IY~r8RCwBA{Qv(y11`Vml9+_=~d#41R9MI?4KG&R6* z6Ovpq)Z!1MSlAB49yrv4lHoEmv3exSFGI!naiw*PL_j(ikAbyCfpV&kL1DPaR_y{eIiAprc*<~6KZzN#JQamY_pBM}OLR|-oP(LICK!!UZ zwKG5!brcSBK;_#>csKwKf#6X7cg<5_9h_%qN3=Bj7@dbLMQoJP%-OExY208

rt*#38=CVMd^@JQ0bXLrN;81pLR*Y z9QGkPpj{b^#v6@_0a_O=M0*eqhy~(BK)eQsLkXxgfHr0&(Aq1YK{?R4=qYH4PyalK zBL*{}BU3N{>d0t7TkD{q%Q~oM$OZd=xCV%iQzHgR^&lmcKRMtjw3Tz29v%b@+z++? z5|mBVY63KNeTKx?`UUkQDe7lIhg-Pt#FQ>{ghZN}9xR2950L_FpdBWDGLkZ=-{TDJ zj$kY0IH7$kqLMeUdC&k_HSiGWNKhO72m@rWj1nLL9reK$zzcvlk=mu`K!743?!_So zA3>zFkij+EvWpHL+=@p|i=w6)TE4*5KczKz$ACF-NyuF!CsEKa!Au;=BpIkM6-}$Q zD6t-7h8EA*V(cumUZVuqKuc><#@4O@aTzRdsZq$d;>mNM0Utv=6*Vy)JWQruP=n$W zrG*RwbPy>5hnylbh8L00{6Yptpu;}zNYpolP=kWh4)00^$gIRWJl!bJDnHP`STzZS zkO#D+79!CtxwPmm!9WxP?kO8u15j#mqh@0p8(0QyC_B)y!-@r5K=&N2$7BvddkT!u z_Tw@N%mU@bAO_T#!M|vQ8A&BJy_#x@(EKF<#jshBo6vSEKEMO*WP?iRI0hUO7i3iv l!vPHYVZ%`mj(TvA0|4;k|3*^qmmvTE002ovPDHLkV1jwRX_Ei| literal 0 HcmV?d00001 diff --git a/target_images/music_player/34_rating_00.png b/target_images/music_player/34_rating_00.png deleted file mode 100755 index d109fa93f681efc48875a50811ea88cdc3baa2f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmeAS@N?(olHy`uVBq!ia0vp^sX#2k!3-o9-(j8!q?QKwgt-3y|NrQzqd;`_)L9@x zW@l!LFbNcg7zGjpvcV*ZO0Zt27NDgN1#p#M23!_m!sGl0 z;Xnr)mjw9*GbHTa|Neb~fI~yU{q^(b8#Dyme=iVlKB2(je8YW*{p;WFH|Sq)a6aLD zzk-0mdahV2OTvoX+mH0kjWU~^lW%Xip=kpXPKAwhB z_pffZE>0==w!27TrZ*ciqmV(^dCutLZnHM!}u()L_fb;DD=9vssKA@_bHCZP5|= zB7Vf`&GpR}szrMeUhEAI>I`#!f97oE9B+@jmS2h_ zt2q}oJ=537n7JX=Ah?z{cZx}nY@7_Q0h6v*$KvG^W9~McNdA3&`>BrW6J^R6yz^Tb zXK$6^Vz80gdGbktKZ8(E{FA%v>Dw&Uv>U%$S2F6|c cl=ze1T(MgRZ+ diff --git a/target_images/music_player/34_rating_01.png b/target_images/music_player/34_rating_01.png deleted file mode 100755 index a1b134e81d5e4e0663e6ae0b5d291c962a3328e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 999 zcmeAS@N?(olHy`uVBq!ia0vp^sX#2k!3-o9-(j8!q#g$Ngt-3y|NrQzqd;`_)L94# zWWd?~r!v50A#9)&lyMBiKvr<{*ijHVbrd29Bq2sY7(l82Ga1evI}1?;WI&99hyY2D zu46|*T(Aj1#So1^21E;l0XG(;1#BRkggX^t4p1df>d6(Y)j-d>mIV0)GbHTa|32Zp z!2N>v4h{472Q&y2I5arSUw{7o`|}0@3HJl$JM2$LSl{s8VEz6CgY)MV`tR>AP*`uE zU@$*megFLafcNL`8`#!0PhwzTD)4l145^6Qd-;0RZ4VyS2Z_OpcjbzP?>wek7IUe( zjNjnOZ~Fi?oV5SOySaJS*EoaCu_8zP z&hEAMUy z=NuL-&vJe%yoXcssr2jBrYT~3SCu}`$({By zPB*Q{O=pKR&jywX9?eM??;E!F>%H~#z2#T@`87vNgl=is{MlE1>{an^LB{Ts5!fOh` diff --git a/target_images/music_player/34_rating_02.png b/target_images/music_player/34_rating_02.png deleted file mode 100755 index c1673a7cbeefcb0f46450be9f7c3df904e5d16d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 961 zcmeAS@N?(olHy`uVBq!ia0vp^sX#2k!3-o9-(j8!q@D!$gt-3y|NrQzqyMKeoIQ0G zh#+hT2^0h(AR8hDWgi1614+$fyvF&#WAEJZtvyr@<#?DEDv5YG5T<_Y*JyFG$GDx z_syL5U&Vg^|381~5z`ZH=OrtC^_`b76#KB}rOdOx4YH25oT|~^W`2vmk}G78@wBo| zbVJ$MprlH!8>eU8W#h3b3>0B!{LOlmC!!!=vv+dj`Yhh9zcy~K^RZ6QA613n_~?YT5r;`*++rWP18lkgejWTM`#<{XVlOUoW?Q zZn-@3x4V%pkG>fS9=meW_n2FlTGj0LyK)MWXYt>&^4>as-qx$f_T1{3k-0|fW^6`k z@K(v!vkkwAo!YXeblsIcW;0=>i_xWv%TBkPd6W|~Yl5S5k41~o-S&WF5h5tKZcS^4gS-SQm`MrV^Y`)McCZY_39a=Koz&`i+CE#vFzTLJSo|6oY{ z^ZQCjH}kghE!!Mgeg>{Rn2}?8>*lQvmQEQb$=lcWG<{o{X}99mrR_cwJ&JezG3!+gIg8PDc`7dXbxB=JKJvd-tgs%x6Yj=rhoO)X2&NwyUr_Zy?IlibX)O# m-M9B+=HJdN39i`ohrRR&^HtVNTUB5hW$<+Mb6Mw<&;$V4O!tof diff --git a/target_images/music_player/34_rating_03.png b/target_images/music_player/34_rating_03.png deleted file mode 100755 index 4dcfdc7d3acd893d50db0aa6ea34cbeb16e4f1ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcmeAS@N?(olHy`uVBq!ia0vp^sX#2k!3-o9-(j8!q;3TGgt-0(f~gD;boA6wI2*y3 z$p92Td+IE@nwbnhK?pi}>?lMHkc2SK9y<$U{GSOj8Nz^y!?l2Afr3E2AjQW(is4+K z2*_k4aggmm)4-O3R04GYodo8Bbb(z6F$$vc+6~??pdXz|g8YIR65j7maF{R9aQ{4z zRj_`4fWiKT0)hMU9RdX2zi)W2aQ?nS!u<0F>kInV8@zA0->~07A;BP^pdTpIzdvC8 zeS>*h+Yiwl;z za!jiD#ybBTkA8bOgZ}J$7oG{ub~2uMHtL&fysX(z95t_Pi4FI-T!?LXvutdcbL=(of$uh;Q6{ z;2c|+5y#uVmc~M|`#E#gXYT!HvU&Cnqs(dkM?STEU0{B4a|!d*x3&A`$tp^#q`1kf zFXLyNwz^R8###xVt!J%P&vaSC|MObTR2jb;CmfxORJJ}d)d^gY$FOp8M6dQ|=}pt# zy5!~vWPX-#Q!z7Xj-K}E0@vPILeHZwx!!(rXZC8HM$^f4M-&8&6WR0n0)sXiDaX1` z){9bWy_a*=?n0UTv?#Snhx%D38k$a4c__5}zS6gqxp`YQmL{6bo@nwqcb{d_u>&Ud zO{LGW`WscV$`2+9Z`Hn+*LJ32(KbEbz8khbzBHHa%9`A9w)yC@tm$kQU-(9^lAYq_ z6NvdZ~WHE-&lNW(!?bp=k`Xq_i(m`KbX8TYi`|N$A4y&)W*aOHv)3ccm!qfd~UwgBk1ic#w!2v^sWg!r>4!_b=KM2 zTe@tacD(i1-nN2z-t);WN?SK7-g(@It7~FSA=oj83&%nSW>gnPbQW3ZJ z()FU-1_BO&0tw4kB(2_c%yjQ}om>CwLpOYx)WVVS>DkrWl4oNQ9KY?E9A?xXALjsmh&5k$c9b_*mBqp2s%VC);fJSo4Cw^2z(iy|!hi&dpl7f1~>D-KG%?2WIW&JX@V_&3p6O=9V{1ojGn{RnoU7)f#;< zTK8?{*WilVCr_jaX7A}WO_{lUUw2o@I}3vPM3)Uxpql`l~95kMGWu2M*wqxcG*PM!I+o~#A9%iod_=eK$h=$*+zw7$ErL{T> zc;|dt62}|%U2WFIN%w>{E!!@?RpVscz5h`q->S=hx7*(S!)h|`@`a6l3|YW*#^CAd K=d#Wzp$Py+f5|=o diff --git a/target_images/music_player/34_rating_05.png b/target_images/music_player/34_rating_05.png deleted file mode 100755 index cb37a47daf06696d07fb97350882a9cfadc96875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmeAS@N?(olHy`uVBq!ia0vp^sX#2k!3-o9-(j8!q@n_RLR|j?!Bhq;XeN>%8XLle zlRyR<0vb4z;rsoFGeBEpN`m}?84~utcMxcppK!k5{`>U-2K(G+y;n|7nrpzr8c>EYKoF2DZY=lSp?B6qdc?tRjy(iNY0i+hC=*z|o_R|*a_a-F?2wv1qvohY5_~wi@+d;vL3vbNNd(`F9f9~1kZFz;KudTO@ zIkv*>aO$4C$EjuR)6Y3>6i?LGj*HxXv*z|TZtlIUGj#7QG(NZN>82}@4I5Nm=Uw0x z%!nImrt?$}Aq%JP{d$bTm`zq}_W>37JR>lr3@!_01;yKHCu zxTd3w>-K7c!{79zqHm~OJf|Hk_>IvtaLePHVn@3&)@-P}cy3XIi2b%}M~-|`dox#; zYjw5$ja!w;##eM4dzW7G3(?t_n$?@S&1LP}#ih!<&5LADKNFelnru8<^zDwUD?AII zSw--t+5Y^I=Q_(e_uGT#m(9$oZ$%xrU%SQpan`D<66t?yXUM(&cm7(|IuqloJkcw^ nZQa$GTW_;$dE_?vlkq#Aro4OBTn5*a*Q{an^LB{Ts5xWgp! diff --git a/target_images/music_player/3d_picture/T02_3d_view_bg.png b/target_images/music_player/3d_picture/T02_3d_view_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..2401b70e107803ad4559d72cf8b966563443a65c GIT binary patch literal 9137 zcmd5=c|2768$KfYTG_H>OC?K|NHO+(%N9aHjFLvBY++>Bq;|7T-qr} zfl96T%0sLHYcy}=W6cQQz66y{5l1vg;ky7?w=nrMKvtOmj)>va2aE!@zL? z;PgJP*X;ltu@LJ{0GQt5q$fy<062Eq1S$e{$AFyX6TwP=@gZQBt;SPHpi2Naq-JER z3OpzRDw}92@&Qsx;E-;h-vNNg9XMUj&FupC#sa&PXN;si9L%L1;{!Vtn=ggrkyP?F zB^9_xVq_%9zQ0M0@!&3T%Wal%vVzsFvCJagVl=NXF90AZf*!0Ev*OZ3o!itT9#%+g zA@H_>c#X@-YIt?DIonYd00x~rTUYso3U68KrzXi?|~f4Y!wrKB{6H&_TDOr<P4~Se} z_AgZtzU7^-EB!m=V+CY}#BN{ZdlW5aoP^`T8Is~#EryrY9VtfI3w9 zhKWS<>G?x~bv5!2kMNU4S~oo8%Aw4z+x_4~4q-{qoOSa z#+t_3U8)%ztUO|LJ!BGOguc4f`?w-AG#>F5(=9$_vJw#vFjnQ~ez_xjrx2}spu$rL zo*h97BKwdxwy8Z#F=*S-rrdTxk9(XyGhR$}H+ST-o-_9OB$BuIIS$tQjUYy9Mnp$g zMmT3o$q`nv7gHAWhxY3|Kc~(-N;@hxN^BD&B4?N!r`MNp*MRPD_(}QucMJ9MbOSPW zid~75Z1iDJ(@4F4FRFdF9itugY~CBEV!FO4cJ1gEqqc@|l{e9E2xpxssr>1EP=V0> z%<)VlOi*TLro0%TFni09-{>QTH=EPO%+nOSLB z{aF--7{dmG@XS;C9=XbfqWZ&`WWV3eHq1gCpU`K~hh`qj2*`qFzzk$kJWW=Dh)rrV zYjhM+bdw%h442k%P*^h;xbSn@Q)T;K@jm>N_hDoAwX1w3F)M5(A<|iycO?}>)kTd8 z^f0$p9(a*X**&}zgxdAojjdEOZwSgB6FR^f?tuW8wlz9%3|Q6O&Z!;fpXSHX#)HgRX*kjjTed zWt3&~pl<}SRVukd`8Q>n(6e=B!#u+dbq;mOyu`emyc$|>wWi|qw2)~B(vE2!(?m7C zXuQ|>GWKx1v~Z`$So~OgXZ%3X>60!e`3o}&pV+A7kDN?1nJO&3;CE8eB-PmPq8}FH7#1q|>D%wIj8&6JA1V9(*W#R+w4D{9v?;7@b?_Q0QR^wPJ)8)#lbrMV3W+ z6np%(B27XS&`q7qc9PBW@}o<;j-EK$AJ=qeO2(sh_V&0C)VP_pxl44oaA(7Tr)LrR z@$D*5Mkw;K4<;}qNaK2gU^GN9o~5p@zHCI@Y3`!=pj+DYRnOoMwc~ zLoOu_Lx!a!`bGLpEM7=d7S$Iu=+wXxEc^x(ytvoSthueV0_pI*1W>{tZ#i$%ZMX%u zYn&BfGDp!i^ZDJAa-m5`IeNM9>-VpZR^8{ctABUnJ|}i8rYWN7EVbWp&o?hyNGxAl zhSYdc?(+-qGxC=Sa||@z-6|Y?*txY=;qrjulHzT}{&=Xcj%1#I`e8mumf$(59*JVH zVwpNYTaySZp?(gIy$%on)*;X_LJ(s+lop7*m@Y^)}e3*XwLH`rPIZ{u83;7&6bh0OnqH{gV zc-^$@y-!s=zh3p2z ziBF*dGPy$PNvTcxv!=#lG6pFIvj$5B;!|yXk1abFF0@XuxR=h0z3V`mmSR^R&&tt; z1cq82wjDM&HCzE!CO0T+eBn0E!Ti3q!^KGyVH@EJ2{(0NC-V0Wwl--4z3`U@Cse3W zd&*Z4)6N1^;#7ve-KiVmc2sm78OM?hVA-jT_FN5h&lx0X-*c4>$|iJ9K5iyXIbJ^w zXKH0ytn&iW`tohR+p-FJ56vAhDHB(9jKQ%EgBcU_Rp@=Aiho|6T?`ibCLiaK2 zrh#)bu<2r2r@=O*wUDu6rN^4gW}Z0B+eIl-KVuB)zN zFMsADDtv181a7j*x!0L(I(dLbXXF}(*ZwuT#fNkHE$O&O=E%r3BElHVvbCrH8uXhS z)~b410N}P40N_3Vu($?(j|0G!LjdshGyoip0RTqWO^aG(0AT7>Q3P?OzBzP) zQdT!ecXcgX(iJEYVmg^J^n}B{EJfsyneScaY^M4^RssNcWEKjhAQA%rQab>k1;@iHw0=i%VD$o=6fL7#>->hHRy?zsJ@OB@6vvK8*o4l_uiuDI$lkl+P zV3w9q0oG4*eR7}A5ApvPs2t~Orv)7-TMHdISY~mlAK`lWpLYz{_C*)goBOW@Sd&Gl zz)=^U2PgZAir#WNI6`yr&qn<}?lN3Q?;|)qp6b1S@Pq5b09=seD@6Wz%&(#P&jef) zY<7bjaO(a@2k=PN2EJHF5c<(nn-T^*#pX=<>40PLb1@ ze8m)X7G!^m4Iy3#{)G3PT&_|wJQMH`+f*3Vfe(j&QUJbL-xnx1_+;&f$n7U`ZE zP&|K?URq@RSBp1o!*MzYiu%_uDKX`5a^YtRE`&iJ@cU=MbHw~Fn7NM9^=k1V3ezL_ zsS!GcZX$>4iSYgbFEeln17Dh-TqIjc^bz=|4AOxVa9R8yP~Q7*p`s0jfy!SV3_6e> z(A#fO8ZYOcx-Zb@R2%)EtbK#TcqDAB4!j;5F;`mPlmBwPeL2sK>OT$0ZV`1Gf5tBg zLD+ZYx^`22U3DA_U8;*@rua~?|qR#@?GJ{q1 zLCo`R*)Ub^%beBf2e+l|r(1kW+Yl}-f~>U;1*{Z2M*qD@>{;9`#ZCbV8rMM3cN`vCxcWq1-({thKkkXmqc z|B77e#`;? z#jiWZ;=j-|yiCGKL2uN!WeHzL&1d`V)1CTN02KYd0CHkVTLmZ4Pt$UvX8dcJ&6)uh zGTcOLK}|Kq`@(;+_OH6dn*0R-LBTzSf3*2mPqE&luSQcT%va_EnwMWm@%0{TNa{NG z|1$8UD1_;bvw<(ueqfn@W+T?C#^?RX0Qf%ObL;az9picGO8 z?=$-R?QGU>x%FxOL;rxc8`{Q!&m&^r=OytV*tFs;1>n|aY{O){_*R#)twJA4adL^& zF-5rI*3i$mUl;s_TjZ)^Dym3ij%8jPQcrI{TIlx*av4P%u zwSfc}q}d5k)LyspXz}*IDvw2fz~WVH(Jtl>HFJ&F%Q?++BZcMVFGd~WUO#YN!k{Ik zU$(Pi!+aLyj88Sa?U@c=ld72uy>z92bg~TLX<|0*B9d3@VG=$x&lF~_Xlr%?H8TH! zy`&(tBU$={sCg3?#C`jJhG^C6=ee3Q_!`7LywIQW6r;0^?8Vik%rLZc1|?gSO`XU2$y?V z%+z9}*exa!dh-TOg}lUiEcP;$bmCkz-!)oYEj#7K9zB_Zy-+j1h{QrWC$5YkZN9Cc0YR+Oilb|vKg{bBE$7kG{gqpFA11OhkwI0h=bL~{^6XRFRjEdGSAz!Gh zxLkW3j$kf#(}smVE9-`Ze;A!)Y3Q8Bd8K2eUe%cdt} zF3+=LP>J@|W>_!w>E%0a^Sx*Y%F|uTYykDp>zz)3rQn|S#rbCJT#;aKdY%lf2;*U0I!g_DWS%`BM_YDO0qyduSUY^b!i5&$0luTk|9PF3v2Pw lIE&tZzS!`_J#F(?K(Y3LS!wEUJ!mljH6?AuT=~=2{{wP~CJ+Ds literal 0 HcmV?d00001 diff --git a/target_images/music_player/3d_picture/T02_cover_flow_album_shadow_bg.png b/target_images/music_player/3d_picture/T02_cover_flow_album_shadow_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..1b29679c62d8ab9bde8c704b95cbe2ec74227003 GIT binary patch literal 26951 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 e`{{b){~rJrXqS*^m?WkE0000&Pwu0I=uQ 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�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 literal 0 HcmV?d00001 diff --git a/target_images/music_player/3d_picture/T02_cover_flow_now_playing_album.png b/target_images/music_player/3d_picture/T02_cover_flow_now_playing_album.png new file mode 100755 index 0000000000000000000000000000000000000000..4615a76fc85ff23727c59dd93c2d2f91521ef75b GIT binary patch literal 80122 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

  • `*7sOi51OqI5gAEgzMyd#Cy8bFC^|&+ z+R8l}V=p3D8`lQq?j6~a4_dBx0VnY(nhetb>YEmcz{f}RP&^SO-Caonr3 z$di4%cI^(X-`d99Ik2&jo(f{u$+U)e#p$&nR2A3n?4hbX*iy&FrZxLR*OfJQV!&ZW z{isnN#{*TSr_wIR8q3GoRZUF?2Bj%Z>9)k^@SVYUGW5~5n{Ek*WQ<4@iX>ixaMmVq zDF=f;Ufn!<@!^LzZr!=Pb>YIr!P?sD%Gon#hp)f!`rHJbApLU-eAc4+{r#iEdj93- z^{4;bPjk^P244LNDU7IW6+OGoJ$%*}8l@1IM4==wU}zL!@&c?gr|G?6L>EE2zEO!1 z(x61wxV}(}X_3l}e(egSU?&q!B#HUIK)VIycrp>#hq|887|At*5Mq0TMq3sE6c#W( z`Y=V%QU$4jLSP8+h{74or8yx292O(2_156UV_MIk6h2p4*QtY&;Pl`u&aRw?A;#Wx z2emkW5QuMU047W(2e@-{3pcOc^gDO9=hbXJRj+entRD;pR2C%>lVLDPwBz(XQvKS< z!W*G})U7Ee(>MY(cl@xxvf-jf*`HN#5S&^a!h6N_ zJG*c$^q_ieEn$+KaU*-kT50HrO5g+gR2}8Q!QI~}-Gn*AGY(RmrqY|Nd7A9dz;IH* z2gi^kx()a02zuP=<%oj%(0c_egH1TA`@I5{u56rn=&^HezWV!jr_-sftga5vo;kbn z+U3{w%c3k-#w%`bf3MC!Ymvvoaq{N(EQj@hC!Z*&pcQMlH=E9BGM^q4gYt~RKWVwh z+90Uu^oItWPbj4anF2-k0Av;_M!D%BL#hf!D;g1rCVLdXB}QLHP3sG9;+L-!TziHL;;vR$}U)HggxGLK08i!ri`0bNKHr5(Qx3aKGfVB*;-(cYI;;8oGLgOCQQ z$J|Xr;6~J3NVTtF*y7Ci0#1)lLqxDM-+~t(!hU90Yf#q?_ik+A#+4g#_r}(|o>mi4 znOjr%a!{fyN)syyP*v2f77q{c66$~)0x3;wHDyhkgrKJ9c!6ltUxhD(xJe-i#xV7I zJ?{4hsOws0)qL*ix|&W8iZ?I6Jh*l1TL0XIhs$#pALU+u1Y(220+sW)w>!ajP~zO? zDhgxq%9Y#Ln@mv@Cb)gZD&qd6f(o#?Hb&(fZr$5&#=lCgZ_5L#tVfX+(!`_FzXc^P zWi2%gKc$Phn}!%ibSO=IsLkD!f_=2cYO*r2rhLwdP3;|+lO%>)Z?ZsvrIeOXJ3x90 z!yI}&Suvqvuy*dD^Hp8HxU;(>=gyrUY;K+!t*)$=)7i9|OebbZgtbV(r^DjEpXB=w z1h78$_kWF_dHNX|jD}^6ddRgYMWx<5*xg^hF#dDBUiny89LpW9fW2y%tSWTLUplnZyc@pXn zx4Ha6C8)nsn+K&6H8cJWx-f3qeVkYHO&@Fh4FHO&o(HgEZfuR6cd*9d!pbFV4o>61 z?O|F?qsGZLT-Cw;1Xo^vOK-e>b3QwmO$jtJ#<*dBNM%u4K*>3$qN?J(IPW``w5V70 zv6-AWWPqfH20o`@4@^PY8%-5SeM|nR8WI&^W@cg<4@VY&%&S>l&8vE{yElE~;DzDt z*1h5ROHULVr_Tl#R1I&idoV-gJT^DRC<=?`UVRH&2NRUGh@cQEg!_{UP~gnQ7}LsO zdv69~lBO>+SzMR}*d3_xfLvAXGt{(*!i@*LHbB+3;c&9($p)yT_h3*X zp5_Ia11FbVMmxzo>C+@MLMJg!VJ-2-nR92)pI_bH-kzU5eYRLxSsks6$AjIy-C3{K zE1Y-MIcJw}S<4(8@SaTx^}44o{LvSAWjv;$EPF&W^xl_MUEdXzVle1`+8DC|<-FF{ zq=ZSTiN<&@DZ#agz|g42BhaO5!$ehpVMwg%X^e_Grmu=lF}3e0_2tH83PlMAy`K@;Vh1rod{s4g-sc-ve>z1x!BY zm2Sr1RtzNGj&{2VnwYuHP(eHDlpN?CfO@S2?iM$5%m!9 z%*Jq0l+-KxT9)%_I-j_$J2$KS-R;r2ho0=8f9Nsp4~CGsf`MW>tx#1v*jyXpLyw=w zw_dr1?fn`0Wf3p%&}X`HFvlADIKR1qs`A*MRWOD-W4jKGxoIt^`Z;xXM z-?R>+93Mk)AxMu~Si~w=bS#M9OfZVRh8U{%qci`SLOH-aVKCAe=wF z0%Hlz`9?&Vt}4-PRJGjoGYcjtPye#0D*2{?<9Qs=C^ikWs&x)dxx@gQbRNe^OeUR6 z)cg$VQ4qy4gVQ9ac&-tL*MZ}<41-K`I7#ni!nNfz6nof&Z5TEX+aH~|`0(bzbb^D) zffhwEIDPue2!K&ld(5!aT;jkudZG@!Cjjf$|Ihy?0)WA2Xlj`c0F>gTzPo*IXE+)> z)bIBn4*(Fp>o`<7f&(|A&}3a~n4+(biSmQ^cly#|ldp*vJ+T3sc0|1iuM8xlY3CM# z(=gR=XEG*$k3p!aHAa6#V6qWtqV;mLSPph8p?YJ9l5%FF{d>r5v$UR|Z%`B%i1El76W^TaD z7$e3QVP+ww@Q+9ghsTmqnm}Geypo2ubpgKuaCvWy<<;>judJ-r%-GtwbM4-%FFae{ zzHu$^lh(knMO}N`zPpQYzrc??c@g7&iRr8g?j5lU!jocqGDWW}aCU7Bi32ghK$CXD zb6VuMh>CFtoWkWwZNSA0m~>uIy!o}3+SCmCHDD8*DiXL5#V!M)M!H}qoL4aIJWVwO zVgq9+09kV`QWz|pz|OQc)qtTv3L>I$KnugNL9f@dr!GEvVdK=P;r7n9H^jx-`r3Fr z8utO%Uawc+=wYj72{?UUjQ!qmzqd^bEBk{g)bv;oC^@qKWl|^|fcv{6s zNpk~f&MZt4DH)Ct$1pdLj&a~=^cP5vB~^O>ix@U@dpBcb9_}fs;?~LCq>vrF5Jkl( zDF-1A99)X78m%i4*etv@>S`Dq0z>8qHsO9>7A01S6^J-^4LYJ21BPa2W}IKSi1q$y zOsXj=sRCGt^)2dKP{@)Il-gKFoxi`OM*p3W^gwPzm1o2F8Bo^q4cg=yk3^2(dy!C-Bp zDnfgcLp+x>ou|#Y&Yky1oW~hnhsGtBG6&r>vlB{j>UF%48-g(gx^nvb>c-~y&fPmT z0K2lX(%)ELAE>IW>)KdriwB6X827bEeK(Wt3Ow=X<7|6HUswmec08-+Q!Z$vkPk3% z5z69i>q|TPhyeAipA~YmIcbg)Mb9iSpi#)#_(~DQS#cU&3rrND#xY-%Du%75oe`ZA zpitw%oe}Sm=TZ%KwwOx@B{M;Q*#i<%$7EKQxURgNNaJ0eSs-NLeGMXmac>obaFH2f zn$hZYPz7RhcnTYXGniEqOzTPTxFP}@U~gv^uRi~Vzkd1Vp476xy1J@^-k|W_!`0q9 zU#p0U_g+O+qh(GgVGwJZnN#Q5O~AEC>!ioB=a8*`^l71)&7wdlPUcWmCL$FPsq31J zHC)(&*Vi`)yF9I?2Xghb=TX)5VDsEXf(g;-Jc8Ed`Vb#{A_jl zzKWbxh&&B34)!K^?fEy{wbyR!s*}C7)m04ogQ6CP+ST5Pi?LKQ!&yWnMN2UlX@IHW zr(#4Ui;w01@`#F=eg5~dfB8Bw!t%k@OPq*!fqJjrJMUao*PcMwSl=|`m9@FArgv^# z{?7iL8&}mwb3i7-!L-8G{sfO+*udi#&!F}K=Y3YdBkWIWSi?AXY83QqUha4LW)T&) z&Bf?e`#=jq(a2w=bWa%_-iu=yiGtDES5rGH zGDUZwphxo=MQ)f-l>PGT!;hbxR~1dB6JHi(Z)0O)*z5HQRkf;Wj!6so&mt{+M^ZcnNdu91Zs_oOEVelGTbb`o1lU)WVmv6>sDM}W! zX`PC9agJ(iX|0x%x|tinaJ<{a`E(R4OpvOOsW~<=w4^~b4}~%y;zPSlGqWJPSI}T7 z$b^}BDsAtgwzW@?C5R6WnT73PSd4-N3lzo_vHT8zJo?EW4haaIRWj}>@|$^IN~ zynMyqc;oi2iXN=3t#M%ruBuwR)B%~oc&;XGi;=75)xDJV9Tj2akLOXY z>`!sy?oL)Y1iT0)bBDFj0H;{1E&CG!cF%j6B)_kH)1Amj+8O;W%q-jg7yoa)h<8dHlc0+HqU($4Bq=ZyKhTsHT zY@9nSfIXNT;MA$jay%Z7;u!l>A$$8gFF&sUFc|iGY`L$ZRz#}( z>Aqt_kAZlV=y3G32+oAuPdzO#t?ZljwgsF4qYhIm5cxtB; zf+AmmK$Kh97|EeauA5k`WXdW&?emnB%(1dJEJneO7&R=nGZ)kI8^hBmZ662q0R(_$ zi?S%-Ylk;pdDCBg_1d1R-NEYW8kI$9DpzUkD)A!Xyi-?u5g#T9W>HipqDuT!{&yZl zMG{_!$g9Q*qN+pN&F_fFXRllQ-RDtO_ILQnP4wke)eF?As(0QwFTNHhIvS7da4@Xg ze0ulxTdz&_cJ4-82^Zwn?hFQm4?lVqgFzp&N?L6d5vG-cQ($v_gkBN+>AR6rcH(g+ zWG0T^J+M(bpZoj2#?L(U3_bD4<2-lsvWI>ts%C$(KLukr==VQpjOk%vOcpx*P@3%f4s}|l z(lH^-qvKAOK--!l$u%Lh^hBq|)?muNc6&Iz-dRp(Vt*ud66sB@jloJFkL8$tPg#MLIB%}+!=hB7rc*r6Ft*XkW z$5mA$@Wv5{DiVgJYOG8VGn2KpNj?sFdqplwRVi@wl=EApsw65f#H6b5>T4*>cr-Hb zQcY+3_in%Ss^PNi4~Hu-%$U~>w|4e$eq$9+UO0_!zjht94}4Y{Ix(5eu|DqO^y&y# z@9hS{_#N~ZQ7N@LEnb#?&ID=ezxYLj@{z z>{D!&0ZSyyyI+TL>^IcV18LPX(~*&;1+#)g8_OHg*doF}K?Z$03^u?bFt8y7W`@@q zecQw4;55X0RCN_1I%b%Har3P^c=h?q)7k!Pe|2RIWmy{Uy;fE2RYXO-hMyriS|rpL zBCN%~;k_5ak_yO^fp7gXuN`IDM1 zV?!;e-O6ClL^MQ{Nw@L{D*_g`jr&dO4!6#+YN)BCCzX8SM-fM+rCvgAh<0sL*ZBU* zL0laq9Smzi(aR74w%=bpcX4xXfB$k-S2P-p`@`X|?3KMzMCQgA>%BiN!ur0Zh3_0- zX^=FmtgIR;OkY(C74ehlLA8Ev{cKSbXB)RqWNwLBUltt^JsxJga*OG%u0;DTx-2`l(vW6>2}b65y2J)d)xbX?YYbK?%ln;esAE1!$IM_ zXzl92Sj8(`6v9l4krblD0J)Yb0hfr#Y&P@Etfx+$DmOMZdgJlfmSxHF`Mfs9&~P}k zdwY8`A`(>TObUJmtUe8!-Ij<7tAeHf29pH)r zR@NY73@Uuf#mabjHeeNO?N6{eD)H3AXK;6K2ImAt!Ljij zIGER19}jSPV}xsW_o8SsSaE|Hq-{jfNN5lT0KPdJO_U{*6-7hWFcQ0VYUG4Y#mY51swRJ6SHlJxxn8%GNHkb?~wt3_) zlXj3-)8-s0_$IDuhrnyoOVwI&G#!O;o3g-&ndlN4JgAa0V;DytkMH%J~pP!qhZ zR0W=?Ni7+siKK#3BDgQ821{Tvu~3jkpo1F^CW+T)$-USU=3#9Z9&5zHNsXQvV5PT# z+RdTRFlLJx-g~_9>YM(?)mytnJYQW|EyRoZx(@t$a#C05LS%JhR7FG*fyNV&o;`cE z+}zyk4+aAxB7SFQ=ithfE88!=_~Mpx&O7J)TW`H}P*s&@W|U<~7cN}rpE+};fByXW z(GyQRacXsSwg2$L53fA-*kkKAZrs?papT5*UDvKGOG8B5x_s)P=qg2E;eSfax&-y! zgFsXig;^P|>dwyg_THVVz210jWw^42!WzsgkGp$QoLL*;?D`OI-QI;ncLQQV zE8X-GhXtWl3YJ+ZQ7*rr*a>1N0#azYk3F4@rA>-7CGvWyF|H^WXJ{O*$hSv z=^IJQ3q;$3b|h3YnFmcnYjTr_;|}6_5x@*!U}30)h>teU!J1hiFv?gf*FZ{`yLsaf zO02kj{jR?G%GF6VtEX#gYYZrA=hTT0td&=xaK#)6R*O+poc1g0>+AN+nKOekXU+_^ zx3?!>_`(<7`07``di#}EUfH{T{rY5UYpaUti0&k<_;IbZSXo&yk38~7|EZ^*8h`SW zpFH#9KmOwnKlhU5Bfn4(EEv=ujyBI-T)Y0-%loRzMZfHghQppQrVx=upjtM@elgN| z4{%s<7t29eI(0oIP+iZf@#@OB?AgbOxS&NrEOp&8^YpKo5Zt7YCK}l;8G+PnfuZp2 zpos`k8KV`*^~O{r#%a|0e5Yy6+KgOcSW3bKO(QXy=cP?ZGxfAKw!4zOCVU}9vwxON zV=U)I&?^S$7embJDokDmKx}X@Il$|$zFF;U?H}}eJsI@M!h2Cs6@`iyud(;pbV_=7vUySo*-LkMI6s2cl4 z=bUbBZRyt5*5n)C_{P0|{?GsUm5+SnBQO8bFa6RZKl3v`^MS`6du)9&nGD`|2zL}rDbN0&KWsC5d!1S+2aa=1Pc{a^-9DQFVHrK|uc5koI-x*`zBFD3_(#JuS3LYt?Yb(c1N)~%vHOU83M+9dY!OWAY1t)Z* z6BN@zZ8{y$877e{LpUf+gWXXAFG`LgF^baGR;H7J#zIgtQM?)dm9*C_U?qOG-y53Y zcvSA~@2MA|UfC}PgJEf{wN+Ia=bf?ETIU=e5oKYaA^JU#5(0SQvB!DtDqEto5T$ul z)%|{Ng+LF{5=jm%Kn@*>qw=^33mn%XXi)}QEfBWN6#+abqx9P(lbZH0&1b$vPXdV^ zU2UJgbZoktNyLqoN8(Tm1}9yWdRVnEY!S}GaDS87Eoj(aRF0w!%Qa~XRB-pkUAcMn z_5?sZUKtx8a8BMkJqoN+3(aB*sH)9}vYe$2j?(FYvO}1_h`lHqHU@(FKFq?bK z=ME2@S;L*Z3A_Y9C?$dyg%@D8-^aK=!`{q=$coz`4oFjYV#`-(8H;BX$7W}ZE_>-* zGTl_K(Md({3#nr)41v04qzyUGZ8b8=7C8CRH>qiBo!kIwV(?SPN7gUf7{kWSh!oSN zNl%^#McFg`LBH7A-u87}b74&}7z|1#HUNxaV?@O)=_SmGcYlQLPT!S)_5639S1{=O zV;2gAn%dViolmRL#`t_;%T3B_yh{^190I1cUYO>_QTFPt+3g}ArXyuy!kHy~aa}=X zZqv^6BW<+tv9=X_+|jlWQT$uc4p(i*bS0u*oA*so9y7zBKus>(MdOS^0)vYZmiv&v z)dVu$FedvGT)F(#e1CU;Iv$Qun1brM5+`2bJu_yh$AXnaS%P@)-I+6IdQU(7^!nD; z*1>Q7=5N0EPygvZee?G1+p`R){4vqhGQc`gIQrGEe)Y~bzVVH_zw#@;a_v`t^;bXh z*kg~K>-YQSt+(FV5)rZ1nnl1m0=SfjR7pv^K#fv=IOOSkR@DbP+mqd`e%T*dW&;O@ zN$qfcV~jKFE4X@R7e$c-ng(;{G3XZhwyKw!;xz(I;-NSP7j8QzkO@(n zYGDI1QJ%osyq4HRzqjs4`bG$vnyk~KjU%acw%ZhXl3+Bo<1`gbgyK=GI0he~a8u?O zof#r-CDNt}Fl}PWTAYeG#<2Cm!pa04)04-~Tmw z=ILkX@kbxGWVrNR3Mk2BKJ}|+WyHpoT|EvhX!e%3A7ySq$cD(r*pr))s=N?YHRJ5F zRPictu&acsC7S{i)Dlq{ot`)7 z*&YlS9%aML{+n2W7xUDxza{>eXi_3K~%`t5)4 z5B|ZYKlQ0keYh-3bLGmF+ae+{(&~U!9$m$eZltQ(D8m(Ot+B)5i1v1N_Ga6+R;H^P zYoqZhhzw@VqgKI%%@w@0wHI7!V`H(0!a*?{^ib?qa2k~AsqLxJNyW>M6W_#~=>lU< z9)%`nLhB&f0W6}1m}ogH#JL3VhRazxrknvbNSg*x!@Wn`i83Jn9v;D7^PJYTz&I;wZFeV zT^X;Ev6ic<^3M6jbT4a}(acGqaa(BI5>)-^)2Dk8tZx7MumAe9-~8q`w==L>1g)dM zYANxK<@V<}pFv;$`q%INgMaW3zW87Mm;Yt;+0TCVlK|w+H{ZOis^C!8qR6zz9}RG+ zh%hC?c)*Jayb~G?hBTke+x;WWbd-vpkI_xgvg@GJnuAUQH5Q&*Xq3*H z9>V`k)6A0$Y0x~A%s$#CA%+2yjjuDU-3J>OvZ2aH(PN!W@WDdz$BG_V#3*ea%q6^f zFaefAWpL~6j@-U}X9AELjs`}&sCO<@>lz6dbwDeRtWuM+bIy&&WBd5ykFUJ+(o47g ztN-f1`r0?Y`OSL(>SO-7_^*mT^T+ewt7EoNE&hJ>>ec=K;=lMW{_qd~@DIOy>eQ*x zLk~T)PDC{TpEp%6Hd`BGd<0<+g(p=3#1S(_!-2xN-D+=Zzpm!NH_aG00SaqzW@8+z zUWj2V!&nO^3TA`xs23hH2G%gxhJVIdkPQv%##*oqerIgL?dT*ccoB<|RFa%P!7$XKPMM2cf{+yJA4- zdFM^->e@SJna#O?()2c3jOh3-`a`|7hvzy{XWf>}*Nh}@ystaVR=b~^NfgrSso~Q! zGjP_%CM41LLNVIYbaxCAilAh+P3kBB42sZ2(}d{;u6DTo*3Ei*dwV_{3<*T!#fbt< z^G$mD1!BF4wwPJ#x^~uDdi?RnSGKpe5B~8#{>R_?(wDw;C-nh7K!ha^S}i=HE#uJL z<;s;S?sK2}+#mhJfA|lFANj~fo|(_*^LzL19T;QmqO`#nqbWT^>h%fzdm*k>F}>b^ z3$t5mb+BJo)75e?G?qEAzyw^}Si!BGDVz_LS!Cbms9)ls3R56Cd925hKPcRskXaY! z+9^)n{Ly_O=a@`7I+#Y8pIgayhU-#B zdN7hcC(|Idj=staQ}is8F?;)a;#Fa-Ey}XA*4m<~D)!=y_kJ<`qwhD5^=BSoeeO4Y zU1Nkr#+c}vr=%jaG29pN8z$z?hoh_GqNn3N!eS)Gi`}b7b`Ve#LzyOy>PB0w*IzB=-Oj*0RTsilD0dL|M%? zE?>U9_Zz?Q8-IBB?%f*~FJ9a%%MwK7j4^&m1NNb&Y=wFy77(1Z21TzY5I^zr0|%8x zmF`5bIUZtTWq>-Qp3zR&LWxjXMp+giLNV?45+b8W#+zVAY)o{vO?E?RU23h1nc4>B z^mx;BADimAvo5k`d1{*EDQli5&gBT<@6=?U)}`!s&Yez^wQ@S|lhmHu-wiQrIqaW( z_|Xk!W2*T~t+l4?^~!YNgc!>l$73ziWWDP+tY)X4dFmOi>dJ^{0T62Mq;}o{+*`iy zwB)9|*m84J#HDW|@}whPvryeT#FBL-#(7oJbn2AaxozZA4FzrUG{tuAeA0Nb5@A?4 zxRA<3tLUAbU4QTHy~`8jX2t``+A5_ov>wUfJt`R8c#HHH1^+0dDNhLo~smol3}{ zR}#w7z$=;&T9hM;_7`agsZE08=1#r{$ zlb^yA%h;OC{yO(|I($WN&K*-np9KcE-!r}O>QGd6d)gyi$^;`~N zxh75;^?ZB6`9|`vINE^F795hxL#l8ROmHrZUH8^l_}b&v^*i<6-u`?z7?3rV=B^S6 zd1I3bW?WTgFa!}LaPv<*@x;b-I-UOJZ~o?sw{G2@Mu#dOby5#5+1pa zR$~hqwyPT4L@4hKY|}kWX=tNc4zHm!5{?l21~p9G;UJA^7?&g{RS7oD5(@~N&f+-g zUQ_!|9CpH?5v{7`sHzHOuWx!~&su9O<}hA7d+(2uG+>Dy>$@V}-x<O z*_-TfK9p86s=CJ3y?eEKm40tPDY_C7XqdOIOBC&S+l_b5xpU{v^-rHZ-T$LM`lHvr z_{A^YTmUJzkovg?NCT@Qp0AEc0jnj?H`};={rbV@KmYk>z4x;-XU?p}=a!{`nx}}7 zfENOZsCvUj`@_DFuP1K4Unwb!38{}0V0{z-i$Gy;2b(6P8ukm=!i4EH)<&aF3IsdF z#|?okniMe&EFnWN{cqDn;x=6ignE=0$BLXKMiHHADT+mz@)R)A2_|7l#p+T8ymRlIPqJ6~gKPIjrg!5NrPao!|MLD>rW3xU#ys zIxfpn(-fXm9b5#i2DCVg7DH$_RKpgkZl-lLhic??xCsTz!h%egs$>ci#k+)IuR!0% zsZ54Z7z-PRe1vLWoOr~xss0%Q7#qNkY^>gyScS}9$8j8&wSfa;HqGd+p;>3ZOtU}nl7VYmDzZELgu|+2t4VtbH7691xczEjU%F62MU^bnKst_|73Tk%- zkdy9_JaYe&;7=)hcwTyp&$tHfRb0g2FBofr^)DTfEtcj|0qcWj**cZ zcQZL^e-6tnXu*FTnV_PHwum7@*xlXtJG*5`c$I!(JVbm}A)zwwo@Av7s z=bpRv^{;>Z-Z5b19w5rPAJJYdfYWjR4iWsXzWVCkH@@+W7wfv-TU}ips%jlUOPBe{ zXAzbM!xP8>Bt_YSiqvq`T-8U30KtjE6VUG&*rJHzwn8)oViYFmv8)MW(@YWm*$6<^ znr3Q}i5ysxBN&r_sGX`roC68LFya_GZbpHH2reVpDFYzNz$%jR%}B4TPq7_S$L-_X zdb%^Wk9Eh5Mau|k-B68T6uq8hV@y@e$q*T9ZDC_n<;9bU%aRL%vAhZTZF5=gh^zq$ z9*@WDy)QU8Me1ZamC?qyWH!BbKy3ej{MJ!JYL9AxS|*`5YFm6vVPH`crkPxontm@t zu4{5ImAa~ZX-iTS4Fml&5n_j;s!r4qd91aywNganx#ym{xwEq~KY~BZ5vEI+8 z6ZN$)5rab?=)f2ZN()0ZjG>Op0$WDEG^j<}mMLoG!~kGevlg(nku<2{wY5Rk){9E> z-af=x0*E8(5e)RSkt$?{f13Gf#Ut4DgVSazPk1S}+-kaME)C>kqO5m?aI|AN<-9XQM6Rw`yeCy}2s9+nJ3ngd zZKZ=p$tdnu^tj)RgpaNG5`~C5b^}I|H#D&B?d~}5oG*%kSWR-eJLGG%1hh2zuIuXR zYVY9SVDgP`eB;iNi0U}7a`%xt)W<|p_j~-PZPZ`-(wA=CxN+mnvMgyd8WpNqE%?LB z;(Ww>j-sjxGovtt*7Ny+I$xz@sxd-Y>6Iu76H56p9n0kaNyr(}Khs7yDT3+~xGiQh@`pABOgvMvT8rGP8)Hpj3ma-4Y|5fEOQa2aOvLc+)I;;y;P=t_bqgv^ziNeq$A1v&~U2909`b|A%=6J`v;R6AZ5ewVbC~IWh^OE zm!*QKXK*wcnZaOS-gx7U+b_KE!p;(~@<#wzy@ZTE4y@`WK=q)%cmBQc#vA*uz4qD_ z0B$fCSOB##Mi;oN&eUll@&LSwdP6KkOvYMKS53stDk6$54WUXl?ic7;6UV@(Da-+I z$|CSqA>E6dmErK1iOva)f<3C@6R%`AP9vwF)rx7M;W+*+u4{>!ad5_<(Q`GN6xwOg zhT7E7a6240*ItEg32FyWBu{zf<_1U^AJ&3%YMO3)8<{!y>=3i4kcwx88jckM?>$v@ zMUlrkiYwvo6?5JZu=uUd|F-_e|EvEv8gB@ka|$Tfm_9Qbyr&m>z*H0WdAwV7?9OJO z29WC7>1;alD%wtB1}PDm3CbJ>ODuB{6;+jfzi*48pqn>u?%ug`XVHbhzm4?J9g`~N zeTK^v@5@3_&Pw0uPTi!IdwY9(MC5wCUJ-%G8)G^bKuQZ+iHs5(76m*pSyL25)m&9Y zng}HxZ&AQl11MlQSR;D^EHehyVq&7Us!^u2y@jDi)O1`F6yY058YheP6E%H=QL>^+ zFkymhn^a2l$4a^>(_XM?IBForH51Zw(?_Bpg@97iy+Lt4K{Gy#GMxpt)3NhWVL}Qs z7!;$`wQ~E`t$h*E*t}^FtbiKfX!LkLPJc!B;a7gJfc1C()_-J%gQ0QW8D_%@IPZm- zF`(cr{61bDv|8Djy4iN>XDv$#z_}V#73Ne?aw?@X3#U6TFpoOIwHqv0%CaXoaW@R=`zrc<+OJmN^bWVydc&0W6EKa0Gw#u2j0?nWvwjFZ|IL)QeA+ zQv?F0(}`A9-SK2NZj|}S5>6T)<{v8?lLkx$=a|5`D=mqxQpGTi;nIG;&s9~;Z{EDQ z_kcvYyU)M-k?%QZ9fjUG>7MS;9fkbOn>Tmsy56zYo-xJ{GkXzf#@Xip9UUE#n%5JN zNuQroYjX8WV>H4NBn|};3d3*`95T?xBrp`xxquHzI~C?-hs)0Z+}aPNL8&29QJ83| z7y1Chc2n=5NwzWEM%T?`=R6P>>e?k!a$cjxpKTFjlu{%poeo$~@MKF7UN8>~LkCRy z9GUZjHH@Mtxj!70yLa!gh=(DU{uv8g(x9GaS{6F-pV2nxkXKN_Yz#mk#X7mO-3D_C+iA)VvX%#f#qEb_Y+S(u+sewz~O$t zqf*4$rYGT2gwYOwQ0*-&$KSvq$STLD7SrvZ$&_ee*s_1_=>sNCinCDi$$o zLb6t26kG*cm3Xlxd4WW&RPsk}cAZTI3byg%Xs6^576?gnl@EzWO6HGk>UhXgBuOAl zHidvQmxg?vK?I)kng(OF^~p+}bJ1h6kva%swK4h8H*$)`l2k<``H~qgAq^~w!iY$U zun6}TIlendcK|4?4bE!bQILkPWn&xD&r~U+1w>L^cJY39EK)Z3HX8}inyG~^Si={Y z?vc?gwB?kJTUWC?aC)wFCGG5cqsh?-M(t3t#yv7u)@VpS!hncC00y$1l$aGNOV#a* z(uPp*fDDJjB23pg5~$>Dq=m~OtfL%Amwi2w{p9R*IcTZ(-Wg+DjH<*KLz%U6C#p)I z1wd8ew-UgLBwSI>7*<08Dp*6$Txl!{>rj~1J*|v${YuNxs)f5Ck@@UtHa4q`kmwM- zoCQr8;~arSsWWl3(OGHNH#Z6IGG0ELD?p8{3~1r~7gAP0VFb;v;9PP+NplwD4_eJD zB_cx{=zI|YGjm7g22##pA(N}T<-1VFOCwHYy%W(&5vkwlzno&0ZY&P46L<|vR= zU3k9zJCv*rzs``QL4UyW*(}Hz;tnoL1Ccp2q@TtZiPM`Ui@Ibits$a1RR|L>Maf2o$BGlBg@dXy$Q_u}76oisQj!}qlW{2g?5TlG z7U`6x<^ZMP$P+a=TQ&(i9B$UsM67KkFFTcqH4bKt;!SODoJ!rhs&>Y(N%WWkx$gjmpw%=`2`#=a77zF699=5W<-|kK$;7P zwy;jfA8Tg?hMCB1ET$ChHr?YGyYMB=z)2^Kgp-is;8oV}c_b>NIJ^e=iO14qYP5BX zZy;F`hZSDpeb5IHLDeV2H3qRL`7V{SWbR-BHB?nqudJ+;fg%E6K)?rCAduv=@mIsc-LK24=>nV@9dAEs2qs4Fl;Leh=_rWO&?IIT2? zC7Jk1RKk)pA7=142L-mS{0-juOtd) zMNwF?wlv;*h&IEBgZ-ZfWvSqCZlmw+D&a>y_z`;Tjn`4wlANn4MFXyOI-AWZuM)@8 z#KEMo&P!?j_JXf_(5Gl8{B5El9FNhO?lMXl*PsiLR`jpZ#p_GkHi;}2O3;~HA)x{h zYUT-s+pl!D(x{W7b7Yvw94uwDbukThc7lk{uHg`}i>NemEyYrI(Tp2R(gqR{sq4C4 zU0pr()KgEb<7i8m2Z^@)G3nqkdzs?^E5FO~vTyRqC!ZV*27~pgswx1^7-Pd>4i&*@ z>Au)E*{I14vDPtnW@}9m1(ym%VF(UEkzSbpKYM@LBg>X$hkUPprOzDz+WH;5CpZ1w^ITfg4#wdVb;YO=AS5#F3u(~dekqy?MH~f3hqaJ6#N|7OYE962 zHK|^2H6gVR78dQ+yU3@dG|^N{Jcq(XWmy^k>ZO-nx_tfm^<-yfXIUt!yd*JOUgD~lfOLWKxj8AHD@{NE6paw@( zw}-JC+X8K-ME$K##UcOx4#DN*Qsgw9M( zD-?+;s}>#I9EJ0r{| z-7G6sd`8>IO9=O6=xXU)WD&>pwXc1Ru3fu!RYb%XGxU?rx#AQGm$i28cUF}NJ76u_ zB+=AvwN$F=*IFx}Wbd5dTchxdQXeqdk~&B=yjLpT(sM}jhaI{1VHnte<~$+AcNMN} z3&@&5qQIeGdQFxN#UxN5LU7JGRQa=0BwVO-qR5{#E8{FDaPTNm`*xBkw7Q~4m3r>;*1R`r~_`8y23+2YP@stot#G)U2hwxJ^SikghzeN3EAI2J$>J-eP z@}e-4$@IjQoRc7_VD;Q@Qb$3|AtH&UCyY~e_Euy*H`){P))$X3Z4r^snbn9#*c0>7 zvyhtW5-Z-Zv4TSoUp&HDStLvb$xr`k{$JQ4>_Z5oNTjt22fuN~IcGkN{k|Jt# zT8f!jScDQUY*d=8*i*%!S+qRDvXjYVa^=dE^{;*HYwQ2&U;V3R3y_s8Kvv5L`inR; zoOR}GCg*Z!dw*Qzgepw5{Sro~aIFf2wE$@ou9cfYT-g>Y*O|h}T$=KMUJnG756{rD}98q8-O1 zs(PbKKtu?m2vxOtBC$EQnk!X+^ZHW$7ZDLK0ou2IUd#ni;;y4qbrRN5T)py>LMx>h zYy1`vk+oJ>7#tD6z8$qlO&{?Tv#V*rr<`~UU-CYG&DIfdITbz9-3wcsEf z5Q)5{rRtT!8On5g1n2J$ z?769W%NW93+tq?Y61_)?Ql;|(jPS6oxQXMhAYgWvkYOkyC@n)NXOZj<21jtMt*vJ| zNnqJ>B8l=|M?$DL8)+h~sDME!r3Qn+p%B%KX+Yg{f*0U@d6*6cQ5GpuLJYFPQW|SkH#_Zi zD{Cd>7oUAWQd-dRmWtlEwThv)a4K+$Br%~_K**(l2jo;y93Ew9|9c}ITTX~UhYz#3`1Y(%?X(iX|)`&uV`L!5i}8D5GdaIMiU_kmO12t zEx0sdtzoymDI_9bYmp?0VrIo)x&VjuiICN&RC3 zU=}|`q3AKgbMvE8-WZ&ONv(Y*uVO#zna{>efz84?CLm4l7yLItz9PPsE%{Lxf?lPsqNz6mc^+}VQqS_LUm*mkP^~L*JB762A2OOC$jD>C|Sel!-`bov4$Olf%hqI)Y%m z>I3{4!u9szjq*Lt;Yg0)r^-Pc5Vqf4&EP6pJ{%xUco|I-gSfNmG5sxMUiVUy^bQG; zspXx1a9pzoZ0m`UpB#$c7YlbRQEH)hC??L>5|(Wx=U|V%3LhO6l3*A>tJ6(--IZj2 zf4>m0)>@MlOImwGcUp@zSICr7D9h3w9Ub+rUcI{USO4l?ec_c?UO9+R)YJPt~(Td4;`I~?9Z{F(ldS5ff7-pV%hX4e0721&4M#sB0h(Lsd$Q3(V3PHNv zUMEWv9S+psAC)=~Rf&G*B0~gza_G)S>`p@vC|ECBkT9+DNQmR^mK3DoG8Jktq(a1v zFEoMAjnXbd`v$3sku>F2qTGo*Xd^;#6x5%`bxP_NDkyk@NZKXsNVT4%l^aMD(-B)^ zq}}c+fMKj*Ypr-h>$oiU9{Qn(L>GPh$o;T>|6AXXdk^o)@$nHGYpn=aD}{E}POP!W z^W3u3J9FXRJZh1uy$Wc9J#6A|I}t}*3s-2Ry0E~qBl5#-Mc8pjA#BUHWE|ZWGlNCk zzFviJ1cv>ZjK5#Y?5<<|*CH^&uu$qA2f<8i;Bk37;g1K0ZDkS!?Of|M@@vmA~|t{?f)0 z%~TU%Vad-0O9E3DR;otPTGAfMfAXLFC+XL|_O(ApM9&pPaVR3}f5(`YtN5x0UGKaW zv^yKkio9sG+R5rlcg0(#BV5A9b*6z-DP*3rN|dvj(aKE=6RnVFr+!bALP|hJ3W;)V z4=MTowZAX#bLD;xWJ)1b@b~K;BUSLh6aKdT>qG$wxyMfkZaJIC|IGhSwo<#ue|cg!O6) zKTUkds)$qiOKxS{@8`xCX}80~lCfeTVjFLd#YH>IfG?+^1lFMj1$e&y%?ga6<^c>V%}_%e>_;}Gl@ zBH-VA^UX_JTU-Ag5nU_G@(BP#=U90Jq(u=gL{Q3FX2Zs;tgNhdI^DMNj#ZU%ir@ky zKo#oJ01`O+;S^M(BIP)yL@6YwQJ6zR@CeEYFDrDUB4k5^)JJ&*6qR~Zq~Xwz_MbaM zAkcANW?2yknYHZsJ(NtC+>Y7{)Bs=(bZ|4BhkXbbIOg`ey6o@Oa9GS!qSY zM2Sww)(e`;CWZlJDP}g?+uQpuz4X$}zy8<%`oH=8?|*;i8{hcG-dU*WNA(e-tY822 zU(deqg)jVjTI*lV^L)ozJ5);Pa0d5!tBMYYxT~1V*Gee`22E$vX_6#*YisLrmLzF~ z-o3Lya4e8H^8<%?w4bzzN7oz+idC4gP(1pn-iur*nIrKios#&~`YAu%(^RuqLa~-A z+HWPA%N=(HeDV5NC_H}9Q&G3%byrkPv;#ly*|;iWUVPEwvJh)6lTz+|W7(Fak>&~T z0to8|`uLPc_ZR8O_EXHJGb0dd*|PRVa?@FkyeN=mS-oOI6$9@J0@W&Vzp{sDLK8Gw zmLqYxMC&lsO084*)_Z-i2-OqrzFnk9PgNZh5_ZHqvhx}+uKL6JO6U%rA35`q9``6Y+hbnUA-K)`*pNh+;r5bI248^Q5#i@ z!~`~SOOSZwOB`8ls}USUD`fTiS*q0Uy6~{VoCrB?9i_UTc*DZWYhqz?l^tFesG3>v zJFYZ;CJJkXBn}k@2}hz7irG{~{k|a((ln#elv0+(+@``A#p;KGu0A!=9RRj>w`Dq= zT4rNJSXx<@6w`b%8Bd<(`HaI`Os7-p_Tf_H5?VCPdyC0g zEfloY)bIBPCnqPzU;p~o|J;B6pa19o&WkU;*uDT!dRCI{C;s>=f90?Ir6fuIpG8sV zq9{J}DP}ra{fO5sVY+Lzz%Jc_WtiKgU})7l?3?Faujn?%e%(W{i!0JX8}z zS41qVbqJ`M7#dp_H{&LR#yUZ$VTNG~BNkRHiqfDojy7kuFxH|h8P)>h*%Z?}N0z3Z zjQ4Gk&a$m*H`c7RJe^Dp5h?P?04n4+okk+34)hQpu(!9jcXV`g^k@FepZT|b?bm+o zul(w-{^}(xUtYb?xSBqOeeCc3-tTE+%&%&#|6j%!z6+DpYKK+gUq>p_^?<K!nE#pf1t<+KLoWQ5IYj1v9hwR`4ti^W%R1$J-JDz=OvR z}VXPQ^rKdmR{|Lc&I!J;53*v*6)6w4RcjC?eZt}u?m_$I?#o84Vr`3W|3PoxC?@d@;Tkm#z-E5jqi{464B`Q%uqCl{5 zF^LORvt9HYkRl@5-rjziBnf@>t6%+h{cu3vWgzZcXOn*)=4od?07QH zpSyGC`sVujCWSrKYRP=@NFjutR+7C_P;$PJtc_!;edPM?ya$#LVr7=M*YFI8@@=G! zT0d@1G$MX1be6GanyR@s@vjW)XyWL_*Wvkzw>=_76}_QU5aj!CRjmMK>~25JM}tAp z>-0z$@8LU^*Tl=o%T9iMOnhLB8M@?+e+34 zkx=9b0>M^ArCu#?E(shhp@srhli>ol`_~kRvhZB{Bo!aU)gj5AL9b;Nt{7Ff z^;I{R1X`-CaH@%>c$tJx6AYR!%L2~B7`@)fa(gg>Dd}dnhwn~tYWvkqb!L>+>ke0tx#Y}6Rh=_gs`0+zy%B>Vp*2`qA1=H zkr{wa;6~!&6h4m%aVT1(h_ooJ36zM48c)Z=R=bs6yLSCKt&%KEok>w;Wwg{~zKH{9 zQIG7E;h5jfpgDDI9p=FBi?fJG_^8#fb8dgAN%zLqMsN&e_!BVul`{bBUCshwPH;Pf z;X&A2BXh_q1Yi@t>loDko*dSiP#A;3;bAeIPR-@bD_U4E%X3?nB^zTzATi-C=S-J> zAe8l~BCOs0uW(tGMue@_gfz?eXmGT5baXIakqtyTCXS~#g2=ihny^%MFI=59QIX>j zDH)N0EcH5%Q^<35pY=IHDmR9D{U(}D2E;^x1FP4A!idS+Rk=43#1~>u#9E$1SAipQ zEukRG5?8?d6p>jlD-4eNW2|;t&{`ok21E*mq1G>Lt*;*J_6LLE^h(xlYtovDjbOf5 zEki24Xp+_%N~sh8c6WET%d#9@zI^%0pZ&9c_W%6lFMs)q|Ng)K?|=4u$oBSj_wwb-&uguJDNWPA#LPF1F^^}n*%R+=)ec3q`P@U% z@)s~O5gaM+hF_!=R8o{hIV)!Q^S7UWd2?;^YDLNid?csG!~|MepiX_ip#r0LL!zqe z(x`{^Vzi2Ne?YXjTrV&;H^*x`7>XXlIfarhGLWtm>fb|? zf-Q0k27Svc+-|wW`+Sz$P^|oG!au4u@W&z?ec{dvG#Cz~$Y-T7#wsZ4b$Z#uCl3!! zj*lOgdHI~y3D}=wI4nb>&R&bZSEH~B-+KuG*Phob^QcMu9$~Zx$d#NT5{5=o!>Y*n z{l$Q$IBxYS6?}E>t0sp60oz&z!3Y{Ks<=3Zyc{Vn!blPqBbArdJvVku=*eJ=)s+r9 ztrX)~0bw_+PP0zu>diZs?|<~()9G|v_IfK?iP8)Xo=|f|%daXeECjx2X(Gx7gTbgQ z%gOrs`o`ww=Fj|vzwj4s|NPJY{LlY~|KWf5`nSIIt#^OtcYbI0+u#27bT}L~MWhPz zv0efIAAImZcJ11=)uJeFT)ler7m4T>MC4XkmZmJrcdfMpUtqIPkeaPu{Ja|%UqDGK zQi-r&I2w++-R{cu>(^h>TBk8{OTh(JmKUHiGjK1cj;uwRGG|2*S?pCsi{f_A7m!-A z;}CzMY9m|`kC1}#pVShFxb9l2ty>%WTCt#_&ee!+s}*579@~?{gP9_dR=cf?HD)@U zvULlx(kNCJX$?QIWad+|mpME>#77VA^6_y$zkFjWS5Vko+h|#1#ydMZPe-F6Z(h2j zq{Lj|a4OwMRbK7mRq6$Q^$10IR3%Zsg;!x!7BT{wvsISL?NjC+3sP&h!elYF7OBLh z9C1{rxe@lm0S?8H1x!wi6;^%%4`z+P*b-S#nb_-zK6Ll~OMNxMi(v8Dk1#%(jS}SZgg2rSWrV7Aa;XV~lFFhCw!@ ziAWPDfgqVqr_+*4e&P0uFR!euU715dA%IqvG%j?0J9utUYm}}y{7XgF-x70Teixr0 zb6Tx{d_rref>n1^Xvpis;8_D zHOOg+i&fBRdAWnXJNLW-!V`uiuf+Ei(%3-kOQqNkh07KO!x6Bu(uM%YOH(;iG6@b( z##rkPvAN#HXgUL14tz$sdG*#-J{?b|vq_$&X-g4lA!S)uDdqG?ix5_Wke@>?N~wg1 zWHy`4%CelcTCIa_x4YKucCW3kuU|`&gl^uvIRtP>L=z&K0m!x19i`L?fC&+85YcsO ztuD)wnfX{mo{7lRPXQHxG;mRYj|x8FB2pD95vjf>BE*(MYpMy9C{ns8igGj=PPewM z-q^Z){UxW%^3YF5j-SogI69~O!#SqwYdZG%;=C4tnZc|oZ! zz)H=heTCyl`Jq5q6RWf7<9?kg^ULtyTDj@x{`QVJIXapqNs1&*s6XgiKk?^ihwv=q zbP--lK2r$m_KjQkxu5wtIygKqZ0t;0Vw6^`wY4=xie`i1u)JRKoS9IVxW#s|v67wV z&JtX^E6Tjjdu=l#73Q|p87D$kaP~H}9WqxQMNSkrkHW%Z1O>XS7YzMsk3(+kr5F`o zWL@L}&m>499LZUP#)>cM^B7(dq@o0A+z1~f%blW&Q9zkoT5rS^5ZeG24 zW$)>Or+J>2olaL%!ilw3L?rl|a4qT=T7gk82Q%c9@!?@XuDy>`3Z&ay1Y zvaFq^>186is-0Pq0gza0*;<MEk@JvxYOIj+fybda!xT@hR7}`jZ}^7 zK~zyBF@US5gYl_3Ob!FOik15HG*RZCo}xKvdlfepPVlPc)Rb5E?`}UUCgX9j((7qq z#$+YoBhA41?ybVY#D_}$}p@Ea~_Y*9QIgs);BK=YO z4+T-HQpzU4atk1_~omaZ(kr?hBUnyN9K*I3A90d2JP1YfNW_FUbrd#>rra z$2$jj@%k28S%UGjaEUHtDDA9W-n@KmJUH4vNYk{HWtk=-YphY;Mo`t=!eTxs7Ge?+ z8Dl~eydt7hDWw6J*=#m7#+cb`CTW^NYwi5L-E|ES*--ncd9IU)WldBU{~seOUz}7x zSQWZrQ36RsH~}ajPzoT)%X|XjqzP!4+aXq%vR+>PfAYr3~Fu&v;Ho~M)h-gXc zcag(RE>^f=zDv#b3v(bZCgww6D*RxI8Y@3B3WJ&tLyWuyDkMgcsSkUd)?_-xlZOvy z)9K7y-n>H0EaUOm7G-IfSrVO4;S}%7TEJz+>Jt^OPi;#0```Ko1E3pMZ%C2nv%JVl z4TV1LsxWz^ z+Oj4{9zqyuSY8f03t@-Lb5$Jg5&Gw1t72#82zl#0y4Y*SIJAOd!E7rPzxYLKV=eMg zfhSqBBd179Ph!zpcE>4BL8>nclCE~*fK;m0Jj?iY% zPgTnGCVyqERiQ{l|7&JW1)^PuI;9|_)9G|Noz05t*KdAh>++44l~M}cfkA2S%1}BK zO?ti(NJzV~pPgiJI)ljPND9F?o%zm~vzBj$)tv&8a|!GIzEc3>L7$&KeKHXd+w1j` z(v)^OotnJJ-D$X51U}bl=!b%|epCf(Ar<*cKle+N7c<`3-kn|Ax>PEy)cX2{F7KBI zJI|i&^asPQZeF^Cc<(N>Pw~A+d2XSSCR9FKh&{KW*3b(`g`G#%(O`_Nb?s1Ak^5H0 zSmDD0-}nMl_%Y` zh$I5h5YdWs20>Qjc`+EC47aXcfByQFTVKhNEUS`Cv{RY0b;aImIjf_(>X3vMdR@@@ zu;~07UF14*MTt(`eVpN>s`*|`*vD<7^39_4fvzgz#$s`6oPh2Sd_6%_0CxBG?9svD zEKL$exEC`!nM_PDd-VKOvn}K^$oI4Ot8)vO`n1j#U;FacaC!3*z4hMPc5i>LFvb)L zWV`KNMuOt_@bKPn(4SG5{8>Lyi(9;~U>dApxF*M~zpk;?8|+E7=OK6<=^)s-&RR#z}B3Rt!v0j4Hd z?_IinTP2Ae3{IxPK$@hPa-vG5TzglM*TSb!R@|cb(9-H+jG03|(S@wFWQ+;lpF>J9 zVcxi1xGyTpa$&Jz<`jZNL^K2`LA3#Dm8Qr~h9|?d^^I#cuRr(ocGl?yXAbdJFT@I5 zRtB7vKfl;`9Uz*~$o$uGmh;y#YWcjw@H|(s1zOhmWg)6|9h(YX70vs+=fC$-i|(sR z3JXa&K8c!~IiUc!_u+^6(c#gw)9EU$6^$noJDH44G!<+*%`P){{Gm(=KdqKf0N|Yu z-en@9e*eTy#^Y%#Yuk3K-R^dJV^fy*4-XFpH*Y`JcId=b)4EDer2w*0d$fZq4{f#* zDO!Bn$MwVz5h7xbk_ZADb`D{yRU0szPKvzYo*~~J)_&c!tieKTm@HaYjtF~SRIM!&*B%jeJF)>i_u4eKC(=s(@HTLU|$?Q_idyEG!|>W;{W496$&K;$`>gOAR$mniZTdVMUfXL{geLc+S-lVH(vO~ zZhLhrwDnG@tw2hFbFXJp5f2$6FhO1`=aY_UK1z<_VRM}gu~^f;Y`S<+F6(1*UYHXi z#Cj{4D_|UzxOrk;<{q0BK?#t6V6DZ2`wym*@wm8l<*EV%lhN2rXH(1m1Iz8Q`GQ3J zXR=_0Kvn+Qm%pa(-oID=^5B=JtLy8fChBfozCsV4K0J8#^zq?WzWTFQNh??m;!5WW zDXD`tX)t#ny#G8oRf z7A6G7c^=CZH0ui!IWcVDs8E~xStei1+tL6*VZ@NsZKKmhPBog z6A>qM@Na0x(+T@9hgojH-!d=GsmrT!B=*;&M@i z!>KDR)%~B-bIQjcw-$W6*-}QC)D0k5PaHT7NPGn}o3`jZL% z_^l7{7k}Yvc<#nk+<&%9pHP^fw_9u}Xmf z(I5f~`_M**pq8PlP+$TI^Q5|Htpjf*A>F3pAw1HGEn?>FVL;a9u4!gY1g=<-AX83U zswdO&crYGJwl=TbzP5Gi7dq{=E6Q_?EP^CcAf;h)z#7*Y>go*UTA(mwZf4w8tsqB* zAVOW#AnQpMAT4T48|8wq*x8e7b3Rmp&1mm0CdA`{h1!uJc1?gUeqmuc5b`1I#?}B9LFvAd_DX9N z`*8`^ffpg_%P?1MqpgIc!TLDXU~wgH5V-J(VAL0`V}-GMaEwGNbUH0eXE_RMsv{^% zQXHNP@kg(|gFpB6FXGnLB|P3aKv6n9S6MO!1zlU;xRz2ed^DMk1|p){t+pmbsX&OC zLt+$D^1Oi$hDe3}v}}KmrMaJh|@ORa6Q{ zVyuXnSe__5tMlylM49&@iI}p;We*? zih_G%?NUHz5*IqU0B=PsXnpY!@3qc8(Pqxe-TM3VURsWq zazwj(9;k)@l|dj!&&_`=?DSX0KfhAE50`&T2%KPa=Ky(GqStFVPRx6H5r8a7u)TkT zKYaCFjHWZ(+PaKHE0~g@lmZLra9muT>du#1z4fi>Y|7*5C^xobt#p#6X{uF{YL#dR zDMh5c-YNm0Jn^lfc5RL@FUwMg>lkBnS(e%uqnpI~8JC2a6Jbf%O3K157H$D(DNsw8 zle{d7(P%hQI_X}&_Tn#Gz4ZJqW?6T&&h-Pd26UoP&VVwHlEMXZ!MaWc>-Brl;j_#H zM;07jaTG?hdk;BpQ|-7|iU^E(;(RgIo zF66EjwS)W#MWpgsAl(UoXsrbR9z1$r#)HXh^U|eKDb>BSaXC9YKH51tIDAsfX4kW< z<)!SQFxAV?@m^HDR9v&7Hd?ERTR{ovOk&c!PHL`1pQu|4f9Ch3y1y>X7df_3(e$V( z>=;^c={F8}d7V|@vnm%<>#i3ZPyOnS3B}B~K4d(Z;mP(sZe6{MUay0r{>cAM4zaXb z8Fr6O@Xc4=#lP|MU%_)XuHy0bAqJC)H)YcpO>M7C)Qi2|T93==&SW|nv9Qk4meyJ) z!TgVzjX;c#4s+T>7Gf|IDP}m1DYT2>ez&or4wa9mv++Su=0&fwl4zy1(mF|!R0&wIa0wUT#J;6d{$+6ck1;uSYv1TbX=Iyw$k>>#>Ul`d%deKB|2MG zq^j0E(Lj6h|aG>OfJ7rGNB;b4Z_?5C6+Pd~m#*hOjAO-#=bYi5 zLo*BkSpt*OBm_ZWmCwe;6_+ZZS>{4m!*aEqix0Ejei@OP-RroFU#vFP%Ns(_DpxHi zSJ7X-s9EtchB`!*ps;h)2NU7Ol}jj%!AXAtX#aS|qTO!cXfVR>{K*^mm9KvhUw-~3 zI#~-(_Ksmp39U2?6CDhSOTBj5UGHpcD#^D;lhL4+q(z!$Ns?trqS7=`NT6U?*g{}Q z1-wNZ_7gpK#U4EiJ1vATyLL282txoWd4E&KS2^!MMM^`Utyp1ZTNe4WD02f+>H6B0 zmsY!1zR*h7t|*lxfI9(@2vkZ)S_)z{W)t_fS6V82?6AyE8X&ElS6W%i6QUIOkVWD+ zDOFLLHCpmTkmCXv%N-V=BH?I9kjz|!QfmR-)$WqoXvmHdc{(+SWBDknA7qmHm_cq}%Px z(llAWvU#QR=-K0Edwb9JOY^l=CO}MGoGmQCUW!2V-k%GlR1hm(y1;c23#l~}^i{41 z1j3O;ysf7TOSOJ6kSiqRBk8?UD2sE248@d#BZH0h5B)T;4z#FA_o^U;ti#YkGGN(w zS%ljww3ST4R(zKu{(&dEhkyXrFR#NGi{rtt@=p>0(j>uge~91yqt|e9GQlr??Im>D zEj-;lLVq*?kwTJa4D+%*E$Pl`r?t7(Y3~c?dqr6cN?VS#)~c1YvjmCO&I>&uMb@KM z1823wiWGadF`rbWSXjh+PKC5-V#}nQ|E_{SDN@?Y;e?sRT3gQY$;{Z&D3!E(-Am8+ zx|g5tq-!^nPTKIh7Uz;CoLe|PieZ&YWdD9P9LXTl#AV_>0Z6Rzt8W!_s(E8ofS8)-Owx|!_lzJ z^O;pjacRonfyGPOzeS%n3m85(2y1tLS6;aD0`5MzXP-QNGQ4_iD_2U<^{uO|XS+|2 z9zM8x_u%jsUbu95OBuM+A&K*cs@$;bd?p~nR-W(f4J+_~$B8@L+{%&ZB$Z1;Ey4_i zu3lUw0hq0q5TKd{*52&i2a5&9pPo62@2Y|_tk+$MM^MgO%ailL&7qb+gm8?2=t5Dm zUQDV$C|Pj-=^o0`;M&#(O2arF3@gi92&31@Fd7y3=J(&h!QceH^fO<;b2qnea5BX1 zQ6FptS&~55(($-h9nExawUu32YwN?7#sQnj(P%UnB}tm3NlIy&X-$bzN|92O5xFz1 zQY4PkAa7VrthDm4nma@ZDj1HE+Z_}ZF>I}|*4m;dW~GoyTCLutPWQ^CZhP%&nyy~g zlJ!DbaWF+}r9j#y5NXUtKtA#7Hc72uH@!#V{_2g3m$ogA5`PoK_y=4)S_CcUKWc2`jV2XZQscn@xs2%E}f>4CQZlOIbU6}J+k91g7 zLQYV(`+dV;x+g-_T96=0Z4M;9WxwQ%2vylCS=zF@jzeSwi#Udit9Y_N#=8_BCxSH0 zc<^)&#xkyNZGs3m?2o|KRJ(D#ZX46Q#M^ftWA|WyuYdUkeChd{=yh7yJL+RJnE?W{ zw1#D5cX7Mn6gI9&s^X@MJO@&y-T4ltz}Oq_x(hlv1LFoz)8|rCsyQ zOd?-C*LzLPX;Tf(t!=TTM6 zcSW}U^W;2Zp~GoYDsg53x`?UZ1&f!&T3!NXvl(7}_0`$nWH4Uotw3olqvNCUt-C zwS_!?xCM zaV#G74h?W#}Q4;5@W%8`y{w9-n| zR;JUUl~U14)htc)Op{C@wor~8?c$lRr zI_-{{&8GRu$w@iOXH9Rjvo1C&VrMNt%jXGU2@%QB$&vZ+qmRa4{OXrRtt?${x4P|a zcV#@8j2=FE^k8!B#?3Vj&WQ?usoguP)f%5f15yz;jggtZ zjU|VOm}@7}3jK)n9`6D+ev%h?w6mW^x>kzV+sG&>zg!daFung~@bc`zI%bWosQPdPQb-uU1#?ms)g^-CN0@{2cdd1Dppt4;zin$1uY#!W%3_%pGWDmVcfiI5fr zSSGNLOGvIF&=suKj%QL)D@7g}!C9FknviA+t<+T*Qz{HjoLW6dg|(8Z-E;8IowSta zu#!Z%VjhrHg6hNuc+Hjg@KOJ6)KO6p>y0@Zsi{?*))M3u7rPj}#YJiEYiiVw1u_I_ z6uk?zh!;U((RHL@M{)oDeSY_yx5w7ne0_aGvxpoX9_2%?Zntc0V>)P;6fap)r1%F# zSwD`JuzG^W{bOERU6Z|oz4GakXTz)4ua4VUd*#aJmG0ALPmcDtpS<_<$>SGZe)$U- zydH|EMpi=60<#xSikB1wu08}!xWOFP%5~o^Rtw5ushVR)hfthQ8}dbagzVMn2s)~& zkOcVw*FmdZj^Wa(eU!a*w#O1s7IQ?p`y^@Ke%i_dJ_@byCWTcvD>0H(BQHvP_~;q> z!wGI*zl_V5)-agNFdR)hVGk&AZC{#buoVo36P%okaqr0iZf$Mi*7Zxcd36())>i-s z5>l8I2BmRmkiA1INI{EoX~9~2+KPab0x9vei5*(fb^LnPQb-d*l4uu)P8txxXbj{t zLYWK7((_lTPa~#yFVqzfMT8_ng{rIx0_AA(NAm?Eq#VbSyCzbaD?l=jjN-|kT=0-v z>huubZ=)TQMv4CB0rx4adXcq<>NvV{D{s zw+oP!UD6IVFZe;F4L^>S@KjqkolW`O_ud(Q=__9xXPa5xZnalddaL=fz3n$Yc<-%W zxP9mOJ4$QV(pC}T*7`+`z$y8Gy7j0g5a=A#fHwL|S=W}Kn)dPB8cv)i$RPoz+7GPJ zT7`%_XBO;b!k%Kt9JHQ14uaFbXW77QdF>T@pZ74)verc8yR8aUh_(-7QD?VftKyq! zjnXo9505Yyj&bAKC0yNHM=MD%o=q{E6|iDKR*)!-L}}RD)~~1{#tB*r(#%bdXL-F#80^c%dfrL7+gYluQ$hi- zp1UGHB^2enBb9uD{^18LUYM6XoVx1zPr8KUs+wb zoT#*OR>#ZVNw{BR-nUlkTkNCpfUw! zz?2qGcTcc?I6|5nV5Qf_YPXGzl`d9$9jx>^=yh92(*$Xvk&s4~Y7ks&C_=CVC{dVA z1>;%i3zS0UecSW_} zxI#y&E?yFUzMwFiYU>t-Rs4{qbw7GF$G|4fY<}g;^Rp?L&A<-II=}I0zAdDwDX44Xf zM^mIpf;36c&N8HFf>x5E)ymM$GAQMUbw$qYGffg_QOpFbTpOCG6gt&NwFYS*Re;vw z+czgavFu297Vq+Yb&diWf_i+4vWLX z!@?M2{qCSSM=ZLCd_T+7?=#yHo|)X{c`Qpr>VuEopZx64{cL|_rMJ<_TJ2lcZ>1kT z_~`C?Z@u>53om`?Ybz_OFlL6}YRwW%^Q9uVD`Ffn7gQQZ#yA|p#@T|PsuO}#R1t5OGIkb%dK`Flj$d$&S&NT~SUM)46s)|pet&(OWjsIT!Mz)P^ zY?*X|B87YN`g0_BQv%UMdBDX3UYEExNc<%H@A%P&AMx97y*)Ig$uD2JoLFP{@aU)* zjmO1;6&!ocg_j^MoS}OE%p$B)Eg=9I3ul~%RNdrMnnjj^6zNpqbAt0Mz*2fYRtgvDeR&JuuROU*QDSna% z)Tz#nw~EE2m|unttsiQARp6yKx?Lq>@G5xA@qLJ2h_>^At4*{Oc&%!Gao%c2qOjLW z6DmZO9GJsQi1l*T_*~u zR>)KWCp8T5Bg$fO2fPE94Ba3ZfV+3Qz=1K#~d4OhYMWaqLF! zj#L-Fbe#D3R2I)a>C+QIO8je$nq;SlNLT*7pj2I$!s4^C3!EAniuagXQ%wtd+`0$^jU0ky7N5 zWn_w|l+RHlw^KzzAgw&FC16d^AS8;QQ$jm)@`fZ)U=WJjuTfd5-ZWw5Mxx@wRLc`M z>eq09~Y%D9Jniwv_5XJTDJ83 zxmwM^5_!H55#POkclP+vqvOrXo0~12bzgqr<@N3DXS+}CefaA3qlY)1fB8#o7VFH$ zlm_6G;X*zkI#>{cDvRaVFQ27GL6Ev&RV|=LG$cGXMYOh#pLbqc_3BTsh^f<@5oHfX zj~No8BXKAs7PC5w8XLkcg2RN=1iw@hNvd1Vs;#UG*LgE4rJS4q0N4l)j|UixX4q>D zvDxinb+wDNZX3OB7oC>VN`<31pge+hQzjL!w@}0xa@AXD*ps z6`UDpiCv2{3eB7^e6v+-2uCHBNi?)rb0~^VOB+scSaMoFR!;-vl(M}nOZ@Kd|L*wV zgNMi6b{8uvD{4F$m4`=1#dJ0`B4Qe=I3KrAT_j-jGg+|C8vs|o%y2Zc@4olm;Q1Gx z8(q1wwccvAR<2y$nrt8Jy!YO_Z~Pyw-hS?mRs?IT)8@c^4po!vY#lPG$aUb9t+K7O zT3pA51#&&Kh*Iwn+E6&8)@?~xrHPA4C{h*aUi)2z-NMSuuOjKaOv0l<67Pc*+B%kK zFVP2YK<4#93sBYR=AzEB3vYZ4g|wyICIJY=%wRts;$$>KD^1aDx3Svkpwnuh+sV*s zrRcOW*Xkuso}iU>g@qC%N$O^P%C&>3N?g>IR&JUIw-0ETU<_f(7S?!M9P28OD^gyh zs%jsqdazL2OHr^8^3sJMX$Zx@Qr-TAm{t|LD?~+*JVH{@lCms7E^|M_X>a!?trQoQ zCW4{`99EOd`q(_zf;N!jg6g*c?tXZe|L_m~@MJcdO`p5G#WngM+*%3YRW0 zFJ*`?rt$wp+QJ`bE$6e+5(WxDh=`R^_QSg$PJiyn*H2bg*EU;eyM5>ObFKcUf4KAH z!QH2iAKZNI#V_ixRID}mwUHVzRf#!~eX=y$yx?6`g;h|kVn@Bl7qn3vP>%FOlk zMVudeMTk>vM^o`sfg_8ai;dEw?cDRPkykb0BvkEbl_?YgL8GWL!Sdacc~9?<80;p5 z8cx7T3eX@JD;Q2@nB@kEnxU1XNYVuDRtvp$hE6L(nx<%_2~w@06Cg{1!X2OzNR>d7 z2D3tv0b1BQUTA1#p-4M#E(Onbx#}WbeCkrV>tYgHu>`cj(K=1FPU^WX?b|)}WP7|m z(>&iZ>Li_}RDo)+IB(o{2In2V*%YKUy|Nai@GNQ<7s{{Cn;JIv7~$GMQy6^Xo8Oo| zdi<#0>-1!EV^ilvQSR^U=lwyyWT|oo&ni|IMOloCr$B#ZTS96OavUsnN8^!w=e>7N zuHU*b*jT5P_0{#><&DeJ?Sq}y-hb=$m#<#GeJ4p%aOoTgv?de<`?DEWZ(<4327h{~ zEQ=*pz1Q3l!ir2FwTU1$?9)lLqEjzRdwBuZ>iIajK1>_Eh{2;Rc=QGz@5NQ{Yv^?h z*Mk57s_aCGI5_dAYLd$O{v2YUeuqm)0}ehcRStmykw8O3DZk6-33cc0!yscZA*rW<6i)!X4RYY1ls{l&2L|DKU5KLF%^{=+)QXztxvS6}IlB>;12mFVB^oN5YFJ{-TURO#h3=Rk8==i7zMe3Y(&|IKBY|0t% zgCZ=2AK%BRewK)MI-6P|;-}A^&bFUz_nCPj5Ztgk*n>+a9GiJrCa&Z2I` z1}rZ8)z%Y1_KJ9~VD+zLWdt92!lTMFWYleC)w5cv_P;2aP{oNY=j*F6hqOGS<)>M} zNGkM2u1zFoYV3-R_7_ENUr_66^`(9e~W4s~{F`a!M?S==hGXL3|(0BatpD()=uZB!D#*zxVsUH+%Hx z@kzVYwwEtmN{XVe`}=#d{-9s@$>6eyplP&&<_wf&FNm-{lLbr8h>LwdeM}Ztt2(vs zx>KaXTCXIxPN6QS96f~@mMu#5HZDGLE9?zQ#Wy+Imtd;rPfPA`gK|AsElX`HV|_fA z4a>~l4=Y5r!V1XNMa*ft{9qv(7Sw-90WGzjY#vTdlSS3b@5pW??)xgb8To6vgk+j; zC<##77cz3ZlbhhVTPbptiTp$`OxhG`gGA@i@1~2D#>|(Cy0zuG2m^`Yx?-hyRWMOm zr&Si&LE2!WHy%faQ9$Ijwn#(Re3Iq~Avzo>`n+Nwn$Io%R4^9_7XLmA>s#ZLF3V!Z zmXv_-H>{J--QViLgNOXhKm2BYI+;u^UAm-*6dfHM6+3&oMOl`Hna?X$=7JimA4)v^ zX9;1&=P?Grqw$E3`^UB{OZ(m6b_BPQj4)2%LNS$59Bv zHK&Kz^)o6?;X3R|ca|kuD~=+-WL|vA5qjfBfsnX;6hu;&`JyHbgc$RYi!Nw>y{v%8 z#j=vS5GWzo(&D#&`(Mr;K74qbCW+Zt+eoIfiP_!VnGJ`-!Uu~qTS2pcWN#L)vsCV9 zIgQHarC?#nn3E^di3K3XC&%XPx8FWKK0Y2;vC~$&t?%4^E+OW(@4xrnC0Q zaU?S96XOeFAf4H_tU;qy?Id~^h`_J;Q-76#=#P?$bmy~9Ts0yJz6p_{$srzc+AJbf zCH}%&!zl6y%l}hQPX87aB$_LV1ZqgKE7f|8Qank+sI_oRQo$nfMUA6XCy@oG?Vybc z`l`54MANZK77z-R)P<;O`N9byO1lZgt!f9uiVxTAV|<_Ssh1bXB!xdg|Iv_0oQb&3 zfCS{1z~6oMJ^uY~{Ct<@18D z&TR_;$VzWTrn9NZi`;zh(Ffy44^dzKI(S6Sn2hW@nll&?(XG-;h=QHl{E|6L9^u2ENY89v3_Xn z;AaJ4Eo=+J=ezs6#anN^b#!uaGB9i=T4}ua+>32%$`2lX^v*~7yF1X7`h7bfNwtsD z@^&zQw_f2YF1|urQNaql5_1rW+Nxc&0SWo9CHg)h5vYi*bywCQsmjwmD63eUi>Viq z+DKg=dW4z~=K75|7quQK^v`SsPydX35mEx5)z}=f3+Ab+fVO-q>aiA4eWe)3i66C9 ziOGK7(H*4WXLZh_4arAgX&dzdJLcLTKg(utgfAXC_v48T) zcaDo$KDn}aSzBx6_~f|Q+uzIcA~yuGXB4Z8a9B;!9Y4%=@Uu{`mbHZz0C(CQX}8+) z`dhD$?tb{up()MOvMDw!Wfsc>BY*UmKXxK;V#-TewxORjXRA+T&fqN{fw1 zaqlcqVT3Ea&!YOY2@6?#CP4t9$py3y^fi*?1BDCYgPvpsUiCQ{<>a`M} zDw2rShd3JNg@3_mf|}FMI3LNk`xH&=<~*W!o*SAg_Ee*ws*q8AWQC&*b>_+G;uC|t z24A(1f8x`8Q;a#9g#1!HxGW*%m$i*?JD37T`$zaEzwy704v!9xR(dOxWi36KPKw># zoqRYPmJZl6pCe;9YeINY{gr&)5Y}03;oL7folPwOTa<-)?e*7=_jY$r7&28#^X(hA zGX>n;e)Qo-+dGfp0)gGZou(675GybiG;;!3(r# z5+SVcv^bKFR0nfZm?%arm`7b`6u`6oZ(f>{z&Q@8QMlxssp6ux?=)h?+ID3E{t z&;NP(_Pg&KmPMIgxpY}uVLm)OEcW*I3uZP>pDSibfhzqa{@PryX#LRI!Os%HYMx^% zJJwFSBdx5(cOTrFzVpsIhtug~B#?YIiO3R>ee0dKPqv?JpIG5(l4SDy?H4*q=)wNe z`>)-7|Lszdc1{Y`B2~&oRmJ4SoIp`3#d$@9M;0?2oIE*pCG}{@-$~dJbR=w0p$7pe z`?i6i^NlYJETABt@Td4-`d8Z(HH`fts(|f8;<)A(*rU6PcJjFS z63hI$PW8r$bym_SMlm0@glKOP@l7 zt7?8kWLvEk568pujW^%iKRh_-8!l$;PCL1E^EM@7-}vyYSMKib?;=SP$2*ZAO`K1; zsmSjrkThPUiN&RsD|ZA6t24GEp?oPg)JzSB`GEDa{J;zuA(In8L^WU;q<5RDbG_+cB zTACoswBU=ls&m>+odH}j{@FkKXXUrQ^GEx$>2!Q;>uO4h(C_!l{r$asnomn(jg4AC zv!Fng3tGVQ6z)G1E1AzS!U7g=b60-|BC?8sK z>c95R_y72$m=(}z3TqjOQpnQOt?SJ3RJIBywP=K!a%71d^jh9x#&9fyh+?-Q^*gip zCtVu|+TcP;RN2VbO6@Jx#Ehgq@F^lOgy`&4w}nMZMK5n9!0@EI$8g>#s*YNhO0iz^ zC*tpoAQZ_O=I-5lVpXhn-DbHdqn{8~*XH>ZxVYGaQw2BsxYGw~Y)wpyRO!*isziL( z96FT+f={jyRr8%WXZ5m(#AsXySh|qDuxKqi($6{MCE6ua$`S4Fy!D>^qyOa}otzw> z9Ivl#pxf!G$z)=7c6aiAzh6RNqi~6{yc=OM>Djh9vVD@FWY#ssqJH8s>+j>Q{yow zHl3Fm#4QppBFh&{)S9b{_eA9NYl)n z$yw0OQY1>j8VTKodqWtm7Np%2kDbU=+1bH(pyy9>wv2hOFW>cxIC7{%Hxoe(SgXS^3RB`o_Msc6{^3%_Pk-b<#g6o<4b+ z_Xqvl7-K{(G!-nD6tCuV@T?s|{3H~t^V-6=XjuR@&vR3jWm%fiy!YYzgAYFVaDP_j zBN1ENx^b)9%323J8-3@^@BZQOa5O}cWMHS|=4A?jXb+zwv~|i)6GLGOrAXnlus%AXIL1T~|HNU^R}B<=+EFkmtm4?DPQ|Ve zYOUZ7>n_yfbrvYho3aLpS8^I8x^T2gvxF=snRh>pD9T#=$%_T1jTyxJ?IK+l8u~A3 zw#L!zl_F3Iy#Cso^1uAX|9m_g^pCG!y{XrX>ig z>EhsnG?Ff``*#eu<2czMDg(oZBUh?AeFDD9k{n2~h|M2O9 zyPzalMmYnOB(4r1EMIhB}ZMrA^^C|>F!sy*b`-U9(tViJzT(^~# z!ri~y!oHz25^p#<-7bFhWkIp3cmACJf;iOV3lVwvA<&h4A`}YoHZg7)I>;MbVH1gV z4nr$P@XikY@l;sdLA*IRw|gj6G`v){%!m|U* zCPGo%EN~IB;)qbM_B~PWC!&FhI9i~N)$ZIl^~P=t4c8nXMr){xt82|#t@Lm3R{|)eQ@&F1ba1X{;Izr1EVv!TatArxhRwBTG_T@6^*Sz? zTnbKWz83OQayF?YkuiLhI*9kr{>5*b-};xoxj!5XPVU^klVw?^hvQN4=+UF;;n87k z*;->wC{~NsY{~`v)mhxtBHju=D*oy-QLtoB&Q@h()LgoABrctEQIOMI(wwCXot^|PqMu_Pim_nz zX9)&rE?~!nQ)z(Oz^kvmDgWTtf9?42@bGZ8wg%uW9v&PV8NB!bEnU3pN7c`$ zLRvTqxn)^xB-YKdJ-GyE(U zjBw4|p9+mxrX5)Hw`#^+QA0D+5Nir>ZV(kO(L}{d&%7WkLU6IeckUsV_-0AtK9vHp z4)El`9{z{_>F&RXT=OP7<QT)CtGPz6k?=xM(etP&R>4!GfIzUQ@u>{X z!ud3d;hn!g)kXZSVjWQinwLGea0rP86NvacCsk#rNCDsAcqrn58ZFwQbmlo9D>OnU z8VHDSdap2U1)F!eRFEVKTqRJ4P@K|i#VT6@+HJzo!3e+h_y2D3?z?a83CsBEm1~L8 z3WNTjc>3(=^rU}Mu$%hWB?8flAS`oQ%qiVtUIp-Ea8R*_$zLGgA#))K9BGOmO%drQL08dNL{JSF5d7JptYS@+0x>xaTv+C54ikbGmX1ZX6iFf)f1AJw%3_$lY_Kj% z_#$4icQ~iZY;a4ofPXqA5TylNSVNF{%3_93+r+s0syW3@moS|c_y_;+@0;KL*Z*{P zaMC}%dF^J>ZnxEVGB!`1KAG+B?-!OGvhurv7b#N35-#g3qrOiCU41qRR(SC)&Sf=G zmLVdOWtllVI-Gs?d#~)>zkh#UAY%cFYgey#+F9oy6Z0qUe)k*u2iwn})3%RQXY@K5 zdhHA%f|8@Cd6wF7^pwD}wl+pI(UWMwFwQ-s_yDOS3^=t?_wftVX;g(^9~0Tagh(&t zBeSaOgzHnyQ%POVYPo}i<>}i03Qg37M)>EP51_4uOPFta!*#gPN>zniV#m?wmQ**} zL=Bx+9Z)pKNmbY7v;XcgZ*F=j3h)$R-)Jvm#6@TLyq_v!Xdo=iJIjVW@^;%<#{6%; z`CIna|H1=AAJ$sfvefD%V%V(tzlvpGXUDN^=AA`gC)X~*v z1Ys>5D4d0|<_cC(6vcElElE+iv$r$;-uJ$@ySKY{Y`C0&$UJ}N`4$^~sPf@=-+%QF z27{9$q-hJ*hoY`@TIjYihmOQnQ@r2>PwXavR(Nh}KcqinZYfsg7MLq>WL4~HTbY2q z&=^&p-wvMkx~h!w;=_B6pmG-#r*B0hbk#OeY)n(PA1YReh9{@|o?{e75uU$NF)|>Z zDM%HRiIJ(m5%3{>yFTz80ma^GCLmP`DLjk3vYHC;SS!VKNUB7-sW@Fn8b)|5rxS5b zxqL2j7^Nj46jgeh-*AmJeUj$|GBBWImMFGHc+8ulM!M(wE z|Kv}$kB^Q{nC(RCgkF07koKrn4ASH7~eQr5fRexO_ z7cNpYdWj$aVZktv8t>1DkBRMig-)M|1U?FkYXR+PE9m-GwwmCbp8ua}&oD0pJ(Vxm z^uUVSL(CVix#eeCK$17tahet|i-IW@p|1uaB!BX2wFzkp_{JZ8NB*0?^8}3Na9C%dtcBz|09%%2VXP@T z?T-2I-bW{IzVYVHa5NkU>|}LyHF@Frmr}9zU30Si`unebyU1rV=qy8N+&in+ZKK^v zUAj$0#0yNtMbrz=)!In3dQ%|=jxM1ktPT*K-=V9%e_nJmok6w7&6%1f&M8`MR>3vF z|6JAWRM2Ay>it3TV<}Q~#$dSK!cz(_e)?6=GWkq-)z}9V#BN_vi^X-yPG!kclS-9s zO}tr9S^UgLdc~b4%YwEq;;?9ewri2?u{1fare9SgS`Ajr=iQeRsLn@QvjAyI$lAc` zufK=?`oH@xhxZ@cea41o&)s^irIe!Ka8N#e{5U^8IWAlVDjP3hSf;f)s|7sIm0{WX z&5smaeI^UmIVek(k?-MBmSvHqX$eC4&U^11z4z|Bd*jJ?Sd_(dV{JXVbNhK=V_!RZ z^v>Jwzy57&Z3&emFqWZ|!fLmTRx9OC*AfT?B;X)VOMS zy`qI0thiX!oK)T3)l)(RQdLYU6bVSFI({`Gk%EP?yAM}th@<=G`gurLimq!V$Rjxm zndjD)G0jxVL8@dSaxJ3U0P;$AIZb3bU?`{ju1@*5N4!-1yDacOM`RY!=zdvFyQRi@ zt+SGB&_q!jVAmG$X4 z(VHojLkGL%K$6Vy7C=RyG&4s<nN7^2hmWS)JKM9OD2!!mSt@k3XrZ}ToQiXFS7w3k>LRWTe|lsM z3sBZs#cH7s^>j8Zn7JGb2jkaXe{J{v{RfA6k&msl#jP8+dYhY9CS=SjJ0HIG(Zdg3 zXSNJVQdqG_l)`GSi*6_N`vHM8e#?cC>>v`BHuXQ4(_7UGY4b#DMJIoPmz0*Yg#JDy zCfMibci;Z`W#UivcCUWyrIJIdkjlCH0sw|O4M^SAOvzI-P zC-ftG=xT>iq7+k^Lp>A~HZ+NBEDj@;=Hw7(hepT}pQ?*S9G^m05vmKG_$+|dK&uVh zf3SzY^Y{LC{`yR=W`nPV}$~v7+GRY_A(W6Jx$4?$lC(}vE!fdULTS2p+P{p6; zXB4YggSE_6^hdhryyzqO@s}t1I9wK;(H>fV$b=WGuxzzfS{)uAj$eEIwcR91(mT)H z(JV|iuHNWcYi3C@dTsdhJ^e`J#hYLF*+l6SWm!Tg!g{X*h+r_DL6|_~LJ|<^gaRk! z4zNJL2FU|e!bnod-Wecs1iM7i8XU(Cc?Aj1cz&g~S6 z@@<)K5vv-gB7ZFMcI6C*6kl`0Mz6j0>dvEwj}A&}Muu&1 z^ZKo9rMogDV_x0+=*H_AaTR~UKQH~sSo(dG*qg>6^DzFFJclpP(Q({idOWB)Zr1T zn)p@4BNU;C2x?9b;oE4b%mt&NMTLOW;^|y{s&MWHw5U?dBdIyf7R@I!pPD|_b@%)i z@gfY5_QlFip>^Vr)x8JL@OS?1e>?l`_x|A7csM-1dHrUxwz`_+#mqi^@^tp_;lt^0 zG%Q%yG(serE#O5Z3q9reP%nVS3u;M{`XjC)+{cLBu z50FaJG`V)|nj+B3^{wk2VLNKIir2@_-ct{Y>GLoxv-weD~RtCr=I;JQhfC9yDr>mkKRY@W=`!A`B2*7a9&jp0|DWK^)1+^&JJWRV>u;Y=q6s%tG;Z6{rL z?alY`-~IRh@9Fnm`_{9`cyfH@@|Id%Thr5gW*Xep!|Z0JU3fEyC*Q_Om__X(G}$ zZr)IdXk5Q~qaz|S8uZ_k{xf>~w)w)%Fa2WLUR_05#_%%8SxqHJ{*9aY`{n zIz11VpYYMVG$LM!i6K!)r3pxM4$Uq?1YGTg*S|LTWSeL=u-hRd8u;Tsc^&`l-~KNq z4@(BuoaQAL9(AEU5F7@euft7ELHob zPPBin3f4IUeCSJ>MN2Jc3)L*2C^ZKn$nq;&6 z!`;_rd-sd?`o~{>@z4B)_WGr(D2pkqDbZ@B*q|QzA{fmI!0=qMOgJq!Hs5}Tuk51Q zT{|XJq&VX6)A{|siezW1`oF4hQ7uIvO}>5d0$6H>(+53+E80q&X3JGCii(c2_7SiB zs`xc=OVT=~mxP@ybEKncQbi&RChcaIA};VE1o^~vVt(yL)%Euj*^S1ekEjNfG0LiL zAHBnv8atGWwi(EEuc4E49kJ8|J^{V1YlHvAzy1UKkN?yEXY}~#y(gx$qvvkjNxR*i zcKd-(^9K(fOoqc@A;OkjJl9zUe9I73zMxnYSRO91D7x!YZv{VB1?voyMUA#FE?S6? zR#mi&F$94U5!&9}K9N@i%uKg#-%^T|x^nqSr!-~0v$y?rGCM9Gz5cDQ-T3M+cP?MM ziBbS-4YD-B=GrQho}fROfvtfeb!x;NoAaFlTo=w4JY6DyX!SUdGL1>0s|x`E)uzP( ziPZv4noq)s=aB3Xm7+N*MgTdAV$|nxUZ9V-zVB+wo24p%;b5j{1v*Ul=G5>}w2f3K zmVyGplht*VVo}vPl0@S`w&ZlMnCF_9q8yDVh(}T5HHxa6G*K7VLx^TkRQ}fvn+7WJ zGFl5H3g~tTlWB?H{@4E!fA=5!e^2)Jx1WiX@$+|H$U2=)GR>#v>9eQ#{rmSPCxerm zK+G;cB1S?NK~*^}zAtFbnF{_`(ADP(VKs`@G6KF?u*?FcOc`rbq7#)SsoFo>AHMq9 zt2@RRJoo%_lVxad2daV&f~qT%?MA4*{tvSjtqg1a_8{sCWE={6OYn>!l*z zsp{w)zvPH}cJehmr=%|a8NXD=b%*M#7aX)kD%ojjXzE~+&teAl`ae~m3!36*7 zZ~U+Pzx?n2!|`x*@(e<=mtJ_O)o!T9n;AoSdGcaZ8-*4Ng1 zTC4KjgL`)~joHK3zVWr`bbR&t^IsvIwA=(y1S{PxluB?s7-5#@0JPWk$U;}lizBPL z&dw{a=Jx~RqbMvkyTYP80#db;L-554sX3&eSx4a#o=#WF-O6{Gjwe$UCq!`&Ynb#2 zRob&kH7~()%kxhV@3$qwBs}#0Nyi0Z}@1M4pF&e+crYOOB?Ep%qn1D#XU@CxKny!ING5qksJO z%pd;oZyyc^Cp)dIWp3WS)z*oo{;*$cZ*S-KAKagg$KwLt-ng-HbKa`WSw*YF*_x|m zs&@Riiq+??U@d437r1KAp)I>W=1_f|7rD|}D@6*&C&$C@zxsWeO{enGOD`kKGFs`b zbYFVm<>b+mN86WH5;J}J&d)x}XE(0C_*F`>HrTqN)oCTr8><)$H3pL$*0M(;G*_&C zP~M6bSO?dZ$JM5wZ?D9+B$eQyMkRisSwo!?f>h|qAH9U76I(1`moP7QYP_H4Bo3HM zG7ZLln41UEg2+SP>ajpHgP@@riKrp!Uc!(wwv?e$9p0SlM5Re>TrcLcV(T1QG%XCT zf(DeXPgJDbPM}VJ@4fmC{?R}AAM-cg`jfrcbaJ@1y2e*7ZMBpljK-t#!NUi$XV0F^ z#^Z5e+1kk0YSE71S#99#9Asq{5bgX~YXyH25Z0m!&kfXNfrSR=6&Y`>CF?p!8V(2a z_B-#;Y?kv&FTZ5FovvhA)_LiLm)g5~yGNw)eaiQ~{Os+M=Ptkav#rkBC7+hVNVUeL z^%bOPg3)A(Sz#K7+{bPD=5q$)@6$q;QD^b25ZW`{u)+%I&HgztAlj4bn2)Yks3W=D z5g!s8l2gw!#C7?xSJW?g)t1y*g%x)e?*)2yRPn1t)c{Z&86VKm>EcrJUX1y6juw0t z(yt}vr@S_6Q9*9nB-4VIQ6g=XMB-FMo~u%IQBw(_l>tRr;@jW+7JlQm{_g0(qJ`^-REW(jS%&9zL2qefDHJolOmZWyR{eLKUN_*#ZvhB8v7!TaeYqgIDg! z3%~r*PYc#3Kv~WAnvITS+bCEHOH^OXqQ;Z)`0l;ClIJlJ;&~yV33s z`_rT2!?(dF!|ivz{lfa~FK=vKe?h4vgOmjXj9#aOB+(d-XP8V2Shn+aET5=&MWt)5 zmkC9t9*>6zFY&81;a#TvzDbY(D2jFfLm}XK6}$2Uh%|W)D<+-&0d{tG@vndXpYw13&TsTbqvPGOC?;1gUrjoljxNg5 z9G@JUhYuf4_xAVlq9_bATM;>LH?UYzoX$d5DKnsje{Wv#8X=7WR%M@ouG|Ir&Sjt3_aDIrxCC2^EYa9p?IF_|gUJ-7v6ZNYE?A(J{ZvIyT{YT8rD}P%12q2d_woUy1j_FT zx=EO-G6+Gn@blEERBG#GB18#>?D`%LK?ISFr;6V4zHrsrD9p(zs?=-cDnwW=*W`w~ zP1IB^Hw$|t8CgzCwD|2GM?lpy5cRNfE`cVf;e{IE*NdbTQWyDn-&|{{em?=AiO^{S zdCBN5yz}1o52usyL6)@4&Fi;PtrShB)AHc(pnUY`(e&u}sPGmsv1s$6 z$ZEC#QC&nNx`?wn&yC@yE#Z$q>ad81<}c^u;fgw{G9E ztt{hix7)sX{U+@l?(JpZ35xyc!AHaAr`Nxbu5aCh)-8xFp^359Ya`7PjHeE5m6kmb zOP~DrM&y9yVMVRIikukyzK9B@d)1n>stb;U48mIWpb&Y%H~1;>`Y3q6s!;G;+a|T| z6-Dwu&eVc9u4O!3 zY$r6=c2>G9?`#oqRf>QtBV-wHa4^8{|G{tLU;fTN9v&QS@6D#O!P?3iu3Wy7iLi_( zp74@#;##Go zLSkCET|j2wwKw0zKmF(b(7gWkA03THqdhh}yLR<@+Uu?))|PzSKPjI)c|6Q3q4B^8W*Y=E~aK*M6_R+xB4l<`qA=P+#un@M~TIQAOe8WlmH-FX$(h0 zeE89aG8s?I7hZnZUcPdLlSFr~Ub))tb$jOFlZOwJL=DWr-4~yXj&EMN^Oer(m0M6c z1=|veTySfaX=Kv`qe+g^aOFC>7;!a&CYmmzs_{#UmokJRP}BCISX9VKVvW_j${o>d zK&RieqR4|6nIn0sBIKW2jpKZQrI6;VtDVNV?P3qb2x{IohGLGYc9u{qASGZ$)m%Vf z!En;IrsCD<(r^=14bq%wp3{o&hNTwFD&_pDNYy)#X$G`XVE^a@-~P@w@h|?>ua9?j z9_&vi)8kIN%hzvTZ>3qPX8FwS@9*c2A3x3y4iECY$g3i?AmQdbomIYsx0;<(u$H-q ze&%?qpD2WNPSFZ{mOZODoiV0^Ws4+9kQX@~K7MEi!+!CFFMP4Qb?eqfr`=guS?P7Y z^2M)YPo6#*j>d!c^!Q+K@ctj)nx4FLY4g^XlGe%^m>E_KwANT(>7vtWVLZ(-nfk)z z72IL<#G4xPO+meq z6HnbDg}QjZ7SXXs%<1@37okd(wQ>;1HbYW_f}Y{X_sZ!34KjVfG?3w^hk;ZN+ASSO z^y*LG4x+@Ns=ToH{u}S&U;XZHnAhI;=J9CQ-!BU@xxRHRSzljogCL{vsNC7vDIPw0 zIPLfQg=NbSSZnP?BINTkWDAR0z(wmfi}Y5@Vlw2jcD(;Yw1l64gtuoDu2Ub(OiC#* zGY*fBqOj6l_f|MjZQ1Wa5}|oW?(IYg`qr3niny|L~^a}A`0!GiVkR1p(ob{d7@gB z56h0#P_oY51K( zV4$$_KNly{VDZLwQmORWYZ+9?QH;&~!jzCg5|64>{BtwKW`T{$G&}}}+)9I%N~p1ZLr(jyiR!}X*Nd79%~6=pT#Kj^@vUDy_|zb@+74+Ahf{q2wO8;v zzyD8)`w!nbp3NplMP5#}E^j4kE2}LKVKSYR`v-gFSh{}v*L&BVU)#9#CEZ?G_q)IbiPq?K6xyu} z-NIlpEifwzl!n1X(4?cO7R{k9sc3gZD>>rzKau5ei0o3TI-;4xdEohlWeP|up6UA| zSyk;HDg`;3aSxH9l=H%>7qMe|J&BQHFzmy;#c`!OkjR@W(j$o9i3#^nxzogJHss`} zD(v%7HO{P}%;G_0t$FY~l@^e8Je7(@kgd!WtI4Fqn{U5|-}(Lj-M;nCw+7S6;IJr) zVYk!8*7d7dyWQ4hS=f_7zkK@iX}-6&n~%n0!@?Hg$aO67Z(A}ET*O-y7bsR2@n+}G zL$UgaLs%c9Xf@Fm0r)st0}&AzYjAjc$kW->93CCzFTC)=#?6~I*R|5^m2NNVwA@4{Yjg8b+U@paFzlZI7z5^b^zij-TZMBgX29vx%Q5YD@uvVZ*pfz~})0kvYJ)aW_JA}3P zAre~E#s(Bk85en83Dt|rQMNSZMgWfF5dk!0Zt6+F>e!nZ&pCK1nllUx0#X&iV1tuu zh#zY>QBY*67kk3jsX1PQ72E3wol1)!?R?aAT%`OTH`PFr0>#YY{=@tD{%e0=Uw!=> zvxB22{d_h%F7k4=vA&_#R@O4570vRQJ?Zz$ot^D`cXuxzPsc{s#p?PMn?wN$B)h?KkE=z+3ZKQP;GYT(>xWdd8+c$)^FXu zxxTWp+R3skyR>;Z$%~u^!~Q`RG_u8Teem$r%aemgm%3M9>~=P`khWHwY=9XGgjOp> zn!1qJqOd5+!tW?L6cii^lsB`h7jXp&x{@a-A30x5*~Iyv2XZ?I5duk$h#RXlUQTna zDBh2xdY4ed8}IqYRBB$o>3cPzI6*b`x(W=qRL{%ZxUst!h1UY)CznB7T2D6Xg5FTN zOR$p>C{55>oJ1jR2{j?{1+2&o9z1@CH{bZSef6zx&USY1pOkq%V9T?1t3z9xSFy+bxE}VNsT)^>#44gj_dgAgg7()meqAsbXK2DYz^t@iSelexgbD z9|6)@&RSVZPiNC|Fc|D} zF&oHa?`ZP4e`T`2aVgoj)n3`WhHh^iLfRE0MaYywD@{O>AukzuQKGaKW$CqCaa1wp z71`k+uX&?-Z^fd~us3C0n*^3(JZWE3K@En7#eIvOnlgukKu3 zf8m7})-PSU)N5r~Yo*uAdYzu0H3vh)LGqx zPFv7WaKdLsry%fb|$ zc1Jd^TuNG5OIfxunheX6lfK#B*)9$b5A)eIRO^&*L+d#YDwX$-V7|vY}oq3#d(p-<0p^HqvNCL%^Nq@?%cVv zzPYi{QChcJ?N)LC{IL=D}@P>SI+!9=XY7MHC4>&~ym8uNF;Gsa6 zw>*w~SBUDYKx(K`NdT>aM_4k)h0QsA`H`JMye8xbc=Ck#905h_ERlT}Y%?Sx@KV|r zsj$KWC?ttOnz~jnpBX%Twu^fY-o~46{6TsD@f+iOHXO{Rvtgd+v$fTAx^Z6E53Pf3k{*wCQp7_r*e+i$rqVI*TTL7{&O*;TGVM&!z z*~a?D%B@?s*0!#0_10I{I$4^v(lkpUq6foaxqrA{YDFy}SuM(99cgz{I+xbl>$mi! ztsCg{Hj!m5H{G%pAa+K40pl=Gl!DSSjIm%ASRZT}Bod@F60KcnQ3^^0o=ba;l`9yD z(tsi)q}_B-dA5rbv{K##&~ardaS{xzf`h4ZUUm1YkSOJBh?RC1Qb;O(&AFgzrM!p~ zP)hmxqiV9Ke3TgxL2F%+=~@GcRv@L2rY;Rg0Z4Q$lvSjVqzPK79{^K;q@7>O3Fz;+*#HJaYY0(OUhe{IHhQr9Txd;RTV_c^SQnJc62uBBxSD z%Ccld%8;Urh56|C&gH>#g)w+TBj4y|%WRwcG7vGM$+5c+@XT zGekMvzq(m$PDl5yJl=V)+ugX8bvJJ4HP3bF#M!G@YoI(2qcza=V}EM_Yk<;NSP_VI zHp0xlg|eRiQT{1=%@t8Cd#I!mL6hb8TU^WNhlthq(c2(XJV$iqf)IixKoQrW6=87T zBW_p=wD?3Fa&0S#cmze>ZkW7Q$|0oG^HQPR3*PdC6iO*%X@V?s&u%u&@!;VT+ztOtGzX~wz8IWx@`?2OlK2wa<!_YcbbgZ+Fo8ky3R zR-~H#F`R|5`2X!0ZQyyf#>EmjLzAak)B>6XeAVYl82VF$6?Hsx`C}n1YM`ueNg~9x z2yHDwTp56jh+10fmN6ztbdt5(?atcjT6b$}t9Rw{eUkXc(BzSrd;ZEB4QiDlO%kM@RL{!-N5?yO^zcKx_ra^Y zz5Bsz(BGcSX5+Cbi_v5<&0A?pHa0esZnvuwoe+a%G8vnb;}dgubXXo99Tns8*yKfS zA+X}+EG+J$DH&+$o|a7l&*H5<4yszDV7H&fH1N|#SbwSt7Vxo(7DcV0Y7{KpC|YTw zV4Zs*qLx-VC8Dg=YPDB-EA7qA&Fs4LlRfP0JjDG6Z`#L?-_4Ito=r+K zow7BPo-G>v|xP-1uLKBXy0mo+@jSiTuGyFrArD|dS1~Y zqLheIt#qcf&N`h=dvjy6du8iNcVm6M-R<^T?N&P#5e*Tt%ru=&c{-agGp8b)t*x(h z^U|)4r)4+mUhcKluB6?SOVsXNqE>Get*i~LGgmOY7nW=7#K+SI*U>0p2LXA77b@|J zbf@W3!G+ZGUE~XmQmW#d5~|Ua)`9nO1xD$Bra~L5km!K!JTg$LR1OA%Vmg~zV~k~C4jfg*SDi*P&Gzr(Agcn)-4%*P`)4l5SA8lv ztDhFEPoZFqMydc`ikf3k&PAEYp?MURy}5PV=Ijw${36tz@mv zdeZG(Ro&h?l2#8{)<&AOpmb8ZLl9MKdy0Z7oi9XHAybidOI4)0bBJ&bq=`y=@$-vA z%sTIM~O*;kF#?KjPz) zXQn^cD< zuZon{QVB#@Tr0>+3e_hmR^=JRYS9F6QK7O8MD?kPLVsGYKBa;M2rhql>%5|c1xQO> zfY)jku0{Vh3t37;8GwX{Qmu8SNTq3-X05E1t*@llRL#y3GmUWRP zE$B3LXowV`wBwC{Dp;X%jZlHN3dFo}$SGv;A#un{2NdO6L-7;F#B)*8nD9aq9aUYZM5eEGu=?`}K!w14&-*#fX+?dFF~u>W*Q_$huA&vMCbw$7R!F7ne_q;^MRT4)!1ZkJq)FIq-K zj4xi+7-Ik=#+q`L&+@@&knbNHq}^_}y|S{>@~A88t*oT2G)t8x-OE-~x6?~3TVZCI zPN&nN$Y*6y9NV%~N~;!l(kiBVSuWHb>9lQFr8-;5($=bObyiiYy+T=gmD=r9wAx*y zX$xtRL8mFwBt?>>&?>D86~Pyr3ay37pjT6As(s>B&4*bQ7%9OvhlqtO3zVinnNKmD z3^C1zm`;v(G&q*=c)+vbq@0ZVWuA{_rkv&0mWHj(wMq=LLp@oVQ77xDR@R~Ffjdo-wa1XGo4OdjS{vZ&P9)0gm%SIk;^Mv#8p|GR;`-_eAS|< z;8_LCoG}6XxQ+{-+iBoWr-Ta-*6QjSW_gaa7uPO=w9ezT7I9lK;>yn8xzYtc52z~% z$P0j0q*ASQnx;v*va;G!>PMRjE)=F#f8_CR!*=%ZO`3z-g zq%;KqLP?S&0!iBKc8i%a(mFLpvb5b!S#+vZrc~NalC-N*osmvEs@3UIns!L*6p2od z>J&<6&`DYaYgsCR?zGcxr>oO6O_L;1oo-k6dMm`jBrIatBA?~9 zC<|i>Gb>F=%nYTJ;xZ=?5(6Y!>!c*Db4^-6sjz4eDN>0d*OQV6DYm49ScI9ib}s7# zA-0x9ktAA+SRpG$tYJw~C1P!1t!1SY3)`|RN+v}jg0d(ITSb>KiBbyPPLDR%FY8vT zr4sGLoI(&bMrOr~jkTQ5raT;u>}WJHgW`mxCMpA=;E(}K0&upNCD$S<1z~nx3j&m+z>d_GF!4*1jFi%(wZhuUI;Bafl&)AaQd(8+uj69G zMUmS)&+T|T;qiEEr_-q&jYoDio7u7~t+h5hgK9xN6ew>_6QiuEa9!~AvJEtJ7H?&+ ze3hoTR&(Csa?^wTPffAi@Ci|ik&1-yY;a2AZwmJJ-$lC~neVbjLv zbA?MpLaV7gNuOA@T0|w53saOu0YDv}94ASV=vJ$hwcBmoYPHf%yOVUgUES%llTN1_ zey+9Fq!XnQN+@lmN|RQu*hmG@t+B$wV0OV7p%xfxS%j?<#VgXvtx*Td8Kr{h3qc^H zoiRE&y_TOL{=k9PA`7j;3B#LP%p6IgDe9aT?J}$2E3ft)yU; zPbKB1PlbUJ=}RSMVYt*3T7p-8jFp@!2`vlvmRA|D9&r8h%isLL=O0SY%C=TGv51rn zE9WwT4{6Nk-8iv8`hMn`?<1h^5y+`L9%?|_s^xlIbM@R@MC0q@>;1s|o4l&Lc zNf2U$7-E`6itE3Dl~F*rR#+LZD)q;U-x(3%h!(}@^7T}db zYRFX8S$>s`I*uz_IIKYBXIL#qw;s(*DIG^Q695844**C+bQlkARwjsu6UdN|rtN}| zh^C;O2oMnoiI5N-IXvz>J^e0lS_Bv`stOj)%(ilNl!;@U6jDs{q6hqDfh|7WZ+Wet zR{M#aen~7gP_a?1pwdPHHFXslA=MJ7*Hjf;BdiQqjrH3Pzw)PFex^Z-D{5<JMkH-b&d0q>C>f2m8=y|bo$7`M`C&n8nO`oUf)Xac@#Jm6tF>yr1)vEHxT_C0vNvF@GH*3JZ z3B=bhTCzb%oKUcJ0DTK8ZiQ7Sj0nbpavBvIse!7c0hEP&^jJTA^CQ3i?t2ho00WlQ zN&WTWPbMVz@cBo*YAfH&)xmk|gA-sC6<~!7NCTYDZ*-cs(&<#RBXY-!z`EHx@~#cFdQyGaeOY6;d$pbCZ8q4L?%sGkO^rmPA8;QOz? z<7>MI@4eIgF<-mF`%;HIfIcr#o1^Fy#pElmodB-VBmaByb;0uE`hUuw1L*raqM}Ga z0Tn3LPqKj}P_^{KX(NJ?QrZeBY5A90PQ{Ja>`9e%y8jQ?RJjQywG~%6R&Ep13KWuE z%(JYZC@5ceKL;Rb7Ew@Jm|I0SU(G@SH7KuZgBMUx7&TCFK~W_IAW?yh7Lb>M^O~B9 z(AG~?+SHV<`KB{qT?Sk&*;dNzl4KWA0M{BWL9u$iV*grgp=b{`C@m0FX6qNgR%I2T z++WqAuwnsH+UKHjPEF}a|AVF~4ORxMJ6Bsd&{zT2qO@{wQ6Z$4K-T-9jVeo0Td3H= zUSRbG>^(hJsQ{T+fmF%rr3O&te?K(XKLeEk>rT~{W)pkBMT+VoMJ?3;<&^A9%d#|B z)u5&2S=ea@TSo(HL3?UYMI|U{ph^XW#|;^kfy#jOV6&}WaHR|+>k&n2$fI1t&uey& z8ev6^>Iy4ivNRG1Q17#9ftIGSQUzi)CB@J_jiv@FgOvg6(Sj=n7-p~{MIF`N>j4!N z6c(&rgJKP9wvd%;Q&LxN1Fck0NwM+wBtW%-%5o|L){_Sp2*7X!fMEe<(rXl+zfF5X zPkvR)vGUM853bXOOsfS-rO>>mE8Re4zo#AYW-JO z0Tw{}bevXjX#msSs~u~$4-8ZWtZN5X%77rLE^L6!+Z=n^8KjZH)*H8X{vdR~ruSIu zo9eNB1}X#AlLwd9m?~LEEWk^GO$kUP>$eWsrNA9JfF<3;TY9oeRuLM2R6C~xDFc-O z>#D(3f|oRMhyt*n057a4B`SOt8uBX53U29iFM%s55R<^g6+2hUqBKZ>fy#ho)u+0o ztg8kREIc$YQOCIf^vTb?*FejLwCpH#KJV$1>VcGj%7A6ys$^ZDzza44O#7@fU$CUA zwzM@sqxGsmtHn}+LCSz-b+>j=16|(7RZ>IP2|2hhtXd$^qP%Lbs%1~TkTOsiu&gcs zFUdAa=aAr1Q%+kTg&S`8UU-#Y)^eU602!nVSXLK=SAH|1Vl!C)OKGI9WfZVygs`R* zOF!G9khTKKAZ5U^x(9ek0BeC5Y*bQPGpyG4xbt(p;4w%Uu&nMGUYhdIASR7Q)}VwJ z`X5@r(WA}`PzEfkM*y!Dh|~gnXi#K$;TykaY71ZR{8k1ms|NN=Enq0000KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0P9IaK~#9!?3c|AfPABF-rSO6tp0|q<54)p3tE07NKWE;|f#0I1TDZs;afR`cR zWcXR#G1)KK8-bU{Hxme&ra?nyD2WI0Ab$fA_Py|Of2BY<<{`V~+^Ufya06luuO3R`iCluT$$%%Y(Xirc zpmGUffCI4T3le?-q6D^L!%10<0IY^W*fdfIgmJadYG5tLOu5k%kh7Gr`00mHCzVV@ zX|v%&jpSmXv^{D=j7;vqrv(0&(}Q@Be+79D0M*1RB|dOo4*&oF07*qoM6N<$g5XxO AHUIzs literal 0 HcmV?d00001 diff --git a/target_images/music_player/3d_picture/T02_cover_flow_now_playing_bg.png b/target_images/music_player/3d_picture/T02_cover_flow_now_playing_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..f9c36d1304ac27f4e6c0017fd8d9c5d5c1690786 GIT binary patch literal 5942 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 v_9e-V5!O#r>ShIcBp9iIOW@40#e literal 0 HcmV?d00001 diff --git a/target_images/music_player/3d_picture/back-button.png b/target_images/music_player/3d_picture/back-button.png new file mode 100755 index 0000000000000000000000000000000000000000..19c1011860fafc02d8ab39ecf41c98861aa3182f GIT binary patch literal 1228 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=esfmfXg|n%tnX!eTp{t>Vxw)g0iG`D^k+HL- zg@F-FuSMv>2~2MaLa!N4y`ZF!TL84#CABECEH%ZgC_h&L>}9J=+-@<(X&zK> z3U0TU;MA)Rbc{YIVv!;mCIn19ASOK70y*%6pPC0u?M1+3E%wD{F9QRkgQtsQNX4x; zw;%EzQV?i+m?U#RP-da>3%0%sf-;Wkg)HtDcuR!uGW2(N*3VeR$P`|oulR4{t@obE z4_6$Ey1g}K^}3Ht;LHUlGB#aX$S#%Kv_E9p1NO?Dr_=WYvvS5=+s*9kcBGT?sV6mPJfGhi+ftc*XdyMP4~)HQNl1|Et5_OkE)6aPRi-hG5f>O4c(x^(#M_E2LMH zGVDCOnn^=2j@M!32Q7v>xo7TQ-rTOwXJA}&Y2|t;2HuCs3_dUR+*`|5yJB|Fz7MOu z={%mYRepg+&BnG9j}BiJ>|(iby26b6!R^S??iqj0PPk}%4*3zK>+rc-aoS-MmyFJf zBE1e4n+$_qALEEl&gpw~Pp&_!({;|9b8D4MZ4?r9>SruaW`TPV%(xI!%Ob(B)5+#? SNhP~3NXXOG&t;ucLK6U=kDHbN literal 0 HcmV?d00001 diff --git a/target_images/music_player/3d_picture/picture-frame.png b/target_images/music_player/3d_picture/picture-frame.png new file mode 100755 index 0000000000000000000000000000000000000000..aca5e013a7ae2b3a8631a985f2d9eeb8844140db GIT binary patch literal 806 zcmeAS@N?(olHy`uVBq!ia0vp^4M3dD!3HGv@9pXWQjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfZ7vZ36C*#{`AR?`$r9Iy66gHf z+|;}h2Ir#G#FEq$h4Rdj3F!Z*Oe$6LFMj_?VwIUD$vn zd5ht(Lr2=$ErjHnr|&#;??~UF=^H|weEG0*Sh};!t9!+1U;Fv`}ApVKY#!J)0zdr z`_`2*sU&QP(CIt&_+y~vnW^$SK7TH5xPHLYfce>X+4tV^!oHW^RK3aX-?fhM9%K7y zv!7awOV+(En{(~$#A3DzP8-%$_ZVGV%A&Tvxcct<-<fyKm3tZOIwTTF>qMZ|4BugvzmTis}|^$x(Vmp z1#sJR-B?2&xB~8C-9!}7IcLBdu-CHH_W|sinM>V+qZYyu<}^|k72rPrT!szZHn}jj zG(a<30oNflw?%&*D1cR#b1)niN5DbNiJSvB5t{7NibRlfV2 r?m0u-PC1t`EC>uUf*_+7p~5uMZk0000oaZr52ey)0kH=ZtzAr-gY+&srA-zWd{f=4?0Cl8 z_r-hdX;b}`j_@fy*9q^N9b?15#KIwF_C~=w&G+t}JR^GNLaUGR z%2%@yCUbmvAi;lXrPvIvWM7-l|NpEi>V|9@tN19=XDH~q>?fLsPo MS3eh)bxsLQ0IY9yEdT%j diff --git a/target_images/music_player/T02_controlbar_icon_add_to_playlist.png b/target_images/music_player/T02_controlbar_icon_add_to_playlist.png index 446f33029fac29c876d0ecadd911c5bb352b7c43..820512166f155ba6eedcd529da20dd2fc3288208 100755 GIT binary patch delta 678 zcmV;X0$Kfq8`&DLzzTnaNklr&OaA z+H1&P(C8tT5?YP+(o!v4%oMBgmvJqD~X09P+92Gg71OX7BiV9Fz=FJ3wY_h zXn(8$H-K|MkaFA{bv>AOUCq(!bC$l~&4Z-~xd~u~oXuoa-4T&?nFt;k#{|#-zL?Lv z=&0&~h`cMy8r+X01`i98gI=HXxh)HB&}*f4GFmVi1_pm&(Kw=8CgAt$&rGUnLqraT zO>h}Fuw>~r@Ya0a0X`+f#F`C>wk%3Hp26hGcZ*u^Bk(=r&9{x^D^X1VOlLg*fDyt~ z9OM-FEgCiSljt(=B655lcmqsTf#3$o4dh>D#7VDLp`x$bnpYMJ&H_(>%}D7L(%bhq zL42R$GO&MA6@mbd%s9ah;7a6pg&a-hED}{Jh%5x#z_+RqOf69n>8R>$;8~JuPT>tx z-7-xoHqZ4&2?#c!FqlD!7vkCrFCa@36TmP0Z4z4n|Em#At zCXfSoDk7&|Cn);P_7Ei60`Ab;?97T|U{^#o`<)&T_?OZ>!E)o@0He-_47MOv4gdfE M07*qoM6N<$g84E+rvLx| delta 722 zcmV;@0xkX78igCMzzTn`NklLlvKYye0zMLv+aW`c7vy!|anULIr@-uLxk%BQs`?f9 zT|kQ7aRE3By!3ygs0Z|b9?%1Nz`eBv%!^2^e*k$L2Z0S2fEyz6vw#Qx4_J2rxL}G= zMd-8(CvzV7rK)*bwHaW}1t7p7bJ!{Xz6~+jt%%gk9ne-=zztx#j0;{{tpV4}!kKXc z+yQP4z|8@R7VRnUE^g^oB;Z}s?*Oga}7w5Nc- zWVc(@0uGBvCyNLMz=M?KgnlYDMu2+_tOC=(eV`dLrOZT?Q<4Hc6p__Xq?3Zi8HEn8 z47B@c2)vIuN3wD?q)D<)!Ts%uYNtR|8I)`5E|uT=@aJoF=E!GiEq zu!rjz*{grL27CjYjd3p~@=~&^(dtu>~}`K#JF= zEH#1D9;ttl7Ttn=*o*Nb%lT zgf>NFscaMdvRTyHTAHy0Fwe5gpdOUO^Q|r8~BU~U6`Dkwm}9k0U?t4 zjE_mlB;h~+iX#Ar#bzqmTnONLvmkFa&zt7~c(Nfj2zi2RA11_xIX*BO0wx~@84Xt@ zz>y;HWGr&UXCx5>27{npuV?AKSSX$dLOdQ1WP5_1o=g(K)MaQ1xq+$GEt*mgAvz_l z#t1d41x$)^1)4_i8Dyp(OVD7`vRd6_o5+TN1~~>oEViknDWF91|4@x)8m%KDkx%*l zr?5_%fgxZdqC?YgC3$cOi%g*~H~>fF1d2;hG-axb;Ylcg>XJ|l2#DgaAYi>(t3vg< z3A{uChiG+#T&qMvM0^IRz*4JKFk9#&7K@+&9}$-WL4lCam(2|n^0=Np9Jar=zi^5x zLX~M6L`zI@RiC(`8M!7aXfQIe2*K6qh)Rs38epPiSUqzt{xj-La#b_uBAk&6lF5Lk zgZLzF-@m!OD?93k7!A^`=p>Z^{&7^3wm%rT55kR zTVUbu46I;F<4;hc%u1+#*qoLEHPn4JLinZ^s6s2+Vp->FH@>I8>bdbGezj2FKiof@ zs;`fmy)b(Fw|1-rH_bBzb`QE|apJEpT?p!1=OXL8cgx25 z+>=5tJXq+OCq6Jba!6a{5H8tl3!BpgbBk*%-&xf*ZgPxh=ojqkGc#KwNvFRpjuuM3 zqB8Bpz5P}9)NOm+HMeRlX89uJ_4gIa!;T7k{00&a)#tPeXZug_mV}ptu8r(MT zt!$V|?Qu}H5=AF1N81DNG1?>Q7u=kAvYrY%`5unyN||-Fh&IOR#RdBdjgP-9-9;@7 zU5p-Vb^m!w^KYexx}Hm$9XABl3Wn;UunwIQO`E$d%8(juyCAt_3~JWqZ1_-Q)#qG2 zr>Z?WslKRDW5kyc{d}F!`uLk{2W3ISQDtmOxrMUL#>RGht9?V63pRd$n&8)o-{Ph6 zZ>M`XZHozgpu4;|J#H>0jvYTz;~13Q_>$9keG#-y+x?RRi}`qI1MGBdXdN@_I$zSd zdj!0tIQe&vm$L9|zD4&b^>>3CofPdcSL)H)`^F|UU~DYYzo=&IQM4pPfrS8_)lh8Vk#ErDdV zVE!{H)9Lf~p6NyO+cxYYjaS?*WM?eS%lDuR4 zXIt-<$5ia$G;WHp$lX@oaoRPh;GAGJp1-t&jxF}9Jb9_hvZeHLQIv81@%N4u9yfNl z?Fe35YSsZi?e9FZI&;sc^@|_AUmLKyqbA;G-+=9sR1X5pYX5+VWsf~tn}0O#t9{-7 kaKgkN9sPRi;CYHUr90ZLd~kq~Yx<{z1cr%z5yof#1DKGR_W%F@ literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_controlbar_icon_artist.png b/target_images/music_player/T02_controlbar_icon_artist.png index 5e42d854a6f16e4be1abfb4fef3763f2845c6e86..d1cc16794d1878c835b93e77353ccebf746b3eac 100755 GIT binary patch literal 1549 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0zld+?Vv!knv zsf)R#nW;HUuSMv>2~2MaLa!lCy`ZF!TL84#CABECEH%ZgC_h&L>}9J=oNh63 z#c3W?ZwgMgn7HB8s}FRHJ}6?5A{r(HOg$hbJlO&{@Pwb52Tbinz+~<2ykY_a15=}? zi(^Q|tv9nS<{mN-XyaW~agO68i?4ddjE0gXHQ_CD7Z^D1VtmOmg>!-M6h8+m#=2*! zTbFikSi>Uoe2&DE$$nF3JvniF?%V(CWT&Qj=G{E@34)O~65%K!d3nNsxa*NWAXRxH{>a0D(9aTL-uu2t zgPZ;R3uS=|zS91RcdlQPYiF5bZ12!{jN#^zh*d#$3SPE{1O zR;FhCV*2sUdUd57t3bBRi-YGP9TuN{J9o~%Fh}VxuSMpqUG+kEt9**;F7=AZ>tzy@ zillx%KU6r8BYSN_w%i@*L(>H|lyxRCCH)URD`I5P&J$+9?fJAK;LxLwUyh_(tl(YG z=)kpCxz*DlY;i@$mX!eww`XNkY# z0cGyk$Es0WdR#yEmiSf*B?u=-=f3_PwrKkbS75RzY2dp6N+T7j-}DbKNShv*{Pz5| QK2QPe>FVdQ&MBb@0HMP|MF0Q* literal 3827 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 literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_controlbar_icon_delete.png b/target_images/music_player/T02_controlbar_icon_delete.png index c13897d9490876cb088e60ffda67078078898955..ee52ace7a35729f6f7e003ebda312d7692f04465 100755 GIT binary patch delta 509 zcmbO(u}N~n0j~PHo-U3d6}R5Zy6Em4D0AFC+tS75NQT#x7pB)v&r8aGx$=2jQs=*h zMb`!QuAi=v$`5SJ`z}Z}J*VwHT%!*G>Q4W{7%S_sn+zhYE9x7Q=VPcWb9~$<<$Qm;5g5vU5Sh z#yyVCQyabdby?p;*}L$DGU-+4M80O&dhK&w-CCZ)v)^|9d$n=xx0rl}pNfUi2c$0; z)IMu@>9T(7J?3?dk=$L$j26b4Ms5vJuSGuOao*`Kn-bKYc(z&c^aF#l@xceg7U(kn z;jm^GZ&3Aq5apn}MMfr3Rk*ueDe`2-+ULKf{IFJ}s|`@=_>#L delta 353 zcmdlaIbCAI0j_!{PZ!6Kid%1Hp3OaMz|%Uvso{BAQ%Xx(bIBwV=_Aq=lPg5hne#6Q zzB1N-wUA4IWtH~MqBBe0$Fc~R9Q3!}Qa9(j-1#-E^I}+36d0dh{j{Dj#5C<5!;cd@ zSG!NV3Un(lel%Nrvhs|DW=Xea&R-;1)qP`+rbFmm)o;J7l2!{ps=vN+v!lx`5%=l4 zLW8fCGpIYWeo|2K^*nHXCD%a@)zG_hw6Zw$Ea%G{xF?YiU&0$FDk-cLmts_IWZCI= zOK>rR@u{C8%Hj8!FP!IiQ87zFfpPIIrULspQhKYJ{J);IyWCo_jA8eMdBQcj80Qyj zsL3wZVC3|0U=o_p0CF*BB!ca`>WTDU!TZ}&e>2Yi>nr^=@T%B>?9L@W%s$3nPcRPN xcXls>Hc$LT|Ak_Q!~Z?Krcf^oHbLTxDTCXVn7!E-Umjxs0#8>zmvv4FO#t2cm5~4d diff --git a/target_images/music_player/T02_controlbar_icon_edit.png b/target_images/music_player/T02_controlbar_icon_edit.png index ed90f862a6621ffdf52ffe7007a4748de226b21b..748461d2e089d353d8254d5fc09d5a3adef57ad5 100755 GIT binary patch delta 793 zcmV+!1Lpkc8Os~6zzTo%NklX6)UgC0;&7D#@QJj_~#j(V(L@dXTwLSD(=BAmQ-I?D^ zv+MU|*qPtXZ|5`L-}motGtFj`ewH2dxmZ98XaOyt1&kuQ+6{jyrA`5tfiWPL@UvBb zRp2)8%kN7f(sq)JU!Ye?Jq9kNKnXQq8YmkBR7%YO&r-C~)`5dS!wXO;H3?BxUAw1o+^(wiCDqTycED}2ERDQvp@+r?Q{QNM_x1qvH=_iemJh>HJqObeRIByG{?bp z;IIp>0DNi#w+YOOi0TCm-gTXi1Iy0k=K(h@B9&guWKIBYyM^l&!1KToFwiZWNx%_p z_}_sSz>uMNuLDm!y!y5*#}Cew4Gw6ig2NGv0aFfFA4Y%fd&D?5+*CU_QyLt0z_nxu zc<+%gbRvEM{2w@-kjGvw)x2^lbp= z6r4#Xb5qxDUXs(06K(D<03QQhMAvX80UN+sSJvT_J=)7odW?;0d);Rm&U75C0kgpG zHuhC=Ex~_dTD$o;;Nl4MW#C*uNLkjI$(;V2jSDWWOy(tUD*$pycMK#>xHwa_JHTQ< ztm~u?Q;GT@apt1)y5up@WEu^KjsFF33z*Rl92Kra$hKwN)x=NWB%ngVwUYS3G%nGW ztN~X-!mUJsOR^p;0uQ=?1Go_tF6n~z8t|q=IAed3Bw#~lIt%>mdMyHnh`A-1bknJ> zHJO;${lR_(bjPiUgr6(t(e7x3naFQ<>2rrwc#`6^yA-%T=%>L)DT8~*_T8pvOH@RP zz|)k#ZR*6mVbTT>k$GLbu7;gFqEvy0zyTukS2Om{coxtCT0jeE0WF{fw18=qKLY^5 X7`_qO(`!)Z00000NkvXXu0mjfDm-&U delta 565 zcmV-50?Pf%8|fLazzTm9NklB^jzfJC5(*aak30YGBSckI;hAlNC$|6?00UqE41fXf zKLftBU6fMB04@Ns1^0Fba0XEHEh3`cFNvC^nu7ZRka*w#0U&?vgPa1GFYLLd6#%v! zpTz)<>U~K>w;_N&R^QteFD5F|;@Y(<5uL^Yo&h`@!o&bR4S;QMI%FfG$TaLhM4fuWuoe%dYQx%0$}Rw;M6?MI}%mDlXr~rTbFjYV-aI*oWl!*!f(ldCX5W(K%?Zrfy2MGF9X!jyus`0lXW+QKuBsIu#l8U6H^>E-=T zbrVHfZ#EGw^C?8@c2lp#;9T^B2bc#|*5F(*0Nz~BJ;L+BwcC&o-B}*bxAl;0w&tfxy6GMrqBqar$~kJg>1cThPvFFW zX~8%^HD@hJJ@Dk6BUeV@@00;B00zJS7ytv{^V;74Y~Q-45A%<&00000NkvXXu0mjf DQ0e*4 diff --git a/target_images/music_player/T02_controlbar_icon_folders.png b/target_images/music_player/T02_controlbar_icon_folders.png new file mode 100755 index 0000000000000000000000000000000000000000..f926a8dcb95afde37bd7fd9c936d96b63f572a7c GIT binary patch literal 1256 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0znWMRdv#X=A znWM3@o1-~QuSMv>2~2MaLa!N4y`ZF!TL84#CABECEH%ZgC_h&L>}9J=+-@<( zX&zK>3U0TU;MA)Rbc{YIVv!;mCIn19ASOK70y*%6pPC0u?M1+3?Wj<&mVtpW#?!?y zq~g|_Sr>Vm3Rj|IQf&p!Yx}a z{HZU}?Bx1;>0h~RQpEMr2b;qhpED^iFmgCBFbOm;uqZIZX4-z~4h>yu660>Se2K-D z#euGYSAJJoY>8EJxV!I_Tj56DjN)#!4-35cr7pB3t*_*FJQ!M+aJhNem5-n1*t|G$ zTH}j{QT*fQBJaOdWpU1KID7KRidi>vyv)1bsq8Rz%_)3Wbn?Lz-`1C+DJ8*v56*tQ z?9h8T&~4%@KcoJ#9@)dJwe1zM4r;l+(}ga@^e`G_o}Vwnys7@*Wk#J_MC}c9 za{ZWf@)c*4t(mLrp3AR3O8(IQzH#=8D-V~2{HzkwZJ)DX8c)QJd%jQXm_H>v&^|Hs z{O#hCktM%hbJy0W9}bxnCwd@gTe~DWM4fAh5H9 literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_controlbar_icon_genres.png b/target_images/music_player/T02_controlbar_icon_genres.png new file mode 100755 index 0000000000000000000000000000000000000000..9eb1e59f5434a86e5f4f439d2abcf2c4e39a9ef9 GIT binary patch literal 3345 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 P00000NkvXXu0mjfHYrzS literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_controlbar_icon_music_albums.png b/target_images/music_player/T02_controlbar_icon_music_albums.png new file mode 100755 index 0000000000000000000000000000000000000000..6cf8d881e06f13bc5963796e9bf45ea502b0d83b GIT binary patch literal 1368 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0jxg$`((9+b& z$iUIk#T2I3B|o_|H#M&WrZ)wl*9@m#P*TV(0NU)5T9jFqn&MWJpQ`}&vQ;K-w;1Cz z52`l>w_8kb>eUB2MjsThND&Pa0;V1i6P|2=9C*S{%>$*>z94LJc;jEPN`IJtzk_%KL|sAX6=N-Ew}n7cqyvG%NYmAa&6 zmsC>n@fjcHml!$m{dipSe7CVVL&YU9J=h7#rTYV0?ue(D%*7TGA)Xh0+tNGS%&v4q6 zv(fK*@yzbO`9dj0x8l5;qt5@<*!A90w)-6KkJSdx_dWfa>3+!eJ7d9`gr(a$q`If+ zS%wRn?74kw(X!aB?aBuq1($pexfE61TtC76QtPRzklk6!8d`0XCbgAblY0Kp^AXnu zzFAkJ1ow7lJ3MbXJzbb#yWHC7O5MhD^;e&$zHs_-;qN7n3&K}V`{z1{?16mdKI;Vst04L4oqyPW_ literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_controlbar_icon_music_square.png b/target_images/music_player/T02_controlbar_icon_music_square.png new file mode 100755 index 0000000000000000000000000000000000000000..4de1dac4399be0a39af97ac5bed07babd6cc9a97 GIT binary patch literal 3120 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 KMNUMnLSTY%-@Wbt literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_controlbar_icon_nearby_device.png b/target_images/music_player/T02_controlbar_icon_nearby_device.png new file mode 100755 index 0000000000000000000000000000000000000000..96bcf05266c1fb506bf5dda6df4fc5936dd45ad5 GIT binary patch literal 1502 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0ztD&W{k&C&D zxwE;Ug|jnEuSMv>2~2MaT(6S>PQ9R{kXrz>*(J3ovn(~mttdZN0qkX~Ox$j9 z!D${;ZwgMgIJ)B0s}FRHJ}6?5A{r(HOg$hbJlO&{@Pwb52Tbinz+}C~n=hMzfhow- z#WAGf)|;7kbDIqW8WdN3I>S-IY~*;7#aBIJ<^mw4=3&k;cfnhhl;%y2FIk?>6t9}b z_cE)oP{#VkM1L#QK%EoE|HdEMmfM^?EwbS0BSzZ=>|Yw(o<6(7ZQ`q3{6@Tlc~<`% zZ-@Ji#upZ!X?^~AXQYGYN(cTQcH##_pX>?N+r^?Q_$iYm@1;_LZo`v@UaOM=7&j@r zi+c2&qhz6UpJzp$zSV@3um$};4p(+w$dWB-S?^phUt;@KuStfCJJ@5h&0IRKtzXWT zGVQ0*%}?&kcZ{PfkAE`EoEb4ueO{)X;Y#1gE!Se4XC5(Q2)ofZrBPK$wpk$C!gDiKkSxmbSx8wZ!9hwDf1-gOy$(OFKiDiD1(tJ(O zwqvihXBzjZ?ZG=;)XJ>7v$C({GOS@bDY|fVgQef=eHV7KNW{N#GfI8L94^Q{Lq|)m zETl}YoMpo%#)5X;pfx{FriU>c@(5{qnpc?9#ilcfFXgzoW75i;!a%l2{!%f9{i0_| zqnA(Sd6)T)wNs@`XhP${r~8;cDs|P?&kzd9+{|0xT;I(3UbS%9RGZUIiw=C?+!`&Q zH%s$PO33kL3m4v)!)lrR>dT60vn77bdRPDZrXlw&o*Ubzc~tMwEGc}jv|x*%ev@!` z?>5G3F~$=Mwwk=mRGZUvFz>N$aG1m$=GR+#n0^(WWUg}He*ud3E#d!IBp3{*?G3#- SD}NKH#PxLbb6Mw<&;$TOA|pir literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_controlbar_icon_playlists.png b/target_images/music_player/T02_controlbar_icon_playlists.png index 7d1d467186eb31d1994816246591cd7cbed47402..6e7c6eb3c034da295fc4ccae4234453d9841fd16 100755 GIT binary patch literal 1652 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 BB%uHR literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_controlbar_icon_songs.png b/target_images/music_player/T02_controlbar_icon_songs.png index b2a2ebf40cec4d59a1ff327cdca892077a364247..3a29ea3832d5f74e74a951a3cda62a214304a624 100755 GIT binary patch delta 660 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 KR<)*m#D4&wj4y}) literal 0 HcmV?d00001 diff --git a/target_images/music_player/T02_title_icon_nearby_device.png b/target_images/music_player/T02_title_icon_nearby_device.png new file mode 100755 index 0000000000000000000000000000000000000000..aee16248f84720cac44dcffdee5f3eae47011e59 GIT binary patch literal 1345 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 X^DE;F3B$n500000NkvXXu0mjfgv~yR literal 0 HcmV?d00001 diff --git a/target_images/music_player/mini_app/T01_control_icon_apps.png b/target_images/music_player/mini_app/T01_control_icon_apps.png new file mode 100755 index 0000000000000000000000000000000000000000..eb2949a1ea242c31305445200fcda2619a163d82 GIT binary patch literal 4404 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 literal 0 HcmV?d00001 diff --git a/target_images/music_player/music_play_square_cell_selected.png b/target_images/music_player/music_play_square_cell_selected.png new file mode 100755 index 0000000000000000000000000000000000000000..7f14e63467f90b1b13f34e44956368fb561a47c0 GIT binary patch literal 829 zcmeAS@N?(olHy`uVBq!ia0vp^H6YBv1SC~zoL>Sd$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@O!qxq978H@y}5HSZ?STh^TG^yTa8a;=LS6!Uv?`Lj1Ehi53(1y4DnwfX7u&j+KDcNRT60r*cg54ZujeYBc^SXo)p;#!-9H8m-JM;l zmxoIqZm@IDFU`o)i}PDj7G+)1Ocgdr_Ih@}o z-wS)@vP{BoT|a+#{fX;wDqoe4M!n23?fY?aUf$9O-K`V7U+UYrhUV?Rb+%`f#cRgR z@50V?E`21*9ark9u>6$u4)wiyjT0w7{*osVd?dB>t!l6H;kbE~FMYi4AA4zb?fbQw zEqlH!o^IFoW2aR8+>m$aHm5Jn5&pP+H~(*Lm-+lJ7Bu@gu+MGym#?~f$Gj_g^CoTg z@v*-2mw&2XHRIen*Dg=xs}mA8$m?EFa*O)~OUVV!7Yl?hII1sb=CfjyEh#e8d0S_r z^Y&7l15gNT5?K7g$+;)r{*K)?`*P%mU8Xt}7vt)DsvmxvUVZ4T{uXg2E0`gE|16Yc z_jgV7uefU$n0m1L8xzP>pghDTpo#y_AF5q4zZb*$e~S;2SzVv7W544bgIRCw(k7n1zRzNNyjRf8 z$@}HrKeS7fe^C1P_Kov;uTHI0zZQJw&qSY@>=mo8e+%kc-nv7E>*r*pyw2{+#ZUNR jZg)o-`@f8CU}Ugeb2qglW_b)SKQMT@`njxgN@xNAS9^|& literal 0 HcmV?d00001 diff --git a/target_images/music_player/storage_type/T02_external_storage_02.png b/target_images/music_player/storage_type/T02_external_storage_02.png new file mode 100755 index 0000000000000000000000000000000000000000..383df95aaaf512839e3ec44e68ff097db419a74b GIT binary patch literal 3435 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 N002ovPDHLkV1iv|Y-#`i literal 0 HcmV?d00001 diff --git a/target_images/music_player/storage_type/T02_memory_card_02.png b/target_images/music_player/storage_type/T02_memory_card_02.png new file mode 100755 index 0000000000000000000000000000000000000000..64306274700fa0d9eb6f8f5e4fed34dbab1d959e GIT binary patch literal 3156 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 Qp8x;=07*qoM6N<$g48>0a{vGU -- 2.7.4
  • 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 Y0C`EL;6d>L0000007*qoM6N<$f-+LZ1^@s6 literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_arrow.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..047031cbf4fb85fda039c1e72f1d2b146bfa2c8b GIT binary patch literal 3006 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 AHUIzs literal 0 HcmV?d00001 diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_bg.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..f9c36d1304ac27f4e6c0017fd8d9c5d5c1690786 GIT binary patch literal 5942 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 v_9e-V5!O#r>ShIcBp9iIOW@40#e literal 0 HcmV?d00001 diff --git a/images/music_player/Q02_QuickPanel_mini_music_player_controller_next.png b/images/music_player/Q02_QuickPanel_mini_music_player_controller_next.png new file mode 100755 index 0000000000000000000000000000000000000000..e4e386d99aadb31ee63ab249b9f01a636bfdfb1e GIT binary patch literal 3120 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 KMNUMnLSTZV)5tgg literal 0 HcmV?d00001 diff --git a/images/music_player/00_list_bar_press_1x80.png b/images/music_player/Q02_QuickPanel_mini_music_player_controller_pause.png similarity index 91% rename from images/music_player/00_list_bar_press_1x80.png rename to images/music_player/Q02_QuickPanel_mini_music_player_controller_pause.png index 1dc6e15871bddaff608b602833a513c299ea27e1..de355df36ef2602a6b9b7379ac641dc8d77c91bb 100755 GIT binary patch delta 228 zcmdlX_CrjuGr-TCmrII^fq{Y7)59eQNNa#F2OE&=`L`o?qvCw7`o*3ujv*Dd-rU&8 z+iW1v`tW}H>>MXywNn*0HMCQ>Rr=bL7Cp4MDJ1y5bk2pxhdI0h?#$IbzN3OgB;Y{v zl>?Uf4>+g1z0t`3!K!j?h(C)3)8#xfbus0u$tOeC_09|1%UZy3Zr7KHPrlpTtlPFS zOnb1#yWcE}kyRwX0Zdpj{+D}kFmn356W4EwSNyqiX4BboYFC55Fb4zW-^>04I- delta 163 zcmew%wnI#@Gr-TCmrII^fq{Y7)59eQNHYR)00$e8ym4Iq_D03|TouWlE{-7;w~{J$ zF8^zP`Mdgai5dIu+&X&T$bkb4suGftfjcvF+}PCI*x1;eVOL z-4h9rJek?~mf*B)i{`aM`LaL@w7`D@Ccp#mHCHeKD&Piqnp+$TG+7fmcMp2NMWC_f zA@QW;m23gEQ|!wSRlrem%=kbK6n{XVIR^tl7QkL}PzS(sN`{&~NxBRj4BhIei=?8x z8M@_J{F$LYp&C9GI%uvH*Z@}`{C3mb77 zLsH7-52xVPtl$ec3sBY9Of9WEEP-3Hf{j!xTe=nQ0cYz}aAmLknrj{SjY fffi_i>#p|zKYBQm3h&-k00000NkvXXu0mjfVkd;x delta 290 zcmV+-0p0%J7qu55iBL{Q4GJ0x0000DNk~Le0000A0000k2nGNE01*#}ov|UF3V#6L zNkl42Z|7VLBjKeBc39NVv!2<{$KuM842QY`o1=3sT4Fti)dkBl{ zcACwy#9%Tr7NV#SV=K&CKYZ;cAq4FC=m;1BC%``M&44>#GP@ez%Ffxvv8vu@-7dD% zAxRPdoO9Go!(&Uq}o!Hm-z0>@83>zMccOAa@=v_;eZb4fDU*CzzBSGu4m<%0hlXuB2c9Q24L2? zO2tMq;2U^U@BwkkCxDsb^e!X-I(-*TV7J&jM5viLQ+@( zOW7zYaw=dgkXgq}a(PZv+i2mm3aZN^&#sk|z@%UW{3zfoU2RtI)lizK^k**x16K_H zSr`Lw3)ISWn=t_oz!X?1*4<0aeykEVzyf$usB?sTAJc<9MqPsy=ar-%<)?|`Ow#f4lIYt kDg1oU0Ugi*|2g3A0L-yR9OZM}u>b%707*qoM6N<$g7Jc`!vFvP delta 270 zcmV+p0rCEr7@-#-iBL{Q4GJ0x0000DNk~Le0000A0000k2nGNE01*#}ov|UF3V#61 zNkl>vsOX_dKw%|X_upqa9x&dG!Y&2t@ z)+isO&*zL4S>F!o#rd>w71KX)BOA!0L5TN Uj=MjnrvLx|07*qoM6N<$g3HlyssI20 diff --git a/images/music_player/Q02_QuickPanel_mini_music_player_gradient.png b/images/music_player/Q02_QuickPanel_mini_music_player_gradient.png new file mode 100755 index 0000000000000000000000000000000000000000..5dbdea5be961a083d06e627df57df213dc4ff5b8 GIT binary patch literal 3565 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 UuJP6ej`#`mwN12Ypbp`G2cTrCm;e9( literal 0 HcmV?d00001 diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_gradient_right.png b/images/music_player/Q02_Quickpanel_mini_music_player_gradient_right.png new file mode 100755 index 0000000000000000000000000000000000000000..b2000bbcc72f5e8e9875925123686392be51df4f GIT binary patch literal 25968 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 literal 0 HcmV?d00001 diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_repeat_all.png b/images/music_player/Q02_Quickpanel_mini_music_player_repeat_all.png new file mode 100755 index 0000000000000000000000000000000000000000..30cdbfa14be1b772ec201a9f5f765d52ea1c62f9 GIT binary patch literal 5514 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 literal 0 HcmV?d00001 diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_repeat_once.png b/images/music_player/Q02_Quickpanel_mini_music_player_repeat_once.png new file mode 100755 index 0000000000000000000000000000000000000000..0e162820c97e2a570803630a4ab3da733e994eaa GIT binary patch literal 5133 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 D`cOeT literal 0 HcmV?d00001 diff --git a/images/music_player/T02_Video_play.png b/images/music_player/T02_Video_play.png index d3024353f9800f332aaebb7c3582ef2562515ccb..d286f2c1768f14fe8b9c38a6321ececc816ba15d 100755 GIT binary patch literal 4396 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 literal 7095 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 diff --git a/images/music_player/T02_control_top_arrow.png b/images/music_player/T02_control_top_arrow.png deleted file mode 100755 index c98a7456152f7cd409611afec906cf87e5928d37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3123 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 N002ovPDHLkV1j}K)87C9 diff --git a/images/music_player/T02_nocomposers.png b/images/music_player/T02_nocomposers.png index e070abc079c0e4a435d8dcf52e64db39072f00ee..beeae21ec0640cf6e9444897fdb36902df0626b2 100755 GIT binary patch delta 5423 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 delta 8525 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 Yn*^RwKH28HaYzuT!L*^ZN-x9z3r)Fzk^lez diff --git a/images/music_player/T02_now_playing_bar.png b/images/music_player/T02_now_playing_bar.png index d9360d5ec4f2dad1074fddf63a825e64a9d7022b..04a27238d3b43f1beaa3890726f436d0f92b7025 100755 GIT binary patch delta 75 zcmZn``zks?oGXQcje&u|T_-AGqvCunQw2{K$B>F!NjIwg9I97iV`FOzOp*}(|KBlA@z>bH|T*=Z@dAQO7H^Q;30U3 z9;!+ls)|-6v`L-VI~=l0CQB0P&04rntzG>V8IasP+}fdCU=0!)Aj zFbM%Bzyz286JQboOn?b60Vco%n16%-3lxozVoIq$4lR4D*)Lol-`UxjJAQh4>ZRiz z53wAtLaymEV9GHSvDa#WDSHxnh52=KC={?p1zD>cgLWUWpLu3zwpYwJIdFV*>@l_C z5Ajcdxv*jYQM1`>ZEbD6jiTrcfG5tF3$68sv$L~z019KWa5BhO=WkhCK7WWP*v3FL z0JH$K0c`gB{f|dSM|634Np4(RT+rd+A@%$H_W(L(ObbBMZ0qVYY&Hh*SOKuu7;OXC z>~^~^_V)H@Rg6X>+TGoyBuSnD*fe8Pv-#?D06YSam~#pOEUKu6S#U`l$4@(*&dLF4 znxfrqBTdsDGibMlr%uye%6}{F*0m}6)@+lAn)e-86h&%)5rCYXqpuFHiKuJQ=XEU6 zTDMBn)0Q!+opbcnnXtQRkm6rehS@u0qfBNHQDThd%-lLU@sc@PEi=p-O-hVU%sIs@ z%VGeDhfd6D80ucbeqWYE6qn2lYqVg%Vo#mOnfTUz;%YOk%wj;~e18n`)rmvHsyf3s zw6egWCGgkLc^Jz(M5Icdk6N-w;G+{f!>R_RYN8-wp-ph@R zjaN|=JqPRSDvILU?d|R7>+9>U0Db`Y31Ea-t3YD3d~|M&)_)klgotzX$9lWAi(Pre5a8fHj(% z_YBQ;hiN~=1oI6fK00G_T-UvZ*}GJ3%-vzuGC9WVF}}@=iOHy;*^iwX1~a~_&g7v0 zvpuHPgkq+~n18hbfPopC&0dQ6f@y@0PVo?c@w+6PxfE|d;>Qb?5xFxD<1=+1omx*T zY{#-*P}d49?vW@Q!`jJ;MU&w&Iy&UXqpE6{+Xl{!^2>`B%U8Usfuw(&IfGY_w0VcpC1egF5U;<2lNeD0j cR&D$m015JKS|;+G3jhEB07*qoM6N<$g88Qk)c^nh delta 126 zcmaDPJ4sBjGr-TCmrII^fq{Y7)59eQNb`U&2OE$KD~)-+QE?tuFoUh9i(^Q|tv8bv z3Nk4094YcSwoG=VGAm=799z4Bnf&(^4^=D|Jo~h;$$D>3^+yxEp9iHGw_le4n(_ZX ZGlMN#$e-Gezu19X22WQ%mvv4FO#t?9DRKY+ diff --git a/images/music_player/T02_now_playing_icon_play.png b/images/music_player/T02_now_playing_icon_play.png index df51d7766e4e9be9a0094329469a0deba0972a05..fb9014c5adbbb92ba97fb776af7c93d60146ab34 100755 GIT binary patch delta 1497 zcmV;~1t$8v7UCcwiBL{Q4GJ0x0000DNk~Le0000?0000?2nGNE0LPb6E3qM-3V#KS zNkl#mxjkMEh)@)q02M;DD=*_s{WWt4iz~v|h{sOv3 zvt;(Ro6;B$MA}3T8cu2ggtpn0XbdJUBu#8XaS%#>(@xvh1MlF=?6kDY6gu>Ml1Uqw z4!j?p_kEvv=S3idfJf_L;RGCvgMV=_4#vTFa4-(W!8jNPA zwX_3gb}%b#_yB-c0F0<$YGg7QGCMm>A_uPus+)8K>#BFoLVq7 z5{ZNg7a1EHyAR+s07C$7(0^<6w*qH&uzs3dw*ZVDkKy`YYD6LtGBq{D!i~`E9H3ph zpJuKuoSDHav^(9T+2R6l=PWQ5Zen7Bh@!YOIy!oleh5ekLK z`1m*xMRCdLbbdxBhd~DJg&EbXU{>0oAplMQw*h?6E*J~v^ZAI|?SFnWJUo0Cz^g{U zbsLzCj$dy8xC7wBmj%<7B5t?)kU1Uxm+%i&*z^5$ZL)QfD(W*16J2O2ff;0 z(P$KsBw=-R^?&a|p%6=_)6XbOkwGdluO*sg3eB#X2JLEssU^bV;$nh$3j&u3#t=f+AT~q+PG6C!rI!}R-sT>KR7t}l{WmS!GK<7uoRtfigcpRx{M5C zvrADF<$t^B>FLjxmzOsSg~HGK`}!+L|;Cv?+*ewp`@LNgrpe6QCFGlgMwSg!>C zZ!R_t#=$rk2jgHoI2Z@xU>uBt@!(+X#(x699Mo| z8smBE1zgz-buTWa92Be*=s%Gf^SbEJeK}Qwsd>UTj~UOnn5zHx+&wL1&| diff --git a/images/music_player/T02_option_SA.png b/images/music_player/T02_option_SA.png new file mode 100755 index 0000000000000000000000000000000000000000..085afb920add95f51faa9cdd2b12e8a60a1cdcd6 GIT binary patch literal 1967 zcmaJ?Yfuwc7>zuFQXW z5gu%7&9J7?XtvT2Q4}?YncmrSYP?n!=|)WpNpTz*jV6;>avY`!m1q(SND+Ao90kjj z*%{riAB|?tRK>)Rak4PJ0!3JI6NaThFp5p1`2}b&xgrfFfh0IZr4}%swzM$;l~Tam zz?FeAEC^0jg=ld&S{ojt(55MPN@jpR;HTkJ0tigX0S%I_Ciofwb4r&_txel(CNKpd z(*(?aOvT9}fFKly0WJ&lP=MYL;O)hNyg;58&mG`^5Xgo&Y|zI80{L7YJ_rG?A10Lz zS0?kLM3UFJs7Sy}B}t6WW@lw(v9df_D4xQGcsw2(F=QiZAklcGEc%_Id(%IQBPAlMsOHSzkGr~_kb7V0IKtpqaRWy0~N)Q!0!fgu`+Y#bZ!3efkt5Qc)5mQc(;DisrH)V1r7n zM6-w~yiCTIstHoAR=`q`fJrH^R4OH(3klZ*33(hJF(iZ_YVhK5cw8P&;u$0s`*MWS zToJ0sL|`>J%~ihTdd|o-wE}`snME+J+5#&jIEnyMCG%A?djV(Ed(BnO>;;;U%cjh* zO&9yGi=N)1y2rG9)3#Lbrtx7l)$KUd)-Anilt!~~k&1*dnjan?*{+P0J72qF=!V@P z*1K7yy}A;ed)-)Y4<~eAT}h-Q{zSmMU9VJ5@h2SjeOt6j(sx}HT~u=V(a1>gX~&F% zELExD`4Ex0$$0VU)?c#+n~XmS>=Td|M<$w$#2w@J6PMf~UB9$Ae5pomVNjf(>7q&$$4}i;q`K>^48dkSq=}+4UbFo8?HL@^bamvP+E^I zE;%zgxx4U}B@Bf!^+?j0;_qSSH{Yx1Tw$9@~EDkW+kK!W3x}Jh#A9M`)0`>WqLQ0c&A}_X-y)^U! z$6Weyx*N-LF6Z>;w0*JDfb5LVAi6_)qf^T9We)8OF>S)8e(29*d#hpYLYtxI^Up18 z9O-mR#$~zLNOhTG|F+KHb00Mr$~QN>*SKhG4@dVkyW`4=F3&pM<-*Le0oSzS7RpG- z9P@<3p;xDBO1_b7J5V^>rR>HZOjtIb8PfYM@BTQN9Q#xjH-Fz4Iw!XGW+xD)w#DF z+>9-(H2QtZ=Ehs{x-kOdy22Pjt>?xQV*tVd>KIWw)?K-{MQE=*Z1T&&777yx`+3u!pz?E3zdq) KMQ7I}=KT$0+YWyK literal 0 HcmV?d00001 diff --git a/images/music_player/T02_option_SA_off.png b/images/music_player/T02_option_SA_off.png new file mode 100755 index 0000000000000000000000000000000000000000..ff4be96b7ec71442fc3ce723895fefcf9de9694a GIT binary patch literal 1156 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 I=akR{0I26Nr2qf` literal 4122 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 Q3M#ifUHx3vIVCg!06#HMHUIzs literal 3869 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 literal 4360 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