sync with tizen_2.0
authorJinkun Jang <jinkun.jang@samsung.com>
Mon, 1 Apr 2013 04:32:12 +0000 (13:32 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Mon, 1 Apr 2013 04:32:12 +0000 (13:32 +0900)
377 files changed:
CMakeLists.txt [new file with mode: 0644]
LICENSE.Flora [new file with mode: 0644]
NOTICE.Flora [new file with mode: 0644]
data/music-player.uri [new file with mode: 0644]
data/org.tizen.music-player.desktop.in [new file with mode: 0644]
data/org.tizen.music-player.png [new file with mode: 0755]
images/music_player/00_EditField_clear.png [new file with mode: 0644]
images/music_player/00_list_group_bg.png [new file with mode: 0644]
images/music_player/00_list_group_bg_bottom.png [new file with mode: 0644]
images/music_player/00_list_group_bg_bottom_press.png [new file with mode: 0644]
images/music_player/00_list_group_bg_center.png [new file with mode: 0644]
images/music_player/00_list_group_bg_center_press.png [new file with mode: 0644]
images/music_player/00_list_group_bg_press.png [new file with mode: 0644]
images/music_player/00_list_group_bg_top.png [new file with mode: 0644]
images/music_player/00_list_group_bg_top_press.png [new file with mode: 0644]
images/music_player/00_slider_handle.png [new file with mode: 0644]
images/music_player/00_slider_handle_dim.png [new file with mode: 0644]
images/music_player/00_slider_handle_press.png [new file with mode: 0644]
images/music_player/00_slider_popup_bg.png [new file with mode: 0644]
images/music_player/00_sweep_list_bg.png [new file with mode: 0644]
images/music_player/00_winset_Back.png [new file with mode: 0644]
images/music_player/00_winset_Back_btn_normal.png [new file with mode: 0644]
images/music_player/00_winset_Back_btn_press.png [new file with mode: 0644]
images/music_player/00_winset_control_toolbar_bg.png [new file with mode: 0644]
images/music_player/00_winset_control_top_arrow.png [new file with mode: 0644]
images/music_player/00_winset_control_top_bg.png [new file with mode: 0644]
images/music_player/00_winset_list_progress_bar.png [new file with mode: 0644]
images/music_player/00_winset_list_progress_bg.png [new file with mode: 0644]
images/music_player/00_winset_thumbs_bg.png [new file with mode: 0644]
images/music_player/00_winset_thumbs_focus_bg.png [new file with mode: 0644]
images/music_player/00_winset_toolbar_press.png [new file with mode: 0644]
images/music_player/01_list_reorder_bg_above.png [new file with mode: 0644]
images/music_player/01_list_reorder_bg_below.png [new file with mode: 0644]
images/music_player/01_list_selectall_bg.png [new file with mode: 0644]
images/music_player/01_search_button.png [new file with mode: 0644]
images/music_player/01_search_input_bg.png [new file with mode: 0644]
images/music_player/01_search_input_field_bg_c.png [new file with mode: 0644]
images/music_player/01_search_input_field_bg_l.png [new file with mode: 0644]
images/music_player/01_search_input_field_bg_r.png [new file with mode: 0644]
images/music_player/01_search_input_icon_bg.png [new file with mode: 0644]
images/music_player/02_controlbar_icon_synchronise_start_sync.png [new file with mode: 0644]
images/music_player/34_header_thumb_bg.png [new file with mode: 0644]
images/music_player/39_mini_controller_icon_ff.png [new file with mode: 0644]
images/music_player/39_mini_controller_icon_pause.png [new file with mode: 0644]
images/music_player/39_mini_controller_icon_play.png [new file with mode: 0644]
images/music_player/39_mini_controller_icon_rew.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_album_shadow_bg.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_bg.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_music_album_number_bg.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_music_expand_circle_bg.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_music_expand_circle_close.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_music_expand_circle_open.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_music_player_back_button.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_music_player_back_button_icon.png [new file with mode: 0644]
images/music_player/T02_OptionHeader_btn_press.png [new file with mode: 0644]
images/music_player/T02_Option_header_bt.png [new file with mode: 0644]
images/music_player/T02_Option_header_bt_press.png [new file with mode: 0644]
images/music_player/T02_Page_bg.png [new file with mode: 0644]
images/music_player/T02_Video_play.png [new file with mode: 0644]
images/music_player/T02_album_bar.png [new file with mode: 0644]
images/music_player/T02_btn_Back.png [new file with mode: 0644]
images/music_player/T02_controller_btn.png [new file with mode: 0644]
images/music_player/T02_controller_btn_press.png [new file with mode: 0644]
images/music_player/T02_controls_bg_shadow.png [new file with mode: 0644]
images/music_player/T02_icon_soundPath.png [new file with mode: 0644]
images/music_player/T02_music_player_circle_bg.png [new file with mode: 0644]
images/music_player/T02_music_player_circle_pause.png [new file with mode: 0644]
images/music_player/T02_music_player_circle_play.png [new file with mode: 0644]
images/music_player/T02_navigation_tabbar_bg.png [new file with mode: 0644]
images/music_player/T02_navigation_tabbar_focus.png [new file with mode: 0644]
images/music_player/T02_nocomposers.png [new file with mode: 0644]
images/music_player/T02_now_playing_bar.png [new file with mode: 0644]
images/music_player/T02_now_playing_icon_pause.png [new file with mode: 0644]
images/music_player/T02_now_playing_icon_play.png [new file with mode: 0644]
images/music_player/T02_now_playing_progress_bar.png [new file with mode: 0644]
images/music_player/T02_now_playing_progress_bg.png [new file with mode: 0644]
images/music_player/T02_option_SA.png [new file with mode: 0644]
images/music_player/T02_option_SA_focus.png [new file with mode: 0644]
images/music_player/T02_option_SA_press.png [new file with mode: 0644]
images/music_player/T02_option_add_playlist.png [new file with mode: 0644]
images/music_player/T02_option_bg.png [new file with mode: 0644]
images/music_player/T02_option_favorite_off.png [new file with mode: 0644]
images/music_player/T02_option_favorite_on.png [new file with mode: 0644]
images/music_player/T02_option_rep_1.png [new file with mode: 0644]
images/music_player/T02_option_rep_A.png [new file with mode: 0644]
images/music_player/T02_option_rep_all.png [new file with mode: 0644]
images/music_player/T02_option_shuffle_off.png [new file with mode: 0644]
images/music_player/T02_option_shuffle_on.png [new file with mode: 0644]
images/music_player/T02_square_bg.png [new file with mode: 0644]
images/music_player/T02_square_cell_bg.png [new file with mode: 0644]
images/music_player/T02_square_cell_bg_horizontal.png [new file with mode: 0644]
images/music_player/T02_square_cell_press.png [new file with mode: 0644]
images/music_player/T02_title_bg.png [new file with mode: 0644]
images/music_player/T02_title_icon_nearby_device.png [new file with mode: 0644]
images/music_player/T02_title_icon_sound_path.png [new file with mode: 0644]
images/music_player/T02_volume.png [new file with mode: 0644]
images/music_player/T02_volume_icon_01.png [new file with mode: 0644]
images/music_player/T02_volume_icon_02.png [new file with mode: 0644]
images/music_player/T02_winset_btn_Back.png [new file with mode: 0644]
images/music_player/T02_youtube.png [new file with mode: 0644]
images/music_player/allshare_dmr_icon.png [new file with mode: 0644]
images/music_player/copy&paste_Icon_left.png [new file with mode: 0644]
images/music_player/copy&paste_Icon_left_press.png [new file with mode: 0644]
images/music_player/copy&paste_Icon_left_top.png [new file with mode: 0644]
images/music_player/copy&paste_Icon_left_top_press.png [new file with mode: 0644]
images/music_player/copy&paste_Icon_right.png [new file with mode: 0644]
images/music_player/copy&paste_Icon_right_press.png [new file with mode: 0644]
images/music_player/copy&paste_Icon_right_top.png [new file with mode: 0644]
images/music_player/copy&paste_Icon_right_top_press.png [new file with mode: 0644]
images/music_player/mini_app/T01_btn_apps_close.png [new file with mode: 0644]
images/music_player/mini_app/T02_control_icon_apps.png [new file with mode: 0644]
images/music_player/mini_controller/quick_albumart_mask.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_large_bg_normal.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_large_bg_press.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_next_nor.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_next_press.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_pause_nor.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_pause_press.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_play_nor.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_play_press.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_prev_nor.png [new file with mode: 0644]
images/music_player/mini_controller/quick_btn_music_prev_press.png [new file with mode: 0644]
images/music_player/mini_controller/quick_icon_bg.png [new file with mode: 0644]
images/music_player/music_icon_mute.png [new file with mode: 0644]
images/music_player/music_play_square_bg.9.png [new file with mode: 0644]
images/music_player/music_player_bg.PNG [new file with mode: 0644]
images/music_player/music_popup_mute.png [new file with mode: 0644]
images/music_player/player/12_music_player_bg_01.PNG [new file with mode: 0644]
images/music_player/player/12_music_player_control_bg.png [new file with mode: 0644]
images/music_player/player/12_music_player_control_bg_h.png [new file with mode: 0644]
images/music_player/player/T02_Album_art_image_Shadow.png [new file with mode: 0644]
images/music_player/player/T02_Play_btn__play.png [new file with mode: 0644]
images/music_player/player/T02_Play_btn__play_press.png [new file with mode: 0644]
images/music_player/player/T02_Play_btn_next.png [new file with mode: 0644]
images/music_player/player/T02_Play_btn_next_press.png [new file with mode: 0644]
images/music_player/player/T02_Play_btn_pause.png [new file with mode: 0644]
images/music_player/player/T02_Play_btn_pause_press.png [new file with mode: 0644]
images/music_player/player/T02_Play_btn_previou_press.png [new file with mode: 0644]
images/music_player/player/T02_Play_btn_previous.png [new file with mode: 0644]
images/music_player/player/T02_controller_icon_back.png [new file with mode: 0644]
images/music_player/player/T02_controller_icon_volume.png [new file with mode: 0644]
images/music_player/player/T02_function_btn_focus.png [new file with mode: 0644]
images/music_player/player/T02_function_btn_press.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_details.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_details_focus.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_details_press.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_set.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_set_focus.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_set_press.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_settings.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_settings_focus.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_settings_press.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_share.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_share_focus.png [new file with mode: 0644]
images/music_player/player/T02_function_icon_share_press.png [new file with mode: 0644]
images/music_player/player/T02_option_favorite_off.png [new file with mode: 0644]
images/music_player/player/T02_option_favorite_on.png [new file with mode: 0644]
images/music_player/player/T02_volume_icon_Mute.png [new file with mode: 0644]
images/music_player/progress_bar/T02_player_progress_bar.png [new file with mode: 0644]
images/music_player/progress_bar/T02_player_progress_bg.png [new file with mode: 0644]
images/music_player/progress_bar/T02_player_progress_point.png [new file with mode: 0644]
images/music_player/separator_v.png [new file with mode: 0644]
images/music_player/storage_type/T02_external_storage_02.png [new file with mode: 0644]
images/music_player/storage_type/T02_memory_card_02.png [new file with mode: 0644]
images/music_player/storage_type/T02_phone_02.png [new file with mode: 0644]
images/music_player/volume/00_popup_bg.png [new file with mode: 0644]
images/sounds/button-pressed.wav [new file with mode: 0644]
include/mp-common-defs.h [new file with mode: 0644]
include/mp-images.h [new file with mode: 0644]
include/mp-vconf-private-keys.h [new file with mode: 0644]
layout/edc_image_macro.edc [new file with mode: 0644]
layout/genlist/genlist.edc [new file with mode: 0644]
layout/genlist/genlist_macro.edc [new file with mode: 0644]
layout/genlist/genlist_normal.edc [new file with mode: 0644]
layout/mp-3d-view.edc [new file with mode: 0644]
layout/mp-button.edc [new file with mode: 0644]
layout/mp-custom-winset-style.edc [new file with mode: 0644]
layout/mp-defines.h [new file with mode: 0644]
layout/mp-edit-navi.edc [new file with mode: 0644]
layout/mp-editfield.edc [new file with mode: 0644]
layout/mp-gengrid-style.edc [new file with mode: 0644]
layout/mp-genlist-edit.edc [new file with mode: 0644]
layout/mp-genlist-sweep.edc [new file with mode: 0644]
layout/mp-genlist-theme.edc [new file with mode: 0644]
layout/mp-images.edc [new file with mode: 0644]
layout/mp-library.edc [new file with mode: 0755]
layout/mp-lrc.edc [new file with mode: 0644]
layout/mp-minicontroller.edc [new file with mode: 0644]
layout/mp-naviframe.edc [new file with mode: 0644]
layout/mp-no-contents.edc [new file with mode: 0644]
layout/mp-play-control.edc [new file with mode: 0644]
layout/mp-play-current-playing.edc [new file with mode: 0644]
layout/mp-play-info.edc [new file with mode: 0644]
layout/mp-play-menu.edc [new file with mode: 0644]
layout/mp-play-mini-app.edc [new file with mode: 0644]
layout/mp-play-option.edc [new file with mode: 0644]
layout/mp-play-progress.edc [new file with mode: 0644]
layout/mp-play-vew-landscape.edc [new file with mode: 0644]
layout/mp-play-view.edc [new file with mode: 0644]
layout/mp-progressbar.edc [new file with mode: 0644]
layout/mp-rich-info.edc [new file with mode: 0644]
layout/mp-selection-info.edc [new file with mode: 0644]
layout/mp-slider.edc [new file with mode: 0644]
layout/mp-square-view.edc [new file with mode: 0644]
layout/mp-toolbar.edc [new file with mode: 0644]
layout/mp_genlist_define.edc [new file with mode: 0644]
layout/mp_genlist_macro.edc [new file with mode: 0644]
layout/music.edc [new file with mode: 0644]
layout/tizen-hd-inc.edc [new file with mode: 0644]
org.tizen.music-player.manifest [new file with mode: 0644]
org.tizen.music-player.xml [new file with mode: 0755]
packaging/org.tizen.music-player.spec [new file with mode: 0644]
po/CMakeLists.txt [new file with mode: 0644]
po/ar.po [new file with mode: 0644]
po/az.po [new file with mode: 0644]
po/bg.po [new file with mode: 0644]
po/ca.po [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
po/da.po [new file with mode: 0644]
po/de_DE.po [new file with mode: 0644]
po/el_GR.po [new file with mode: 0644]
po/en.po [new file with mode: 0644]
po/en_PH.po [new file with mode: 0644]
po/en_US.po [new file with mode: 0644]
po/es_ES.po [new file with mode: 0644]
po/es_MX.po [new file with mode: 0644]
po/et.po [new file with mode: 0644]
po/eu.po [new file with mode: 0644]
po/fi.po [new file with mode: 0644]
po/fr_CA.po [new file with mode: 0644]
po/fr_FR.po [new file with mode: 0644]
po/ga.po [new file with mode: 0644]
po/gl.po [new file with mode: 0644]
po/hi.po [new file with mode: 0644]
po/hr.po [new file with mode: 0644]
po/hu.po [new file with mode: 0644]
po/hy.po [new file with mode: 0644]
po/is.po [new file with mode: 0644]
po/it_IT.po [new file with mode: 0644]
po/ja_JP.po [new file with mode: 0644]
po/ka.po [new file with mode: 0644]
po/kk.po [new file with mode: 0644]
po/ko_KR.po [new file with mode: 0644]
po/lt.po [new file with mode: 0644]
po/lv.po [new file with mode: 0644]
po/mk.po [new file with mode: 0644]
po/nb.po [new file with mode: 0644]
po/nl_NL.po [new file with mode: 0644]
po/pl.po [new file with mode: 0644]
po/pt_BR.po [new file with mode: 0644]
po/pt_PT.po [new file with mode: 0644]
po/ro.po [new file with mode: 0644]
po/ru_RU.po [new file with mode: 0644]
po/sk.po [new file with mode: 0644]
po/sl.po [new file with mode: 0644]
po/sr.po [new file with mode: 0644]
po/sv.po [new file with mode: 0644]
po/tr_TR.po [new file with mode: 0644]
po/uk.po [new file with mode: 0644]
po/uz.po [new file with mode: 0644]
po/zh_CN.po [new file with mode: 0644]
po/zh_HK.po [new file with mode: 0644]
po/zh_SG.po [new file with mode: 0644]
po/zh_TW.po [new file with mode: 0644]
sound-player/CMakeLists.txt [new file with mode: 0644]
sound-player/org.tizen.sound-player.desktop.in [new file with mode: 0644]
sound-player/org.tizen.sound-player.png [new file with mode: 0755]
sound-player/src/include/sp-view-manager.h [new file with mode: 0644]
sound-player/src/sp-view-manager.c [new file with mode: 0644]
src/common/include/mp-app.h [new file with mode: 0644]
src/common/include/mp-common.h [new file with mode: 0644]
src/common/include/mp-item.h [new file with mode: 0644]
src/common/include/mp-media-info.h [new file with mode: 0644]
src/common/include/mp-menu.h [new file with mode: 0644]
src/common/include/mp-play.h [new file with mode: 0644]
src/common/include/mp-ta.h [new file with mode: 0644]
src/common/include/mp-ug-launch.h [new file with mode: 0644]
src/common/include/mp-util.h [new file with mode: 0644]
src/common/include/mp-view-manager.h [new file with mode: 0644]
src/common/include/mp-widget.h [new file with mode: 0644]
src/common/mp-app.c [new file with mode: 0755]
src/common/mp-common.c [new file with mode: 0755]
src/common/mp-item.c [new file with mode: 0644]
src/common/mp-media-info.c [new file with mode: 0755]
src/common/mp-menu.c [new file with mode: 0755]
src/common/mp-play.c [new file with mode: 0644]
src/common/mp-ta.c [new file with mode: 0644]
src/common/mp-ug-launch.c [new file with mode: 0755]
src/common/mp-util.c [new file with mode: 0755]
src/common/mp-view-manager.c [new file with mode: 0755]
src/common/mp-widget.c [new file with mode: 0755]
src/core/include/mp-avrcp.h [new file with mode: 0644]
src/core/include/mp-file-tag-info.h [new file with mode: 0644]
src/core/include/mp-http-mgr.h [new file with mode: 0644]
src/core/include/mp-language-mgr.h [new file with mode: 0644]
src/core/include/mp-lyric-mgr.h [new file with mode: 0644]
src/core/include/mp-player-control.h [new file with mode: 0644]
src/core/include/mp-player-drm.h [new file with mode: 0644]
src/core/include/mp-player-mgr.h [new file with mode: 0644]
src/core/include/mp-playlist-mgr.h [new file with mode: 0644]
src/core/include/mp-setting-ctrl.h [new file with mode: 0644]
src/core/include/mp-streaming-mgr.h [new file with mode: 0644]
src/core/include/mp-volume.h [new file with mode: 0755]
src/core/mp-avrcp.c [new file with mode: 0644]
src/core/mp-file-tag-info.c [new file with mode: 0755]
src/core/mp-http-mgr.c [new file with mode: 0644]
src/core/mp-language-mgr.c [new file with mode: 0644]
src/core/mp-lyric-mgr.c [new file with mode: 0644]
src/core/mp-player-control.c [new file with mode: 0755]
src/core/mp-player-drm.c [new file with mode: 0644]
src/core/mp-player-mgr.c [new file with mode: 0644]
src/core/mp-playlist-mgr.c [new file with mode: 0644]
src/core/mp-setting-ctrl.c [new file with mode: 0755]
src/core/mp-streaming-mgr.c [new file with mode: 0644]
src/core/mp-volume.c [new file with mode: 0755]
src/include/mp-define.h [new file with mode: 0644]
src/include/mp-player-debug.h [new file with mode: 0644]
src/include/music.h [new file with mode: 0644]
src/mp-main.c [new file with mode: 0755]
src/view/include/mp-edit-view.h [new file with mode: 0644]
src/view/include/mp-group-view.h [new file with mode: 0644]
src/view/include/mp-library.h [new file with mode: 0644]
src/view/include/mp-lyric-view.h [new file with mode: 0644]
src/view/include/mp-play-view.h [new file with mode: 0644]
src/view/include/mp-playlist-view.h [new file with mode: 0644]
src/view/include/mp-track-view.h [new file with mode: 0644]
src/view/mp-edit-view.c [new file with mode: 0755]
src/view/mp-group-view.c [new file with mode: 0755]
src/view/mp-library.c [new file with mode: 0644]
src/view/mp-lyric-view.c [new file with mode: 0644]
src/view/mp-play-view.c [new file with mode: 0755]
src/view/mp-playlist-view.c [new file with mode: 0755]
src/view/mp-track-view.c [new file with mode: 0644]
src/widget/include/mp-ctxpopup.h [new file with mode: 0644]
src/widget/include/mp-minicontroller.h [new file with mode: 0644]
src/widget/include/mp-notification.h [new file with mode: 0644]
src/widget/include/mp-popup.h [new file with mode: 0644]
src/widget/include/mp-search.h [new file with mode: 0644]
src/widget/include/mp-smart-event-box.h [new file with mode: 0644]
src/widget/include/mp-view-layout.h [new file with mode: 0644]
src/widget/include/mp-volume-widget.h [new file with mode: 0644]
src/widget/mp-ctxpopup.c [new file with mode: 0644]
src/widget/mp-minicontroller.c [new file with mode: 0755]
src/widget/mp-popup.c [new file with mode: 0644]
src/widget/mp-search.c [new file with mode: 0755]
src/widget/mp-smart-event-box.c [new file with mode: 0644]
src/widget/mp-view-layout.c [new file with mode: 0644]
src/widget/mp-volume-widget.c [new file with mode: 0755]
target_images/music_player/00_winset_Back.png [new file with mode: 0644]
target_images/music_player/02_controlbar_icon_synchronise_start_sync.png [new file with mode: 0644]
target_images/music_player/34_mostplayed.png [new file with mode: 0644]
target_images/music_player/34_player_list_thum_noitems.png [new file with mode: 0644]
target_images/music_player/34_quicklist.png [new file with mode: 0644]
target_images/music_player/34_recentlyadded.png [new file with mode: 0644]
target_images/music_player/34_recentlyplayed.png [new file with mode: 0644]
target_images/music_player/34_thumb_07.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_add.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_add_to_playlist.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_all.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_artist.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_cancel.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_composer.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_delete.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_edit.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_folders.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_genres.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_music_albums.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_music_square.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_nearby_device.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_playlists.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_search.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_share.png [new file with mode: 0644]
target_images/music_player/T02_controlbar_icon_years.png [new file with mode: 0644]
target_images/music_player/T02_icon_allshare.png [new file with mode: 0644]
target_images/music_player/T02_music_player_image_shadow.png [new file with mode: 0644]
target_images/music_player/allshare/myfile_icon_folder.png [new file with mode: 0644]
target_images/music_player/default_folder.png [new file with mode: 0644]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a78cc21
--- /dev/null
@@ -0,0 +1,197 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(music-player C CXX)
+
+EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE CMAKE_SYSTEM_VERSION)
+message("Building by ${CMAKE_SYSTEM_VERSION} machine")
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(LIBDIR "${PREFIX}/lib")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "${DATA_PREFIX}/data")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(ICONDIR "${RESDIR}/icons/default/small")
+SET(EDJDIR "${RESDIR}/edje")
+
+message("CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}")
+message("PREFIX ${PREFIX}")
+message("BINDIR ${BINDIR}")
+message("DATADIR ${DATADIR}")
+
+SET(COMMON_SRCS
+       src/mp-main.c
+
+       src/core/mp-file-tag-info.c
+       src/core/mp-player-control.c
+       src/core/mp-player-mgr.c
+       src/core/mp-player-drm.c
+       src/core/mp-setting-ctrl.c
+       src/core/mp-streaming-mgr.c
+       src/core/mp-lyric-mgr.c
+       src/core/mp-avrcp.c
+       src/core/mp-volume.c
+       src/core/mp-http-mgr.c
+       src/core/mp-language-mgr.c
+       src/core/mp-playlist-mgr.c
+       src/common/mp-common.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
+       src/view/mp-group-view.c
+       src/view/mp-playlist-view.c
+       src/view/mp-play-view.c
+       src/view/mp-lyric-view.c
+       src/view/mp-edit-view.c
+       src/widget/mp-search.c
+       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-volume-widget.c
+       src/widget/mp-ctxpopup.c
+
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include
+       src/include
+       src/common/include
+       src/core/include
+       src/list/include
+       src/view/include
+       src/widget/include
+)
+
+SET(SRCS ${COMMON_SRCS} ${RICH_INFO_SRCS})
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+       elementary
+       ecore
+       dlog
+       drm-client
+       glib-2.0
+       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-sound-manager
+       capi-media-player
+       capi-media-metadata-extractor
+       capi-content-media-content
+       minicontrol-provider
+       capi-network-bluetooth
+       capi-system-system-settings
+       capi-system-media-key
+       utilX
+       status
+
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMACHINE_$ENV{MACHINE} -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64")
+
+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} -Xassembler -W -fPIC")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DPKG_NAME=\"${PKG_NAME}\"")
+ADD_DEFINITIONS("-DDATA_PREFIX=\"${DATA_PREFIX}\"")
+ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"")
+ADD_DEFINITIONS("-DDESKTOP_ICON=\"${CMAKE_DESKTOP_ICON_DIR}/${PKG_NAME}.png\"")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+
+MESSAGE("### CMAKE_SYSTEM_VERSION :: ${CMAKE_SYSTEM_VERSION} ###")
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -lm -ldl)
+
+ADD_CUSTOM_TARGET(mp-custom-winset-style.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/music_player -sd ${CMAKE_CURRENT_SOURCE_DIR}/images/sounds
+               ${CMAKE_SOURCE_DIR}/layout/mp-custom-winset-style.edc ${CMAKE_BINARY_DIR}/layout/mp-custom-winset-style.edj
+               DEPENDS ${CMAKE_SOURCE_DIR}/layout/mp-custom-winset-style.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} mp-custom-winset-style.edj)
+
+ADD_CUSTOM_TARGET(mp-library.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/music_player
+               ${CMAKE_SOURCE_DIR}/layout/mp-library.edc ${CMAKE_BINARY_DIR}/layout/mp-library.edj
+               DEPENDS ${CMAKE_SOURCE_DIR}/layout/mp-library.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} mp-library.edj)
+
+ADD_CUSTOM_TARGET(music.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/music_player
+               ${CMAKE_SOURCE_DIR}/layout/music.edc ${CMAKE_BINARY_DIR}/layout/music.edj
+               DEPENDS ${CMAKE_SOURCE_DIR}/layout/music.edc
+)
+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)
+
+ADD_CUSTOM_TARGET(mp-images.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/music_player
+               ${CMAKE_SOURCE_DIR}/layout/mp-images.edc ${CMAKE_BINARY_DIR}/layout/mp-images.edj
+               DEPENDS ${CMAKE_SOURCE_DIR}/layout/mp-images.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} mp-images.edj)
+
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DLIBDIR=\"${LIBDIR}\"")
+
+
+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-images.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-library.edj DESTINATION ${EDJDIR})
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+
+# install desktop file & icon
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/${PKG_NAME}.png DESTINATION ${CMAKE_DESKTOP_ICON_DIR})
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/target_images/music_player DESTINATION ${RESDIR}/images)
+
+#install xml file
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.music-player.xml DESTINATION ${DESKTOP_DIR}/packages)
+
+# i18n
+ADD_SUBDIRECTORY(po)
+
+# Sound Player
+ADD_SUBDIRECTORY(sound-player)
+
diff --git a/LICENSE.Flora b/LICENSE.Flora
new file mode 100644 (file)
index 0000000..cc8727b
--- /dev/null
@@ -0,0 +1,75 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies with the standards set forth in the Compatibility Definition Document and passes the Compatibility Test Suite as defined from time to time by the Tizen Technical Steering Group and certified by the Tizen Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work solely as incorporated into a Tizen Certified Platform, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work solely as incorporated into a Tizen Certified Platform to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof pursuant to the copyright license above, in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+  2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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://floralicense.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.
diff --git a/NOTICE.Flora b/NOTICE.Flora
new file mode 100644 (file)
index 0000000..1b25bce
--- /dev/null
@@ -0,0 +1,3 @@
+Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
+Except as noted, this software is licensed under Flora License, Version 1.0.
+Please, see the LICENSE.Flora file for Flora License, Version 1.0 terms and conditions.
diff --git a/data/music-player.uri b/data/music-player.uri
new file mode 100644 (file)
index 0000000..0c3707b
--- /dev/null
@@ -0,0 +1,2 @@
+(^( )*music-player:).*
+music player Shortcut Internal
\ No newline at end of file
diff --git a/data/org.tizen.music-player.desktop.in b/data/org.tizen.music-player.desktop.in
new file mode 100644 (file)
index 0000000..17c7731
--- /dev/null
@@ -0,0 +1,27 @@
+Name=Music
+Name[en_US]=Music
+Name[nl_NL]=Muziek
+Name[de_DE]=Musik
+Name[zh_HK]=音樂
+Name[zh_CN]=音乐
+Name[ru_RU]=Музыка
+Name[zh_TW]=音樂
+Name[ja_JP]=ミュージック
+Name[es_ES]=Música
+Name[el_GR]=Μουσική
+Name[it_IT]=Musica
+Name[tr_TR]=Müzik
+Name[pt_PT]=Música
+Name[fr_FR]=Musique
+Name[ko_KR]=음악
+Type=Application
+Exec=${PREFIX}/bin/music-player
+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=music-player.uri;
+Nodisplay=False
diff --git a/data/org.tizen.music-player.png b/data/org.tizen.music-player.png
new file mode 100755 (executable)
index 0000000..d961a4c
Binary files /dev/null and b/data/org.tizen.music-player.png differ
diff --git a/images/music_player/00_EditField_clear.png b/images/music_player/00_EditField_clear.png
new file mode 100644 (file)
index 0000000..79b89f1
Binary files /dev/null and b/images/music_player/00_EditField_clear.png differ
diff --git a/images/music_player/00_list_group_bg.png b/images/music_player/00_list_group_bg.png
new file mode 100644 (file)
index 0000000..1260007
Binary files /dev/null and b/images/music_player/00_list_group_bg.png differ
diff --git a/images/music_player/00_list_group_bg_bottom.png b/images/music_player/00_list_group_bg_bottom.png
new file mode 100644 (file)
index 0000000..8e77e65
Binary files /dev/null and b/images/music_player/00_list_group_bg_bottom.png differ
diff --git a/images/music_player/00_list_group_bg_bottom_press.png b/images/music_player/00_list_group_bg_bottom_press.png
new file mode 100644 (file)
index 0000000..0b676c0
Binary files /dev/null and b/images/music_player/00_list_group_bg_bottom_press.png differ
diff --git a/images/music_player/00_list_group_bg_center.png b/images/music_player/00_list_group_bg_center.png
new file mode 100644 (file)
index 0000000..b8811e3
Binary files /dev/null and b/images/music_player/00_list_group_bg_center.png differ
diff --git a/images/music_player/00_list_group_bg_center_press.png b/images/music_player/00_list_group_bg_center_press.png
new file mode 100644 (file)
index 0000000..ea8ddd9
Binary files /dev/null and b/images/music_player/00_list_group_bg_center_press.png differ
diff --git a/images/music_player/00_list_group_bg_press.png b/images/music_player/00_list_group_bg_press.png
new file mode 100644 (file)
index 0000000..8da1a99
Binary files /dev/null and b/images/music_player/00_list_group_bg_press.png differ
diff --git a/images/music_player/00_list_group_bg_top.png b/images/music_player/00_list_group_bg_top.png
new file mode 100644 (file)
index 0000000..5df3c01
Binary files /dev/null and b/images/music_player/00_list_group_bg_top.png differ
diff --git a/images/music_player/00_list_group_bg_top_press.png b/images/music_player/00_list_group_bg_top_press.png
new file mode 100644 (file)
index 0000000..871c8ac
Binary files /dev/null and b/images/music_player/00_list_group_bg_top_press.png differ
diff --git a/images/music_player/00_slider_handle.png b/images/music_player/00_slider_handle.png
new file mode 100644 (file)
index 0000000..b58aac1
Binary files /dev/null and b/images/music_player/00_slider_handle.png differ
diff --git a/images/music_player/00_slider_handle_dim.png b/images/music_player/00_slider_handle_dim.png
new file mode 100644 (file)
index 0000000..0356aa4
Binary files /dev/null and b/images/music_player/00_slider_handle_dim.png differ
diff --git a/images/music_player/00_slider_handle_press.png b/images/music_player/00_slider_handle_press.png
new file mode 100644 (file)
index 0000000..a7f0a3a
Binary files /dev/null and b/images/music_player/00_slider_handle_press.png differ
diff --git a/images/music_player/00_slider_popup_bg.png b/images/music_player/00_slider_popup_bg.png
new file mode 100644 (file)
index 0000000..0aad395
Binary files /dev/null and b/images/music_player/00_slider_popup_bg.png differ
diff --git a/images/music_player/00_sweep_list_bg.png b/images/music_player/00_sweep_list_bg.png
new file mode 100644 (file)
index 0000000..1606042
Binary files /dev/null and b/images/music_player/00_sweep_list_bg.png differ
diff --git a/images/music_player/00_winset_Back.png b/images/music_player/00_winset_Back.png
new file mode 100644 (file)
index 0000000..780e24e
Binary files /dev/null and b/images/music_player/00_winset_Back.png differ
diff --git a/images/music_player/00_winset_Back_btn_normal.png b/images/music_player/00_winset_Back_btn_normal.png
new file mode 100644 (file)
index 0000000..cb7ca0b
Binary files /dev/null and b/images/music_player/00_winset_Back_btn_normal.png differ
diff --git a/images/music_player/00_winset_Back_btn_press.png b/images/music_player/00_winset_Back_btn_press.png
new file mode 100644 (file)
index 0000000..7032b70
Binary files /dev/null and b/images/music_player/00_winset_Back_btn_press.png differ
diff --git a/images/music_player/00_winset_control_toolbar_bg.png b/images/music_player/00_winset_control_toolbar_bg.png
new file mode 100644 (file)
index 0000000..c46882d
Binary files /dev/null and b/images/music_player/00_winset_control_toolbar_bg.png differ
diff --git a/images/music_player/00_winset_control_top_arrow.png b/images/music_player/00_winset_control_top_arrow.png
new file mode 100644 (file)
index 0000000..2d0503d
Binary files /dev/null and b/images/music_player/00_winset_control_top_arrow.png differ
diff --git a/images/music_player/00_winset_control_top_bg.png b/images/music_player/00_winset_control_top_bg.png
new file mode 100644 (file)
index 0000000..187516e
Binary files /dev/null and b/images/music_player/00_winset_control_top_bg.png differ
diff --git a/images/music_player/00_winset_list_progress_bar.png b/images/music_player/00_winset_list_progress_bar.png
new file mode 100644 (file)
index 0000000..9d979e2
Binary files /dev/null and b/images/music_player/00_winset_list_progress_bar.png differ
diff --git a/images/music_player/00_winset_list_progress_bg.png b/images/music_player/00_winset_list_progress_bg.png
new file mode 100644 (file)
index 0000000..3cece50
Binary files /dev/null and b/images/music_player/00_winset_list_progress_bg.png differ
diff --git a/images/music_player/00_winset_thumbs_bg.png b/images/music_player/00_winset_thumbs_bg.png
new file mode 100644 (file)
index 0000000..d70df33
Binary files /dev/null and b/images/music_player/00_winset_thumbs_bg.png differ
diff --git a/images/music_player/00_winset_thumbs_focus_bg.png b/images/music_player/00_winset_thumbs_focus_bg.png
new file mode 100644 (file)
index 0000000..3f0e9c4
Binary files /dev/null and b/images/music_player/00_winset_thumbs_focus_bg.png differ
diff --git a/images/music_player/00_winset_toolbar_press.png b/images/music_player/00_winset_toolbar_press.png
new file mode 100644 (file)
index 0000000..172f666
Binary files /dev/null and b/images/music_player/00_winset_toolbar_press.png differ
diff --git a/images/music_player/01_list_reorder_bg_above.png b/images/music_player/01_list_reorder_bg_above.png
new file mode 100644 (file)
index 0000000..e28d15b
Binary files /dev/null and b/images/music_player/01_list_reorder_bg_above.png differ
diff --git a/images/music_player/01_list_reorder_bg_below.png b/images/music_player/01_list_reorder_bg_below.png
new file mode 100644 (file)
index 0000000..7c59977
Binary files /dev/null and b/images/music_player/01_list_reorder_bg_below.png differ
diff --git a/images/music_player/01_list_selectall_bg.png b/images/music_player/01_list_selectall_bg.png
new file mode 100644 (file)
index 0000000..7f21fd9
Binary files /dev/null and b/images/music_player/01_list_selectall_bg.png differ
diff --git a/images/music_player/01_search_button.png b/images/music_player/01_search_button.png
new file mode 100644 (file)
index 0000000..4367026
Binary files /dev/null and b/images/music_player/01_search_button.png differ
diff --git a/images/music_player/01_search_input_bg.png b/images/music_player/01_search_input_bg.png
new file mode 100644 (file)
index 0000000..f0cd0ef
Binary files /dev/null and b/images/music_player/01_search_input_bg.png differ
diff --git a/images/music_player/01_search_input_field_bg_c.png b/images/music_player/01_search_input_field_bg_c.png
new file mode 100644 (file)
index 0000000..f26921e
Binary files /dev/null and b/images/music_player/01_search_input_field_bg_c.png differ
diff --git a/images/music_player/01_search_input_field_bg_l.png b/images/music_player/01_search_input_field_bg_l.png
new file mode 100644 (file)
index 0000000..5071e4a
Binary files /dev/null and b/images/music_player/01_search_input_field_bg_l.png differ
diff --git a/images/music_player/01_search_input_field_bg_r.png b/images/music_player/01_search_input_field_bg_r.png
new file mode 100644 (file)
index 0000000..f26914e
Binary files /dev/null and b/images/music_player/01_search_input_field_bg_r.png differ
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 100644 (file)
index 0000000..8c8a940
Binary files /dev/null and b/images/music_player/01_search_input_icon_bg.png differ
diff --git a/images/music_player/02_controlbar_icon_synchronise_start_sync.png b/images/music_player/02_controlbar_icon_synchronise_start_sync.png
new file mode 100644 (file)
index 0000000..e91d2e4
Binary files /dev/null and b/images/music_player/02_controlbar_icon_synchronise_start_sync.png differ
diff --git a/images/music_player/34_header_thumb_bg.png b/images/music_player/34_header_thumb_bg.png
new file mode 100644 (file)
index 0000000..61614c5
Binary files /dev/null and b/images/music_player/34_header_thumb_bg.png differ
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 100644 (file)
index 0000000..b6cf388
Binary files /dev/null and b/images/music_player/39_mini_controller_icon_ff.png differ
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 100644 (file)
index 0000000..ba52316
Binary files /dev/null and b/images/music_player/39_mini_controller_icon_pause.png differ
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 100644 (file)
index 0000000..9d78350
Binary files /dev/null and b/images/music_player/39_mini_controller_icon_play.png differ
diff --git a/images/music_player/39_mini_controller_icon_rew.png b/images/music_player/39_mini_controller_icon_rew.png
new file mode 100644 (file)
index 0000000..7de136f
Binary files /dev/null and b/images/music_player/39_mini_controller_icon_rew.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_album_shadow_bg.png b/images/music_player/Cover_flow/T02_cover_flow_album_shadow_bg.png
new file mode 100644 (file)
index 0000000..2a71b60
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_album_shadow_bg.png differ
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 (file)
index 0000000..935621f
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_bg.png differ
diff --git a/images/music_player/Cover_flow/T02_music_album_number_bg.png b/images/music_player/Cover_flow/T02_music_album_number_bg.png
new file mode 100644 (file)
index 0000000..590e5ee
Binary files /dev/null and b/images/music_player/Cover_flow/T02_music_album_number_bg.png differ
diff --git a/images/music_player/Cover_flow/T02_music_expand_circle_bg.png b/images/music_player/Cover_flow/T02_music_expand_circle_bg.png
new file mode 100644 (file)
index 0000000..e784302
Binary files /dev/null and b/images/music_player/Cover_flow/T02_music_expand_circle_bg.png differ
diff --git a/images/music_player/Cover_flow/T02_music_expand_circle_close.png b/images/music_player/Cover_flow/T02_music_expand_circle_close.png
new file mode 100644 (file)
index 0000000..b9ebbf8
Binary files /dev/null and b/images/music_player/Cover_flow/T02_music_expand_circle_close.png differ
diff --git a/images/music_player/Cover_flow/T02_music_expand_circle_open.png b/images/music_player/Cover_flow/T02_music_expand_circle_open.png
new file mode 100644 (file)
index 0000000..91f56ef
Binary files /dev/null and b/images/music_player/Cover_flow/T02_music_expand_circle_open.png differ
diff --git a/images/music_player/Cover_flow/T02_music_player_back_button.png b/images/music_player/Cover_flow/T02_music_player_back_button.png
new file mode 100644 (file)
index 0000000..cd4553c
Binary files /dev/null and b/images/music_player/Cover_flow/T02_music_player_back_button.png differ
diff --git a/images/music_player/Cover_flow/T02_music_player_back_button_icon.png b/images/music_player/Cover_flow/T02_music_player_back_button_icon.png
new file mode 100644 (file)
index 0000000..30b8f03
Binary files /dev/null and b/images/music_player/Cover_flow/T02_music_player_back_button_icon.png differ
diff --git a/images/music_player/T02_OptionHeader_btn_press.png b/images/music_player/T02_OptionHeader_btn_press.png
new file mode 100644 (file)
index 0000000..6fce607
Binary files /dev/null and b/images/music_player/T02_OptionHeader_btn_press.png differ
diff --git a/images/music_player/T02_Option_header_bt.png b/images/music_player/T02_Option_header_bt.png
new file mode 100644 (file)
index 0000000..35ccb75
Binary files /dev/null and b/images/music_player/T02_Option_header_bt.png differ
diff --git a/images/music_player/T02_Option_header_bt_press.png b/images/music_player/T02_Option_header_bt_press.png
new file mode 100644 (file)
index 0000000..f7d2779
Binary files /dev/null and b/images/music_player/T02_Option_header_bt_press.png differ
diff --git a/images/music_player/T02_Page_bg.png b/images/music_player/T02_Page_bg.png
new file mode 100644 (file)
index 0000000..74c4621
Binary files /dev/null and b/images/music_player/T02_Page_bg.png differ
diff --git a/images/music_player/T02_Video_play.png b/images/music_player/T02_Video_play.png
new file mode 100644 (file)
index 0000000..d302435
Binary files /dev/null and b/images/music_player/T02_Video_play.png differ
diff --git a/images/music_player/T02_album_bar.png b/images/music_player/T02_album_bar.png
new file mode 100644 (file)
index 0000000..2d2e832
Binary files /dev/null and b/images/music_player/T02_album_bar.png differ
diff --git a/images/music_player/T02_btn_Back.png b/images/music_player/T02_btn_Back.png
new file mode 100644 (file)
index 0000000..d708747
Binary files /dev/null and b/images/music_player/T02_btn_Back.png differ
diff --git a/images/music_player/T02_controller_btn.png b/images/music_player/T02_controller_btn.png
new file mode 100644 (file)
index 0000000..4db7a11
Binary files /dev/null and b/images/music_player/T02_controller_btn.png differ
diff --git a/images/music_player/T02_controller_btn_press.png b/images/music_player/T02_controller_btn_press.png
new file mode 100644 (file)
index 0000000..4069b0f
Binary files /dev/null and b/images/music_player/T02_controller_btn_press.png differ
diff --git a/images/music_player/T02_controls_bg_shadow.png b/images/music_player/T02_controls_bg_shadow.png
new file mode 100644 (file)
index 0000000..154ef27
Binary files /dev/null and b/images/music_player/T02_controls_bg_shadow.png differ
diff --git a/images/music_player/T02_icon_soundPath.png b/images/music_player/T02_icon_soundPath.png
new file mode 100644 (file)
index 0000000..79e0cda
Binary files /dev/null and b/images/music_player/T02_icon_soundPath.png differ
diff --git a/images/music_player/T02_music_player_circle_bg.png b/images/music_player/T02_music_player_circle_bg.png
new file mode 100644 (file)
index 0000000..1942299
Binary files /dev/null and b/images/music_player/T02_music_player_circle_bg.png differ
diff --git a/images/music_player/T02_music_player_circle_pause.png b/images/music_player/T02_music_player_circle_pause.png
new file mode 100644 (file)
index 0000000..1f8d909
Binary files /dev/null and b/images/music_player/T02_music_player_circle_pause.png differ
diff --git a/images/music_player/T02_music_player_circle_play.png b/images/music_player/T02_music_player_circle_play.png
new file mode 100644 (file)
index 0000000..45709fc
Binary files /dev/null and b/images/music_player/T02_music_player_circle_play.png differ
diff --git a/images/music_player/T02_navigation_tabbar_bg.png b/images/music_player/T02_navigation_tabbar_bg.png
new file mode 100644 (file)
index 0000000..2a438eb
Binary files /dev/null and b/images/music_player/T02_navigation_tabbar_bg.png differ
diff --git a/images/music_player/T02_navigation_tabbar_focus.png b/images/music_player/T02_navigation_tabbar_focus.png
new file mode 100644 (file)
index 0000000..83acab7
Binary files /dev/null and b/images/music_player/T02_navigation_tabbar_focus.png differ
diff --git a/images/music_player/T02_nocomposers.png b/images/music_player/T02_nocomposers.png
new file mode 100644 (file)
index 0000000..e070abc
Binary files /dev/null and b/images/music_player/T02_nocomposers.png differ
diff --git a/images/music_player/T02_now_playing_bar.png b/images/music_player/T02_now_playing_bar.png
new file mode 100644 (file)
index 0000000..04a2723
Binary files /dev/null and b/images/music_player/T02_now_playing_bar.png differ
diff --git a/images/music_player/T02_now_playing_icon_pause.png b/images/music_player/T02_now_playing_icon_pause.png
new file mode 100644 (file)
index 0000000..7ff2d42
Binary files /dev/null and b/images/music_player/T02_now_playing_icon_pause.png differ
diff --git a/images/music_player/T02_now_playing_icon_play.png b/images/music_player/T02_now_playing_icon_play.png
new file mode 100644 (file)
index 0000000..fb9014c
Binary files /dev/null and b/images/music_player/T02_now_playing_icon_play.png differ
diff --git a/images/music_player/T02_now_playing_progress_bar.png b/images/music_player/T02_now_playing_progress_bar.png
new file mode 100644 (file)
index 0000000..2e874b0
Binary files /dev/null and b/images/music_player/T02_now_playing_progress_bar.png differ
diff --git a/images/music_player/T02_now_playing_progress_bg.png b/images/music_player/T02_now_playing_progress_bg.png
new file mode 100644 (file)
index 0000000..d319590
Binary files /dev/null and b/images/music_player/T02_now_playing_progress_bg.png differ
diff --git a/images/music_player/T02_option_SA.png b/images/music_player/T02_option_SA.png
new file mode 100644 (file)
index 0000000..085afb9
Binary files /dev/null and b/images/music_player/T02_option_SA.png differ
diff --git a/images/music_player/T02_option_SA_focus.png b/images/music_player/T02_option_SA_focus.png
new file mode 100644 (file)
index 0000000..65dbe54
Binary files /dev/null and b/images/music_player/T02_option_SA_focus.png differ
diff --git a/images/music_player/T02_option_SA_press.png b/images/music_player/T02_option_SA_press.png
new file mode 100644 (file)
index 0000000..085afb9
Binary files /dev/null and b/images/music_player/T02_option_SA_press.png differ
diff --git a/images/music_player/T02_option_add_playlist.png b/images/music_player/T02_option_add_playlist.png
new file mode 100644 (file)
index 0000000..8cfdc33
Binary files /dev/null and b/images/music_player/T02_option_add_playlist.png differ
diff --git a/images/music_player/T02_option_bg.png b/images/music_player/T02_option_bg.png
new file mode 100644 (file)
index 0000000..324d748
Binary files /dev/null and b/images/music_player/T02_option_bg.png differ
diff --git a/images/music_player/T02_option_favorite_off.png b/images/music_player/T02_option_favorite_off.png
new file mode 100644 (file)
index 0000000..31be2bd
Binary files /dev/null and b/images/music_player/T02_option_favorite_off.png differ
diff --git a/images/music_player/T02_option_favorite_on.png b/images/music_player/T02_option_favorite_on.png
new file mode 100644 (file)
index 0000000..6db11a2
Binary files /dev/null and b/images/music_player/T02_option_favorite_on.png differ
diff --git a/images/music_player/T02_option_rep_1.png b/images/music_player/T02_option_rep_1.png
new file mode 100644 (file)
index 0000000..98223ea
Binary files /dev/null and b/images/music_player/T02_option_rep_1.png differ
diff --git a/images/music_player/T02_option_rep_A.png b/images/music_player/T02_option_rep_A.png
new file mode 100644 (file)
index 0000000..7e8d7e2
Binary files /dev/null and b/images/music_player/T02_option_rep_A.png differ
diff --git a/images/music_player/T02_option_rep_all.png b/images/music_player/T02_option_rep_all.png
new file mode 100644 (file)
index 0000000..f24be63
Binary files /dev/null and b/images/music_player/T02_option_rep_all.png differ
diff --git a/images/music_player/T02_option_shuffle_off.png b/images/music_player/T02_option_shuffle_off.png
new file mode 100644 (file)
index 0000000..0053b4c
Binary files /dev/null and b/images/music_player/T02_option_shuffle_off.png differ
diff --git a/images/music_player/T02_option_shuffle_on.png b/images/music_player/T02_option_shuffle_on.png
new file mode 100644 (file)
index 0000000..b8c9015
Binary files /dev/null and b/images/music_player/T02_option_shuffle_on.png differ
diff --git a/images/music_player/T02_square_bg.png b/images/music_player/T02_square_bg.png
new file mode 100644 (file)
index 0000000..4f2b91b
Binary files /dev/null and b/images/music_player/T02_square_bg.png differ
diff --git a/images/music_player/T02_square_cell_bg.png b/images/music_player/T02_square_cell_bg.png
new file mode 100644 (file)
index 0000000..110b79a
Binary files /dev/null and b/images/music_player/T02_square_cell_bg.png differ
diff --git a/images/music_player/T02_square_cell_bg_horizontal.png b/images/music_player/T02_square_cell_bg_horizontal.png
new file mode 100644 (file)
index 0000000..b4e4abf
Binary files /dev/null and b/images/music_player/T02_square_cell_bg_horizontal.png differ
diff --git a/images/music_player/T02_square_cell_press.png b/images/music_player/T02_square_cell_press.png
new file mode 100644 (file)
index 0000000..21f0874
Binary files /dev/null and b/images/music_player/T02_square_cell_press.png differ
diff --git a/images/music_player/T02_title_bg.png b/images/music_player/T02_title_bg.png
new file mode 100644 (file)
index 0000000..9ad357f
Binary files /dev/null and b/images/music_player/T02_title_bg.png differ
diff --git a/images/music_player/T02_title_icon_nearby_device.png b/images/music_player/T02_title_icon_nearby_device.png
new file mode 100644 (file)
index 0000000..aee1624
Binary files /dev/null and b/images/music_player/T02_title_icon_nearby_device.png differ
diff --git a/images/music_player/T02_title_icon_sound_path.png b/images/music_player/T02_title_icon_sound_path.png
new file mode 100644 (file)
index 0000000..0a9e89d
Binary files /dev/null and b/images/music_player/T02_title_icon_sound_path.png differ
diff --git a/images/music_player/T02_volume.png b/images/music_player/T02_volume.png
new file mode 100644 (file)
index 0000000..7014c1b
Binary files /dev/null and b/images/music_player/T02_volume.png differ
diff --git a/images/music_player/T02_volume_icon_01.png b/images/music_player/T02_volume_icon_01.png
new file mode 100644 (file)
index 0000000..932d74b
Binary files /dev/null and b/images/music_player/T02_volume_icon_01.png differ
diff --git a/images/music_player/T02_volume_icon_02.png b/images/music_player/T02_volume_icon_02.png
new file mode 100644 (file)
index 0000000..b6e01db
Binary files /dev/null and b/images/music_player/T02_volume_icon_02.png differ
diff --git a/images/music_player/T02_winset_btn_Back.png b/images/music_player/T02_winset_btn_Back.png
new file mode 100644 (file)
index 0000000..d708747
Binary files /dev/null and b/images/music_player/T02_winset_btn_Back.png differ
diff --git a/images/music_player/T02_youtube.png b/images/music_player/T02_youtube.png
new file mode 100644 (file)
index 0000000..9718eea
Binary files /dev/null and b/images/music_player/T02_youtube.png differ
diff --git a/images/music_player/allshare_dmr_icon.png b/images/music_player/allshare_dmr_icon.png
new file mode 100644 (file)
index 0000000..e205001
Binary files /dev/null and b/images/music_player/allshare_dmr_icon.png differ
diff --git a/images/music_player/copy&paste_Icon_left.png b/images/music_player/copy&paste_Icon_left.png
new file mode 100644 (file)
index 0000000..ccb6b09
Binary files /dev/null and b/images/music_player/copy&paste_Icon_left.png differ
diff --git a/images/music_player/copy&paste_Icon_left_press.png b/images/music_player/copy&paste_Icon_left_press.png
new file mode 100644 (file)
index 0000000..0661a0b
Binary files /dev/null and b/images/music_player/copy&paste_Icon_left_press.png differ
diff --git a/images/music_player/copy&paste_Icon_left_top.png b/images/music_player/copy&paste_Icon_left_top.png
new file mode 100644 (file)
index 0000000..ebe24a4
Binary files /dev/null and b/images/music_player/copy&paste_Icon_left_top.png differ
diff --git a/images/music_player/copy&paste_Icon_left_top_press.png b/images/music_player/copy&paste_Icon_left_top_press.png
new file mode 100644 (file)
index 0000000..b715059
Binary files /dev/null and b/images/music_player/copy&paste_Icon_left_top_press.png differ
diff --git a/images/music_player/copy&paste_Icon_right.png b/images/music_player/copy&paste_Icon_right.png
new file mode 100644 (file)
index 0000000..c658e9e
Binary files /dev/null and b/images/music_player/copy&paste_Icon_right.png differ
diff --git a/images/music_player/copy&paste_Icon_right_press.png b/images/music_player/copy&paste_Icon_right_press.png
new file mode 100644 (file)
index 0000000..3e33af7
Binary files /dev/null and b/images/music_player/copy&paste_Icon_right_press.png differ
diff --git a/images/music_player/copy&paste_Icon_right_top.png b/images/music_player/copy&paste_Icon_right_top.png
new file mode 100644 (file)
index 0000000..300eebc
Binary files /dev/null and b/images/music_player/copy&paste_Icon_right_top.png differ
diff --git a/images/music_player/copy&paste_Icon_right_top_press.png b/images/music_player/copy&paste_Icon_right_top_press.png
new file mode 100644 (file)
index 0000000..1dc1ad1
Binary files /dev/null and b/images/music_player/copy&paste_Icon_right_top_press.png differ
diff --git a/images/music_player/mini_app/T01_btn_apps_close.png b/images/music_player/mini_app/T01_btn_apps_close.png
new file mode 100644 (file)
index 0000000..2a05219
Binary files /dev/null and b/images/music_player/mini_app/T01_btn_apps_close.png differ
diff --git a/images/music_player/mini_app/T02_control_icon_apps.png b/images/music_player/mini_app/T02_control_icon_apps.png
new file mode 100644 (file)
index 0000000..613d630
Binary files /dev/null and b/images/music_player/mini_app/T02_control_icon_apps.png differ
diff --git a/images/music_player/mini_controller/quick_albumart_mask.png b/images/music_player/mini_controller/quick_albumart_mask.png
new file mode 100644 (file)
index 0000000..b28f0fe
Binary files /dev/null and b/images/music_player/mini_controller/quick_albumart_mask.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_large_bg_normal.png b/images/music_player/mini_controller/quick_btn_music_large_bg_normal.png
new file mode 100644 (file)
index 0000000..ba482fb
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_large_bg_normal.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_large_bg_press.png b/images/music_player/mini_controller/quick_btn_music_large_bg_press.png
new file mode 100644 (file)
index 0000000..b6985d2
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_large_bg_press.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_next_nor.png b/images/music_player/mini_controller/quick_btn_music_next_nor.png
new file mode 100644 (file)
index 0000000..dd6808e
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_next_nor.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_next_press.png b/images/music_player/mini_controller/quick_btn_music_next_press.png
new file mode 100644 (file)
index 0000000..12418dc
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_next_press.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_pause_nor.png b/images/music_player/mini_controller/quick_btn_music_pause_nor.png
new file mode 100644 (file)
index 0000000..ac35b67
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_pause_nor.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_pause_press.png b/images/music_player/mini_controller/quick_btn_music_pause_press.png
new file mode 100644 (file)
index 0000000..f5880fa
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_pause_press.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_play_nor.png b/images/music_player/mini_controller/quick_btn_music_play_nor.png
new file mode 100644 (file)
index 0000000..7d588a6
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_play_nor.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_play_press.png b/images/music_player/mini_controller/quick_btn_music_play_press.png
new file mode 100644 (file)
index 0000000..7696eea
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_play_press.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_prev_nor.png b/images/music_player/mini_controller/quick_btn_music_prev_nor.png
new file mode 100644 (file)
index 0000000..e649fdb
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_prev_nor.png differ
diff --git a/images/music_player/mini_controller/quick_btn_music_prev_press.png b/images/music_player/mini_controller/quick_btn_music_prev_press.png
new file mode 100644 (file)
index 0000000..45be724
Binary files /dev/null and b/images/music_player/mini_controller/quick_btn_music_prev_press.png differ
diff --git a/images/music_player/mini_controller/quick_icon_bg.png b/images/music_player/mini_controller/quick_icon_bg.png
new file mode 100644 (file)
index 0000000..9621f32
Binary files /dev/null and b/images/music_player/mini_controller/quick_icon_bg.png differ
diff --git a/images/music_player/music_icon_mute.png b/images/music_player/music_icon_mute.png
new file mode 100644 (file)
index 0000000..e92f376
Binary files /dev/null and b/images/music_player/music_icon_mute.png differ
diff --git a/images/music_player/music_play_square_bg.9.png b/images/music_player/music_play_square_bg.9.png
new file mode 100644 (file)
index 0000000..cd70b73
Binary files /dev/null and b/images/music_player/music_play_square_bg.9.png differ
diff --git a/images/music_player/music_player_bg.PNG b/images/music_player/music_player_bg.PNG
new file mode 100644 (file)
index 0000000..611a7b7
Binary files /dev/null and b/images/music_player/music_player_bg.PNG differ
diff --git a/images/music_player/music_popup_mute.png b/images/music_player/music_popup_mute.png
new file mode 100644 (file)
index 0000000..32f447c
Binary files /dev/null and b/images/music_player/music_popup_mute.png differ
diff --git a/images/music_player/player/12_music_player_bg_01.PNG b/images/music_player/player/12_music_player_bg_01.PNG
new file mode 100644 (file)
index 0000000..8a2e8d0
Binary files /dev/null and b/images/music_player/player/12_music_player_bg_01.PNG differ
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 100644 (file)
index 0000000..86c5684
Binary files /dev/null and b/images/music_player/player/12_music_player_control_bg.png differ
diff --git a/images/music_player/player/12_music_player_control_bg_h.png b/images/music_player/player/12_music_player_control_bg_h.png
new file mode 100644 (file)
index 0000000..3d1ab7e
Binary files /dev/null and b/images/music_player/player/12_music_player_control_bg_h.png differ
diff --git a/images/music_player/player/T02_Album_art_image_Shadow.png b/images/music_player/player/T02_Album_art_image_Shadow.png
new file mode 100644 (file)
index 0000000..5e8af30
Binary files /dev/null and b/images/music_player/player/T02_Album_art_image_Shadow.png differ
diff --git a/images/music_player/player/T02_Play_btn__play.png b/images/music_player/player/T02_Play_btn__play.png
new file mode 100644 (file)
index 0000000..a48d818
Binary files /dev/null and b/images/music_player/player/T02_Play_btn__play.png differ
diff --git a/images/music_player/player/T02_Play_btn__play_press.png b/images/music_player/player/T02_Play_btn__play_press.png
new file mode 100644 (file)
index 0000000..f60e1d9
Binary files /dev/null and b/images/music_player/player/T02_Play_btn__play_press.png differ
diff --git a/images/music_player/player/T02_Play_btn_next.png b/images/music_player/player/T02_Play_btn_next.png
new file mode 100644 (file)
index 0000000..be1b9f3
Binary files /dev/null and b/images/music_player/player/T02_Play_btn_next.png differ
diff --git a/images/music_player/player/T02_Play_btn_next_press.png b/images/music_player/player/T02_Play_btn_next_press.png
new file mode 100644 (file)
index 0000000..453e823
Binary files /dev/null and b/images/music_player/player/T02_Play_btn_next_press.png differ
diff --git a/images/music_player/player/T02_Play_btn_pause.png b/images/music_player/player/T02_Play_btn_pause.png
new file mode 100644 (file)
index 0000000..c1baadd
Binary files /dev/null and b/images/music_player/player/T02_Play_btn_pause.png differ
diff --git a/images/music_player/player/T02_Play_btn_pause_press.png b/images/music_player/player/T02_Play_btn_pause_press.png
new file mode 100644 (file)
index 0000000..9302981
Binary files /dev/null and b/images/music_player/player/T02_Play_btn_pause_press.png differ
diff --git a/images/music_player/player/T02_Play_btn_previou_press.png b/images/music_player/player/T02_Play_btn_previou_press.png
new file mode 100644 (file)
index 0000000..ea1b859
Binary files /dev/null and b/images/music_player/player/T02_Play_btn_previou_press.png differ
diff --git a/images/music_player/player/T02_Play_btn_previous.png b/images/music_player/player/T02_Play_btn_previous.png
new file mode 100644 (file)
index 0000000..656e92d
Binary files /dev/null and b/images/music_player/player/T02_Play_btn_previous.png differ
diff --git a/images/music_player/player/T02_controller_icon_back.png b/images/music_player/player/T02_controller_icon_back.png
new file mode 100644 (file)
index 0000000..bb420e6
Binary files /dev/null and b/images/music_player/player/T02_controller_icon_back.png differ
diff --git a/images/music_player/player/T02_controller_icon_volume.png b/images/music_player/player/T02_controller_icon_volume.png
new file mode 100644 (file)
index 0000000..851b4bc
Binary files /dev/null and b/images/music_player/player/T02_controller_icon_volume.png differ
diff --git a/images/music_player/player/T02_function_btn_focus.png b/images/music_player/player/T02_function_btn_focus.png
new file mode 100644 (file)
index 0000000..860746d
Binary files /dev/null and b/images/music_player/player/T02_function_btn_focus.png differ
diff --git a/images/music_player/player/T02_function_btn_press.png b/images/music_player/player/T02_function_btn_press.png
new file mode 100644 (file)
index 0000000..7d7c9e6
Binary files /dev/null and b/images/music_player/player/T02_function_btn_press.png differ
diff --git a/images/music_player/player/T02_function_icon_details.png b/images/music_player/player/T02_function_icon_details.png
new file mode 100644 (file)
index 0000000..af61c47
Binary files /dev/null and b/images/music_player/player/T02_function_icon_details.png differ
diff --git a/images/music_player/player/T02_function_icon_details_focus.png b/images/music_player/player/T02_function_icon_details_focus.png
new file mode 100644 (file)
index 0000000..aebb147
Binary files /dev/null and b/images/music_player/player/T02_function_icon_details_focus.png differ
diff --git a/images/music_player/player/T02_function_icon_details_press.png b/images/music_player/player/T02_function_icon_details_press.png
new file mode 100644 (file)
index 0000000..af61c47
Binary files /dev/null and b/images/music_player/player/T02_function_icon_details_press.png differ
diff --git a/images/music_player/player/T02_function_icon_set.png b/images/music_player/player/T02_function_icon_set.png
new file mode 100644 (file)
index 0000000..fe17ea8
Binary files /dev/null and b/images/music_player/player/T02_function_icon_set.png differ
diff --git a/images/music_player/player/T02_function_icon_set_focus.png b/images/music_player/player/T02_function_icon_set_focus.png
new file mode 100644 (file)
index 0000000..e731b07
Binary files /dev/null and b/images/music_player/player/T02_function_icon_set_focus.png differ
diff --git a/images/music_player/player/T02_function_icon_set_press.png b/images/music_player/player/T02_function_icon_set_press.png
new file mode 100644 (file)
index 0000000..fe17ea8
Binary files /dev/null and b/images/music_player/player/T02_function_icon_set_press.png differ
diff --git a/images/music_player/player/T02_function_icon_settings.png b/images/music_player/player/T02_function_icon_settings.png
new file mode 100644 (file)
index 0000000..ff6d047
Binary files /dev/null and b/images/music_player/player/T02_function_icon_settings.png differ
diff --git a/images/music_player/player/T02_function_icon_settings_focus.png b/images/music_player/player/T02_function_icon_settings_focus.png
new file mode 100644 (file)
index 0000000..39a9dba
Binary files /dev/null and b/images/music_player/player/T02_function_icon_settings_focus.png differ
diff --git a/images/music_player/player/T02_function_icon_settings_press.png b/images/music_player/player/T02_function_icon_settings_press.png
new file mode 100644 (file)
index 0000000..ff6d047
Binary files /dev/null and b/images/music_player/player/T02_function_icon_settings_press.png differ
diff --git a/images/music_player/player/T02_function_icon_share.png b/images/music_player/player/T02_function_icon_share.png
new file mode 100644 (file)
index 0000000..f2c4489
Binary files /dev/null and b/images/music_player/player/T02_function_icon_share.png differ
diff --git a/images/music_player/player/T02_function_icon_share_focus.png b/images/music_player/player/T02_function_icon_share_focus.png
new file mode 100644 (file)
index 0000000..0098d10
Binary files /dev/null and b/images/music_player/player/T02_function_icon_share_focus.png differ
diff --git a/images/music_player/player/T02_function_icon_share_press.png b/images/music_player/player/T02_function_icon_share_press.png
new file mode 100644 (file)
index 0000000..f2c4489
Binary files /dev/null and b/images/music_player/player/T02_function_icon_share_press.png differ
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 100644 (file)
index 0000000..31be2bd
Binary files /dev/null and b/images/music_player/player/T02_option_favorite_off.png differ
diff --git a/images/music_player/player/T02_option_favorite_on.png b/images/music_player/player/T02_option_favorite_on.png
new file mode 100644 (file)
index 0000000..6db11a2
Binary files /dev/null and b/images/music_player/player/T02_option_favorite_on.png differ
diff --git a/images/music_player/player/T02_volume_icon_Mute.png b/images/music_player/player/T02_volume_icon_Mute.png
new file mode 100644 (file)
index 0000000..1d47e35
Binary files /dev/null and b/images/music_player/player/T02_volume_icon_Mute.png differ
diff --git a/images/music_player/progress_bar/T02_player_progress_bar.png b/images/music_player/progress_bar/T02_player_progress_bar.png
new file mode 100644 (file)
index 0000000..03f54cf
Binary files /dev/null and b/images/music_player/progress_bar/T02_player_progress_bar.png differ
diff --git a/images/music_player/progress_bar/T02_player_progress_bg.png b/images/music_player/progress_bar/T02_player_progress_bg.png
new file mode 100644 (file)
index 0000000..b0f584a
Binary files /dev/null and b/images/music_player/progress_bar/T02_player_progress_bg.png differ
diff --git a/images/music_player/progress_bar/T02_player_progress_point.png b/images/music_player/progress_bar/T02_player_progress_point.png
new file mode 100644 (file)
index 0000000..f169c5d
Binary files /dev/null and b/images/music_player/progress_bar/T02_player_progress_point.png differ
diff --git a/images/music_player/separator_v.png b/images/music_player/separator_v.png
new file mode 100644 (file)
index 0000000..cd1b018
Binary files /dev/null and b/images/music_player/separator_v.png differ
diff --git a/images/music_player/storage_type/T02_external_storage_02.png b/images/music_player/storage_type/T02_external_storage_02.png
new file mode 100644 (file)
index 0000000..383df95
Binary files /dev/null and b/images/music_player/storage_type/T02_external_storage_02.png differ
diff --git a/images/music_player/storage_type/T02_memory_card_02.png b/images/music_player/storage_type/T02_memory_card_02.png
new file mode 100644 (file)
index 0000000..6430627
Binary files /dev/null and b/images/music_player/storage_type/T02_memory_card_02.png differ
diff --git a/images/music_player/storage_type/T02_phone_02.png b/images/music_player/storage_type/T02_phone_02.png
new file mode 100644 (file)
index 0000000..26b52c0
Binary files /dev/null and b/images/music_player/storage_type/T02_phone_02.png differ
diff --git a/images/music_player/volume/00_popup_bg.png b/images/music_player/volume/00_popup_bg.png
new file mode 100644 (file)
index 0000000..e4bffb2
Binary files /dev/null and b/images/music_player/volume/00_popup_bg.png differ
diff --git a/images/sounds/button-pressed.wav b/images/sounds/button-pressed.wav
new file mode 100644 (file)
index 0000000..99ba74d
Binary files /dev/null and b/images/sounds/button-pressed.wav differ
diff --git a/include/mp-common-defs.h b/include/mp-common-defs.h
new file mode 100644 (file)
index 0000000..ae6f4cb
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef __MP_COMMON_DEFS_H__
+#define __MP_COMMON_DEFS_H__
+
+#define MP_B_PATH "path"
+#define MP_MM_KEY "multimedia_key"
+#define MP_PLAY_RECENT "play_recent"
+#define MP_REQ_TYPE "request_type"
+
+//ug-music-player request type
+#define UG_MP_ITEM_TYPE_KEY            "request_type"
+#define UG_MP_ITEM_ALBUM_VAL           "SC_Album"
+#define UG_MP_ITEM_ARTIST_VAL          "SC_Artist"
+#define UG_MP_ITEM_PLAYLIST_VAL        "SC_Playlist"
+
+
+//for shorcut
+#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/"
+
+#endif
diff --git a/include/mp-images.h b/include/mp-images.h
new file mode 100644 (file)
index 0000000..0bf4c52
--- /dev/null
@@ -0,0 +1,55 @@
+
+//2 icons directly installed to res/image
+#define ICON_DIRECTORY      RESDIR"/images/music_player"
+#define COVERFLOW_IMAGE_DIR "Cover_flow"
+#define STORAGE_TYPE_DIR       "storage_type"
+
+#define DEFAULT_THUMBNAIL                      ICON_DIRECTORY"/34_thumb_07.png"
+#define DEFAULT_THUMBNAIL_FOLDER        ICON_DIRECTORY"/default_folder.png"
+
+#define THUMBNAIL_MOST_PLAYED          ICON_DIRECTORY"/34_mostplayed.png"
+#define THUMBNAIL_RECENTLY_PLAYED   ICON_DIRECTORY"/34_recentlyplayed.png"
+#define THUMBNAIL_RECENTLY_ADDED       ICON_DIRECTORY"/34_recentlyadded.png"
+#define THUMBNAIL_QUICK_LIST                   ICON_DIRECTORY"/34_quicklist.png"
+#define THUMBNAIL_PLAYLIST                     ICON_DIRECTORY"/34_playlist.png"
+#define THUMBNAIL_PLAYLIST_NOITEM      ICON_DIRECTORY"/34_player_list_thum_noitems.png"
+
+#define MP_CTRBAR_ICON_SONGS           ICON_DIRECTORY"/T02_controlbar_icon_all.png"
+#define MP_CTRBAR_ICON_PLAYLIST        ICON_DIRECTORY"/T02_controlbar_icon_playlists.png"
+#define MP_CTRBAR_ICON_ALBUM           ICON_DIRECTORY"/T02_controlbar_icon_music_albums.png"
+#define MP_CTRBAR_ICON_ARTIST          ICON_DIRECTORY"/T02_controlbar_icon_artist.png"
+#define MP_CTRBAR_ICON_GENRE           ICON_DIRECTORY"/T02_controlbar_icon_genres.png"
+#define MP_CTRBAR_ICON_YEAR            ICON_DIRECTORY"/T02_controlbar_icon_years.png"
+#define MP_CTRBAR_ICON_COMPOSER        ICON_DIRECTORY"/T02_controlbar_icon_composer.png"
+#define MP_CTRBAR_ICON_FOLDER          ICON_DIRECTORY"/T02_controlbar_icon_folders.png"
+#define MP_CTRBAR_ICON_SQUARE          ICON_DIRECTORY"/T02_controlbar_icon_music_square.png"
+#define MP_ICON_EDIT                           ICON_DIRECTORY"/T02_controlbar_icon_edit.png"
+#define MP_ICON_SEARCH                 ICON_DIRECTORY"/T02_controlbar_icon_search.png"
+#define MP_ICON_CANCEL                 ICON_DIRECTORY"/T02_controlbar_icon_cancel.png"
+#define MP_ICON_SHARE                  ICON_DIRECTORY"/T02_controlbar_icon_share.png"
+#define MP_ICON_DELETE                 ICON_DIRECTORY"/T02_controlbar_icon_delete.png"
+#define MP_ICON_ADD_TO_PLST    ICON_DIRECTORY"/T02_controlbar_icon_add_to_playlist.png"
+#define MP_ICON_NEW                            ICON_DIRECTORY"/T02_controlbar_icon_add.png"
+#define MP_ICON_ALL_SHARE              ICON_DIRECTORY"/T02_controlbar_icon_nearby_device.png"
+#define MP_ICON_ALLSHARE_FOLDER        ICON_DIRECTORY"/allshare/myfile_icon_folder.png"
+#define MP_ICON_SYNC_START             ICON_DIRECTORY"/02_controlbar_icon_synchronise_start_sync.png"
+#define MP_SQUARE_ICON_BACK_BUTTON ICON_DIRECTORY"/00_winset_Back.png"
+
+#define DALI_IMAGE_DIR                         ICON_DIRECTORY"/3d_picture"
+#define DALI_IMAGE_BACKGROUD_BG   DALI_IMAGE_DIR"/T02_cover_flow_bg.png"
+#define DALI_IMAGE_SHADOW_BG    ICON_DIRECTORY"/T02_music_player_image_shadow.png"
+
+//2  icons included in edj file
+#define MP_ICON_COVERFLOW_BG                           COVERFLOW_IMAGE_DIR"/T02_cover_flow_bg.png"
+#define MP_ICON_COVERFLOW_SHADOW_BG            COVERFLOW_IMAGE_DIR"/T02_cover_flow_album_shadow_bg.png"
+#define MP_ICON_STORAGE_PHONE                          STORAGE_TYPE_DIR"/T02_phone_02.png"
+#define MP_ICON_STORAGE_MEMORY                         STORAGE_TYPE_DIR"/T02_memory_card_02.png"
+#define MP_ICON_STORAGE_EXTERNAL                       STORAGE_TYPE_DIR"/T02_external_storage_02.png"
+#define MP_ICON_SQUARE_CELL_SELECTED           "T02_square_cell_press.png"
+#define MP_ICON_VOLUME_MIN                     "T02_volume_icon_01.png"
+#define MP_ICON_VOLUME_MAX                     "T02_volume_icon_02.png"
+#define MP_ICON_SOUND_PATH                     "T02_icon_soundPath.png"
+#define MP_ICON_NEARBY_DMR                     "T02_title_icon_nearby_device.png"
+#define MP_ICON_MINI_PLAYER                    "mini_app/T02_control_icon_apps.png"
+#define MP_ICON_VIDEO_PLAY                     "T02_Video_play.png"
+
diff --git a/include/mp-vconf-private-keys.h b/include/mp-vconf-private-keys.h
new file mode 100644 (file)
index 0000000..8cca46f
--- /dev/null
@@ -0,0 +1,260 @@
+/*
+ * 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://floralicense.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 <vconf-keys.h>
+
+#define VCONFKEY_MP_PRIVATE                    "private/"PKG_NAME"/"
+#define VCONFKEY_MP_DB_PREFIX          "db/"VCONFKEY_MP_PRIVATE
+#define VCONFKEY_MP_MEMORY_PREFIX      "memory/"VCONFKEY_MP_PRIVATE
+
+/**
+ * @brief trigger of sound effect changes
+ *
+ * type: bool
+ *
+ * value is not meaningful
+ */
+#define VCONFKEY_MUSIC_SE_CHANGE                       VCONFKEY_MP_DB_PREFIX"se_change"
+
+/**
+ * @brief trigger of extend sound effect changes
+ *
+ * type: int
+ *
+ * value is not meaningful
+ */
+#define VCONFKEY_MUSIC_SA_USER_CHANGE                  VCONFKEY_MP_MEMORY_PREFIX"sa_user_change"
+
+/**
+ * @brief trigger of menu settng changes
+ *
+ * type: int
+ *
+ * value is not meaningful
+ */
+#define VCONFKEY_MUSIC_MENU_CHANGE                     VCONFKEY_MP_DB_PREFIX"menu_change"
+
+
+/**
+ * @brief setting value of sound alive
+ *
+ * type: int
+ *
+ * value is not meaningful
+ */
+#define VCONFKEY_MUSIC_SOUND_ALIVE_VAL         VCONFKEY_MP_DB_PREFIX"sound_alive_val"
+enum
+{
+       VCONFKEY_MUSIC_SOUND_ALIVE_AUTO,
+       VCONFKEY_MUSIC_SOUND_ALIVE_POP,
+       VCONFKEY_MUSIC_SOUND_ALIVE_ROCK,
+       VCONFKEY_MUSIC_SOUND_ALIVE_DANCE,
+       VCONFKEY_MUSIC_SOUND_ALIVE_JAZZ,
+       VCONFKEY_MUSIC_SOUND_ALIVE_CLASSIC,
+       VCONFKEY_MUSIC_SOUND_ALIVE_NORMAL,
+       VCONFKEY_MUSIC_SOUND_ALIVE_USER,
+       VCONFKEY_MUSIC_SOUND_ALIVE_VOCAL,
+       VCONFKEY_MUSIC_SOUND_ALIVE_BASS_BOOST,
+       VCONFKEY_MUSIC_SOUND_ALIVE_TREBLE_BOOST,
+       VCONFKEY_MUSIC_SOUND_ALIVE_M_THEATER,
+       VCONFKEY_MUSIC_SOUND_ALIVE_EXTERNALIZATION,
+       VCONFKEY_MUSIC_SOUND_ALIVE_CAFE,
+       VCONFKEY_MUSIC_SOUND_ALIVE_CONCERT_HALL,
+       VCONFKEY_MUSIC_SOUND_ALIVE_NUM,
+};
+
+
+/**
+ * @brief custom equalizer value
+ *
+ * type: double
+ */
+#define VCONFKEY_MUSIC_EQUALISER_CUSTOM_1      VCONFKEY_MP_DB_PREFIX"eq_custom_1"
+#define VCONFKEY_MUSIC_EQUALISER_CUSTOM_2      VCONFKEY_MP_DB_PREFIX"eq_custom_2"
+#define VCONFKEY_MUSIC_EQUALISER_CUSTOM_3      VCONFKEY_MP_DB_PREFIX"eq_custom_3"
+#define VCONFKEY_MUSIC_EQUALISER_CUSTOM_4      VCONFKEY_MP_DB_PREFIX"eq_custom_4"
+#define VCONFKEY_MUSIC_EQUALISER_CUSTOM_5      VCONFKEY_MP_DB_PREFIX"eq_custom_5"
+#define VCONFKEY_MUSIC_EQUALISER_CUSTOM_6      VCONFKEY_MP_DB_PREFIX"eq_custom_6"
+#define VCONFKEY_MUSIC_EQUALISER_CUSTOM_7      VCONFKEY_MP_DB_PREFIX"eq_custom_7"
+#define VCONFKEY_MUSIC_EQUALISER_CUSTOM_8      VCONFKEY_MP_DB_PREFIX"eq_custom_8"
+
+
+/**
+ * @brief extended user audio effects
+ *
+ * type: double
+ */
+#define VCONFKEY_MUSIC_USER_AUDIO_EFFECT_3D                    VCONFKEY_MP_DB_PREFIX"user_audio_effect_3d"
+#define VCONFKEY_MUSIC_USER_AUDIO_EFFECT_BASS          VCONFKEY_MP_DB_PREFIX"user_audio_effect_bass"
+#define VCONFKEY_MUSIC_USER_AUDIO_EFFECT_ROOM          VCONFKEY_MP_DB_PREFIX"user_audio_effect_room"
+#define VCONFKEY_MUSIC_USER_AUDIO_EFFECT_REVERB                VCONFKEY_MP_DB_PREFIX"user_audio_effect_reverb"
+#define VCONFKEY_MUSIC_USER_AUDIO_EFFECT_CLARITY       VCONFKEY_MP_DB_PREFIX"user_audio_effect_clarity"
+
+
+/**
+ * @brief auto off
+ *
+ * type: int (minute)
+ */
+#define VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL       VCONFKEY_MP_MEMORY_PREFIX"auto_off_time_val"
+
+/**
+ * @brief auto off type
+ *
+ * type: int
+ */
+#define VCONFKEY_MUSIC_AUTO_OFF_TYPE_VAL       VCONFKEY_MP_MEMORY_PREFIX"auto_off_type_val"
+enum
+{
+       VCONFKEY_MUSIC_AUTO_OFF_TIME_OFF        = 0,
+       VCONFKEY_MUSIC_AUTO_OFF_TIME_15,
+       VCONFKEY_MUSIC_AUTO_OFF_TIME_30,
+       VCONFKEY_MUSIC_AUTO_OFF_TIME_60,
+       VCONFKEY_MUSIC_AUTO_OFF_TIME_90,
+       VCONFKEY_MUSIC_AUTO_OFF_TIME_120,
+       VCONFKEY_MUSIC_AUTO_OFF_TIME_CUSTOM,
+       VCONFKEY_MUSIC_AUTO_OFF_TIME_MAX,
+};
+
+
+/**
+ * @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 playlist repeat state
+ *
+ * type: int
+ *
+ * 0 : repeat all
+ * 1 : no repeat
+ * 2 : repeat only a songs
+ */
+#define MP_VCONFKEY_MUSIC_SQUARE_AXIS_VAL                      VCONFKEY_MP_DB_PREFIX"square_axis_val"
+enum
+{
+       MP_VCONFKEY_MUSIC_SQUARE_AXIS_MOOD,
+       MP_VCONFKEY_MUSIC_SQUARE_AXIS_YEAR,
+       MP_VCONFKEY_MUSIC_SQUARE_AXIS_ADDED,
+       MP_VCONFKEY_MUSIC_SQUARE_AXIS_TIME
+};
+
+
+/**
+ * @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"
+
+
+
+
+/* for live-box */
+#define MP_LIVE_VCONF_PREFIX                           VCONFKEY_MP_MEMORY_PREFIX
+
+#define MP_LIVE_PLAY_STATE                                     MP_LIVE_VCONF_PREFIX"player_state"
+
+/**
+ * @brief elapsed time of current playing song
+ *
+ * type: string
+ *
+ * ex) "00:00"
+ */
+#define MP_LIVE_CUR_POS                                                MP_LIVE_VCONF_PREFIX"pos"
+
+
+/**
+ * @brief progressbar position of current playing song
+ *
+ * type: double
+ *
+ * range : 0.0 ~ 1.0
+ */
+#define MP_LIVE_CUR_PROGRESS_POS                       MP_LIVE_VCONF_PREFIX"progress_pos"
+
+
+/**
+ * @brief trigger of live box button click
+ *
+ * type: bool
+ */
+#define MP_LIVE_PLAY_CLICKED                           MP_LIVE_VCONF_PREFIX"play_clicked"      //bool
+#define MP_LIVE_PAUSE_CLICKED                          MP_LIVE_VCONF_PREFIX"pause_clicked"     //bool
+#define MP_LIVE_PREV_PRESSED                           MP_LIVE_VCONF_PREFIX"prev_pressed"      //bool
+#define MP_LIVE_PREV_RELEASED                          MP_LIVE_VCONF_PREFIX"prev_released"     //bool
+#define MP_LIVE_NEXT_PRESSED                           MP_LIVE_VCONF_PREFIX"next_pressed"      //bool
+#define MP_LIVE_NEXT_RELEASED                          MP_LIVE_VCONF_PREFIX"next_released"     //bool
+#define MP_LIVE_PROGRESS_RATIO_CHANGED                         MP_LIVE_VCONF_PREFIX"position_changed"  //double
+
+
+/**
+ * @brief setting value of auto created playlist
+ *
+ * All playlist can be selected with OR operation
+ *
+*/
+#define MP_VCONFKEY_PLAYLIST_VAL_INT VCONFKEY_MP_DB_PREFIX"playlist"
+enum {
+       MP_PLAYLIST_MOST_PLAYED = 0x0001,
+       MP_PLAYLIST_RECENTLY_PLAYED = 0x0002,
+       MP_PLAYLIST_RECENTLY_ADDED = 0x0004,
+};
+
+/**
+ * @brief play speed
+ *
+ * type: double
+ *
+ * range : 0.5 ~ 2.0
+ */
+#define VCONFKEY_MUSIC_PLAY_SPEED                      VCONFKEY_MP_MEMORY_PREFIX"playspeed"
+
+
+#endif /* __MP_VCONF_PRIVATE_KEYS_H__ */
+
diff --git a/layout/edc_image_macro.edc b/layout/edc_image_macro.edc
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/layout/genlist/genlist.edc b/layout/genlist/genlist.edc
new file mode 100644 (file)
index 0000000..ad41425
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * vim:ts=3
+*/
+
+#include "genlist_macro.edc"
+//#include "genlist_textblock_style.edc"
+#include "genlist_normal.edc"
+//#include "genlist_sweep.edc"
+//#include "genlist_groupindex.edc"
+//#include "genlist_expandable.edc"
+//#include "genlist_decorate.edc"
diff --git a/layout/genlist/genlist_macro.edc b/layout/genlist/genlist_macro.edc
new file mode 100644 (file)
index 0000000..a4123b5
--- /dev/null
@@ -0,0 +1,2914 @@
+// *******************************  Default size macro **********************//
+//**************************************************************************//
+// if size is different for each theme, split it into each theme inc.
+
+#define GENLIST_HEIGHT_1LINE              112
+#define GENLIST_HEIGHT_2LINE_MAIN         54
+#define GENLIST_HEIGHT_2LINE_SUB          42
+#define GENLIST_HEIGHT_3LINE_MAIN         54
+#define GENLIST_HEIGHT_3LINE_SUB1         42
+#define GENLIST_HEIGHT_3LINE_SUB2         38
+#define GENLIST_HEIGHT_MULTILINE_SUB      38
+#define GENLIST_PART_LIST_LINE_HEIGHT     1
+#define GENLIST_HEIGHT_GROUPTITLE         46
+
+#define GENLIST_PADDING_SIZE_DEFAULT            16
+#define GENLIST_PADDING_SIZE_LEFT               26
+#define GENLIST_PADDING_SIZE_RIGHT              26
+#define GENLIST_PADDING_SIZE_TOP_2LINE          22
+#define GENLIST_PADDING_SIZE_BOTTOM_2LINE       22
+#define GENLIST_PADDING_SIZE_TOP_3LINE          17
+#define GENLIST_PADDING_SIZE_BOTTOM_3LINE       17
+#define GENLIST_PADDING_SIZE_NDEPTH             26
+
+#define DIALOGUE_PADDING_SCROLLER         16
+#define DIALOGUE_PADDING_SIZE_LEFT        16+20
+#define DIALOGUE_PADDING_SIZE_RIGHT       16+20
+
+#define GENLIST_ICON_BIG_SIZE             74
+#define GENLIST_ICON_SMALL_SIZE           38
+#define GENLIST_ICON_STAR_SIZE            38
+#define GENLIST_ICON_THUMBNAIL1_SIZE      104
+#define GENLIST_BTN_01_HEIGHT             74
+#define GENLIST_BTN_02_SIZE               74
+#define GENLIST_ICON_ONOFF_WIDTH          132
+#define GENLIST_ICON_ONOFF_HEIGHT         70
+#define GENLIST_ICON_CHECK_RADIO_SIZE     64
+#define GENLIST_ICON_COLORBAR_SIZE        7
+#define GENLIST_ICON_PASSWORD_SIZE        82
+
+#define GENLIST_TREESIZE_DEFAULT          26
+
+//#define GENLIST_DIALOGUE_SEPARATOR_DEFAULT_HEIGHT 40
+
+//****************************************************************************//
+// *****************  EDJE description have 24 patterns **********************//
+ //**************************************************************************//
+// ------------------
+// |  PART == HERE  |
+// ------------------
+ #define GENLIST_DESCRIPTION_ENVELOP( PART, PARAM ) \
+      description { state: "default" 0.0;\
+         rel1 { \
+            relative: 0 0; \
+            to: PART; \
+         }\
+         rel2 {\
+            relative: 1 1;\
+            to: PART; \
+         }\
+         PARAM\
+      }
+
+//      |   top  |
+// ---------------------
+// left |  HERE  | right
+// ---------------------
+//      | bottom |
+#define GENLIST_DESCRIPTION( left, right, top, bottom, param ) \
+      description { state: "default" 0.0;\
+         rel1 { \
+            relative: 1 1; \
+            to_x: left; \
+            to_y: top; \
+         }\
+         rel2 {\
+            relative: 0 0;\
+            to_x: right;\
+            to_y: bottom;\
+         }\
+         param\
+      }
+
+// ---------------------
+// left |--> HERE
+// ---------------------
+#define GENLIST_DESCRIPTION_L( left, param ) \
+      description { state: "default" 0.0;\
+         align: 0 0.5; \
+         fixed: 1 0; \
+         rel1 { \
+            relative: 1 0; \
+            to_x: left; \
+            to_y: "base"; \
+         }\
+         rel2 { \
+            relative: 1 1;\
+            to_x: left; \
+            to_y: "base"; \
+         }\
+         param\
+      }
+
+// ---------------------
+//   HERE  <--| right
+// ---------------------
+#define GENLIST_DESCRIPTION_R( right, param ) \
+      description { state: "default" 0.0;\
+         align: 1 0.5; \
+         fixed: 1 0; \
+         rel1 { \
+            relative: 0 0; \
+            to_x: right; \
+            to_y: "base"; \
+         }\
+         rel2 {\
+            relative: 0 1;\
+            to_x: right; \
+            to_y: "base"; \
+         }\
+         param\
+      }
+
+// --------------------------
+// left |--> HERE  <--| right
+// --------------------------
+#define GENLIST_DESCRIPTION_LR( left, right, param ) \
+      description { state: "default" 0.0;\
+         rel1 { \
+            relative: 1 0; \
+            to_x: left; \
+            to_y: "base"; \
+         }\
+         rel2 {\
+            relative: 0 1;\
+            to_x: right;\
+            to_y: "base"; \
+         }\
+         param\
+      }
+
+//   |  top     |
+// -----------------
+//  |  HERE  <--| right
+// -----------------
+//  | bottom   |
+#define GENLIST_DESCRIPTION_RTB( right, top, bottom, param ) \
+      description { state: "default" 0.0;\
+         align: 1 0.5;\
+         rel1 { \
+            relative: 0 1; \
+            to_x: right; \
+            to_y: top; \
+         }\
+         rel2 {\
+            relative: 0 0;\
+            to_x: right;\
+            to_y: bottom;\
+         }\
+         param\
+      }
+
+// left |  HERE  | right
+// ---------------------
+//      | bottom |
+#define GENLIST_DESCRIPTION_LRB( left, right, bottom, param ) \
+      description { state: "default" 0.0;\
+         align: 0.5 1;\
+         rel1 { \
+            relative: 1 0; \
+            to_x: left; \
+            to_y: bottom; \
+         }\
+         rel2 {\
+            relative: 0 0;\
+            to_x: right;\
+            to_y: bottom;\
+         }\
+         param\
+      }
+
+//      |   top  |
+// ---------------------
+// left |  HERE  | right
+#define GENLIST_DESCRIPTION_LRT( left, right, top, param ) \
+      description { state: "default" 0.0;\
+         align: 0.5 0;\
+         rel1 { \
+            relative: 1 1; \
+            to_x: left; \
+            to_y: top; \
+         }\
+         rel2 {\
+            relative: 0 1;\
+            to_x: right;\
+            to_y: top;\
+         }\
+         param\
+      }
+
+//      |       top  |
+// ---------------------
+// left | -->  HERE  |
+#define GENLIST_DESCRIPTION_LT( left, top, param ) \
+      description { state: "default" 0.0;\
+         align: 0 0;\
+         rel1 { \
+            relative: 1 1; \
+            to_x: left; \
+            to_y: top; \
+         }\
+         rel2 {\
+            relative: 1 1;\
+            to_x: left;\
+            to_y: top;\
+         }\
+         param\
+      }
+
+// left |  --> HERE  |
+// ---------------------
+//      |     bottom |
+#define GENLIST_DESCRIPTION_LB( left, bottom, param ) \
+      description { state: "default" 0.0;\
+         align: 0 1;\
+         rel1 { \
+            relative: 1 0; \
+            to_x: left; \
+            to_y: bottom; \
+         }\
+         rel2 {\
+            relative: 1 0;\
+            to_x: left;\
+            to_y: bottom;\
+         }\
+         param\
+      }
+
+//      |     top  |
+// ---------------------
+// left |--> HERE  |
+// ---------------------
+//      |   bottom |
+#define GENLIST_DESCRIPTION_LTB( left, top, bottom, param ) \
+      description { state: "default" 0.0;\
+         align: 0 0.5;\
+         rel1 { \
+            relative: 1 1; \
+            to_x: left; \
+            to_y: top; \
+         }\
+         rel2 {\
+            relative: 1 0;\
+            to_x: left;\
+            to_y: bottom;\
+         }\
+         param\
+      }
+
+//      |   top  |
+// ---------------------
+//     |  HERE <--| right
+#define GENLIST_DESCRIPTION_RT( right, top, param ) \
+      description { state: "default" 0.0;\
+         align: 1 0;\
+         rel1 { \
+            relative: 0 1; \
+            to_x: right; \
+            to_y: top; \
+         }\
+         rel2 {\
+            relative: 0 1;\
+            to_x: right;\
+            to_y: top;\
+         }\
+         param\
+      }
+
+//  | HERE <-- | right
+// ---------------------
+//  |  bottom  |
+#define GENLIST_DESCRIPTION_RB( right, bottom, param ) \
+      description { state: "default" 0.0;\
+         align: 1 1;\
+         rel1 { \
+            relative: 0 0; \
+            to_x: right; \
+            to_y: bottom; \
+         }\
+         rel2 {\
+            relative: 0 0;\
+            to_x: right;\
+            to_y: bottom;\
+         }\
+         param\
+      }
+
+// |   top  |
+// ----------
+// |  HERE  |
+// ----------
+// | bottom |
+#define GENLIST_DESCRIPTION_TB( top, bottom, param ) \
+      description { state: "default" 0.0;\
+         align: 0.5 0.5;\
+         rel1 { \
+            relative: 0 1; \
+            to_y: top; \
+         }\
+         rel2 {\
+            relative: 1 0;\
+            to_y: bottom;\
+         }\
+         param\
+      }
+
+#define GENLIST_DATA_ITEM_NORMAL \
+      data.item: "stacking" "above"; \
+      data.item: "selectraise" "on"; \
+      data.item: "flips" "elm.flip.icon elm.flip.content"; \
+      data.item: "treesize" GENLIST_TREESIZE_DEFAULT;
+
+/*****************************************************************************/
+/******************************* Dialogue group ******************************/
+/*****************************************************************************/
+#define GENLIST_DIALOGUE_INHERIT_BODY( _PARTS ) \
+      data.item: "treesize" 0; \
+      GENLIST_IMAGES_DIALOGUE_BG_IMAGE \
+      parts { \
+         GENLIST_PART_BG_IMAGE_DIALOGUE \
+         GENLIST_PART_BOTTOM_LINE_OFF \
+         GENLIST_PART_PADDING_LEFT_SIZE( DIALOGUE_PADDING_SIZE_LEFT ) \
+         GENLIST_PART_PADDING_RIGHT_SIZE_EDIT( DIALOGUE_PADDING_SIZE_RIGHT ) \
+         _PARTS \
+         GENLIST_PART_FLIP \
+      }
+
+//****************************************************************************//
+// ****************************** BG Image **********************************//
+//****************************************************************************//
+#define GENLIST_IMAGE_GROUPINDEX \
+      images { \
+         image: "00_index list_bg.png" COMP; \
+      }
+#define GENLIST_PART_INDEX_BG_IMAGE \
+         part { name: "bg_image"; \
+            type: RECT; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: GENLIST_GROUPINDEX_LIST_BG_COLOR; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_GROUPINDEX_LIST_PRESS_COLOR; \
+            } \
+            GENLIST_DESCRIPTION_FADEOUT \
+         }
+
+#define GENLIST_PART_BG_IMAGE \
+         part { name: "bg_image_clip"; \
+            type: RECT; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+            description { state: "2depth" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "bg_image"; \
+            type: RECT; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: GENLIST_LIST_BG_COLOR; \
+            } \
+            description { state: "selected" 0.0; \
+               color: GENLIST_LIST_PRESS_COLOR; \
+            } \
+            description { state: "disabled" 0.0; \
+               color: GENLIST_LIST_DIM_COLOR; \
+            } \
+            GENLIST_DESCRIPTION_FADEOUT \
+         }
+
+#define GENLIST_IMAGES_DIALOGUE_BG_IMAGE \
+         images { \
+            image : "00_list_group_bg.png" COMP; \
+            image : "00_list_group_bg_top.png" COMP; \
+            image : "00_list_group_bg_center.png" COMP; \
+            image : "00_list_group_bg_bottom.png" COMP; \
+            image : "00_list_group_bg_press.png" COMP; \
+            image : "00_list_group_bg_top_press.png" COMP; \
+            image : "00_list_group_bg_center_press.png" COMP; \
+            image : "00_list_group_bg_bottom_press.png" COMP; \
+         }
+
+#define GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+         rel1 { \
+            to_x: "bg_image_left"; \
+            relative: 1 0; \
+         } \
+         rel2 { \
+            to_x: "bg_image_right"; \
+            relative: 0 1; \
+         }
+
+#define GENLIST_PART_BG_IMAGE_DIALOGUE \
+         part { name: "bg_image_clip"; \
+            type: RECT; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: 255 255 255 255; \
+            } \
+            description { state: "2depth" 0.0; \
+               color: 220 218 211 255; \
+            } \
+         } \
+         part { name: "bg_image_left"; \
+            type: SPACER; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               min: 16 0; \
+               max: 16 -1; \
+               fixed: 1 0; \
+               align: 0 0.5; \
+               rel2.relative: 0 1; \
+            } \
+         } \
+         part { name: "bg_image_right"; \
+            type: SPACER; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               min: 16 0; \
+               max: 16 -1; \
+               fixed: 1 0; \
+               align: 1 0.5; \
+               rel1.relative: 1 0; \
+            } \
+            description { state: "editmode" 0.0; \
+               inherit: "default" 0.0; \
+               min: (GENLIST_PADDING_SIZE_DEFAULT*2+GENLIST_ICON_BIG_SIZE) 0; \
+               max: (GENLIST_PADDING_SIZE_DEFAULT*2+GENLIST_ICON_BIG_SIZE) 0; \
+            } \
+         } \
+         part { name: "bg_image"; \
+            clip_to: "bg_image_clip"; \
+            type: IMAGE; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: 255 255 255 255; \
+               GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+               image { \
+                  normal: "00_list_group_bg.png"; \
+                  border: 14 14 10 10; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "selected" 0.0; \
+               color: 255 255 255 255; \
+               GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+               image { \
+                  normal: "00_list_group_bg_press.png"; \
+                  border: 14 14 10 10; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "top" 0.0; \
+               GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+               image { \
+                  normal: "00_list_group_bg_top.png"; \
+                  border: 14 14 10 2; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "top_selected" 0.0; \
+               GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+               image { \
+                  normal: "00_list_group_bg_top_press.png"; \
+                  border: 14 14 10 2; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "center" 0.0; \
+               GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+               image { \
+                  normal: "00_list_group_bg_center.png"; \
+                  border: 14 14 2 2; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "center_selected" 0.0; \
+               GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+               image { \
+                  normal: "00_list_group_bg_center_press.png"; \
+                  border: 14 14 2 2; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "bottom" 0.0; \
+               GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+               image { \
+                  normal: "00_list_group_bg_bottom.png"; \
+                  border: 14 14 2 10; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "bottom_selected" 0.0; \
+               GENLIST_PARAM_BG_IMAGE_DIALOGUE \
+               image { \
+                  normal: "00_list_group_bg_bottom_press.png"; \
+                  border: 14 14 2 10; \
+                  border_scale: 1; \
+               } \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default"; \
+               color: 255 255 255 255; \
+            } \
+            GENLIST_DESCRIPTION_FADEOUT \
+         }
+
+//****************************************************************************//
+// ****************************** BASE  ********************************//
+//****************************************************************************//
+#define GENLIST_PART_BASE \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               align: 0.5 0.5; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         GENLIST_PART_PERSPECTIVE_POINT
+
+#define GENLIST_PART_BASE_REORDER \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               align: 0.5 0.5; \
+               color: 0 0 0 0; \
+               rel1 { \
+                  relative: 1 0; \
+                  to_x: "reorder.padding.left"; \
+               } \
+               rel2 { \
+                  relative: 0 1; \
+                  to_x: "reorder.padding.right"; \
+               } \
+            } \
+         } \
+         part { name: "reorder.padding.left"; \
+            type: SPACER; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               rel2.relative: 0 1; \
+               align: 0 0.5; \
+            } \
+            description { state: "reorder" 0.0; \
+               inherit: "default" 0.0; \
+               min: 16 0; \
+               max: 16 -1; \
+            } \
+         } \
+         part { name: "reorder.padding.right"; \
+            type: SPACER; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               rel1.relative: 1 0; \
+               align: 1 0.5; \
+            } \
+            description { state: "reorder" 0.0; \
+               inherit: "default" 0.0; \
+               min: 16 0; \
+               max: 16 -1; \
+            } \
+         } \
+         GENLIST_PART_PERSPECTIVE_POINT
+
+//****************************************************************************//
+// ****************************** LINE ********************************//
+//****************************************************************************//
+#define GENLIST_PART_BOTTOM_LINE \
+         part { name: "bottom_line"; \
+            type: RECT; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               min: 0 GENLIST_PART_LIST_LINE_HEIGHT; \
+               max: -1 GENLIST_PART_LIST_LINE_HEIGHT; \
+               fixed: 0 1; \
+               align: 0.5 1; \
+               color: GENLIST_LIST_LINE1_COLOR; \
+               rel1.to: "bottom_line2"; \
+               rel2.to: "bottom_line2"; \
+               rel2.relative: 1 0; \
+            } \
+            description { state: "reorder" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_LIST_PRESS_COLOR; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_LIST_DIM_COLOR; \
+            } \
+            GENLIST_DESCRIPTION_FADEOUT \
+         } \
+         part { name: "bottom_line2"; \
+            type: RECT; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               min: 0 GENLIST_PART_LIST_LINE_HEIGHT; \
+               max: -1 GENLIST_PART_LIST_LINE_HEIGHT; \
+               fixed: 0 1; \
+               align: 0.5 1; \
+               color: GENLIST_LIST_LINE2_COLOR; \
+               rel1.to_x: "elm.padding.left"; \
+               rel1.relative: 1 0; \
+               rel2.to_x: "elm.padding.right"; \
+               rel2.relative: 0 1; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_LIST_PRESS_COLOR; \
+            } \
+            description { state: "reorder" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_LIST_DIM_COLOR; \
+            } \
+            GENLIST_DESCRIPTION_FADEOUT \
+         }
+
+#define GENLIST_PART_BOTTOM_LINE_OFF \
+         part { name: "bottom_line"; \
+            type: RECT; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+            } \
+            description { state: "reorder" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+            GENLIST_DESCRIPTION_FADEOUT_RECT \
+         } \
+         part { name: "bottom_line2"; \
+            type: RECT; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+            } \
+            description { state: "reorder" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            } \
+            GENLIST_DESCRIPTION_FADEOUT_RECT \
+         }
+
+#define GENLIST_PART_DIVIDER_MARGIN \
+         GENLIST_PART_SPACER("elm.padding.divider.top", \
+            GENLIST_DESCRIPTION_ENVELOP("base", \
+               align: 0.5 0; \
+               min: 0 30; \
+               max: -1 30; \
+               fixed: 0 1; \
+               rel2.relative: 1 0; \
+            ) \
+         ) \
+         GENLIST_PART_SPACER("elm.padding.divider.bottom", \
+            GENLIST_DESCRIPTION_ENVELOP("base", \
+               align: 0.5 1; \
+               min: 0 30; \
+               max: -1 30; \
+               fixed: 0 1; \
+               rel1.relative: 0 1; \
+            ) \
+         ) \
+
+#define GENLIST_PART_DIVIDER_L(LEFT) \
+         GENLIST_PART_DIVIDER_MARGIN \
+         GENLIST_PART_RECT("elm.divider1", \
+            mouse_events: 0; \
+            GENLIST_DESCRIPTION_LTB(LEFT, "elm.padding.divider.top", "elm.padding.divider.bottom", \
+               min: 1 0; \
+               max: 1 -1; \
+               fixed: 1 0; \
+               color: GENLIST_LIST_DIVIDER1_COLOR; \
+            ) \
+            GENLIST_DESCRIPTION_FADEOUT_RECT \
+         ) \
+         GENLIST_PART_RECT("elm.divider2", \
+            mouse_events: 0; \
+            GENLIST_DESCRIPTION_LTB("elm.divider1", "elm.padding.divider.top", "elm.padding.divider.bottom", \
+               min: 1 0; \
+               max: 1 -1; \
+               fixed: 1 0; \
+               color: GENLIST_LIST_DIVIDER2_COLOR; \
+            ) \
+            GENLIST_DESCRIPTION_FADEOUT_RECT \
+         )
+
+#define GENLIST_PART_DIVIDER_R(RIGHT) \
+         GENLIST_PART_DIVIDER_MARGIN \
+         GENLIST_PART_RECT("elm.divider1", \
+            mouse_events: 0; \
+            GENLIST_DESCRIPTION_RTB("elm.divider2", "elm.padding.divider.top", "elm.padding.divider.bottom", \
+               min: 1 0; \
+               max: 1 -1; \
+               fixed: 1 0; \
+               color: GENLIST_LIST_DIVIDER1_COLOR; \
+            ) \
+            GENLIST_DESCRIPTION_FADEOUT_RECT \
+         ) \
+         GENLIST_PART_RECT("elm.divider2", \
+            mouse_events: 0; \
+            GENLIST_DESCRIPTION_RTB(RIGHT, "elm.padding.divider.top", "elm.padding.divider.bottom", \
+               min: 1 0; \
+               max: 1 -1; \
+               fixed: 1 0; \
+               color: GENLIST_LIST_DIVIDER2_COLOR; \
+            ) \
+            GENLIST_DESCRIPTION_FADEOUT_RECT \
+         )
+
+#define GENLIST_PART_CENTER_LINE_LT(LEFT, TOP) \
+         GENLIST_PART_SPACER("elm.padding.divider.left", \
+            GENLIST_DESCRIPTION_L(LEFT, \
+               min: 16 0; \
+               max: 16 -1; \
+               fixed: 1 0; \
+            ) \
+         ) \
+         GENLIST_PART_SPACER("elm.padding.divider.right", \
+            GENLIST_DESCRIPTION_ENVELOP("base", \
+               min: 16 0; \
+               max: 16 -1; \
+               fixed: 1 0; \
+               align: 1 0.5; \
+               rel1.relative: 1 0; \
+            ) \
+         ) \
+         GENLIST_PART_RECT("center_line", \
+            mouse_events: 0; \
+            GENLIST_DESCRIPTION_LRT("elm.padding.divider.left", "elm.padding.divider.right", TOP, \
+               min: 0 1; \
+               max: -1 1; \
+               fixed: 0 1; \
+               color: GENLIST_LIST_DIVIDER1_COLOR; \
+            ) \
+            GENLIST_DESCRIPTION_FADEOUT_RECT \
+         ) \
+         GENLIST_PART_RECT("center_line2", \
+            GENLIST_DESCRIPTION_LRT("elm.padding.divider.left", "elm.padding.divider.right", "center_line", \
+               min: 0 1; \
+               max: -1 1; \
+               fixed: 0 1; \
+               color: GENLIST_LIST_DIVIDER2_COLOR; \
+            ) \
+            GENLIST_DESCRIPTION_FADEOUT_RECT \
+         )
+
+#define GENLIST_PART_COLORBAR \
+         GENLIST_PART_SPACER("elm.padding.colorbar.top", \
+             GENLIST_DESCRIPTION_ENVELOP("base", \
+               align: 0.5 0; \
+               fixed: 0 1; \
+               min: 0 4; \
+               max: -1 4; \
+               rel2.relative: 1 0; \
+             ) \
+         ) \
+         GENLIST_PART_SPACER("elm.padding.colorbar.bottom", \
+             GENLIST_DESCRIPTION_ENVELOP("base", \
+               align: 0.5 1; \
+               fixed: 0 1; \
+               min: 0 4; \
+               max: -1 4; \
+               rel1.relative: 0 1; \
+             ) \
+         ) \
+         GENLIST_PART_ICON("elm.swallow.colorbar", \
+            GENLIST_DESCRIPTION_LTB("bg_image", "elm.padding.colorbar.top", "elm.padding.colorbar.bottom", \
+               min: GENLIST_ICON_COLORBAR_SIZE 0; \
+               max: GENLIST_ICON_COLORBAR_SIZE -1; \
+               fixed: 1 0; \
+               rel1.relative: 0 1; \
+               rel2.relative: 0 0; \
+            ) \
+            GENLIST_DESCRIPTION_FADEOUT \
+         )
+
+//****************************************************************************//
+//********************************* PADDING **********************************//
+//****************************************************************************//
+#define GENLIST_PART_EXPANDED_PAD \
+         part { name: "elm.swallow.pad"; \
+            type: SWALLOW; \
+            scale: 1; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               min: 0 0; \
+               fixed: 1 0; \
+               align: 0.0 0.5; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel2.relative: 0.0 1.0; \
+            } \
+         } \
+
+#define GENLIST_PART_PADDING( NAME, SIZE, REL1, REL2 ) \
+      GENLIST_PART_SPACER(NAME, \
+         description { state: "default" 0.0; \
+            min: SIZE 0; \
+            max: SIZE -1; \
+            fixed: 1 0; \
+            align: 0.5 0.5; \
+            rel1 { \
+               relative: REL1; \
+               to: "base"; \
+            } \
+            rel2 { \
+               relative: REL2; \
+               to: "base"; \
+            } \
+         } \
+      )
+
+#define GENLIST_PART_PADDING_LEFT \
+         GENLIST_PART_EXPANDED_PAD \
+         GENLIST_PART_SPACER("elm.padding.left", \
+            GENLIST_DESCRIPTION_L("elm.swallow.pad",  \
+               min: GENLIST_PADDING_SIZE_LEFT 0; \
+               max: GENLIST_PADDING_SIZE_LEFT -1; \
+               fixed: 1 0; \
+            ) \
+         )
+
+#define GENLIST_PART_PADDING_LEFT_SIZE( SIZE ) \
+         GENLIST_PART_EXPANDED_PAD \
+         GENLIST_PART_SPACER("elm.padding.left", \
+            GENLIST_DESCRIPTION_L("elm.swallow.pad",  \
+               min: SIZE 0; \
+               max: SIZE -1; \
+               fixed: 1 0; \
+            ) \
+         )
+
+#define GENLIST_PART_EDITBTN \
+         part { name: "elm.icon.edit"; \
+            type: SWALLOW; \
+            scale: 1; \
+            GENLIST_DESCRIPTION_R("elm.padding.edit.right", \
+               fixed: 1 1; \
+               visible: 0; \
+               min: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE; \
+               max: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE; \
+            ) \
+            description { state: "editmode" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+         GENLIST_PART_SPACER("elm.padding.edit.right", \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               align: 1.0 0.5; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel1.relative: 1 0; \
+               min: GENLIST_PADDING_SIZE_RIGHT 0; \
+               max: GENLIST_PADDING_SIZE_RIGHT -1; \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_RIGHT \
+         GENLIST_PART_SPACER("elm.padding.right", \
+            description { state: "default" 0.0; \
+               min: GENLIST_PADDING_SIZE_RIGHT 0; \
+               max: GENLIST_PADDING_SIZE_RIGHT -1; \
+               fixed: 1 0; \
+               align: 1.0 0.5; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel1.relative: 1 0; \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_RIGHT_SIZE( SIZE ) \
+         GENLIST_PART_SPACER("elm.padding.right", \
+            description { state: "default" 0.0; \
+               min: SIZE 0; \
+               max: SIZE -1; \
+               fixed: 1 0; \
+               align: 1.0 0.5; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel1.relative: 1 0; \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_RIGHT_EDIT \
+         GENLIST_PART_SPACER("elm.padding.right", \
+            description { state: "default" 0.0; \
+               min: GENLIST_PADDING_SIZE_RIGHT 0; \
+               max: GENLIST_PADDING_SIZE_RIGHT -1; \
+               fixed: 1 0; \
+               align: 1.0 0.5; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel1.relative: 1 0; \
+            } \
+            description { state: "editmode" 0.0; \
+               inherit: "default" 0.0; \
+               min: (DIALOGUE_PADDING_SIZE_RIGHT+GENLIST_ICON_BIG_SIZE+GENLIST_PADDING_SIZE_RIGHT) 0; \
+               max: (DIALOGUE_PADDING_SIZE_RIGHT+GENLIST_ICON_BIG_SIZE+GENLIST_PADDING_SIZE_RIGHT) -1; \
+            } \
+         ) \
+         GENLIST_PART_EDITBTN
+
+#define GENLIST_PART_PADDING_RIGHT_SIZE_EDIT( SIZE ) \
+         GENLIST_PART_SPACER("elm.padding.right", \
+            description { state: "default" 0.0; \
+               min: SIZE 0; \
+               max: SIZE -1; \
+               fixed: 1 0; \
+               align: 1.0 0.5; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel1.relative: 1 0; \
+            } \
+            description { state: "editmode" 0.0; \
+               inherit: "default" 0.0; \
+               min: (DIALOGUE_PADDING_SIZE_RIGHT+SIZE+GENLIST_ICON_BIG_SIZE) 0; \
+               max: (DIALOGUE_PADDING_SIZE_RIGHT+SIZE+GENLIST_ICON_BIG_SIZE) -1; \
+            } \
+         ) \
+         GENLIST_PART_EDITBTN
+
+#define GENLIST_PART_PADDING_TOP_2LINE \
+         GENLIST_PART_SPACER("elm.padding.top", \
+            description { \
+               state: "default" 0.0; \
+               min: 0 GENLIST_PADDING_SIZE_TOP_2LINE; \
+               max: -1 GENLIST_PADDING_SIZE_TOP_2LINE; \
+               fixed: 0 1; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel2.relative: 1.0 0.0; \
+               align: 0.5 0.0; \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_TOP_SIZE( SIZE ) \
+         GENLIST_PART_SPACER("elm.padding.top", \
+            description { \
+               state: "default" 0.0; \
+               min: 0 SIZE; \
+               max: -1 SIZE; \
+               fixed: 0 1; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel2.relative: 1.0 0.0; \
+               align: 0.5 0.0; \
+            } \
+         )
+
+
+#define GENLIST_PART_PADDING_BOTTOM_2LINE \
+         GENLIST_PART_SPACER("elm.padding.bottom", \
+            description { state: "default" 0.0; \
+               min: 0 GENLIST_PADDING_SIZE_BOTTOM_2LINE; \
+               max: -1 GENLIST_PADDING_SIZE_BOTTOM_2LINE; \
+               fixed: 0 1; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel1.relative: 0.0 1.0; \
+               align: 0.5 1.0; \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_BOTTOM_SIZE( SIZE ) \
+         GENLIST_PART_SPACER("elm.padding.bottom", \
+            description { state: "default" 0.0; \
+               min: 0 SIZE; \
+               max: -1 SIZE; \
+               fixed: 0 1; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel1.relative: 0.0 1.0; \
+               align: 0.5 1.0; \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_R( NAME, RIGHT ) \
+         GENLIST_PART_SPACER(NAME, \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               min: GENLIST_PADDING_SIZE_DEFAULT 0; \
+               max: GENLIST_PADDING_SIZE_DEFAULT -1; \
+               align: 1 0.5; \
+               rel1 { \
+                  relative: 0 0; \
+                  to_x: RIGHT; \
+               } \
+               rel2 { \
+                  relative: 0 1; \
+                  to_x: RIGHT; \
+               } \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_R_SIZE( NAME, RIGHT, SIZE ) \
+         GENLIST_PART_SPACER(NAME, \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               min: SIZE 0; \
+               max: SIZE -1; \
+               align: 1 0.5; \
+               rel1 { \
+                  relative: 0 0; \
+                  to_x: RIGHT; \
+               } \
+               rel2 { \
+                  relative: 0 1; \
+                  to_x: RIGHT; \
+               } \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_L( NAME, LEFT ) \
+         GENLIST_PART_SPACER(NAME, \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               min: GENLIST_PADDING_SIZE_DEFAULT 0; \
+               max: GENLIST_PADDING_SIZE_DEFAULT -1; \
+               align: 0 0.5; \
+               rel1 { \
+                  relative: 1 0; \
+                  to_x: LEFT; \
+               } \
+               rel2 { \
+                  relative: 1 1; \
+                  to_x: LEFT; \
+               } \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_L_SIZE( NAME, LEFT, SIZE ) \
+         GENLIST_PART_SPACER(NAME, \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               min: SIZE 0; \
+               max: SIZE -1; \
+               align: 0 0.5; \
+               rel1 { \
+                  relative: 1 0; \
+                  to_x: LEFT; \
+               } \
+               rel2 { \
+                  relative: 1 1; \
+                  to_x: LEFT; \
+               } \
+            } \
+         )
+
+
+#define GENLIST_PART_PADDING_T_SIZE( NAME, TOP, SIZE ) \
+         GENLIST_PART_SPACER(NAME, \
+            description { state: "default" 0.0; \
+               min: 0 SIZE; \
+               max: -1 SIZE; \
+               fixed: 0 1; \
+               align: 0.5 0; \
+               rel1 { \
+                  relative: 0 1; \
+                  to: TOP; \
+               } \
+               rel2 { \
+                  relative: 1 1; \
+                  to: TOP; \
+               } \
+            } \
+         )
+
+#define GENLIST_PART_PADDING_B_SIZE( NAME, BOTTOM, SIZE ) \
+         GENLIST_PART_SPACER(NAME, \
+            description { state: "default" 0.0; \
+               min: 0 SIZE; \
+               max: -1 SIZE; \
+               fixed: 0 1; \
+               align: 0.5 1; \
+               rel1 { \
+                  relative: 0.5 0; \
+                  to: BOTTOM; \
+               } \
+               rel2 { \
+                  relative: 0.5 0; \
+                  to: BOTTOM; \
+               } \
+            } \
+         )
+
+#define GENLIST_PART_PERSPECTIVE_POINT \
+         GENLIST_PART_RECT("point", \
+            description { \
+               state: "default" 0.0; \
+               color: 0 0 0 0; \
+               rel1 { relative: 0.0 0.0; } \
+               rel2 { relative: 1.0 0.0; } \
+            } \
+         )
+
+#define GENLIST_DESCRIPTION_ROTATE( param_x, param_y, param_z ) \
+   description { state: "map_contracted" 0.0; \
+      inherit: "default" 0.0; \
+      map { \
+         perspective: "point"; \
+         on: 1; \
+         smooth: 1; \
+         perspective_on: 1; \
+         backface_cull: 1; \
+         rotation { \
+            center: "point"; \
+            x: param_x; \
+            y: param_y; \
+            z: param_z; \
+         } \
+      } \
+   } \
+   description { state: "map_expanded" 0.0; \
+      inherit: "default" 0.0; \
+      map { \
+         perspective: "point"; \
+         on: 1; \
+         smooth: 1; \
+         perspective_on: 1; \
+         backface_cull: 1; \
+         rotation { \
+            center: "point"; \
+            x: 0; \
+            y: 0; \
+            z: 0; \
+         } \
+      } \
+   } \
+   description { \
+      state: "hide" 0.0; \
+      inherit: "default" 0.0; \
+      visible: 0; \
+   }
+
+#define GENLIST_PROGRAM_ROTATE( TARGET ) \
+   program { name: "map_expand_start"; \
+      signal: "flip_item"; \
+      action: STATE_SET "map_contracted" 0.0; \
+      target: "bg_image"; \
+      TARGET \
+      after: "map_expanding"; \
+   } \
+   program { name: "map_expanding"; \
+      action: STATE_SET "hide" 0.0; \
+      transition: LINEAR 0.2; \
+      target: "bg_image"; \
+      TARGET \
+      after: "map_expand_end"; \
+   } \
+   program { name: "map_expand_end"; \
+      action: STATE_SET "default" 0.0; \
+      target: "bg_image"; \
+      TARGET \
+   } \
+   program { name: "map_contract_start"; \
+      signal: "elm,state,contract_flip"; \
+      action: STATE_SET "map_expanded" 0.0; \
+      target: "bg_image"; \
+      TARGET \
+      after: "map_contracting"; \
+   } \
+   program { name: "map_contracting"; \
+      action: STATE_SET "map_contracted" 0.0; \
+      transition: LINEAR 0.3; \
+      target: "bg_image"; \
+      TARGET \
+      after: "map_contract_end"; \
+   } \
+   program { name: "map_contract_end"; \
+      action: STATE_SET "hide" 0.0; \
+      target: "bg_image"; \
+      TARGET \
+   }
+
+// FIXME: swallow part cannot be fade out ???
+#define GENLIST_DESCRIPTION_FADEOUT_ICON \
+   description { state: "fadeout" 0.0; \
+      inherit: "default" 0.0; \
+      visible: 0; \
+   } \
+   description { state: "fadeout2" 0.0; \
+      inherit: "fadeout" 0.0; \
+   } \
+   description { state: "fadein" 0.0; \
+      inherit: "default" 0.0; \
+      visible: 0; \
+   } \
+
+#define GENLIST_DESCRIPTION_FADEOUT_RECT \
+   description { state: "fadeout" 0.0; \
+      inherit: "default" 0.0; \
+      color: 255 255 255 50; \
+      visible: 0; \
+   } \
+   description { state: "fadeout2" 0.0; \
+      inherit: "fadeout" 0.0; \
+   } \
+   description { state: "fadein" 0.0; \
+      inherit: "default" 0.0; \
+   } \
+
+#define GENLIST_DESCRIPTION_FADEOUT \
+   description { state: "fadeout" 0.0; \
+      inherit: "default" 0.0; \
+      visible: 0; \
+   } \
+   description { state: "fadeout2" 0.0; \
+      inherit: "fadeout" 0.0; \
+   } \
+   description { state: "fadein" 0.0; \
+      inherit: "default" 0.0; \
+   } \
+
+// FIXME: fadein effect is removed.. because blinking happens.
+// text has some timing issue??
+#define GENLIST_DESCRIPTION_FADEOUT_TEXT \
+   description { state: "fadeout" 0.0; \
+      inherit: "default" 0.0; \
+      color: 255 255 255 50; \
+      visible: 0; \
+   } \
+   description { state: "fadeout2" 0.0; \
+      inherit: "default" 0.0; \
+   } \
+   description { state: "fadein" 0.0; \
+      inherit: "default" 0.0; \
+   } \
+
+// FIXME: bg_color_change is used temporary
+ #define GENLIST_PROGRAM_EXPAND_FADE( TARGET ) \
+   program { name: "bg_color_change"; \
+      signal: "bg_color_change"; \
+      action: STATE_SET "2depth" 0.0; \
+      target: "bg_image_clip"; \
+   } \
+   program { name: "expand_start_fade"; \
+      signal: "flip_item"; \
+      action: STATE_SET "fadeout2" 0.0; \
+      target: "bg_image"; \
+      TARGET \
+      after: "expand_end_fade"; \
+   } \
+   program { name: "expand_end_fade"; \
+      action: STATE_SET "default" 0.0; \
+      transition: DECELERATE 0.3; \
+      target: "bg_image"; \
+      TARGET \
+   } \
+   program { name: "contract_fade"; \
+      signal: "elm,state,contract_flip"; \
+      action: STATE_SET "fadein" 0.0; \
+      after: "contract_end_fade"; \
+      target: "bg_image"; \
+      TARGET \
+   } \
+   program { name: "contract_end_fade"; \
+      action: STATE_SET "fadeout" 0.0; \
+      transition: ACCELERATE 0.3; \
+      target: "bg_image"; \
+      TARGET \
+   }
+
+#define GENLIST_PROGRAM_EXPAND_ROOT( TARGET ) \
+         program { \
+            name: "go_expanded"; \
+            signal: "elm,state,expanded"; \
+            source: "elm"; \
+            action: STATE_SET "expand_opened" 0.0; \
+            TARGET \
+         } \
+         program { \
+            name: "go_contracted"; \
+            signal: "elm,state,contracted"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            TARGET \
+         } \
+         program { \
+            name: "show"; \
+            signal: "elm,state,show"; \
+            action: STATE_SET "default" 0.0; \
+            TARGET \
+         } \
+         program { \
+            name: "hide"; \
+            signal: "elm,state,hide"; \
+            action: STATE_SET "hide" 0.0; \
+            TARGET \
+         }
+
+#define GENLIST_PROGRAM_EXPANDABLE( SRC ) \
+        program { \
+            name: "expand"; \
+            signal: "mouse,up,1"; \
+            SRC \
+            action: SIGNAL_EMIT "elm,action,expand,toggle" "elm"; \
+         } \
+
+// 2.2.7 Genlist_Edit mode (Rename)
+// FIXME: padding is not needed when swallow content is NULL.
+// But how can edje kwno existence of swallow content?
+#define GENLIST_PART_FLIP \
+         part { name: "elm.flip.event_block";\
+            type: RECT;\
+            mouse_events: 0; \
+            repeat_events: 0;\
+            description { state: "default" 0.0;\
+               visible: 0; \
+            } \
+            description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               color: GENLIST_LIST_BG_COLOR;\
+            }\
+         }\
+         part { name: "elm.flip.padding.left"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 26 0; \
+               max: 26 -1; \
+               fixed: 1 0; \
+               visible: 0; \
+               align: 0 0.5; \
+               rel1 { \
+                  relative: 0 0; \
+                  to: "base"; \
+               } \
+               rel2 { \
+                  relative: 0 1; \
+                  to: "base"; \
+               } \
+            } \
+         } \
+         part { name: "elm.flip.padding.right"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 26 0; \
+               max: 26 -1; \
+               fixed: 1 0; \
+               visible: 0; \
+               align: 1 0.5; \
+               rel1 { \
+                  relative: 1 0; \
+                  to: "base"; \
+               } \
+               rel2 { \
+                  relative: 1 1; \
+                  to: "base"; \
+               } \
+            } \
+         } \
+         part { name: "elm.flip.content"; \
+            type: SWALLOW; \
+            scale: 1; \
+            GENLIST_DESCRIPTION_LR("elm.flip.padding.left", "elm.flip.padding.icon.left", \
+               aspect: 1 1; visible: 0; ) \
+            description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+         GENLIST_PART_PADDING_R("elm.flip.padding.icon.left", "elm.flip.icon") \
+         GENLIST_PART_ICON( "elm.flip.icon", \
+            GENLIST_DESCRIPTION_R("elm.flip.padding.right", \
+               visible: 0; \
+               aspect: 1 1; \
+               align: 1 0.5; \
+               max: 154 74;) \
+            description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         )
+
+//****************************************************************************//
+// *******************************  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
+#define GENLIST_PROGRAM_DISABLED( TARGET ) \
+         program { name: "enabled"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "bg_image"; \
+            TARGET \
+         } \
+         program { name: "disabled"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "bg_image"; \
+            TARGET \
+         }
+
+#define GENLIST_PROGRAM_DISABLED_BOTTOMLINE( TARGET ) \
+         program { name: "enabled"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "bg_image"; \
+            target: "bottom_line"; \
+            target: "bottom_line2"; \
+            TARGET \
+         } \
+         program { name: "disabled"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "bg_image"; \
+            target: "bottom_line"; \
+            target: "bottom_line2"; \
+            TARGET \
+         }
+
+#define GENLIST_PROGRAM_SELECT( TARGET ) \
+         program { name: "selected"; \
+            signal: "elm,state,selected"; \
+            source: "elm"; \
+            action: STATE_SET "selected" 0.0; \
+            target: "bg_image"; \
+            TARGET \
+            after: "play_button_press"; \
+         } \
+         program { name: "unselected"; \
+            signal: "elm,state,unselected"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "bg_image"; \
+            TARGET \
+            transition: LINEAR 0.1; \
+         } \
+         program { name: "play_button_press"; \
+            action: PLAY_SAMPLE "button-pressed" 1.0; \
+         }
+
+#define GENLIST_PROGRAM_SELECT_BOTTOMLINE( TARGET ) \
+         program { name: "selected"; \
+            signal: "elm,state,selected"; \
+            source: "elm"; \
+            action: STATE_SET "selected" 0.0; \
+            target: "bg_image"; \
+            target: "bottom_line"; \
+            target: "bottom_line2"; \
+            TARGET \
+            after: "play_button_press"; \
+         } \
+         program { name: "unselected"; \
+            signal: "elm,state,unselected"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "bg_image"; \
+            target: "bottom_line"; \
+            target: "bottom_line2"; \
+            TARGET \
+            transition: LINEAR 0.1; \
+         } \
+         program { name: "play_button_press"; \
+            action: PLAY_SAMPLE "button-pressed" 1.0; \
+         }
+
+#define GENLIST_PROGRAM_SELECT_DIALOGUE( TARGET ) \
+         program { name: "selected"; \
+            signal: "elm,state,selected"; \
+            source: "elm"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"bg_image", st, 30, vl); \
+               if (!strcmp(st, "top")) \
+                  set_state(PART:"bg_image", "top_selected", 0.0); \
+               else if (!strcmp(st, "center")) \
+                  set_state(PART:"bg_image", "center_selected", 0.0); \
+               else if (!strcmp(st, "bottom")) \
+                  set_state(PART:"bg_image", "bottom_selected", 0.0); \
+               else \
+                  set_state(PART:"bg_image", "selected", 0.0); \
+            } \
+            after: "target_selected"; \
+            after: "play_button_press"; \
+         } \
+         program { name: "unselected"; \
+            signal: "elm,state,unselected"; \
+            source: "elm"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"bg_image", st, 30, vl); \
+               if (!strcmp(st, "top_selected")) \
+                  set_state(PART:"bg_image", "top", 0.0); \
+               else if (!strcmp(st, "center_selected"))  \
+                  set_state(PART:"bg_image", "center", 0.0); \
+               else if (!strcmp(st, "bottom_selected"))  \
+                  set_state(PART:"bg_image", "bottom", 0.0); \
+               else \
+                  set_state(PART:"bg_image", "default", 0.0); \
+            } \
+            transition: LINEAR 0.1; \
+            after: "target_unselected"; \
+         } \
+         program { name: "target_selected"; \
+            action: STATE_SET "selected" 0.0; \
+            TARGET \
+         }\
+         program { name: "target_unselected"; \
+            action: STATE_SET "default" 0.0; \
+            TARGET \
+         }\
+         program { name: "bg_top"; \
+            signal: "elm,state,top"; \
+            source: "*"; \
+            action: STATE_SET "top" 0.0; \
+            target: "bg_image"; \
+         } \
+         program { name: "bg_center"; \
+            signal: "elm,state,center"; \
+            source: "*"; \
+            action: STATE_SET "center" 0.0; \
+            target: "bg_image"; \
+         } \
+         program { name: "bg_bottom"; \
+            signal: "elm,state,bottom"; \
+            source: "*"; \
+            action: STATE_SET "bottom" 0.0; \
+            target: "bg_image"; \
+         } \
+         program { name: "bg_default"; \
+            signal: "elm,state,default"; \
+            source: "*"; \
+            action: STATE_SET "default" 0.0; \
+            target: "bg_image"; \
+         } \
+         program { name: "play_button_press"; \
+            action: PLAY_SAMPLE "button-pressed" 1.0; \
+         }
+
+#define GENLIST_PROGRAM_SELECT_DIALOGUE_ARROW( TARGET ) \
+         program { name: "selected"; \
+            signal: "elm,state,selected"; \
+            source: "elm"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"bg_image", st, 30, vl); \
+               if (!strcmp(st, "top")) \
+                  set_state(PART:"bg_image", "top_selected", 0.0); \
+               else if (!strcmp(st, "center")) \
+                  set_state(PART:"bg_image", "center_selected", 0.0); \
+               else if (!strcmp(st, "bottom")) \
+                  set_state(PART:"bg_image", "bottom_selected", 0.0); \
+               else \
+                  set_state(PART:"bg_image", "selected", 0.0); \
+               get_state(PART:"arrow", st, 30, vl); \
+               if (!strcmp(st, "default")) \
+                  set_state(PART:"arrow", "default_press", 0.0); \
+               else if (!strcmp(st, "expand_opened")) \
+                  set_state(PART:"arrow", "expand_opened_press", 0.0); \
+            } \
+            after: "target_selected"; \
+            after: "play_button_press"; \
+         } \
+         program { name: "unselected"; \
+            signal: "elm,state,unselected"; \
+            source: "elm"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"bg_image", st, 30, vl); \
+               if (!strcmp(st, "top_selected")) \
+                  set_state(PART:"bg_image", "top", 0.0); \
+               else if (!strcmp(st, "center_selected"))  \
+                  set_state(PART:"bg_image", "center", 0.0); \
+               else if (!strcmp(st, "bottom_selected"))  \
+                  set_state(PART:"bg_image", "bottom", 0.0); \
+               else \
+                  set_state(PART:"bg_image", "default", 0.0); \
+               get_state(PART:"arrow", st, 30, vl); \
+               if (!strcmp(st, "default_press")) \
+                  set_state(PART:"arrow", "default", 0.0); \
+               else if (!strcmp(st, "expand_opened_press")) \
+                  set_state(PART:"arrow", "expand_opened", 0.0); \
+            } \
+            transition: LINEAR 0.1; \
+            after: "target_unselected"; \
+         } \
+         program { name: "target_selected"; \
+            action: STATE_SET "selected" 0.0; \
+            TARGET \
+         }\
+         program { name: "target_unselected"; \
+            action: STATE_SET "default" 0.0; \
+            TARGET \
+         }\
+         program { name: "bg_top"; \
+            signal: "elm,state,top"; \
+            source: "*"; \
+            action: STATE_SET "top" 0.0; \
+            target: "bg_image"; \
+         } \
+         program { name: "bg_center"; \
+            signal: "elm,state,center"; \
+            source: "*"; \
+            action: STATE_SET "center" 0.0; \
+            target: "bg_image"; \
+         } \
+         program { name: "bg_bottom"; \
+            signal: "elm,state,bottom"; \
+            source: "*"; \
+            action: STATE_SET "bottom" 0.0; \
+            target: "bg_image"; \
+         } \
+         program { name: "bg_default"; \
+            signal: "elm,state,default"; \
+            source: "*"; \
+            action: STATE_SET "default" 0.0; \
+            target: "bg_image"; \
+         } \
+         program { name: "play_button_press"; \
+            action: PLAY_SAMPLE "button-pressed" 1.0; \
+         }
+
+#define GENLIST_PROGRAM_FLIP \
+         program { name: "flip_enabled"; \
+            signal:  "elm,state,flip,enabled"; \
+            source:  "elm"; \
+            action:  STATE_SET "flip_enabled" 0.0; \
+            target: "elm.flip.event_block"; \
+            after: "flip_enabled_next"; \
+         } \
+         program { name: "flip_enabled_next"; \
+            action:  STATE_SET "flip_enabled" 0.0; \
+            transition: DECELERATE 0.5; \
+            target: "elm.flip.content"; \
+            target: "elm.flip.icon"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal:  "elm,state,flip,disabled"; \
+            source:  "elm"; \
+            action:  STATE_SET "default" 0.0; \
+            transition: DECELERATE 0.5; \
+            target: "elm.flip.event_block"; \
+            target: "elm.flip.content"; \
+            target: "elm.flip.icon"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_TARGET( TARGET ) \
+         program { name: "flip_enabled"; \
+            signal:  "elm,state,flip,enabled"; \
+            source:  "elm"; \
+            action:  STATE_SET "flip_enabled" 0.0; \
+            transition: DECELERATE 0.5; \
+            TARGET; \
+         } \
+         program { name: "flip_disabled"; \
+            signal:  "elm,state,flip,disabled"; \
+            source:  "elm"; \
+            action:  STATE_SET "default" 0.0; \
+            transition: DECELERATE 0.5; \
+            TARGET \
+         }
+
+#define GENLIST_PROGRAM_EDITMODE \
+         program { name: "edit_enabled"; \
+            signal:  "elm,state,edit,enabled"; \
+            source:  "*"; \
+            action:  STATE_SET "editmode" 0.0; \
+            target: "elm.padding.right"; \
+            target: "elm.icon.edit"; \
+            target: "bg_image_right"; \
+         } \
+         program { name: "edit_disabled"; \
+            signal:  "elm,state,edit,disabled"; \
+            source:  "*"; \
+            action:  STATE_SET "editmode" 0.0; \
+            target: "elm.padding.right"; \
+            target: "elm.icon.edit"; \
+            target: "bg_image_right"; \
+         }
+
+#define GENLIST_PROGRAMS_INDEX( TARGET ) \
+         programs { \
+            GENLIST_PROGRAM_DISABLED( TARGET ) \
+         }
+
+#define GENLIST_PROGRAMS_NORMAL( TARGET ) \
+         programs { \
+            GENLIST_PROGRAM_DISABLED_BOTTOMLINE( TARGET ) \
+            GENLIST_PROGRAM_SELECT_BOTTOMLINE( TARGET ) \
+            GENLIST_PROGRAM_EXPAND_FADE( target: "bottom_line"; target: "bottom_line2"; TARGET ) \
+            GENLIST_PROGRAM_FLIP \
+         }
+
+// FIXME: inheritance !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
+// if GENLIST_PROGRAM_EXPAND is here, expanda effect is something wrong.
+// because after can be duplicated when program inheriting.
+#define GENLIST_PROGRAMS_DIALOGUE( TARGET ) \
+         programs { \
+            GENLIST_PROGRAM_DISABLED( TARGET ) \
+            GENLIST_PROGRAM_SELECT_DIALOGUE( TARGET ) \
+            GENLIST_PROGRAM_FLIP \
+            GENLIST_PROGRAM_EDITMODE \
+         }
+
+#define GENLIST_PROGRAMS_MULTILINE( TARGET ) \
+         programs { \
+            GENLIST_PROGRAM_DISABLED( TARGET ) \
+            GENLIST_PROGRAM_SELECT_DIALOGUE( TARGET ) \
+            GENLIST_PROGRAM_FLIP \
+         }
+
+#define GENLIST_PROGRAMS_READ_TEXT1( TARGET ) \
+      script { \
+         public readed = 0; \
+      } \
+      programs { \
+         GENLIST_PROGRAM_DISABLED_BOTTOMLINE( TARGET ) \
+         GENLIST_PROGRAM_FLIP \
+         program { name: "selected"; \
+            signal: "elm,state,selected"; \
+            source: "elm"; \
+            action: STATE_SET "selected" 0.0; \
+            target: "bg_image"; \
+            target: "bottom_line"; \
+            target: "bottom_line2"; \
+            TARGET \
+            after: "play_button_press"; \
+         } \
+         program { name: "go_passive_target"; \
+            signal: "elm,state,unselected"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            TARGET \
+            after: "go_passive_text1"; \
+         } \
+         program { name: "go_passive_text1"; \
+            transition: LINEAR 0.1; \
+            script { \
+               set_state(PART:"bg_image", "default", 0.0); \
+               set_state(PART:"bottom_line", "default", 0.0); \
+               set_state(PART:"bottom_line2", "default", 0.0); \
+               if (get_int(readed) == 1) \
+                 set_state(PART:"elm.text.1", "read", 0.0); \
+               else \
+                 set_state(PART:"elm.text.1", "default", 0.0); \
+            } \
+         } \
+         program { name: "play_button_press"; \
+            action: PLAY_SAMPLE "button-pressed" 1.0; \
+         } \
+         program { name: "go_read"; \
+            signal: "elm,state,read"; \
+            source: "*"; \
+            script { \
+              set_int(readed, 1); \
+              set_state(PART:"elm.text.1", "read", 0.0); \
+            } \
+         } \
+         program { name: "go_unread"; \
+            signal: "elm,state,unread"; \
+            source: "*"; \
+            script { \
+              set_int(readed, 0); \
+              set_state(PART:"elm.text.1", "default", 0.0); \
+            } \
+         } \
+      }
+
+//****************************************************************************//
+// *******************************  Icon Part ******************************//
+//***************************************************************************//
+#define GENLIST_PART_ICON(NAME, DESCRIPION) \
+   part { name: NAME; \
+      scale: 1; \
+      type: SWALLOW; \
+      DESCRIPION \
+      GENLIST_DESCRIPTION_FADEOUT_ICON \
+   }
+
+#define GENLIST_PARAM_ICON_BIG \
+         min: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE; \
+         max: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE;
+
+#define GENLIST_PARAM_ICON_SMALL \
+         min: GENLIST_ICON_SMALL_SIZE GENLIST_ICON_SMALL_SIZE; \
+         max: GENLIST_ICON_SMALL_SIZE GENLIST_ICON_SMALL_SIZE;
+
+#define GENLIST_PARAM_ICON_BTN_01 \
+         min: 0 GENLIST_BTN_01_HEIGHT; \
+         max: 0 GENLIST_BTN_01_HEIGHT;
+
+#define GENLIST_PARAM_ICON_BTN_02 \
+         min: GENLIST_BTN_02_SIZE GENLIST_BTN_02_SIZE; \
+         max: GENLIST_BTN_02_SIZE GENLIST_BTN_02_SIZE;
+
+#define GENLIST_PARAM_ICON_ONOFF_WIDTH \
+         min: GENLIST_ICON_ONOFF_WIDTH GENLIST_ICON_ONOFF_HEIGHT; \
+         max: GENLIST_ICON_ONOFF_WIDTH GENLIST_ICON_ONOFF_HEIGHT;
+
+#define GENLIST_PARAM_ICON_THUMBNAIL1\
+         min: GENLIST_ICON_THUMBNAIL1_SIZE GENLIST_ICON_THUMBNAIL1_SIZE; \
+         max: GENLIST_ICON_THUMBNAIL1_SIZE GENLIST_ICON_THUMBNAIL1_SIZE;
+
+#define GENLIST_PARAM_ICON_CHECK_RADIO \
+         min: GENLIST_ICON_CHECK_RADIO_SIZE GENLIST_ICON_CHECK_RADIO_SIZE; \
+         max: GENLIST_ICON_CHECK_RADIO_SIZE GENLIST_ICON_CHECK_RADIO_SIZE;
+
+#define GENLIST_PARAM_ICON_STAR \
+         min: GENLIST_ICON_STAR_SIZE GENLIST_ICON_STAR_SIZE; \
+         max: GENLIST_ICON_STAR_SIZE GENLIST_ICON_STAR_SIZE; \
+
+#define GENLIST_PART_ICON_BIG_R(NAME, RIGHT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_R(RIGHT, \
+         fixed: 1 1; \
+         GENLIST_PARAM_ICON_BIG \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_BIG_L(NAME, LEFT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_L(LEFT, \
+         fixed: 1 1; \
+         GENLIST_PARAM_ICON_BIG \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_SMALL_L(NAME, LEFT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_L(LEFT, \
+         GENLIST_PARAM_ICON_SMALL \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_SMALL_LB(NAME, LEFT, BOTTOM) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_LB(LEFT, BOTTOM, \
+         fixed: 1 1; \
+        GENLIST_PARAM_ICON_SMALL \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_SMALL_LTB(NAME, LEFT, TOP, BOTTOM) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_LTB(LEFT, TOP, BOTTOM, \
+         GENLIST_PARAM_ICON_SMALL \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_SMALL_RTB(NAME, RIGHT, TOP, BOTTOM) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_RTB(RIGHT, TOP, BOTTOM, \
+         GENLIST_PARAM_ICON_SMALL \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_BTN_01_R(NAME, RIGHT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_R(RIGHT, \
+         GENLIST_PARAM_ICON_BTN_01 \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_BTN_02_R(NAME, RIGHT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_R(RIGHT, \
+         GENLIST_PARAM_ICON_BTN_02 \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_BTN_ONOFF_R(NAME, RIGHT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_R(RIGHT, \
+         GENLIST_PARAM_ICON_ONOFF_WIDTH \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_BTN_ONOFF_L(NAME, LEFT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_L(LEFT, \
+         GENLIST_PARAM_ICON_ONOFF_WIDTH \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_THUMBNAIL1_R(NAME, RIGHT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_R(RIGHT, \
+         GENLIST_PARAM_ICON_THUMBNAIL1 \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_CHECK_RADIO_L(NAME, LEFT) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_L(LEFT, \
+         GENLIST_PARAM_ICON_CHECK_RADIO \
+      ) \
+   )
+
+#define GENLIST_PART_ICON_STAR_RTB(NAME, RIGHT, TOP, BOTTOM) \
+   GENLIST_PART_ICON(NAME, \
+      GENLIST_DESCRIPTION_RTB(RIGHT, TOP, BOTTOM, \
+         GENLIST_PARAM_ICON_STAR \
+         fixed: 1 1; \
+      ) \
+   )
+
+/*****************************************************************************/
+/******************************* Genlist IMAGE ********************************/
+/*****************************************************************************/
+#define GENLIST_PART_IMAGE(NAME, DESCRIPION) \
+   part { name: NAME; \
+      scale: 1; \
+      type: IMAGE; \
+      DESCRIPION \
+      GENLIST_DESCRIPTION_FADEOUT \
+   }
+
+#define GENLIST_PARAM_PASSWORD_IMAGE \
+            min: GENLIST_ICON_PASSWORD_SIZE GENLIST_ICON_PASSWORD_SIZE; \
+            max: GENLIST_ICON_PASSWORD_SIZE GENLIST_ICON_PASSWORD_SIZE; \
+            image.normal: "00_search_edit_field_bg_02.png"; \
+            image.border: 4 4 4 4; \
+            image.border_scale: 1;
+
+/*****************************************************************************/
+/******************************* Genlist Bubble ********************************/
+/*****************************************************************************/
+#define GENLIST_PARAM_BUBBLE \
+   image { \
+      normal: "00_list_bubble_bg.png"; \
+      border: 8 8 0 0; \
+   } \
+   rel1.offset: -10 0; \
+   rel2.offset: 10 0;
+
+#define GENLIST_PART_BUBBLE(TEXT_NAME) \
+         GENLIST_PART_IMAGE("elm.bubble", \
+            GENLIST_DESCRIPTION_ENVELOP(TEXT_NAME, \
+               GENLIST_PARAM_BUBBLE \
+               min: 48 38; \
+               max: -1 38; \
+               fixed: 0 1;) \
+            GENLIST_DESCRIPTION_FADEOUT \
+         )
+
+#define GENLIST_IMAGES_EXPANDABLE_BTN \
+         images { \
+            image: "00_button_expand_closed.png" COMP; \
+            image: "00_button_expand_opened.png" COMP; \
+         }
+
+#define GENLIST_PART_EXPANDABLE_ARROW \
+         GENLIST_PART_ICON("touch_arrow", \
+            ignore_flags: ON_HOLD; \
+            GENLIST_DESCRIPTION_ENVELOP("arrow", ) \
+            GENLIST_DESCRIPTION_FADEOUT \
+         ) \
+         GENLIST_PART_IMAGE("arrow", \
+            ignore_flags: ON_HOLD; \
+            mouse_events: 0; \
+            GENLIST_DESCRIPTION_R("elm.padding.right", \
+               fixed: 1 1; \
+               min: 74 74; \
+               max: 74 74; \
+               image.normal: "00_button_expand_closed.png"; \
+            ) \
+            description { state: "expand_opened" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_button_expand_opened.png"; \
+            } \
+            description { state: "expand_opened_press" 0.0; \
+               inherit: "expand_opened" 0.0; \
+               image.normal: "00_button_expand_opened_press.png"; \
+            } \
+            description { state: "default_press" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_button_expand_closed_press.png"; \
+            } \
+            GENLIST_DESCRIPTION_FADEOUT \
+         )
+/*****************************************************************************/
+/******************************* Genlist RECT ********************************/
+/*****************************************************************************/
+#define GENLIST_PART_SPACER(NAME, DESCRIPION) \
+    part { name: NAME; \
+      scale: 1; \
+      mouse_events: 0; \
+      type: SPACER; \
+      DESCRIPION \
+   }
+
+#define GENLIST_PART_RECT(NAME, DESCRIPION) \
+    part { name: NAME; \
+      scale: 1; \
+      type: RECT; \
+      DESCRIPION \
+      GENLIST_DESCRIPTION_FADEOUT_RECT \
+   }
+
+#define GENLIST_PART_INDEX_LINE(LEFT, RIGHT, TOP, BOTTOM) \
+         GENLIST_PART_RECT("index_line", \
+            GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+               color: GENLIST_GROUPINDEX_LINE_COLOR; \
+               min: 0 4; \
+               max: -1 4;) \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_GROUPINDEX_LINE_FOCUS_COLOR; \
+            } \
+         )
+
+/*****************************************************************************/
+/******************************* Genlist TEXT ********************************/
+/*****************************************************************************/
+#define GENLIST_PART_TEXT(NAME, DESCRIPION) \
+    part { name: NAME; \
+      scale: 1; \
+      mouse_events: 0; \
+      type: TEXT; \
+      DESCRIPION \
+      GENLIST_DESCRIPTION_FADEOUT_TEXT \
+   }
+
+#define GENLIST_PART_TEXTBLOCK(NAME, DESCRIPION) \
+    part { name: NAME; \
+      scale: 1; \
+      mouse_events: 0; \
+      type: TEXTBLOCK; \
+      DESCRIPION \
+      GENLIST_DESCRIPTION_FADEOUT_TEXT \
+   }
+
+/*************************** parameters **********************************/
+#define GENLIST_PARAM_TEXT_LIMIT_RB \
+   rel1.to_x: "base"; /* This limits text growing. */\
+   rel1.relative: 0.5 0; /* This limits text growing. */\
+   text.max: 1 0; /* This limits text growing. */
+
+#define GENLIST_PARAM_TEXT_LIMIT_RT \
+   rel1.to_x: "base"; /* This limits text growing. */\
+   rel1.relative: 0.5 1; /* This limits text growing. */\
+   text.max: 1 0; /* This limits text growing. */
+
+// Group Index
+#define GENLIST_PARAM_INDEX_LIST \
+   color: GENLIST_GROUPINDEX_LIST_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Bold"; \
+      size: GENLIST_GROUPINDEX_LIST_SIZE; \
+      text_class: "list_item"; \
+   }
+
+// Group Title
+#define GENLIST_PARAM_DIALOGUE_GROUP_TITLE \
+   color: GENLIST_DIALOGUE_GROUP_TITLE_COLOR; \
+   text { \
+      align: 0.0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Bold"; \
+      size: GENLIST_DIALOGUE_GROUP_TITLE_SIZE; \
+      text_class: "list_item"; \
+   }
+
+// Password style
+#define GENLIST_PARAM_PASSWORD_TITLE \
+   color: DIALOGUE_PASSWORD_TITLE_COLOR; \
+   text { \
+      font: "SLP:style=Bold"; \
+      size: DIALOGUE_PASSWORD_TITLE_SIZE; \
+      min: 0 1; \
+      align: 0 0.5; \
+      text_class: "list_item"; \
+   }
+
+// list main text
+#define GENLIST_PARAM_LISTITEM \
+   color: GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Regular"; \
+      size: GENLIST_LIST_MAIN_TEXT_SIZE; \
+      text_class: "list_item"; \
+   }
+
+#define GENLIST_PARAM_LISTITEM_TB \
+   text { \
+      min: 0 1; \
+      style: "genlist_style_list_main_text_unread"; \
+   }
+
+#define GENLIST_PARAM_LISTITEM_TB_WRAP \
+   text { \
+      min: 0 1; \
+      style: "genlist_style_list_main_text_unread_wrap"; \
+   }
+
+// list subtext
+#define GENLIST_PARAM_SUBITEM_DEFAULT \
+   color: GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Medium"; \
+      size: GENLIST_LIST_SUB_TEXT_SIZE; \
+      text_class: "slp"; \
+   }
+
+#define GENLIST_PARAM_SUBITEM_SETTINGS \
+   color: GENLIST_LIST_SUB_TEXT_SETTINGS_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Medium"; \
+      size: GENLIST_LIST_SUB_TEXT_SIZE; \
+      text_class: "slp"; \
+   }
+
+#define GENLIST_PARAM_SUBITEM_DEFAULT_TB \
+   text { \
+      min: 0 1; \
+      style: "genlist_style_list_sub_text_default"; \
+   }
+
+#define GENLIST_PARAM_SUBITEM_DEFAULT_TB_WRAP \
+   text { \
+      min: 0 1; \
+      style: "genlist_style_list_sub_text_default_wrap"; \
+   }
+
+#define GENLIST_PARAM_SUBITEM_SETTINGS_TB \
+   text { \
+      min: 0 1; \
+      style: "genlist_style_list_sub_text_settings"; \
+   }
+
+#define GENLIST_PARAM_APPS_NAME\
+   color: GENLIST_APPS_NAME_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Bold"; \
+      size: GENLIST_APPS_NAME_SIZE; \
+      text_class: "list_item"; \
+   }
+
+#define GENLIST_PARAM_APPS_INC\
+   color: GENLIST_APPS_INC_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Bold"; \
+      size: GENLIST_APPS_INC_SIZE; \
+      text_class: "list_item"; \
+   }
+
+#define GENLIST_PARAM_APPS_RATING\
+   color: GENLIST_APPS_RATING_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Bold"; \
+      size: GENLIST_APPS_RATING_SIZE; \
+      text_class: "list_item"; \
+   }
+
+#define GENLIST_PARAM_APPS_PRICE\
+   color: GENLIST_APPS_PRICE_ORIGINAL_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Bold"; \
+      size: GENLIST_APPS_PRICE_SIZE; \
+      text_class: "list_item"; \
+   }
+
+#define GENLIST_PARAM_APPS_PRICE_SALE\
+   color: GENLIST_APPS_PRICE_SALE_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Bold"; \
+      size: GENLIST_APPS_PRICE_SIZE; \
+      text_class: "list_item"; \
+   }
+
+#define GENLIST_PARAM_CONTENTS_TEXT \
+   color: GENLIST_CONTENTS_TEXT_COLOR; \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Regular"; \
+      size: GENLIST_CONTENTS_TEXT_SIZE; \
+      text_class: "slp"; \
+   }
+
+/*************************** Descriptions **********************************/
+// group index
+#define GENLIST_DESCRIPTION_INDEX_LIST \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_GROUPINDEX_LIST_FOCUS_COLOR; \
+   }
+
+// list main text
+#define GENLIST_DESCRIPTION_LISTITEM_OTHERS \
+   description { state: "disabled" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR; \
+   } \
+   description { state: "read" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_LIST_MAIN_TEXT_READ_COLOR; \
+   } \
+   description { state: "read,disabled" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR; \
+   } \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR; \
+   }
+
+#define GENLIST_DESCRIPTION_LISTITEM_OTHERS_TB \
+   description { state: "disabled" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_main_text_unread_dim"; \
+   } \
+   description { state: "read" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_main_text_read"; \
+   } \
+   description { state: "read,disabled" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_main_text_read_dim"; \
+   } \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_main_text_focus"; \
+   }
+
+// list sub text
+#define GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   description { state: "disabled" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_LIST_SUB_TEXT_DEFAULT_DIM_COLOR; \
+   } \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_LIST_SUB_TEXT_FOCUS_COLOR; \
+   }
+
+#define GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   description { state: "disabled" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_sub_text_default_dim"; \
+   } \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_sub_text_focus"; \
+   }
+
+#define GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB_WRAP \
+   description { state: "disabled" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_sub_text_default_dim_wrap"; \
+   } \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_sub_text_focus_wrap"; \
+   }
+
+#define GENLIST_DESCRIPTION_SUBITEM_SETTINGS_OTHERS \
+   description { state: "disabled" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_LIST_SUB_TEXT_SETTINGS_DIM_COLOR; \
+   } \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      color: GENLIST_LIST_SUB_TEXT_FOCUS_COLOR; \
+   }
+
+#define GENLIST_DESCRIPTION_SUBITEM_SETTINGS_OTHERS_TB \
+   description { state: "disabled" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_sub_text_settings_dim"; \
+   } \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_sub_text_focus"; \
+   }
+
+// list main text multiline
+#define GENLIST_DESCRIPTION_LISTITEM_OTHERS_TB_WRAP \
+   description { state: "disabled" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_main_text_unread_dim_wrap"; \
+   } \
+   description { state: "selected" 0.0; \
+      inherit: "default" 0.0; \
+      text.style: "genlist_style_list_main_text_focus_wrap"; \
+   }
+
+/*************************** Parts **********************************/
+#define GENLIST_PART_DIALOGUE_GROUP_HELP_TEXT(NAME, LEFT, RIGHT, TOP, BOTTOM, PARAM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+         text { \
+            min: 0 1; \
+            style: "genlist_style_dialogue_group_help_text"; \
+         } \
+         PARAM) \
+   )
+
+#define GENLIST_PART_LISTITEM(NAME, DESCRIPTION) \
+   GENLIST_PART_TEXT(NAME, \
+      DESCRIPTION \
+      GENLIST_DESCRIPTION_LISTITEM_OTHERS \
+   )
+
+#define GENLIST_PART_LISTITEM_TB(NAME, DESCRIPTION) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      DESCRIPTION \
+      GENLIST_DESCRIPTION_LISTITEM_OTHERS_TB \
+   )
+
+#define GENLIST_PART_LISTITEM_(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM, PARAM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_LISTITEM \
+         PARAM \
+      ) \
+      GENLIST_DESCRIPTION_LISTITEM_OTHERS \
+   )
+
+#define GENLIST_PART_LISTITEM_TB_(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM, PARAM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_LISTITEM_TB \
+         PARAM \
+      ) \
+      GENLIST_DESCRIPTION_LISTITEM_OTHERS_TB \
+   )
+
+#define GENLIST_PART_LISTITEM_LR(NAME, HEIGHT, LEFT, RIGHT, PARAM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_LR(LEFT, RIGHT, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_LISTITEM \
+         PARAM \
+      ) \
+      GENLIST_DESCRIPTION_LISTITEM_OTHERS \
+   )
+
+#define GENLIST_PART_LISTITEM_LRT_TB(NAME, HEIGHT, LEFT, RIGHT, TOP, PARAM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION_LRT(LEFT, RIGHT, TOP, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_LISTITEM_TB \
+         PARAM \
+      ) \
+      GENLIST_DESCRIPTION_LISTITEM_OTHERS_TB \
+   )
+
+#define GENLIST_PART_LISTITEM_LR_TB(NAME, HEIGHT, LEFT, RIGHT, PARAM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION_LR(LEFT, RIGHT, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_LISTITEM_TB \
+         PARAM \
+      ) \
+      GENLIST_DESCRIPTION_LISTITEM_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM, PARAM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+         PARAM \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM(NAME, DESCRIPTION) \
+   GENLIST_PART_TEXT(NAME, \
+      DESCRIPTION \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_DEFAULT_TB(NAME, DESCRIPTION) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      DESCRIPTION \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_R(NAME, HEIGHT, RIGHT) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_R(RIGHT, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_TEXT_LIMIT_RB \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_RB(NAME, HEIGHT, RIGHT, BOTTOM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_RB(RIGHT, BOTTOM, \
+         min: 0 HEIGHT; \
+         fixed: 1 1; \
+         GENLIST_PARAM_TEXT_LIMIT_RB \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_RB_TB(NAME, HEIGHT, RIGHT, BOTTOM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION_RB(RIGHT, BOTTOM, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_TEXT_LIMIT_RB \
+         fixed: 1 1; \
+         GENLIST_PARAM_SUBITEM_DEFAULT_TB \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_TB_(NAME, HEIGHT, LEFT, RIGHT, TOP, BOTTOM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION(LEFT, RIGHT, TOP, BOTTOM, \
+         GENLIST_PARAM_SUBITEM_DEFAULT_TB \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_R_FIXED(NAME, WIDTH, HEIGHT, RIGHT) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_R(RIGHT, \
+         min: WIDTH HEIGHT; \
+         fixed: 1 1; \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_R_FIXED_TB(NAME, WIDTH, HEIGHT, RIGHT) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+       GENLIST_DESCRIPTION_R(RIGHT, \
+         min: WIDTH HEIGHT; \
+         fixed: 1 0; \
+         GENLIST_PARAM_SUBITEM_DEFAULT_TB \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_L_FIXED(NAME, WIDTH, HEIGHT, LEFT) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_L(LEFT, \
+         min: WIDTH HEIGHT; \
+         fixed: 1 1; \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_LR(NAME, HEIGHT, LEFT, RIGHT, PARAM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_LR(LEFT, RIGHT, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+         PARAM \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_LR_TB(NAME, HEIGHT, LEFT, RIGHT) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION_LR(LEFT, RIGHT, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_SUBITEM_DEFAULT_TB \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_LB(NAME, HEIGHT, LEFT, RIGHT) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_LB(LEFT, BOTTOM, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_SUBITEM_DEFAULT_TB \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_LRB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+         min: 0 HEIGHT; \
+         fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_LRB_LIMIT(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+         min: 0 HEIGHT; \
+         fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+         fixed: 1 1; align: 0 1; text.max: 1 0;  // This limits text growing. \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_SETTINGS_LRB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM, PARAM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+         min: 0 HEIGHT; \
+         fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+         GENLIST_PARAM_SUBITEM_SETTINGS\
+         PARAM; \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_SETTINGS_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_LRB_TB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+         min: 0 HEIGHT; \
+         fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+         GENLIST_PARAM_SUBITEM_DEFAULT_TB \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_SETTINGS_LRB_TB(NAME, HEIGHT, LEFT, RIGHT, BOTTOM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION_LRB(LEFT, RIGHT, BOTTOM, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_SUBITEM_SETTINGS_TB \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_SETTINGS_OTHERS_TB \
+   )
+
+#define GENLIST_PART_SUBITEM_LRT(NAME, HEIGHT, LEFT, RIGHT, TOP) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_LRT(LEFT, RIGHT, TOP, \
+         min: 0 HEIGHT; \
+         fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_LTB(NAME, HEIGHT, LEFT, TOP, BOTTOM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_LTB(LEFT, TOP, BOTTOM, \
+         min: 0 HEIGHT; \
+         fixed: 1 1; /*FIXME: why text need this, but textblock doesn't */ \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_RTB(NAME, HEIGHT, RIGHT, TOP, BOTTOM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_RTB(RIGHT, TOP, BOTTOM, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_TEXT_LIMIT_RT \
+         GENLIST_PARAM_SUBITEM_DEFAULT \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS \
+   )
+
+#define GENLIST_PART_SUBITEM_RTB_TB(NAME, HEIGHT, RIGHT, TOP, BOTTOM) \
+   GENLIST_PART_TEXTBLOCK(NAME, \
+      GENLIST_DESCRIPTION_RTB(RIGHT, TOP, BOTTOM, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_TEXT_LIMIT_RT \
+         GENLIST_PARAM_SUBITEM_DEFAULT_TB \
+      ) \
+      GENLIST_DESCRIPTION_SUBITEM_DEFAULT_OTHERS_TB \
+   )
+
+#define GENLIST_PARAM_LIST_BUBBLE_TEXT \
+   color: GENLIST_LIST_BUBBLE_TEXT_COLOR; \
+   text { \
+      align: 1 0.5; \
+      min: 0 1; \
+      font: "SLP:style=Bold"; \
+      size: GENLIST_LIST_BUBBLE_TEXT_SIZE; \
+      text_class: "slp"; \
+   }
+
+#define GENLIST_PART_LIST_BUBBLE_TEXT_RTB(NAME, HEIGHT, RIGHT, TOP, BOTTOM) \
+   GENLIST_PART_TEXT(NAME, \
+      GENLIST_DESCRIPTION_RTB(RIGHT, TOP, BOTTOM, \
+         min: 0 HEIGHT; \
+         GENLIST_PARAM_TEXT_LIMIT_RT \
+         GENLIST_PARAM_LIST_BUBBLE_TEXT \
+      ) \
+   )
+
+#if 0
+#define GENLIST_PART_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: LAYOUT_GROUP_LIST_BG_COLOR_INC; \
+            } \
+         }
+
+#define GENLIST_PART_BG \
+         part { name: "bg"; \
+            type: RECT; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: GENLIST_PART_DIALOGUE_GROUP_BG_COLOR; \
+            } \
+            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; } \
+            } \
+         }
+
+/******************************************************************************/
+/** ETC
+/******************************************************************************/
+// FIXME: UX do not define selected state. But I thinkt that it is neededs :(
+
+#define GENLIST_PROOGRAM_EXPAND(SRC, TARGET) \
+   program { \
+      name: "expand"; \
+      signal: "mouse,clicked,1"; \
+      source: SRC; \
+      action: SIGNAL_EMIT "elm,action,expand,toggle" "elm"; \
+   } \
+   program { \
+      name: "go_expanded"; \
+      signal: "elm,state,expanded"; \
+      source: "elm"; \
+      action: STATE_SET "active" 0.0; \
+      TARGET \
+   } \
+   program { \
+      name: "go_contracted"; \
+      signal: "elm,state,contracted"; \
+      source: "elm"; \
+      action: STATE_SET "default" 0.0; \
+      TARGET \
+   }
+
+#define GENLIST_PART_BASE_LIST_H( HEIGHT) \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               align: 0.5 0.5; \
+               color: 0 0 0 0; \
+               rel2.relative: 1 0; \
+               rel2.to: "bottom_line"; \
+               min: 0 HEIGHT; \
+            } \
+         } \
+         GENLIST_PART_BOTTOM_LINE
+
+#define GENLIST_PART_DIALOGUE_ITEM \
+         part { name: "elm.rect.dialogue"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 10 0; \
+               fixed: 1 0; \
+               color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+               rel2.relative: 0.0 1.0; \
+               align: 0.0 0.0; \
+            } \
+         }
+
+#define GENLIST_PART_DIALOGUE_RIGHT_LINE \
+         part { name: "elm.rect.dialogue.right.line"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 1 0; \
+               fixed: 1 0; \
+               rel1 { \
+                  relative: 1.0  0.0; \
+                  offset: -1 0; \
+               } \
+               align: 1.0 0.0; \
+               color: GENLIST_LIST_LINE1_COLOR; \
+            } \
+         }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_1ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_2ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+             target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_2ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+         }
+
+
+#define GENLIST_DESCRIPTION_INVISIBLE_SELECTED \
+            description { state: "selected" 1.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            }
+
+#define GENLIST_DESCRIPTION_FLIP_ENABLED \
+            description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_1TEXT \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               set_state(PART:"bg_image", "selected", 0.0); \
+               if (!strcmp(st, "flip_enabled")) \
+                  set_state(PART:"elm.text", "selected", 1.0); \
+               else \
+                  set_state(PART:"elm.text", "selected", 0.0); \
+            }
+
+
+/* genlist multisense macro - start */
+#define GENLIST_PROGRAM_AFTER_PLAY_BUTTON_PRESS \
+            after: "play_button_press";
+
+#define GENLIST_PROGRAM_PLAY_BUTTON_PRESS \
+         program { name: "play_button_press"; \
+            action: PLAY_SAMPLE "button-pressed" 1.0; \
+         }
+#endif
diff --git a/layout/genlist/genlist_normal.edc b/layout/genlist/genlist_normal.edc
new file mode 100644 (file)
index 0000000..83d7be9
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * vim:ts=3
+*/
+
+/* genlist multisense sample/tone listing */
+   sounds {
+      sample {
+         name: "button-pressed" RAW;
+         source: "button-pressed.wav";
+      }
+   }
+
+/* setting - auto off - custom */
+   group { name: "elm/genlist/item/music/1text.2icon/default";
+      alias: "elm/genlist/item_odd/music/1text.2icon/default";
+      alias: "elm/genlist/item_compress/music/1text.2icon/default";
+      alias: "elm/genlist/item_compress_odd/music/1text.2icon/default";
+
+      GENLIST_DATA_ITEM_NORMAL
+      data.item: "texts" "elm.text";
+      data.item: "contents" "elm.icon.1 elm.icon.2 elm.icon.edit";
+
+      parts {
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BASE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_LEFT
+         GENLIST_PART_PADDING_RIGHT
+         GENLIST_PART_ICON_BIG_L( "elm.icon.1", "elm.padding.left")
+         GENLIST_PART_PADDING_L("elm.padding.icon1.right", "elm.icon.1")
+         GENLIST_PART_LISTITEM_LR("elm.text", GENLIST_HEIGHT_1LINE, "elm.padding.icon1.right", "elm.padding.icon2.left",)
+         GENLIST_PART_PADDING_R("elm.padding.icon2.left", "elm.icon.2")
+         GENLIST_PART_ICON_BTN_01_R("elm.icon.2", "elm.padding.right")
+         GENLIST_PART_FLIP
+      }
+      GENLIST_PROGRAMS_NORMAL( target: "elm.text"; target: "elm.icon.1"; target: "elm.icon.2"; )
+   }
+   group { name: "elm/genlist/item/music/1text.2icon.4/default";
+      alias: "elm/genlist/item_odd/music/1text.2icon.4/default";
+      alias: "elm/genlist/item_compress/music/1text.2icon.4/default";
+      alias: "elm/genlist/item_compress_odd/music/1text.2icon.4/default";
+      inherit: "elm/genlist/item/music/1text.2icon/default";
+
+      parts {
+         GENLIST_PART_ICON_CHECK_RADIO_L("elm.icon.1", "elm.padding.left")
+         //GENLIST_PART_ICON_BTN_02_R("elm.icon.2", "elm.padding.right")
+                part { name: "elm.icon.2";
+                       scale: 1;
+                       type: SWALLOW;
+                       description { state: "default" 0.0;
+                               align: 1 0.5;
+                               fixed: 1 0;
+                               rel1 { relative: 0 0; to_x: "elm.padding.right"; to_y: "base"; }
+                               rel2 { relative: 0 1; to_x: "elm.padding.right"; to_y: "base"; }
+                               min: 150 GENLIST_BTN_02_SIZE;
+                               max: 150 GENLIST_BTN_02_SIZE;
+                       }
+                       GENLIST_DESCRIPTION_FADEOUT_ICON
+                }
+      }
+   }
+   group { name: "elm/genlist/item/music/dialogue/1text.2icon.2/default";
+      alias: "elm/genlist/item_odd/music/dialogue/1text.2icon.2/default";
+      alias: "elm/genlist/item_compress/music/dialogue/1text.2icon.2/default";
+      alias: "elm/genlist/item_compress_odd/music/dialogue/1text.2icon.2/default";
+      alias: "elm/layout/music/dialogue/1text.2icon.2";
+      inherit: "elm/genlist/item/music/1text.2icon.4/default";
+
+      GENLIST_DIALOGUE_INHERIT_BODY( ; )
+      GENLIST_PROGRAMS_DIALOGUE( target: "elm.text"; target: "elm.icon.1"; target: "elm.icon.2"; )
+   }
+/* end of <setting - auto off - custom> */
diff --git a/layout/mp-3d-view.edc b/layout/mp-3d-view.edc
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/layout/mp-button.edc b/layout/mp-button.edc
new file mode 100644 (file)
index 0000000..2b1bd19
--- /dev/null
@@ -0,0 +1,1922 @@
+
+ //1 this code is based on nbeat theme (2011/09/9)
+
+#define BUTTON_STATE_ENABLED  0
+#define BUTTON_STATE_DISABLED 1
+
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_NORMAL_COLOR_INC 146 124 98 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_PRESSED_COLOR_INC 217 147 26 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_FOCUSED_COLOR_INC 217 147 26 255
+#define BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC 160 151 145 255
+
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC 36
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC 74
+#define BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC 4 4 4 4 /*if boder is 5 5 5 5, button is not preperly displayed... */
+#define BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC 16 2
+#define BUTTON_NAVIBAR_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36
+#define BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0
+#define BUTTON_NAVIBAR_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0
+#define BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36
+#define BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38
+#define BUTTON_NAVIBAR_CENTER_TEXT_FONT_SIZE_INC 32
+#define BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC 24
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC 106 74
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC 5 5 5 5
+#define BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC 56 56
+#define BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE 56 44
+
+ //2 define custom style here..
+
+#define MP_TITLE_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255
+#define MP_TITLE_LEFT_SEPARATOR_COLOR_INC 3 3 3 255
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group {  name: "elm/button/base/music/navigationbar_next_btn/default";
+      //TODO: remove alias later.
+      alias: "elm/button/base/navigationbar_functionbutton/default";
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 16 50;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled" 0.0;
+               inherit:  "default" 0.0;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part {
+            name: "padding_left";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 0.0 1.0;
+               min: 2 2;
+               fixed: 1 0;
+               color: 0 0 0 0;
+            }
+         }
+         part {name: "padding_after_right";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1 0;
+               min: 1 0;
+               rel1 { relative: 1 0.2; }
+               rel2 { relative: 1 0.8; }
+               fixed: 1 0;
+               color: MP_TITLE_RIGHT_SEPARATOR_COLOR_INC;
+            }
+         }
+         part {name: "padding_right";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1 0;
+               min: 1 0;
+               rel1 { relative: 0 0; to: "padding_after_right"; }
+               rel2 { relative: 0 1; to: "padding_after_right"; }
+               fixed: 1 0;
+               color: MP_TITLE_LEFT_SEPARATOR_COLOR_INC;
+            }
+         }
+         part {
+            name: "padding_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 0.0;
+               min: 2 2;
+               fixed: 0 1;
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "padding_bottom";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1.relative: 0.0 1.0;
+               rel2.relative: 1.0 1.0;
+               min: 2 2;
+               fixed: 0 1;
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 1;
+               min: 0 40;
+               fixed: 1 0;
+               rel1 { relative: 0.0 1.0; to_x: "elm.swallow.content"; to_y: "padding_top"; }
+               rel2 { relative: 1.0 0.0; to_x: "elm.swallow.content"; to_y: "padding_bottom"; }
+               align: 0.0 0.5;
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "padding_icon_text";
+            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: 1.0 0.0; to: "icon_rect"; }
+               rel2 { relative: 1.0 1.0; to: "icon_rect"; }
+               fixed: 1 0;
+               min: 0 0;
+               color: 0 0 0 0;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "visible" 0.0; //when icon is visible
+               align: 0.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "icon_rect"; }
+               rel2 { relative: 1.0 1.0; to: "icon_rect"; }
+               fixed: 1 0;
+               min: 5 0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 { relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; }
+               rel2 { relative: 1.0 0.0; to_x: "padding_left"; to_y: "padding_bottom"; }
+               fixed: 1 0;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               visible: 1;
+               align: 0.0 0.5;
+               rel1 { relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; }
+               rel2 { relative: 1.0 0.0; to_x: "padding_left"; to_y: "padding_bottom"; }
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+            }
+            description { state: "icononly" 0.0;
+               visible: 1;
+               min: 40 40;
+               rel1 { relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; }
+               rel2 { relative: 0.0 0.0; to_x: "padding_right"; to_y: "padding_bottom"; }
+               align: 0.5 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events:  0;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 { relative: 1.0 1.0; to_x: "padding_icon_text"; to_y: "padding_top"; }
+               rel2 { relative: 0.0 0.0; to_x: "padding_right"; to_y:"padding_bottom"; }
+               align: 0.5 0.5;
+               color: BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_NORMAL_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                 text_class: "slp_medium";
+                  size: 20;
+                  min:  0 0;
+                  align: 0.5 0.5;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 80 40;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+               color: BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_PRESSED_COLOR_INC;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 128;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_DISABLED_COLOR_INC;
+               visible: 1;
+               min: 80 40;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+               color: BUTTON_NAVIBAR_FUNCTION_BUTTON_TEXT_FOCUSED_COLOR_INC;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit:  "default" 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description { state: "clicked" 0.0;
+               inherit:  "default" 0.0;
+               visible: 1;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                  set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+               {
+                  emit("elm,action,default,text,set", "");
+                  set_state(PART:"elm.text", "visible", 0.0);
+               }
+               if(get_int(button_state) != BUTTON_STATE_DISABLED)
+                  set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_click2";
+            signal: "mouse,down,1";
+            source: "over3";
+            action: STATE_SET "clicked" 0.0;
+            target: "over3";
+         }
+         program { name: "button_unclick2";
+            signal: "mouse,clicked,1";
+            source: "over3";
+            action: STATE_SET "default" 0.0;
+            target: "over3";
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+               {
+                  set_state(PART:"elm.swallow.content", "visible", 0.0);
+                  set_state(PART:"padding_icon_text", "visible", 0.0);
+               }
+               if(get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled_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.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+               {
+                  set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                  set_state(PART:"padding_icon_text", "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.content", "visible", 0.0);
+                  set_state(PART:"padding_icon_text", "visible", 0.0);
+               }
+               else
+               {
+                  set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                  set_state(PART:"padding_icon_text", "icononly", 0.0);
+               }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "over2";
+            target: "disabler";
+            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);
+               else
+                  set_state(PART:"elm.text", "disabled", 0.0);
+               set_int(button_state, BUTTON_STATE_DISABLED);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "over2";
+            target: "disabler";
+            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);
+               else
+                  set_state(PART:"elm.text", "default", 0.0);
+               set_int(button_state, BUTTON_STATE_ENABLED);
+               }
+         }
+         program { name: "focused";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
+
+   group { name: "elm/button/base/music/navigationbar_control/multiline";
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      images.image: "T02_Option_header_bt.png" COMP;
+      images.image: "T02_Option_header_bt_press.png" COMP;
+      styles{
+         style { name: "btn_multiline_navigationbar_controlbar_style";
+            base: "font=SLP:style=Medium font_size="BUTTON_NAVIBAR_MULTILINE_TEXT_FONT_SIZE_INC" align=center color=#ffffff wrap=mixed";
+            tag: "br" "\n";
+            tag: "ps" "ps";
+            tag: "tab" "\t";
+         }
+      }
+      parts {
+         part { name: "button_image";
+            type: IMAGE;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+               image.normal: "T02_Option_header_bt.png";
+               image.border: BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 51;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T02_Option_header_bt_press.png";
+            }
+         }
+         part {
+            name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+               }
+               min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+               fixed: 1 1;
+               visible: 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;
+               rel2.relative: 1.0 1.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part {
+            name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+         }
+         part {
+            name: "padding_icon_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: 0 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+           }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               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;
+               visible: 1;
+               min: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC;
+               max: BUTTON_NAVIBAR_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+            }
+            description { state: "icononly" 0.0;
+               visible: 1;
+               min: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC;
+               max: BUTTON_NAVIBAR_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_icon_text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                   relative: 0.0 0.0;
+                   to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+               color: 255 255 255 255;
+               text {
+                  style: "btn_multiline_navigationbar_controlbar_style";
+                  min: 0 0;
+                  max: 0 1;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 80 0;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               color: 255 255 255 127;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if(get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "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.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "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.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_icon_text";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_DISABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_ENABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "focused";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
+
+   group { name: "elm/button/base/naviframe/back_btn/music/default";
+      alias: "elm/button/base/naviframe/prev_btn/music/default";
+      alias: "elm/button/base/naviframe/end_btn/music/default";
+      images {
+         image: "00_winset_Back_btn_normal.png" COMP;
+         image: "00_winset_Back_btn_press.png" COMP;
+                image: "T02_winset_btn_Back.png" COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC;
+               max: BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC;
+               image {
+                  normal: "00_winset_Back_btn_normal.png";
+                  border: BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC;
+                  border_scale: 1;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "00_winset_Back_btn_press.png";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "00_winset_Back_btn_press.png";
+            }
+         }
+         part { name: "back_button";
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC;
+               max: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC;
+               rel1.to: "button_image";
+               rel2.to: "button_image";
+               image.normal: "T02_winset_btn_Back.png";
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "disable_button";
+         }
+         program { name: "disable_button";
+            script {
+               set_int(button_state, BUTTON_STATE_DISABLED);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "enable_button";
+         }
+         program { name: "enable_button";
+            script {
+               set_int(button_state, BUTTON_STATE_ENABLED);
+            }
+         }
+      }
+   }
+
+   group { name: "elm/button/base/music/bottom_control";
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+
+      parts {
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               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;
+               visible: 1;
+               min: 56 56;
+               max: 56 56;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+            }
+            description { state: "icononly" 0.0;
+               visible: 1;
+               min: 56 56;
+               max: 56 56;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+            }
+         }
+
+         part { name: "button_image";
+            type: RECT;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 144 MP_NAVIFRAME_CONTROLBAR_H;
+               rel1.offset: 0 0;
+               rel2.offset: 0 0;
+               color: 0 0 0 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 51;
+            }
+         }
+         part {
+            name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+               }
+               min: 44 29;
+               fixed: 1 1;
+               visible: 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;
+               rel2.relative: 1.0 1.0;
+               min: 44 29;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part {
+            name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+         }
+         part {
+            name: "padding_icon_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: 0 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+           }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_icon_text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                   relative: 0.0 0.0;
+                   to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+               color: 255 255 255 255;
+               text {
+                  style: "btn_multiline_navigationbar_controlbar_style";
+                  min: 0 0;
+                  max: 0 1;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 80 0;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               color: 255 255 255 127;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if(get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "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.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "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.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_icon_text";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_DISABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_ENABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "focused";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
+
+   group { name: "elm/button/base/music/title_button";
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      images.image: "T02_Option_header_bt.png" COMP;
+      images.image: "T02_Option_header_bt_press.png" COMP;
+      parts {
+         part { name: "button_image";
+            type: IMAGE;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_W_INC BUTTON_NAVIBAR_CENTER_BG_NORMAL_MIN_H_INC;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+               image.normal: "T02_Option_header_bt.png";
+               image.border: BUTTON_NAVIBAR_CENTER_BG_NORMAL_BORDER_INC;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T02_Option_header_bt.png";
+               color: 255 255 255 255;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "T02_Option_header_bt_press.png";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+               }
+               min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+               fixed: 1 1;
+               visible: 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;
+               rel2.relative: 1.0 1.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_MIN_MAX_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part {
+            name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.swallow.content";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+         }
+         part {
+            name: "padding_icon_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0; //when only icon or no icon is there
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+               fixed: 1 0;
+               min: 0 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_NAVIBAR_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "icon_rect";
+               }
+           }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.5 0.5;
+               rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+               }
+               fixed: 1 1;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               visible: 1;
+              min: 70 70;
+               max: 70 70;
+              rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+               }
+               align: 0.5 0.5;
+            }
+            description { state: "icononly" 0.0;
+               visible: 1;
+               min: 70 70;
+               max: 70 70;
+              rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+               }
+               align: 0.5 0.5;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_icon_text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                   relative: 0.0 0.0;
+                   to: "padding_right_bottom";
+               }
+               align: 0.5 0.5;
+               color: 255 255 255 255;
+               text {
+                  style: "btn_multiline_navigationbar_controlbar_style";
+                  min: 0 0;
+                  max: 0 1;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 80 0;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: 0 0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+            description { state: "disabled" 0.0;
+               color: 255 255 255 127;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if(get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "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.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "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.content", "visible", 0.0);
+                    set_state(PART:"padding_icon_text", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"padding_icon_text", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_icon_text";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_DISABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "clipper";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               set_int(button_state, BUTTON_STATE_ENABLED);
+               set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+         program { name: "focused";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
+
+   group { name: "elm/button/base/music/back_btn/default";
+      alias: "elm/button/base/music/prev_btn/default";
+      alias: "elm/button/base/music/end_btn/default";
+      images {
+         image: "00_winset_toolbar_press.png" COMP;
+         image: "00_winset_Back.png" COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE;
+               max: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE;
+               color: 0 0 0 0;
+            }
+            description { state: "clicked" 0.0;
+               min: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE;
+               max: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE;
+               image {
+                  normal: "00_winset_toolbar_press.png";
+                  border: BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC;
+               }
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 127 127 127 127;
+            }
+            description { state: "focused" 0.0;
+               min: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE;
+               max: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE;
+               image {
+                  normal: "00_winset_toolbar_press.png";
+                  border: BUTTON_NAVIFRAME_BACK_BUTTON_BG_BORDER_INC;
+               }
+            }
+         }
+         part { name: "back_button";
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE;
+               max: BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC_SQUARE_LANDSCAPE;
+               rel1.to: "button_image";
+               rel2.to: "button_image";
+               image.normal: "00_winset_Back.png";
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 127 127 127 127;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "touch_snd";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            action: PLAY_SAMPLE "touch_sound" 1.0;
+            after: button_unclick3;
+         }
+         program { name: "button_unclick3";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            target: "back_button";
+            after: "disable_button";
+         }
+         program { name: "disable_button";
+            script {
+               set_int(button_state, BUTTON_STATE_DISABLED);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "disabler";
+            target: "back_button";
+            after: "enable_button";
+         }
+         program { name: "enable_button";
+            script {
+               set_int(button_state, BUTTON_STATE_ENABLED);
+            }
+         }
+         program { name: "focused";
+            //signal: "elm,action,focus";
+            //source: "elm";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+         }
+         program { name: "unfocused";
+            //signal: "elm,action,unfocus";
+            //source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+         }
+      }
+   }
\ No newline at end of file
diff --git a/layout/mp-custom-winset-style.edc b/layout/mp-custom-winset-style.edc
new file mode 100644 (file)
index 0000000..f79acc4
--- /dev/null
@@ -0,0 +1,17 @@
+#include "mp-defines.h"
+#include "tizen-hd-inc.edc"
+
+collections {
+       #include "genlist/genlist.edc"
+
+       /* legacy style */
+       #include "mp-genlist-theme.edc"
+       #include "mp-progressbar.edc"
+       #include "mp-genlist-sweep.edc"
+       #include "mp-genlist-edit.edc"
+       #include "mp-gengrid-style.edc"
+       #include "mp-selection-info.edc"
+       #include "mp-naviframe.edc"
+       #include "mp-slider.edc"
+}
+
diff --git a/layout/mp-defines.h b/layout/mp-defines.h
new file mode 100644 (file)
index 0000000..6b821cd
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+ * 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://floralicense.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_DEFINES_H__
+#define __MP_DEFINES_H__
+
+/* definitions for EDC build */
+
+#ifndef MP_3D_FEATURE
+#define MP_3D_FEATURE
+#endif
+
+#ifndef MP_SQUARE_FEATURE
+#define MP_SQUARE_FEATURE
+#endif
+
+#ifndef MP_FEATURE_INNER_SETTINGS
+#define MP_FEATURE_INNER_SETTINGS
+#endif
+
+#ifndef MP_FEATURE_SOUND_ALIVE
+#define MP_FEATURE_SOUND_ALIVE
+#endif
+
+//#define MP_FEATURE_APP_IN_APP
+
+/* main size */
+#define MAIN_W                 480
+#define MAIN_H                 800
+//#define PLAYVIEW_H           706
+#define PLAYVIEW_H             620
+#define MENUBOX_H              /*90*/56
+#define PROGRESSBOX_H  67
+
+
+/* font name*/
+#define FONT_STYLE_ROMAN "SLP:style=Roman"
+#define FONT_STYLE_MEDIUM "SLP:style=Medium"
+#define FONT_STYLE_BOLD "SLP:style=Bold"
+
+#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 ((/*595*/634 - MP_NAVI_BAR_H)/MAIN_H)
+/* play control box*/
+#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)
+#define CTL_REW_EY (70/CTL_BOX_HEIGHT)
+#define CTL_PAUSE_SX (215/MAIN_W)
+#define CTL_PAUSE_EX (265/MAIN_W)
+#define CTL_FF_SX (315/MAIN_W)
+#define CTL_FF_EX (365/MAIN_W)
+
+
+/* play menu box*/
+#define HD_MENU_BOX_H 96
+#define HD_MENU_BOX_W 720
+
+#define HD_MENU_H 76
+#define HD_MENU_W 76
+#define HD_MENU_PAD_TOP 10
+#define HD_MENU_PAA_LEFT 34
+
+#define HD_MENU_PAD_MENU 212
+
+#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_REP_ALL_SX HD_MENU_PAA_LEFT/HD_MENU_BOX_W
+#define MENU_REP_ALL_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_FAVORITE_SX (HD_MENU_PAA_LEFT+HD_MENU_W*2+HD_MENU_PAD_MENU*2)/HD_MENU_BOX_W
+#define MENU_FAVORITE_EX (HD_MENU_PAA_LEFT+HD_MENU_W*3+HD_MENU_PAD_MENU*2)/HD_MENU_BOX_W
+
+/* play progress box*/
+
+#define PROGRESS_BOX_HEIGHT 67
+#define PROGRESS_BOX_SY (414/PLAYVIEW_H)
+#define PROGRESS_BOX_EY (507/PLAYVIEW_H)
+#define PROGRESS_BG_SX (80/MAIN_W)
+#define PROGRESS_BG_SY (27/PROGRESS_BOX_HEIGHT)
+#define PROGRESS_BG_EX (400/MAIN_W)
+#define PROGRESS_BG_EY (41/PROGRESS_BOX_HEIGHT)
+#define PROGRESS_BAR_L_EX (36/MAIN_W)
+#define PROGRESS_BAR_R_EX (45/MAIN_W)
+#define PROGRESS_PLAYING_SX (10/MAIN_W)
+#define PROGRESS_PLAYING_SY (376/MAIN_H)
+#define PROGRESS_PLAYING_EX (60/MAIN_W)
+#define PROGRESS_PLAYING_EY (426/MAIN_H)
+#define PROGRESS_TEXT_PLAYING_SX (30/MAIN_W)
+#define PROGRESS_TEXT_PLAYING_SY (460/MAIN_H)
+#define PROGRESS_TEXT_PLAYING_EX (130/MAIN_W)
+#define PROGRESS_TEXT_PLAYING_EY (500/MAIN_H)
+#define PROGRESS_TEXT_TOTAL_SX (350/MAIN_W)
+#define PROGRESS_TEXT_TOTAL_EX (450/MAIN_W)
+#define AUTO_REP_SX (205/MAIN_W)
+#define AUTO_REP_SY (452/MAIN_H)
+#define AUTO_REP_EX (275/MAIN_W)
+#define AUTO_REP_EY (488/MAIN_H)
+
+/* play Title*/
+#define PLAY_INFO_HEIGHT 189
+#define TRACK_TITLE_SX (15/MAIN_W)
+#define TRACK_TITLE_SY (18/PLAY_INFO_HEIGHT)
+#define ALBUM_TITLE_SY ((18+40)/PLAY_INFO_HEIGHT)
+#define ARTIST_TITLE_SY ((18+40+36)/PLAY_INFO_HEIGHT)
+#define ARTIST_TITLE_EY ((18+40+36+34)/PLAY_INFO_HEIGHT)
+
+/* favorite */
+#define FAVORITE_SX (420/MAIN_W)
+#define FAVORITE_EX (470/MAIN_W)
+#define FAVORITE_SY (10/PLAY_INFO_HEIGHT)
+#define FAVORITE_EY (60/PLAY_INFO_HEIGHT)
+
+/* volume*/
+#define VOLUME_BTN_SX (12/MAIN_W)
+#define VOLUME_BTN_SY (19/CTL_BOX_HEIGHT)
+#define VOLUME_BTN_EX (65/MAIN_W)
+#define VOLUME_BTN_EY CTL_REW_EY
+#define VOLUME_POPUP_WIDTH     262
+#define VOLUME_POPUP_HEIGHT    424
+#define VOLUME_POPUP_SX        (108/MAIN_W)
+#define VOLUME_POPUP_EX        (370/MAIN_W)
+#define VOLUME_POPUP_SY        (94/PLAYVIEW_H)
+#define VOLUME_POPUP_EY        (568/PLAYVIEW_H)
+
+#define VOLUME_POPUP_TITLE_SY  (16 / VOLUME_POPUP_HEIGHT)
+#define VOLUME_POPUP_TITLE_EY  (56 / VOLUME_POPUP_HEIGHT)
+#define VOLUME_POPUP_ICON_SX           (107 / VOLUME_POPUP_WIDTH)
+#define VOLUME_POPUP_ICON_EX           (157 / VOLUME_POPUP_WIDTH)
+#define VOLUME_POPUP_ICON_SY   (62 / VOLUME_POPUP_HEIGHT)
+#define VOLUME_POPUP_ICON_EY           (112 / VOLUME_POPUP_HEIGHT)
+#define VOLUME_POPUP_SLIDER_SX (68/ VOLUME_POPUP_WIDTH)
+#define VOLUME_POPUP_SLIDER_EX (194/ VOLUME_POPUP_WIDTH)
+#define VOLUME_POPUP_SLIDER_SY (130/ VOLUME_POPUP_HEIGHT)
+#define VOLUME_POPUP_SLIDER_EY (400/ VOLUME_POPUP_HEIGHT)
+
+#define VOLUME_PROGRESS_BOX_SX (400/MAIN_W)
+#define VOLUME_PROGRESS_BOX_SY (25/MAIN_H)
+#define VOLUME_PROGRESS_BOX_EY (507/MAIN_H)
+#define VOLUME_PROGRESS_BG_SX (433/MAIN_W)
+#define VOLUME_PROGRESS_BG_SY (59/MAIN_H)
+#define VOLUME_PROGRESS_BG_EX (447/MAIN_W)
+#define VOLUME_PROGRESS_BG_EY (479/MAIN_H)
+
+#define VOLUME_PROGRESS_TOP (62/MAIN_H)
+#define VOLUME_PROGRESS_BOTTOM (482/MAIN_H)
+#define VOLUME_PROGRESS_LEFT (433/MAIN_W)
+#define VOLUME_PROGRESS_RIGHT (447/MAIN_W)
+
+/*auto repeat*/
+#define REPEAT_BG_SX (150/MAIN_W)
+#define REPEAT_BG_SY (158/MAIN_H)
+#define REPEAT_BG_EX (330/MAIN_W)
+#define REPEAT_BG_EY (258/MAIN_H)
+
+#define REPEAT_A_BG_SY (307/MAIN_H)
+#define REPEAT_A_BG_EY (392/MAIN_H)
+#define REPEAT_B_BG_SY (410/MAIN_H)
+#define REPEAT_B_BG_EY (507/MAIN_H)
+
+/*information*/
+#define INFO_TITLEBG_SY (18/MAIN_H)
+#define INFO_TITLEBG_EY (147/MAIN_H)
+#define INFO_MAINALBUMIMAGE_SX (10/MAIN_W)
+#define INFO_MAINALBUMIMAGE_SY (44/MAIN_H)
+#define INFO_MAINALBUMIMAGE_EX (90/MAIN_W)
+#define INFO_MAINALBUMIMAGE_EY (124/MAIN_H)
+#define INFO_MAINTITLE_SX (100/MAIN_W)
+#define INFO_MAINTITLE_SY (53/MAIN_H)
+#define INFO_MAINARTIST_SY (89/MAIN_H)
+
+#define INFO_TITLE_SX (20/MAIN_W)
+#define INFO_TITLE_SY (154/MAIN_H)
+#define INFO_TITLE_EY (190/MAIN_H)
+#define INFO_ALBUMART_SY (239/MAIN_H)
+#define INFO_ALBUMART_EY (269/MAIN_H)
+
+#define INFO_BTN_SX (415/MAIN_W)
+#define INFO_BTN_SY VOLUME_BTN_SY
+#define INFO_BTN_EX (468/MAIN_W)
+#define INFO_BTN_EY VOLUME_BTN_EY
+
+#define MAX_W_LEFT MAIN_H-197
+#define OFFSET_TITLE -13
+#define OFFSET_TITLE_BOTTOM -14
+
+#define NAVIFRAME_TITLE_H_INC 100
+#define NAVIFRAME_SEGMENT_TITLE_H_INC 136
+#define NAVIFRAME_OH_OPENED_H_INC 106
+#define NAVIFRAME_OH_CONTENT_H_INC 74
+#define NAVIFRAME_OH_PADDING_INC 16
+#define NAVIFRAME_OH_ARROW_SIZE_INC 19 14
+#define NAVIFRAME_OH_OPENED_DOUBLE_H_INC 196
+#define NAVIFRAME_PREV_BTN_W_INC 124
+#define NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 10
+#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 124 80
+#define NAVIFRAME_TEXT_PADDING_INC 144
+#define NAVIFRAME_TEXT_PADDING_MORE_BUTTON_INC 278
+#define NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 186
+#define NAVIFRAME_TITLE_SEGMENT_H_INC 74
+#define NAVIFRAME_TITLE_SEGMENT_FONT_SIZE_INC 28
+#define NAVIFRAME_TITLE_SEGMENT_TEXT_H_INC 50
+#define NAVIFRAME_TITLE_FONT_SIZE_INC 36
+#define NAVIFRAME_ICON_SIZE_INC 32 32
+#define NAVIFRAME_ICON_PADDING_INC 16 0
+#define NAVIFRAME_CONTROLBAR_PADDING_INC 5
+
+#define CONTROLBAR_LARGE_HEIGHT_INC 122
+#define CONTROLBAR_SMALL_HEIGHT_INC 102
+#define CONTROLBAR_WIDTH_INC 122
+
+#define MP_NAVIFRAME_CONTROLBAR_H 114
+
+#endif /* __MP_DEFINES_H__ */
diff --git a/layout/mp-edit-navi.edc b/layout/mp-edit-navi.edc
new file mode 100644 (file)
index 0000000..fb98ccf
--- /dev/null
@@ -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
new file mode 100644 (file)
index 0000000..d9c63d3
--- /dev/null
@@ -0,0 +1,1259 @@
+
+#define ENTRY_TEXT_SIZE_INC 44
+#define ENTRY_TEXT_COLOR_INC "#FFFFFF"
+#define ENTRY_CURSOR_COLOR_INC 42 109 140 255
+#define ENTRY_PREEDIT_BACKGROUND_COLOR_INC "#000000"
+#define ENTRY_PREEDIT_TEXT_COLOR_INC "#FFFFFFFF"
+#define ENTRY_SELECTION_BG_COLOR 90 123 138 127
+#define ENTRY_SELECTION_BLOCK_HANDLE_MIN_SIZE 48 67
+#define MAGNIFIER_HEIGHT_FILL 182
+#define MAGNIFIER_HEIGHT_FIXED 108
+#define MAGNIFIER_WIDTH_FIXED 358
+
+#define EDITFIELD_TITLE_SIZE_INC 32
+#define EDITFIELD_TITLE_COLOR_INC 255 255 255 255// 73 73 73 255
+#define EDITFIELD_GUIDE_TEXT_COLOR_INC 250 250 250 255//189 189 189 255
+#define EDITFIELD_DEFAULT_ERASER_MINW_INC 48
+#define EDITFIELD_DEFAULT_ERASER_MINH_INC 48
+#define EDITFIELD_SEARCHBAR_ERASER_MINW_INC 38
+#define EDITFIELD_SEARCHBAR_ERASER_MINH_INC 38
+#define EDITFIELD_DEFAULT_MINH_INC 112
+#define EDITFIELD_SEARCHBAR_MINH_INC 50
+#define EDITFIELD_DEFAULT_TOP1_SINGLE_INC 20
+#define EDITFIELD_DEFAULT_TOP1_MULTI_INC 45
+#define EDITFIELD_DEFAULT_TOP2_INC 6
+#define EDITFIELD_DEFAULT_LEFT1_INC 0
+#define EDITFIELD_DEFAULT_LEFT2_INC 0
+#define EDITFIELD_DEFAULT_LEFT3_INC 2
+#define EDITFIELD_DEFAULT_RIGHT1_ERASER_HIDE_INC 0
+#define EDITFIELD_DEFAULT_RIGHT1_ERASER_SHOW_INC 60
+#define EDITFIELD_DEFAULT_RIGHT2_INC 0
+#define EDITFIELD_DEFAULT_BOTTOM1_SINGLE_INC 20
+#define EDITFIELD_DEFAULT_BOTTOM1_MULTI_INC 5
+#define EDITFIELD_DEFAULT_BOTTOM2_SINGLE_INC 32
+#define EDITFIELD_DEFAULT_BOTTOM2_MULTI_INC 6
+#define EDITFIELD_DEFAULT_BOTTOM3_SINGLE_INC 85
+#define EDITFIELD_DEFAULT_BOTTOM3_MULTI_INC 60
+#define EDITFIELD_SEARCHBAR_TOP1_SINGLE_INC 6
+#define EDITFIELD_SEARCHBAR_TOP1_MULTI_INC 10
+#define EDITFIELD_SEARCHBAR_TOP2_INC 10
+#define EDITFIELD_SEARCHBAR_LEFT1_INC 0
+#define EDITFIELD_SEARCHBAR_LEFT2_INC 0
+#define EDITFIELD_SEARCHBAR_LEFT3_INC 2
+#define EDITFIELD_SEARCHBAR_RIGHT1_ERASER_HIDE_INC 15
+#define EDITFIELD_SEARCHBAR_RIGHT1_ERASER_SHOW_INC 55
+#define EDITFIELD_SEARCHBAR_RIGHT2_INC 5
+#define EDITFIELD_SEARCHBAR_BOTTOM1_SINGLE_INC 8
+#define EDITFIELD_SEARCHBAR_BOTTOM1_MULTI_INC 2
+#define EDITFIELD_SEARCHBAR_BOTTOM2_SINGLE_INC 16
+#define EDITFIELD_SEARCHBAR_BOTTOM2_MULTI_INC 2
+#define EDITFIELD_SEARCHBAR_BOTTOM3_SINGLE_INC 50
+#define EDITFIELD_SEARCHBAR_BOTTOM3_MULTI_INC 50
+
+#define ENTRY_BLOCK_HANDLE_SOURCE2 "elm/entry/selection/block_handle_right"
+#define ENTRY_BLOCK_HANDLE_SOURCE3 "elm/entry/selection/block_handle_left"
+/////////////////////////////////////////////////////////////////////////
+group { name: "elm/entry/selection/block_handle_left";
+       data.item: "position" "BOTTOM";
+       data.item: "height" "40";
+       images {
+         image: "copy&paste_Icon_left.png" COMP;
+         image: "copy&paste_Icon_left_press.png" COMP;
+         image: "copy&paste_Icon_left_top.png" COMP;
+         image: "copy&paste_Icon_left_top_press.png" COMP;
+       }
+       parts {
+               part { name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               fixed: 1 1;
+                               align: 1 0;
+                               min: ENTRY_SELECTION_BLOCK_HANDLE_MIN_SIZE;
+                               color: 0 0 0 0;
+                       }
+                       description { state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+               part { name: "handle";
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               fixed: 1 1;
+                               align: 1 0;
+                               min: ENTRY_SELECTION_BLOCK_HANDLE_MIN_SIZE;
+                               rel1 {
+                                       relative: 1.1 0.0;
+                                       offset: 0 -2;
+                                       to: "bg";
+                               }
+                               rel2 {
+                                       relative: 1.1 0.0;
+                                       offset: 0 -2;
+                                       to: "bg";
+                               }
+                               image {
+                                       normal: "copy&paste_Icon_left.png";
+                                       border: 0 0 0 0;
+                               }
+                               image.middle: SOLID;
+                               fill.smooth: 0;
+                       }
+                       description { state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description { state: "top" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               align: 1 1;
+                               image {
+                                       normal: "copy&paste_Icon_left_top.png";
+                               }
+                       }
+                       description { state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               image {
+                                       normal: "copy&paste_Icon_left_press.png";
+                               }
+                       }
+                       description { state: "top_press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               align: 1 1;
+                               image {
+                                       normal: "copy&paste_Icon_left_top_press.png";
+                               }
+                       }
+               }
+       }
+       script {
+               public handler_ontop;
+               public handler_pressed;
+               public handler_focused;
+       }
+       programs {
+               program { name: "focused";
+                       signal: "elm,action,focus";
+                       source: "elm";
+                       script {
+                               set_int(handler_focused, 1);
+                       }
+               }
+               program { name: "unfocused";
+                       signal: "elm,action,unfocus";
+                       source: "elm";
+                       script {
+                               set_int(handler_focused, 0);
+                                       set_state(PART:"handle", "default", 0.0);
+                       }
+               }
+               program { name: "top";
+                       signal: "elm,state,top";
+                       source: "elm";
+                       script {
+                               new pressed;
+                               new focused;
+                               pressed = get_int(handler_pressed);
+                               focused = get_int(handler_focused);
+                               set_int(handler_ontop, 1);
+                                                                       if (focused)
+                                                                       {
+                                                                                if (pressed)
+                                                                                  set_state(PART:"handle", "top_press", 0.0);
+                                                                                else
+                                                                                  set_state(PART:"handle", "top", 0.0);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                                set_state(PART:"handle", "default", 0.0);
+                                                                       }
+                       }
+               }
+               program { name: "bottom";
+                       signal: "elm,state,bottom";
+                       source: "elm";
+                       script {
+                               new pressed;
+                               new focused;
+                               pressed = get_int(handler_pressed);
+                               focused = get_int(handler_focused);
+                               set_int(handler_ontop, 0);
+                                                                       if (focused)
+                                                                       {
+                                                                                if (pressed)
+                                                                                  set_state(PART:"handle", "press", 0.0);
+                                                                                else
+                                                                                  set_state(PART:"handle", "show", 0.0);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                                set_state(PART:"handle", "default", 0.0);
+                                                                       }
+                       }
+               }
+               program { name: "pressed";
+                       signal: "mouse,down,1";
+                       source: "handle";
+                       script {
+                               new pos;
+                               pos = get_int(handler_ontop);
+                               set_int(handler_pressed, 1);
+                               if (pos)
+                                       set_state(PART:"handle", "top_press", 0.0);
+                               else
+                                       set_state(PART:"handle", "press", 0.0);
+                       }
+               }
+               program { name: "unpressed";
+                       signal: "mouse,up,1";
+                       source: "handle";
+                       script {
+                               new pos;
+                               pos = get_int(handler_ontop);
+                               set_int(handler_pressed, 0);
+                               if (pos)
+                                       set_state(PART:"handle", "top", 0.0);
+                               else
+                                       set_state(PART:"handle", "show", 0.0);
+                       }
+               }
+       }
+}
+
+group { name: "elm/entry/selection/block_handle_right";
+       data.item: "position" "BOTH";
+       data.item: "height" "40";
+       images {
+         image: "copy&paste_Icon_right.png" COMP;
+         image: "copy&paste_Icon_right_press.png" COMP;
+         image: "copy&paste_Icon_right_top.png" COMP;
+         image: "copy&paste_Icon_right_top_press.png" COMP;
+       }
+       parts {
+               part { name: "handle";
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               fixed: 1 1;
+                               align: 0 0;
+                               min: ENTRY_SELECTION_BLOCK_HANDLE_MIN_SIZE;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       offset: 0 -2;
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       offset: 0 -2;
+                               }
+                               image {
+                                       normal: "copy&paste_Icon_right.png";
+                                       border: 0 0 0 0;
+                               }
+                               image.middle: SOLID;
+                               fill.smooth: 0;
+                       }
+                       description { state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description { state: "top" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               align: 0 1;
+                               image {
+                                       normal: "copy&paste_Icon_right_top.png";
+                               }
+                       }
+                       description { state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               image {
+                                       normal: "copy&paste_Icon_right_press.png";
+                               }
+                       }
+                       description { state: "top_press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               align: 0 1;
+                               image {
+                                       normal: "copy&paste_Icon_right_top_press.png";
+                               }
+                       }
+               }
+       }
+       script {
+               public handler_ontop;
+               public handler_pressed;
+               public handler_focused;
+       }
+       programs {
+               program { name: "focused";
+                       signal: "elm,action,focus";
+                       source: "elm";
+                       script {
+                               set_int(handler_focused, 1);
+                       }
+               }
+               program { name: "unfocused";
+                       signal: "elm,action,unfocus";
+                       source: "elm";
+                       script {
+                               set_int(handler_focused, 0);
+                                       set_state(PART:"handle", "default", 0.0);
+                       }
+               }
+               program { name: "top";
+                       signal: "elm,state,top";
+                       source: "elm";
+                       script {
+                               new pressed;
+                               new focused;
+                               pressed = get_int(handler_pressed);
+                               focused = get_int(handler_focused);
+                                                                       set_int(handler_ontop, 1);
+                                                                       if (focused)
+                                                                       {
+                                                                                if (pressed)
+                                                                                  set_state(PART:"handle", "top_press", 0.0);
+                                                                                else
+                                                                                  set_state(PART:"handle", "top", 0.0);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                                set_state(PART:"handle", "default", 0.0);
+                                                                       }
+                       }
+               }
+               program { name: "bottom";
+                       signal: "elm,state,bottom";
+                       source: "elm";
+                       script {
+                               new pressed;
+                               new focused;
+                               pressed = get_int(handler_pressed);
+                               focused = get_int(handler_focused);
+                               set_int(handler_ontop, 0);
+                                                                       if (focused)
+                                                                       {
+                                                                                if (pressed)
+                                                                                  set_state(PART:"handle", "press", 0.0);
+                                                                                else
+                                                                                  set_state(PART:"handle", "show", 0.0);
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                                set_state(PART:"handle", "default", 0.0);
+                                                                       }
+                       }
+               }
+               program { name: "pressed";
+                       signal: "mouse,down,1";
+                       source: "handle";
+                       script {
+                               new pos;
+                               pos = get_int(handler_ontop);
+                               set_int(handler_pressed, 1);
+                               if (pos)
+                                       set_state(PART:"handle", "top_press", 0.0);
+                               else
+                                       set_state(PART:"handle", "press", 0.0);
+                       }
+               }
+               program { name: "unpressed";
+                       signal: "mouse,up,1";
+                       source: "handle";
+                       script {
+                               new pos;
+                               pos = get_int(handler_ontop);
+                               set_int(handler_pressed, 0);
+                               if (pos)
+                                       set_state(PART:"handle", "top", 0.0);
+                               else
+                                       set_state(PART:"handle", "show", 0.0);
+                       }
+               }
+       }
+}
+
+group { name: "elm/entry/anchor/default";
+       parts {
+               part { name: "bg";
+                       type: RECT;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               color: 128 0 0 64;
+                       }
+               }
+       }
+}
+/////////////////////////////////////////////////////////////////////////
+
+/* This file is copied at 10/17/2011 */
+
+group { name: "elm/editfield/base/music/default";
+   images {
+      image: "00_EditField_clear.png" COMP;
+   }
+   styles {
+      style { name: "editfield_content_singleline_style";
+         base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color="ENTRY_TEXT_COLOR_INC" wrap=mixed ellipsis=1";
+         tag:  "br" "\n";
+         tag:  "ps" "ps";
+         tag:  "tab" "\t";
+         tag:  "em" "+ font=SLP:style=Oblique";
+         tag:  "b" "+ font=SLP:style=Bold";
+         tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+         tag:  "hilight" "+ font=SLP:style=Bold";
+      }
+      style { name: "editfield_content_multiline_style";
+         base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color="ENTRY_TEXT_COLOR_INC" wrap=mixed";
+         tag:  "br" "\n";
+         tag:  "ps" "ps";
+         tag:  "tab" "\t";
+         tag:  "em" "+ font=SLP:style=Oblique";
+         tag:  "b" "+ font=SLP:style=Bold";
+         tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+         tag:  "hilight" "+ font=SLP:style=Bold";
+      }
+      style { name: "editfield_content_password_style";
+         base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color="ENTRY_TEXT_COLOR_INC" wrap=none ellipsis=1";
+         tag:  "br" "\n";
+         tag:  "ps" "ps";
+         tag:  "tab" "\t";
+         tag:  "em" "+ font=SLP:style=Oblique";
+         tag:  "b" "+ font=SLP:style=Bold";
+         tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+         tag:  "hilight" "+ font=SLP:style=Bold";
+      }
+   }
+   script {
+      public single_line = 0;
+      public password_mode = 0;
+
+      public set_multi_line() {
+         set_int(single_line, 0);
+      }
+      public set_single_line() {
+         set_int(single_line, 1);
+      }
+      public set_password() {
+         set_int(password_mode, 1);
+      }
+      public unset_password() {
+         set_int(password_mode, 0);
+      }
+      public no_edit() {
+         if(get_int(single_line) == 1) {
+            if(get_int(password_mode) == 0) {
+               set_state(PART:"elm.content.single", "no_edit", 0.0);
+               set_state(PART:"elm.content.multi", "default", 0.0);
+               set_state(PART:"elm.content.password", "default", 0.0);
+            }
+            else {
+               set_state(PART:"elm.content.single", "default", 0.0);
+               set_state(PART:"elm.content.multi", "default", 0.0);
+               set_state(PART:"elm.content.password", "no_edit", 0.0);
+            }
+         }
+         else if(get_int(single_line) == 0) {
+            set_state(PART:"elm.content.single", "default", 0.0);
+            set_state(PART:"elm.content.multi", "no_edit", 0.0);
+            set_state(PART:"elm.content.password", "default", 0.0);
+         }
+         set_state(PART:"elm.swallow.content", "no_edit", 0.0);
+         set_state(PART:"over", "default", 0.0);
+         set_state(PART:"top2", "default", 0.0);
+      }
+   }
+   parts {
+      part {
+         name: "base";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            min: 0 EDITFIELD_DEFAULT_MINH_INC;
+            color: MP_GENLIST_BG_COLOR;
+         }
+      }
+      part {
+         name: "top1";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: 0 EDITFIELD_DEFAULT_TOP1_SINGLE_INC;
+            fixed: 1 1;
+            rel1.relative: 0.0 0.0;
+            rel2.relative: 1.0 0.0;
+            align: 0.5 0;
+         }
+         description {
+            state: "elm.text.show" 0.0;
+            inherit: "default" 0.0;
+            min: 0 EDITFIELD_DEFAULT_TOP1_MULTI_INC;
+         }
+      }
+      part {
+         name: "top2";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: 0 EDITFIELD_DEFAULT_TOP2_INC;
+            fixed: 1 1;
+            rel1.relative: 0.0 0.0;
+            rel2.relative: 1.0 0.0;
+            align: 0.5 0;
+         }
+         description {
+            state: "edit" 0.0;
+            inherit: "default" 0.0;
+         }
+      }
+      part {
+         name: "left1";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: EDITFIELD_DEFAULT_LEFT1_INC 0;
+            fixed: 1 1;
+            align: 0 0;
+            rel1.relative : 0.0 0.0;
+            rel2.relative : 0.0 1.0;
+         }
+      }
+      part {
+         name: "left2";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: EDITFIELD_DEFAULT_LEFT2_INC 0;
+            fixed: 1 1;
+            align: 0 0;
+            rel1.relative : 0.0 0.0;
+            rel2.relative : 0.0 1.0;
+         }
+      }
+      part {
+         name: "left3";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: EDITFIELD_DEFAULT_LEFT3_INC 0;
+            fixed: 1 1;
+            align: 0 0;
+            rel1 {
+               to: "elm.swallow.content";
+               relative: 0.0 0.0;
+            }
+            rel2 {
+               to: "elm.swallow.content";
+               relative: 0.0 1.0;
+            }
+         }
+      }
+      part {
+         name: "right1";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: EDITFIELD_DEFAULT_RIGHT1_ERASER_HIDE_INC 0;
+            fixed: 1 1;
+            align: 1 0;
+            rel1.relative : 1.0 0.0;
+            rel2.relative : 1.0 1.0;
+         }
+         description {
+            state: "elm.eraser.show" 0.0;
+            inherit: "default" 0.0;
+            min: EDITFIELD_DEFAULT_RIGHT1_ERASER_SHOW_INC 0;
+         }
+      }
+      part {
+         name: "right2";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: EDITFIELD_DEFAULT_RIGHT2_INC 0;
+            fixed: 1 1;
+            align: 1 0;
+            rel1.relative : 1.0 0.0;
+            rel2.relative : 1.0 1.0;
+         }
+      }
+      part {
+         name: "bottom1";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: 0 EDITFIELD_DEFAULT_BOTTOM1_SINGLE_INC;
+            fixed: 1 1;
+            align: 0 1;
+            rel1.relative: 0.0 1.0;
+         }
+         description {
+            state: "elm.text.show" 0.0;
+            inherit: "default" 0.0;
+            min: 0 EDITFIELD_DEFAULT_BOTTOM1_MULTI_INC;
+         }
+      }
+      part {
+         name: "bottom2";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: 0 EDITFIELD_DEFAULT_BOTTOM2_SINGLE_INC;
+            fixed: 0 1;
+            rel1.relative: 0.0 1.0;
+            align: 0 1;
+         }
+         description {
+            state: "elm.text.show" 0.0;
+            inherit: "default" 0.0;
+            min: 0 EDITFIELD_DEFAULT_BOTTOM2_MULTI_INC;
+         }
+      }
+      part {
+         name: "bottom3";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: 0 EDITFIELD_DEFAULT_BOTTOM3_SINGLE_INC;
+            fixed: 0 1;
+            rel1.relative: 0.0 1.0;
+            align: 0 1;
+         }
+         description {
+            state: "elm.text.show" 0.0;
+            inherit: "default" 0.0;
+            min: 0 EDITFIELD_DEFAULT_BOTTOM3_MULTI_INC;
+         }
+      }
+      part {
+         name: "elm.text";
+         type: TEXT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            align: 0.0 0.0;
+            min: 0 34;
+            fixed: 1 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "left2";
+               to_y: "top2";
+            }
+            rel2 {
+               relative: 1.0 1.0;
+               to_x: "left2";
+               to_y: "top2";
+            }
+            color: EDITFIELD_TITLE_COLOR_INC;
+            text {
+               font: "SLP:style=Medium";
+              text_class: "slp_medium";
+               size: EDITFIELD_TITLE_SIZE_INC;
+               min: 1 1;
+               align: 0.0 0.0;
+            }
+         }
+         description {
+            state: "elm.text.show" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+      }
+      part {
+         name: "elm.guidetext";
+         type: TEXT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            align: 0.0 0.0;
+            fixed: 1 1;
+            rel1.to: "elm.swallow.content";
+            rel2.to: "elm.swallow.content";
+            color: EDITFIELD_GUIDE_TEXT_COLOR_INC;
+            text {
+               font: "SLP:style=Roman";
+              text_class: "slp_roman";
+               size: ENTRY_TEXT_SIZE_INC;
+               min: 0 0;
+               align: 0.0 0.5;
+            }
+         }
+         description {
+            state: "hidden" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part {
+         name: "elm.content.single";
+         type: TEXTBLOCK;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            fixed: 1 1;
+            rel1 {
+               to_x: "left3";
+               to_y: "elm.swallow.content";
+               relative: 1.0 0.0;
+            }
+            rel2.to: "elm.swallow.content";
+            text {
+               style: "editfield_content_singleline_style";
+               min: 0 0;
+               max: 0 1;
+            }
+         }
+         description {
+            state: "no_edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description {
+            state: "edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part {
+         name: "elm.content.multi";
+         type: TEXTBLOCK;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            fixed: 1 1;
+            rel1 {
+               to_x: "left3";
+               to_y: "elm.swallow.content";
+               relative: 1.0 0.0;
+            }
+            rel2.to: "elm.swallow.content";
+            text {
+               style: "editfield_content_multiline_style";
+               min: 0 1;
+            }
+         }
+         description {
+            state: "no_edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description {
+            state: "edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part {
+         name: "elm.content.password";
+         type: TEXTBLOCK;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         entry_mode: PASSWORD;
+         multiline: 0;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            fixed: 1 1;
+            rel1 {
+               to_x: "left3";
+               to_y: "elm.swallow.content";
+               relative: 1.0 0.0;
+            }
+            rel2.to: "elm.swallow.content";
+            text {
+               style: "editfield_content_password_style";
+               repch: "*";
+               min: 0 0;
+               max: 0 1;
+            }
+         }
+         description {
+            state: "no_edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+         description {
+            state: "edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part {
+         name: "elm.swallow.content";
+         type: SWALLOW;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            min: 0 40;
+            rel1 {
+               relative : 1.0 1.0;
+               to_x: "left1";
+               to_y: "top1";
+            }
+            rel2 {
+               relative : 0.0 0.0;
+               to_x: "right1";
+               to_y: "bottom1";
+            }
+            align: 0.0 0.5;
+         }
+         description {
+            state: "no_edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+         description {
+            state: "edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+      }
+      part {
+         name: "over";
+         type: RECT;
+         scale: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            rel1.to: "base";
+            rel2.to: "base";
+            color: 0 0 0 0;
+         }
+         description {
+            state: "edit" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part {
+         name: "eraser_image";
+         scale: 1;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            min: EDITFIELD_DEFAULT_ERASER_MINW_INC EDITFIELD_DEFAULT_ERASER_MINH_INC;
+            fixed: 1 1;
+            align: 1 1;
+            rel1 {
+               relative: 0.0 0.0;
+               to_x : "right2";
+               to_y : "bottom2";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x : "right2";
+               to_y : "bottom2";
+            }
+            image {
+               normal: "00_EditField_clear.png";
+               border: 10 10 10 10;
+               border_scale: 1;
+            }
+         }
+         description {
+            state: "elm.eraser.show" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+      }
+      part {
+         name: "eraser";
+         mouse_events: 1;
+         ignore_flags: ON_HOLD;
+         description {
+            state: "default" 0.0;
+            visible: 0;
+            color: 0 0 0 0;
+            rel1 {
+               relative: 0.0 0.0;
+               to_x : "eraser_image";
+               to_y : "bottom3";
+            }
+         }
+         description {
+            state: "elm.eraser.show" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+      }
+   }
+   programs {
+      program {
+         name: "guidetext_show";
+         signal: "elm,state,guidetext,visible";
+         source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "elm.guidetext";
+      }
+      program {
+         name: "guidetext_hide";
+         signal: "elm,state,guidetext,hidden";
+         source: "elm";
+         action: STATE_SET "hidden" 0.0;
+         target: "elm.guidetext";
+      }
+      program {
+         name: "eraser_show";
+         signal: "elm,state,eraser,show";
+         source: "elm";
+         action: STATE_SET "elm.eraser.show" 0.0;
+         target: "right1";
+         target: "eraser_image";
+         target: "eraser";
+      }
+      program {
+         name: "eraser_hide";
+         signal: "elm,state,eraser,hidden";
+         source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "right1";
+         target: "eraser_image";
+         target: "eraser";
+      }
+      program {
+         name: "multiline_set";
+         signal: "elm,state,text,multiline";
+         source: "elm";
+         script {
+            set_multi_line();
+         }
+      }
+      program {
+         name: "singleline_set";
+         signal: "elm,state,text,singleline";
+         source: "elm";
+         script {
+            set_single_line();
+         }
+      }
+      program {
+         name: "password_set";
+         signal: "elm,state,password,set";
+         source: "elm";
+         script {
+            set_password();
+         }
+      }
+      program {
+         name: "password_unset";
+         signal: "elm,state,password,unset";
+         source: "elm";
+         script {
+            unset_password();
+         }
+      }
+      program {
+         name: "editing";
+         signal: "elm,state,over,hide";
+         source: "elm";
+         action: STATE_SET "edit" 0.0;
+         target: "elm.swallow.content";
+         target: "elm.content.password";
+         target: "elm.content.multi";
+         target: "elm.content.single";
+         target: "over";
+         target: "top2";
+      }
+      program {
+         name: "no_editing";
+         signal: "elm,state,over,show";
+         source: "elm";
+         script {
+            no_edit();
+         }
+      }
+      program {
+         name: "label_show";
+         signal: "elm,state,text,visible";
+         source: "elm";
+         action: STATE_SET "elm.text.show" 0.0;
+         target: "elm.text";
+         target: "top1";
+         target: "bottom1";
+         target: "bottom2";
+         target: "bottom3";
+      }
+      program {
+         name: "label_hide";
+         signal: "elm,state,text,hidden";
+         source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "elm.text";
+         target: "top1";
+         target: "bottom1";
+         target: "bottom2";
+         target: "bottom3";
+      }
+      program {
+         name: "entry_show";
+         signal: "elm,state,entry,show";
+         source: "elm";
+         action: STATE_SET "edit" 0.0;
+         target: "elm.swallow.content";
+         target: "elm.content.multi";
+      }
+   }
+}
+
+group { name: "elm/entry/cursor/music/default";
+       parts {
+               part { name: "clip2";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "clip";
+                               rel2.to: "clip";
+                       visible: 0;
+                       }
+                       description { state: "focused" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+               part { name: "clip";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "clip2";
+                       description { state: "default" 0.0;
+                               rel1.offset: -10 0;
+                               rel2.offset: 9 9;
+                       }
+                       description { state: "hidden" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part { name: "base";
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "clip";
+                       description { state: "default" 0.0;
+                               min: 2 2;
+                               align: 0.5 1.0;
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "glow";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       clip_to: "clip2";
+                       description { state: "default" 0.0;
+                               min: 3 0;
+                               fixed: 1 0;
+                               align: 0.5 0.5;
+                               rel1 {
+                                       relative: 0.0  0.0;
+                                       offset: 0 2;
+                               }
+                               rel2 {
+                                       relative: 0.0  1.0;
+                                       offset: 0 -2;
+                               }
+                               color: ENTRY_CURSOR_COLOR_INC;
+                       }
+                       description { state: "hidden" 0.0;
+                               inherit: "default" 0.0;
+                               color: 0 0 0 0;
+                       }
+               }
+       }
+       programs {
+               program { name: "show";
+                       action: STATE_SET "hidden" 0.0;
+                       in: 0.6 0.0;
+                       target: "glow";
+                       after: "show4";
+               }
+               program { name: "show4";
+                       action: STATE_SET "default" 0.0;
+                       in: 0.6 0.0;
+                       target: "glow";
+                       after: "show";
+               }
+               program { name: "focused";
+                       signal: "elm,action,focus";
+                       source: "elm";
+                       action: STATE_SET "focused" 0.0;
+                       target: "clip2";
+                       after: "show4";
+               }
+               program { name: "unfocused";
+                       signal: "elm,action,unfocus";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "clip2";
+                       after: "stop_glow";
+               }
+               program { name: "stop_glow";
+                                       action: ACTION_STOP;
+                       target: "show";
+                       target: "show4";
+               }
+       }
+}
+
+group { name: "elm/entry/base-single/music/default";
+       data.item: "default_font_size" "24";
+       data.item: "min_font_size" "8";
+       data.item: "max_font_size" "60";
+       styles
+       {
+               style { name: "entry_single_textblock_style";
+                       base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color="ENTRY_TEXT_COLOR_INC" wrap=none left_margin=2 right_margin=3";
+                       tag:  "br" "\n";
+                       tag:  "ps" "ps";
+                       tag:  "tab" "\t";
+                       tag:  "em" "+ font=SLP:style=Oblique";
+                       tag:  "b" "+ font=SLP:style=Bold";
+                       tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+                       tag:  "hilight" "+ font=SLP:style=Bold";
+                       tag:  "preedit" "+ underline=on underline_color="ENTRY_PREEDIT_BACKGROUND_COLOR_INC"";
+                       tag:  "preedit_sel" "+ backing=on backing_color="ENTRY_PREEDIT_BACKGROUND_COLOR_INC" color="ENTRY_PREEDIT_TEXT_COLOR_INC"";
+               }
+               style { name: "entry_single_textblock_disabled_style";
+                       base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color=#00000080 wrap=none left_margin=2 right_margin=3";
+                       tag:  "br" "\n";
+                       tag:  "ps" "ps";
+                       tag:  "tab" "\t";
+                       tag:  "em" "+ font=SLP:style=Oblique";
+                       tag:  "b" "+ font=SLP:style=Bold";
+                       tag:  "link" "+ color=#00000080 underline=on underline_color=#00000080";
+                       tag:  "hilight" "+ font=SLP:style=Bold";
+                       tag:  "preedit" "+ underline=on underline_color="ENTRY_PREEDIT_BACKGROUND_COLOR_INC"";
+                       tag:  "preedit_sel" "+ backing=on backing_color="ENTRY_PREEDIT_BACKGROUND_COLOR_INC" color="ENTRY_PREEDIT_TEXT_COLOR_INC"";
+               }
+       }
+       data {
+               item: context_menu_orientation "horizontal";
+       }
+       parts {
+               part { name: "entry.swallow.background";
+                       type: SWALLOW;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0 0; to: "elm.text"; }
+                               rel2 { relative: 1 1; to: "elm.text"; }
+                       }
+               }
+       }
+
+       parts {
+               part { name: "elm.text";
+                       type: TEXTBLOCK;
+                       mouse_events: 1;
+                       scale: 1;
+                       entry_mode: EDITABLE;
+                       select_mode: BLOCK_HANDLE;
+                       //cursor_mode: BEFORE;
+                       multiline: 0;
+                       source: "elm/entry/selection/music/default"; // selection under
+                       source2: ENTRY_BLOCK_HANDLE_SOURCE2; // block handle
+                       source3: ENTRY_BLOCK_HANDLE_SOURCE3; // block handle
+                       source4: "elm/entry/cursor/music/default"; // cursorover
+                       source5: "elm/entry/anchor/default"; // anchor under
+                       description { state: "default" 0.0;
+                               text {
+                                       style: "entry_single_textblock_style";
+                                       min: 1 1;
+                                       max: 0 0;
+                                       align: 0.0 0.5;
+                               }
+                       }
+                       description { state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                               text {
+                                       style: "entry_single_textblock_disabled_style";
+                               }
+                       }
+               }
+       }
+
+       programs {
+               program { name: "focus";
+                       signal: "load";
+                       source: "";
+                       action: FOCUS_SET;
+                       target: "elm.text";
+               }
+               program { name: "disable";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       action: STATE_SET "disabled" 0.0;
+                       target: "elm.text";
+               }
+               program { name: "enable";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "elm.text";
+               }
+       }
+}
+
+group { name: "elm/entry/selection/music/default";
+       parts {
+               part { name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               color: ENTRY_SELECTION_BG_COLOR;
+                       }
+               }
+       }
+}
+
diff --git a/layout/mp-gengrid-style.edc b/layout/mp-gengrid-style.edc
new file mode 100644 (file)
index 0000000..edcc8a0
--- /dev/null
@@ -0,0 +1,341 @@
+#define GENGRID_PART_BG_COLOR_INC 0 0 0 0
+#define GENGRID_PART_REORDER_BG_COLOR_INC 0 0 0 128
+
+#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 "SLP: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 elm.swallow.block elm.swallow.end";
+      images {
+         image : "00_winset_thumbs_bg.png" COMP;
+         image : "00_winset_thumbs_focus_bg.png" COMP;
+      }
+      parts {
+         part { name: "bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: GENGRID_PART_BG_COLOR_INC;
+            }
+         }
+         part { name: "left_top_padding";
+            type: RECT;
+            scale : 1;
+            description { state: "default" 0.0;
+               min: 8 18;
+               align: 0.0 0.0;
+               visible: 0;
+               rel1.to: "bg";
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "bg";
+               }
+            }
+         }
+         part { name: "right_bottom_padding";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 8 72;
+               align: 1.0 1.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "bg";
+               }
+               rel2.to: "bg";
+            }
+         }
+                part { name: "elm.text.2";
+            type: TEXT;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "left_top_padding";
+                  to_y: "right_bottom_padding";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to: "right_bottom_padding";
+               }
+                          min: 0 28;
+                          max: 9999 28;
+                          fixed: 0 1;
+                          align: 0.0 1.0;
+               text {
+                                       font: VIDEO_TXT_FONT;
+                                       text_class: "slp_roman";
+                                       size: VIDEO_TXT_SIZE;
+                                       align: 0.5 0.5;
+                               }
+                               color: VIDEO_TXT_COLOR;
+            }
+         }
+         part { name: "elm.text.1";
+                       type : TEXT;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  to: "elm.text.2";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to: "elm.text.2";
+               }
+                          min: 0 28;
+                          max: 9999 28;
+                          fixed: 0 1;
+                          align: 0.5 1.0;
+               text {
+                                       font: VIDEO_TXT_FONT;
+                                       text_class: "slp_roman";
+                                       size: VIDEO_TXT_SIZE;
+                                       align: 0.5 0.5;
+                               }
+                               color: VIDEO_TXT_COLOR;
+            }
+         }
+         part { name: "elm.swallow.block";
+            type: SWALLOW;
+            mouse_events: 1;
+            description { state: "default" 0.0;
+               rel1.to : "elm.text.1";
+               rel2.to : "elm.text.2";
+            }
+         }
+         part { name: "item_bg";
+            type: IMAGE;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "left_top_padding";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "right_bottom_padding";
+               }
+               image.normal: "00_winset_thumbs_bg.png";
+            }
+         }
+         part { name: "item_bg_left_top_padding";
+            type: RECT;
+            scale : 1;
+            description { state: "default" 0.0;
+               min: 2 0;
+               align: 0.0 0.0;
+               visible: 0;
+               rel1.to: "item_bg";
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "item_bg";
+               }
+            }
+         }
+         part { name: "item_bg_right_bottom_padding";
+            type: RECT;
+            scale : 1;
+            description { state: "default" 0.0;
+               min: 2 6;
+               align: 1.0 1.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "item_bg";
+               }
+               rel2.to: "item_bg";
+            }
+         }
+         part { name: "item_real_bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 190 189 189 255;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "item_bg_left_top_padding";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "item_bg_right_bottom_padding";
+               }
+            }
+         }
+         part { name: "item_real_bg_left_top_padding";
+            type: RECT;
+            scale : 1;
+            description { state: "default" 0.0;
+               min: 2 2;
+               align: 0.0 0.0;
+               visible: 0;
+               rel1.to: "item_real_bg";
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "item_real_bg";
+               }
+            }
+         }
+         part { name: "item_real_bg_right_bottom_padding";
+            type: RECT;
+            scale : 1;
+            description { state: "default" 0.0;
+               min: 2 2;
+               align: 1.0 1.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "item_real_bg";
+               }
+               rel2.to: "item_real_bg";
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "item_real_bg_left_top_padding";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "item_real_bg_right_bottom_padding";
+               }
+            }
+         }
+         part { name: "elm.swallow.end";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.icon";
+               rel2.to: "elm.swallow.icon";
+            }
+         }
+         part { name: "reorder_bg";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: GENGRID_PART_BG_COLOR_INC;
+               rel1.to: "item_bg";
+               rel2.to: "item_bg";
+            }
+            description { state: "enabled" 0.0;
+               inherit: "default" 0.0;
+               color: GENGRID_PART_REORDER_BG_COLOR_INC;
+            }
+         }
+         part { name: "focus_bg_left_top_padding";
+            type: RECT;
+            scale : 1;
+            description { state: "default" 0.0;
+               min: 8 16;
+               align: 0.0 0.0;
+               visible: 0;
+               rel1.to: "bg";
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "bg";
+               }
+            }
+         }
+         part { name: "focus_bg_right_bottom_padding";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 8 76;
+               align: 1.0 1.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "bg";
+               }
+               rel2.to: "bg";
+            }
+         }
+         part { name: "focus_bg";
+            type: IMAGE;
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "focus_bg_left_top_padding";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "focus_bg_right_bottom_padding";
+               }
+               image.normal: "00_winset_thumbs_focus_bg.png";
+            }
+            description { state: "enabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "go_mouse_down";
+            signal: "mouse,down,1";
+            source: "reorder_bg";
+            action: STATE_SET "enabled" 0.0;
+            target: "focus_bg";
+            transition: ACCELERATE 0.2;
+         }
+         program { name: "go_mouse_up";
+            signal: "mouse,up,1";
+            source: "reorder_bg";
+            action: STATE_SET "default" 0.0;
+            target: "focus_bg";
+            transition: DECELERATE 0.2;
+         }
+         program { name: "go_reorder_disabled";
+            signal: "elm,state,reorder,disabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "reorder_bg";
+            target: "focus_bg";
+            transition: ACCELERATE 0.3;
+         }
+         program { name: "go_reorder_enabled";
+            signal: "elm,state,reorder,enabled";
+            source: "elm";
+            action: STATE_SET "enabled" 0.0;
+            target: "reorder_bg";
+            target: "focus_bg";
+            transition: DECELERATE 0.3;
+         }
+      }
+   }
+
+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
new file mode 100644 (file)
index 0000000..399a8bf
--- /dev/null
@@ -0,0 +1,141 @@
+
+group { name: "elm/genlist/item/select_all/music/default";
+             alias: "elm/genlist/item_odd/select_all/music/default";
+      alias: "elm/genlist/item_compress/select_all/music/default";
+      alias: "elm/genlist/item_compress_odd/select_all/music/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text";
+      data.item: "contents" "elm.icon";
+
+      parts {
+         part { name: "base";
+            type: RECT;
+            repeat_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_HEIGHT_113_INC;
+               color: GENLIST_EDIT_SELECT_ALL_BG_COLOR_INC;
+            }
+         }
+         part { name: "bg";
+            type: RECT;
+            clip_to: "disclip";
+            repeat_events: 0;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               color: GENLIST_EDIT_SELECT_ALL_BG_COLOR_INC;
+            }
+         }
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+
+         part { name: "elm.padding.icon.right";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_10_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+               max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+               fixed: 1 1;
+               align: 0.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";
+               }
+            }
+         }
+         part { name: "elm.text";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.icon.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_COLOR;
+               text {
+                  font: "SLP:style=Roman";
+                 text_class: "slp_roman";
+                  size: GENLIST_FONT_44_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_SELECTED_COLOR_INC;
+            }
+         }
+       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";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            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";
+         }
+      }
+   }
+
diff --git a/layout/mp-genlist-sweep.edc b/layout/mp-genlist-sweep.edc
new file mode 100644 (file)
index 0000000..55e8707
--- /dev/null
@@ -0,0 +1,1428 @@
+
+#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";
+                 text_class: "slp_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";
+                 text_class: "slp_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";
+                 text_class: "slp_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";
+                 text_class: "slp_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";
+                 text_class: "slp_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
new file mode 100644 (file)
index 0000000..eceb6d5
--- /dev/null
@@ -0,0 +1,3424 @@
+
+#include "mp_genlist_macro.edc"
+#include "mp_genlist_define.edc"
+
+#define TEST_RECT(test)\
+       part { name: "test_rect";\
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 255 0 0 255; \
+               rel1 {relative: 0.0 0.0; to, test;}\
+               rel2 {relative: 1.0 1.0; to, test;}\
+               }\
+         }
+
+#define TEST_RECT2(test)\
+       part { name: "test_rect2";\
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 255 255 0 255; \
+               rel1 {relative: 0.0 0.0; to, test;}\
+               rel2 {relative: 1.0 1.0; to, test;}\
+               }\
+         }
+
+#define TEST_RECT3(test)\
+       part { name: "test_rect3";\
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 255 0 255 255; \
+               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
+
+#define GENLIST_SIZE_60_INC    60
+
+#define GENLIST_FONT_35_INC 35
+
+#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     0 0 0 255
+#define MP_MAIN_TEXT_STYLE_COLOR       "000000FF"
+
+#define MP_SUB_TEXT_SIZE       32
+#define MP_SUB_TEXT_COLOR      124 124 124 255
+#define MP_SUB_TEXT_STYLE_COLOR                "7C7C7CFF"
+
+#define MP_VIDEO_TEXT_SIZE 24
+#define MP_VIDEO_TEXT_COLOR 114 114 114 255
+
+#define MP_MAIN_TEXT_01_SIZE   36
+#define MP_MAIN_TEXT_01_COLOR  0 0 0 255
+#define MP_MAIN_TEXT_01_STYLE_COLOR    "000000FF"
+#define MP_MAIN_TEXT_01_STYLE_COLOR_PRESS "FFFFFFFF"
+
+#define MP_SUB_TEXT_01_COLOR   114 114 114 255
+#define GENLIST_PART_ALBUM_TITLE_BASE_COLOR    72 72 72 255
+
+#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 GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#31A1FF"
+#define GENLIST_PART_BASE_COLOR_INC 000000
+
+#define MP_ALBUM_MAIN_TEXT_COLOR 90 99 104 255
+#define MP_ALBUM_MAIN_TEXT_SIZE 36
+#define MP_ALBUM_SUB_TEXT_SIZE 28
+
+#define TEXTBLOCK_TAG \
+      tag:  "br" "\n";\
+      tag:  "ps" "ps";\
+      tag:  "tab" "\t";\
+      tag:  "b" "+ font=SLP:style=Bold text_class=slp_medium";\
+      tag:  "match" GENLIST_PART_MATCH_TAG_COLOR_INC;
+
+styles {
+   style { name: "genlist_textblock_style";
+      base: "font=SLP:style=Roman text_class=slp_roman font_size="MP_MAIN_TEXT_SIZE" color=#"MP_MAIN_TEXT_01_STYLE_COLOR" text_class=list_item ellipsis=1.0";
+      TEXTBLOCK_TAG
+   }
+}
+
+styles {
+   style { name: "genlist_textblock_style_press";
+      base: "font=SLP:style=Roman text_class=slp_roman font_size="MP_MAIN_TEXT_SIZE" color=#"MP_MAIN_TEXT_01_STYLE_COLOR_PRESS" text_class=list_item ellipsis=1.0";
+      TEXTBLOCK_TAG
+   }
+}
+
+  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 {
+         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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               //color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+               text {
+                  style: "genlist_textblock_style_press";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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.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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               //color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+               text {
+                  style: "genlist_textblock_style_press";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            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;
+               min: 0 GENLIST_SIZE_48_INC;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.text3.left";
+                  to_y: "elm.padding.bottom";
+               }
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               //color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+               text {
+                  style: "genlist_textblock_style_press";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               //color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+               text {
+                  style: "genlist_textblock_style_press";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            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;
+               fixed: 1 1;
+               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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               //color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+               text {
+                  style: "genlist_textblock_style_press";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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_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;
+                 TEXT_CLASS_ROMAN
+                  size: MP_MAIN_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+           }
+         }
+
+         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.title";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.title";
+            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( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_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;
+                 TEXT_CLASS_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";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               //color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+               text {
+                  style: "genlist_textblock_style_press";
+                 TEXT_CLASS_ROMAN
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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
+      }
+   }
+
+#define RICH_INFO_RELATED_VIDEO_TITLE_WIDTH 266.0
+#define RICH_INFO_RELATED_VIDEO_HEIGHT 283
+#define RICH_INFO_RELATED_VIDEO_WIDTH (800-154)
+
+
+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.icon.2 elm.icon.3 elm.icon.4";
+      data.item: "texts" "elm.text.1 elm.text.2 elm.text.2.1 elm.text.3 elm.text.3.1 elm.text.4 elm.text.4.1";
+
+      images {
+               image:  "T02_youtube.png" COMP;
+      }
+
+      parts {
+         GENLIST_PART_BASE( RICH_INFO_RELATED_VIDEO_HEIGHT )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_11_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_7_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: TEXT;
+               scale: 1;
+               description { state: "default" 0.0;
+                       visible: 1;
+                       fixed: 1 1;
+                       min: 250 GENLIST_SIZE_48_INC;
+                       max: 250 GENLIST_SIZE_48_INC;
+                       rel1 {relative: 1 1; to_x: "elm.padding.left"; to_y: "elm.padding.top";}
+                       rel2 {relative: 272/RICH_INFO_RELATED_VIDEO_WIDTH       (59/RICH_INFO_RELATED_VIDEO_HEIGHT); offset: 16 0;}
+                       color, MP_MAIN_TEXT_COLOR;
+                       text {
+                               font: FONT_STYLE_ROMAN;
+                               TEXT_CLASS_ROMAN
+                               size: 36;
+                               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.line";
+            clip_to: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0 0;
+               min : 1 0;
+               color: 112 112 112 255;
+               rel1 { relative: 1.0 0.0; to, "elm.text.1"; offset: 0 8;}
+               rel2 {relative:  1.0 1.0; to, "elm.text.1"; offset: 0 -8;}
+            }
+         }
+         //youtube icon
+         part { name: "youtube_image";
+            clip_to: "disclip";
+            type: IMAGE;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               image { normal: "T02_youtube.png"; }
+               fixed: 1 1;
+               align: 0 0;
+               min : 96 48;
+               rel1 { relative: 1.0 0.0; to, "elm.line"; offset: 16 -8;}
+               rel2 {relative:  1.0 1.0; to, "elm.line"; offset: 16 8;}
+            }
+         }
+
+         //thumbnail icon
+         part { name: "elm.icon.2";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0 0;
+               min : 162 128;
+               max : 162 128;
+               rel1 { relative:  0.0 1.0; to, "elm.text.1"; offset: 0 11;}
+               rel2 { relative:  0.0 1.0; to, "elm.text.1"; offset: 0 11;}
+            }
+         }
+
+         part { name: "elm.icon.3";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0 0;
+               min : 162 128;
+               max : 162 128;
+               rel1 { relative:  1.0 0.0; to, "elm.icon.2"; offset: 22 0;}
+               rel2 { relative:  1.0 1.0; to, "elm.icon.2"; offset: 22 0;}
+            }
+         }
+
+         part { name: "elm.icon.4";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0 0;
+               min : 162 128;
+               max : 162 128;
+               rel1 { relative:  1.0 0.0; to, "elm.icon.3"; offset: 22 0;}
+               rel2 { relative:  1.0 1.0; to, "elm.icon.3"; offset: 22 0;}
+            }
+         }
+
+       //video title
+         part {
+               name: "elm.text.2";
+               clip_to: "disclip";
+               type: TEXT;
+               scale: 1;
+               description { state: "default" 0.0;
+                       visible: 1;
+                       fixed: 1 1;
+                       align: 0 0;
+                       min: 162 28;
+                       max: 162 28;
+                       rel1 {relative: 0 1; to: "elm.icon.2"; offset: 0 5;}
+                       rel2 {relative: 1 1; to: "elm.icon.2"; offset: 0 5;}
+                       color, MP_VIDEO_TEXT_COLOR;
+                       text {
+                               font: FONT_STYLE_REGULAR;
+                               TEXT_CLASS_REGULAR
+                               size: MP_VIDEO_TEXT_SIZE;
+                               align: 0.5 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.1";
+               clip_to: "disclip";
+               type: TEXT;
+               scale: 1;
+               description { state: "default" 0.0;
+                       visible: 1;
+                       fixed: 1 1;
+                       align: 0 0;
+                       min: 162 28;
+                       max: 162 28;
+                       rel1 {relative: 0 1; to: "elm.text.2"; offset: 0 6;}
+                       rel2 {relative: 1 1; to: "elm.text.2"; offset: 0 6;}
+                       color, MP_VIDEO_TEXT_COLOR;
+                       text {
+                               font: FONT_STYLE_REGULAR;
+                               TEXT_CLASS_REGULAR
+                               size: MP_VIDEO_TEXT_SIZE;
+                               align: 0.5 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.3";
+               clip_to: "disclip";
+               type: TEXT;
+               scale: 1;
+               description { state: "default" 0.0;
+                       visible: 1;
+                       fixed: 1 1;
+                       align: 0 0;
+                       min: 162 28;
+                       max: 162 28;
+                       rel1 {relative: 0 1; to: "elm.icon.3"; offset: 0 5;}
+                       rel2 {relative: 1 1; to: "elm.icon.3"; offset: 0 5;}
+                       color, MP_VIDEO_TEXT_COLOR;
+                       text {
+                               font: FONT_STYLE_REGULAR;
+                               TEXT_CLASS_REGULAR
+                               size: MP_VIDEO_TEXT_SIZE;
+                               align: 0.5 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.3.1";
+               clip_to: "disclip";
+               type: TEXT;
+               scale: 1;
+               description { state: "default" 0.0;
+                       visible: 1;
+                       fixed: 1 1;
+                       align: 0 0;
+                       min: 162 28;
+                       max: 162 28;
+                       rel1 {relative: 0 1; to: "elm.text.3"; offset: 0 6;}
+                       rel2 {relative: 1 1; to: "elm.text.3"; offset: 0 6;}
+                       color, MP_VIDEO_TEXT_COLOR;
+                       text {
+                               font: FONT_STYLE_REGULAR;
+                               TEXT_CLASS_REGULAR
+                               size: MP_VIDEO_TEXT_SIZE;
+                               align: 0.5 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.4";
+               clip_to: "disclip";
+               type: TEXT;
+               scale: 1;
+               description { state: "default" 0.0;
+                       visible: 1;
+                       fixed: 1 1;
+                       align: 0 0;
+                       min: 162 28;
+                       max: 162 28;
+                       rel1 {relative: 0 1; to: "elm.icon.4"; offset: 0 5;}
+                       rel2 {relative: 1 1; to: "elm.icon.4"; offset: 0 5;}
+                       color, MP_VIDEO_TEXT_COLOR;
+                       text {
+                               font: FONT_STYLE_REGULAR;
+                               TEXT_CLASS_REGULAR
+                               size: MP_VIDEO_TEXT_SIZE;
+                               align: 0.5 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.4.1";
+               clip_to: "disclip";
+               type: TEXT;
+               scale: 1;
+               description { state: "default" 0.0;
+                       visible: 1;
+                       fixed: 1 1;
+                       align: 0 0;
+                       min: 162 28;
+                       max: 162 28;
+                       rel1 {relative: 0 1; to: "elm.text.4"; offset: 0 6;}
+                       rel2 {relative: 1 1; to: "elm.text.4"; offset: 0 6;}
+                       color, MP_VIDEO_TEXT_COLOR;
+                       text {
+                               font: FONT_STYLE_REGULAR;
+                               TEXT_CLASS_REGULAR
+                               size: MP_VIDEO_TEXT_SIZE;
+                               align: 0.5 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_BOTTOM_LINE
+         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";
+            target: "elm.text.2.1";
+            target: "elm.text.3";
+            target: "elm.text.3.1";
+            target: "elm.text.4";
+            target: "elm.text.4.1";
+         }
+         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.2.1";
+            target: "elm.text.3";
+            target: "elm.text.3.1";
+            target: "elm.text.4";
+            target: "elm.text.4.1";
+            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( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_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;
+                 TEXT_CLASS_ROMAN
+                  size: 36;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+                       }
+         }
+        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.tag";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.tag";
+            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( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_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;
+                 TEXT_CLASS_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( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_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;
+                 TEXT_CLASS_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( GENLIST_PADDING_16_INC )
+         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;
+                 TEXT_CLASS_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;
+                 TEXT_CLASS_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;
+                 TEXT_CLASS_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;
+                 TEXT_CLASS_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;
+                 TEXT_CLASS_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: FONT_STYLE_MEDIUM;
+                 TEXT_CLASS_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";
+      }
+   }
+
+   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 {
+        ALBUM_GENLIST_PART_BASE
+         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 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.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_ALBUM_MAIN_TEXT_COLOR;
+               text {
+                 font: FONT_STYLE_REGULAR;
+                TEXT_CLASS_REGULAR
+                 size: MP_ALBUM_MAIN_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_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";
+               }
+               color: MP_ALBUM_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_REGULAR ;
+                 TEXT_CLASS_REGULAR
+                  size: MP_ALBUM_SUB_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;
+               fixed: 1 1;
+               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_ALBUM_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_BOLD;
+                 TEXT_CLASS_BOLD
+                  size: MP_ALBUM_SUB_TEXT_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/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 {
+       ALBUM_GENLIST_PART_BASE
+         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 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.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_ALBUM_MAIN_TEXT_COLOR;
+               text {
+                 font: FONT_STYLE_REGULAR;
+                TEXT_CLASS_REGULAR
+                 size: MP_ALBUM_MAIN_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;
+                  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_ALBUM_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_BOLD;
+                 TEXT_CLASS_BOLD
+                  size: MP_ALBUM_SUB_TEXT_SIZE;
+                  min: 1 1;
+                  align: 1.0 0.5;
+               }
+            }
+       }
+       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_77_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: 125 125 125 255;
+               text {
+                  font: FONT_STYLE_REGULAR;
+                 TEXT_CLASS_REGULAR
+                  size: 32;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 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";
+         }
+      }
+   }
+
+   group { name: "elm/genlist/item/music_player/grouptitle/1text/default";
+
+      alias: "elm/genlist/item_odd/music_player/grouptitle/1text/default";
+      alias: "elm/genlist/item_compress/music_player/grouptitle/1text/default";
+      alias: "elm/genlist/item_compress_odd/music_player/grouptitle/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_77_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";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 0 1;
+               align: 0.5 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_LIGHT;
+                  size: 43;
+                  min: 0 1;
+                  align: 0.5 0.5;
+               }
+            }
+         }
+      }
+   }
+
+#define GENLIST_ICON_BIG_SIZE     64
+
+#define GENLIST_LIST_MAIN_TEXT_SIZE 44
+#define GENLIST_LIST_MAIN_TEXT_READ_COLOR 124 124 124 255
+#define GENLIST_LIST_MAIN_TEXT_READ_COLOR_STYLE "#7C7C7CFF"
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR 0 0 0 255
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE "#000000FF"
+#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR 249 249 249 255
+#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE "#F9F9F9FF"
+
+#define GENLIST_HEIGHT_1LINE 114
+#define GENLIST_PART_EXPANDABLE_2ND_DEPTH_BG_COLOR_INC 215 225 232 255
+
+   group { name: "elm/genlist/item/music/dialogue/1text.2icon/expandable2/default";
+      alias: "elm/genlist/item_odd/music/dialogue/1text.2icon/expandable2/default";
+      alias: "elm/genlist/item_compress/music/dialogue/1text.2icon/expandable2/default";
+      alias: "elm/genlist/item_compress_odd/music/dialogue/1text.2icon/expandable2/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text";
+      data.item: "contents" "elm.icon elm.icon.2";
+      data.item: "treesize" "GENLIST_TREESIZE_16_INC";
+      images {
+         image: "00_list_bar_press_1x80.png" COMP;
+         image: "00_list_expandable_bg.png" COMP;
+      }
+      parts {
+         GENLIST_EXPANDABLE_PART_PERSPECTIVE_POINT()
+         GENLIST_EXPANDABLE_PART_BASE( GENLIST_HEIGHT_1LINE, GENLIST_PART_EXPANDABLE_2ND_DEPTH_BG_COLOR_INC )
+         GENLIST_PART_BOTTOM_EFFECT_LINE
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_32_INC )
+         GENLIST_PART_PADDING_RIGHT( 32 )
+         GENLIST_PART_DIALOGUE_EXPANDABLE_ITEM
+         GENLIST_PART_DIALOGUE_RIGHT_LINE
+         GENLIST_PART_EXPANDABLE_SWALLOW_PADDING
+         part { name: "elm.padding.icon.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.icon";
+               }
+               rel2.to_x: "elm.icon";
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE;
+               max: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.swallow.pad";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.swallow.pad";
+               }
+            }
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+         }
+         part { name: "elm.text";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0  0.0;
+                  to_x: "elm.padding.icon.right";
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  to_x: "elm.icon.2";
+                  offset: 16 0;
+               }
+               color: GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR;
+               text {
+                  font: FONT_STYLE_REGULAR;
+                 TEXT_CLASS_REGULAR
+                  size: GENLIST_LIST_MAIN_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+                  text_class: "list_item";
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR;
+            }
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+         }
+
+         part { name: "elm.icon.2";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 160 GENLIST_ICON_BIG_SIZE;
+               max: 160 GENLIST_ICON_BIG_SIZE;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 0.0;
+                  //to_x: "elm.padding.right";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.right";
+                  offset: -16 0;
+               }
+            }
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+         }
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "base";
+            target: "elm.text";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            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";
+         }
+         program {
+            GENLIST_PROGRAM_MAP_ROTATE_EXPAND_START()
+            target: "base";
+            target: "elm.text";
+            target: "elm.rect.dialogue";
+            target: "elm.swallow.pad";
+            target: "elm.icon";
+            target: "elm.icon.2";
+            target: "bottom_line";
+         }
+         program {
+            GENLIST_PROGRAM_MAP_ROTATE_EXPAND_FINISH( 0.2 )
+            target: "base";
+            target: "elm.text";
+            target: "elm.icon";
+            target: "elm.icon.2";
+            target: "elm.rect.dialogue";
+            target: "elm.swallow.pad";
+            target: "bottom_line";
+         }
+         program {
+            GENLIST_PROGRAM_MAP_EXPAND_END()
+            target: "base";
+            target: "elm.text";
+            target: "elm.icon";
+            target: "elm.icon.2";
+            target: "elm.rect.dialogue";
+            target: "elm.swallow.pad";
+            target: "bottom_line";
+         }
+         program {
+            GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_START()
+            target: "base";
+            target: "elm.text";
+            target: "elm.icon";
+            target: "elm.icon.2";
+            target: "elm.rect.dialogue";
+            target: "elm.swallow.pad";
+            target: "bottom_line";
+         }
+         program {
+            GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_FINISH( 0.5 )
+            target: "base";
+            target: "elm.text";
+            target: "elm.icon";
+            target: "elm.icon.2";
+            target: "elm.rect.dialogue";
+            target: "elm.swallow.pad";
+            target: "bottom_line";
+         }
+         program {
+            GENLIST_PROGRAM_MAP_CONTRACT_END()
+            target: "base";
+            target: "elm.text";
+            target: "elm.icon";
+            target: "elm.icon.2";
+            target: "elm.rect.dialogue";
+            target: "elm.swallow.pad";
+            target: "bottom_line";
+         }
+         program {
+            name: "show";
+            signal: "elm,state,show";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            target: "elm.text";
+            target: "elm.icon";
+            target: "elm.icon.2";
+            target: "elm.rect.dialogue";
+            target: "elm.swallow.pad";
+            target: "bottom_line";
+         }
+         program {
+            name: "hide";
+            signal: "elm,state,hide";
+            action: STATE_SET "hide" 0.0;
+            target: "base";
+            target: "elm.text";
+            target: "elm.icon";
+            target: "elm.icon.2";
+            target: "elm.rect.dialogue";
+            target: "elm.swallow.pad";
+            target: "bottom_line";
+         }
+      }
+   }
+
diff --git a/layout/mp-images.edc b/layout/mp-images.edc
new file mode 100644 (file)
index 0000000..d24f223
--- /dev/null
@@ -0,0 +1,50 @@
+#include "../include/mp-images.h"
+
+#define RESOURCE_IMAGE( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME COMP; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+#define RESOURCE_IMAGE_LOSSY( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME LOSSY 85; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+
+collections {
+RESOURCE_IMAGE_LOSSY(MP_ICON_COVERFLOW_BG);
+RESOURCE_IMAGE_LOSSY(MP_ICON_COVERFLOW_SHADOW_BG);
+RESOURCE_IMAGE(MP_ICON_STORAGE_PHONE);
+RESOURCE_IMAGE(MP_ICON_STORAGE_MEMORY);
+RESOURCE_IMAGE(MP_ICON_STORAGE_EXTERNAL);
+RESOURCE_IMAGE(MP_ICON_SQUARE_CELL_SELECTED);
+RESOURCE_IMAGE(MP_ICON_VOLUME_MIN);
+RESOURCE_IMAGE(MP_ICON_VOLUME_MAX);
+RESOURCE_IMAGE(MP_ICON_SOUND_PATH);
+RESOURCE_IMAGE(MP_ICON_NEARBY_DMR);
+RESOURCE_IMAGE(MP_ICON_MINI_PLAYER);
+RESOURCE_IMAGE(MP_ICON_VIDEO_PLAY);
+
+}
diff --git a/layout/mp-library.edc b/layout/mp-library.edc
new file mode 100755 (executable)
index 0000000..4e47b19
--- /dev/null
@@ -0,0 +1,416 @@
+
+/* main size */
+#define MAIN_W 480
+#define MAIN_H 800
+
+#define TITLEBAR_H_R (96/MAIN_H)
+#define SELALL_BG_H_R (188/MAIN_H)
+#define SELALL_TAB_H_R         (217/MAIN_H)
+#define SELALL_ALBUM_H_R       (231/MAIN_H)
+#define SELALL_TITLE_H_R       (188/MAIN_H)
+/* font name*/
+#define FONT_NAME "system_content"
+
+#define FONT_STYLE_ROMAN "SLP:style=Roman"
+#define FONT_STYLE_MEDIUM "SLP:style=Medium"
+#define FONT_STYLE_BOLD "SLP:style=Bold"
+
+/* 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)
+
+/* soft key*/
+#define SOFTKEY_SY (722/MAIN_H)
+
+#define HEAD_SY        (38/MAIN_H)
+#define HEAD_EY        (139/MAIN_H)
+
+#define ICON_X         (108/MAIN_W)
+#define ICON_Y         (108/MAIN_H)
+
+
+
+
+/* cover image in header */
+#define HEAD_COVER_SX (10/MAIN_W)
+#define HEAD_COVER_SY (48/MAIN_H)
+
+#define HEAD_COVER_EX (90/MAIN_W)
+#define HEAD_COVER_EY (128/MAIN_H)
+
+/* title in header */
+#define HEAD_TITLE_SX (100/MAIN_W)
+#define HEAD_TITLE_SY (73/MAIN_H)
+
+#define ALBUM_TITLE_EY (88/MAIN_H)
+
+#define ALBUM_SUB_TITLE_SY (98/MAIN_H)
+#define COLOR_CHK_TEXT         35 190 255
+#define ITEM_CHK_L (404/MAIN_W)
+#define ITEM_CHK_T (10/MAIN_H)
+#define ITEM_CHK_R (478/MAIN_W)
+#define SELALL_H        92
+#define NEW_INDICATOR  52/MAIN_H
+
+#define NOW_PLAYING_H  100
+#define BG_COLOR 248 246 239 255
+
+#define SEARCHBAR_H_INC 107
+
+#define SELECTIONINFO_PART(rel) \
+part {\
+       name: "elm.swallow.content.selectioninfo";\
+       type: SWALLOW; \
+       scale: 1; \
+       description { state: "default" 0.0; \
+               fixed: 0 1; \
+               align: 0.5 1.0; \
+               min: 0 0; \
+               visible: 0; \
+               rel1{relative: 0.0 1.0; } \
+               rel2{relative: 1.0 1.0; } \
+       } \
+       description { state: "show" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               min: 0 48; \
+       } \
+}
+
+#define SELECTIONINFO_PROG     \
+program {\
+       name: "show";\
+       signal: "show,selection,info";\
+       source: "elm";\
+       action: STATE_SET "show" 0.0;\
+       target: "elm.swallow.content.selectioninfo";\
+}\
+program {\
+       name: "hide";\
+       signal: "hide,selection,info";\
+       source: "elm";\
+       action: STATE_SET "default" 0.0;\
+       target: "elm.swallow.content.selectioninfo";\
+}
+
+images {
+       image:  "34_header_thumb_bg.png" COMP;
+       image:  "01_list_selectall_bg.png" COMP;
+}
+
+#define TEST_COLOR 255 0 0 255
+#define CONTROLBAR_LARGE_HEIGHT_INC 122;
+
+collections {
+       #include "mp-no-contents.edc"
+
+       group {
+               name: "main_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 : "now_playing";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0 0;
+                                       min: 0 0;
+                                       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;
+                                       min: 0 NOW_PLAYING_H;
+                               }
+                       }
+
+                       part {
+                               name : "list_content";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       rel1 { relative: 0.0 1.0; to_y: "now_playing"; }
+                                       rel2 { relative: 1.0 0.0; to_y: "elm.swallow.content.selectioninfo";}
+                               }
+                       }
+
+                       part {
+                               name: "elm.swallow.content.index";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 { to: "list_content"; }
+                                       rel2 { to: "list_content"; }
+                               }
+                       }
+                       SELECTIONINFO_PART("list_content")
+               }
+
+               programs {
+                       program {
+                               name : "show_now_playng";
+                               signal : "SHOW_NOW_PLAING";
+                               source : "music_app";
+                               action : STATE_SET "show" 0.0;
+                               target : "now_playing";
+                       }
+                       program {
+                               name : "hide_now_playng";
+                               signal : "HIDE_NOW_PLAING";
+                               source : "music_app";
+                               action : STATE_SET "default" 0.0;
+                               target : "now_playing";
+                       }
+                       SELECTIONINFO_PROG
+               }
+       }
+
+       group {
+               name: "main_layout_with_searchbar";
+
+               parts {
+
+                       part {
+                           name: "search_bar";
+                           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;
+                           }
+                           description {
+                              state: "hide" 0.0;
+                              align: 0.0 0.0;
+                              fixed: 0 0;
+                              rel1 { relative: 0.0 0.0;}
+                              rel2 { relative: 1.0 0.0;}
+                           }
+                        }
+
+                       part {
+                               name : "now_playing";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0 0;
+                                       min: 0 60;
+                                       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;
+                                       rel1 { relative: 0.0 1.0; to_y: "search_bar"; offset: 0 1;}
+                                       rel2 { relative: 1.0 0.0;}
+                               }
+                       }
+
+                       part {
+                               name : "list_content";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 1.0; to: "search_bar"; offset: 0 1;}
+                                       rel2 { relative: 1.0 0.0; to_y: "elm.swallow.content.selectioninfo";}
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       rel1 { relative: 0.0 1.0; to_y: "now_playing"; offset: 0 1;}
+                                       rel2 { relative: 1.0 0.0; to_y: "elm.swallow.content.selectioninfo";}
+                               }
+                       }
+
+                       part {
+                               name: "elm.swallow.content.index";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { to: "list_content"; }
+                                       rel2 { to: "list_content"; }
+                               }
+                       }
+
+                       SELECTIONINFO_PART("list_content")
+
+                       part {
+                               name: "elm.rect.screen";
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {relative: 0.0 0.0; to: "list_content"; }
+                                       rel2 {relative: 1.0 1.0; to: "list_content"; }
+                                       color: 0 0 0 128;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               name : "show_now_playng";
+                               signal : "SHOW_NOW_PLAING";
+                               source : "music_app";
+                               action : STATE_SET "show" 0.0;
+                               target : "now_playing";
+                               target : "list_content";
+                       }
+                       program {
+                               name : "hide_now_playng";
+                               signal : "HIDE_NOW_PLAING";
+                               source : "music_app";
+                               action : STATE_SET "default" 0.0;
+                               target : "now_playing";
+                               target : "list_content";
+                       }
+                       program {
+                               name : "hide_search";
+                               signal : "hide.search";
+                               source : "music_app";
+                               action : STATE_SET "hide" 0.0;
+                               target : "search_bar";
+                       }
+                       program {
+                               name : "show_search";
+                               signal : "show.search";
+                               source : "music_app";
+                               action : STATE_SET "default" 0.0;
+                               target : "search_bar";
+                       }
+                       program {
+                               name : "show_screen";
+                               signal : "show.screen";
+                               source : "music_app";
+                               action : STATE_SET "default" 0.0;
+                               target : "elm.rect.screen";
+                       }
+                       program {
+                               name : "hide_screen";
+                               signal : "hide.screen";
+                               source : "music_app";
+                               action : STATE_SET "hide" 0.0;
+                               target : "elm.rect.screen";
+                       }
+                       SELECTIONINFO_PROG
+               }
+       }
+
+group { name: "music/tabbar/default";
+      parts {
+         part { name: "elm.swallow.bg";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.tabbar";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 CONTROLBAR_LARGE_HEIGHT_INC;
+               fixed: 0 1;
+               rel1 { relative: 0.0 0.0; }
+               rel2 { relative: 1.0 0.0; }
+               align: 0.5 0.0;
+            }
+            description { state: "hidden" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.to: "elm.swallow.tabbar";
+                          rel2 { relative: 1.0 0.0; to_y: "elm.swallow.content.selectioninfo";}
+            }
+         }
+         SELECTIONINFO_PART("elm.swallow.content")
+      }
+      programs {
+         program { name: "show_tabbar";
+            signal: "elm,state,show,tabbar";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.tabbar";
+         }
+         program { name: "hide_tabbar";
+            signal: "elm,state,hide,tabbar";
+            source: "elm";
+            action: STATE_SET "hidden" 0.0;
+            target: "elm.swallow.tabbar";
+         }
+         SELECTIONINFO_PROG
+      }
+   }
+
+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 0.0; to_y: "elm.swallow.content.selectioninfo";}
+                       }
+               }
+               SELECTIONINFO_PART("elm.swallow.content")
+       }
+       programs {
+         SELECTIONINFO_PROG
+      }
+}
+
+}
diff --git a/layout/mp-lrc.edc b/layout/mp-lrc.edc
new file mode 100644 (file)
index 0000000..9318cb4
--- /dev/null
@@ -0,0 +1,179 @@
+
+#define MP_LRC_BG_W 720
+#define MP_LRC_BG_H 602
+#define MP_LRC_BOX_PAD_TOP 0/*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=SLP font_size=32 align=center color=#7e7d7d wrap=char";
+                       tag:  "br" "\n";
+                       tag:  "tab" "\t";
+                       tag:  "em" "+ font=SLP:style=Oblique";
+                       tag:  "b" "+ font=SLP:style=Bold";
+                       tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+                       tag:  "hilight" "+ font=SLP: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 100644 (file)
index 0000000..6d8d1e2
--- /dev/null
@@ -0,0 +1,510 @@
+
+#define MINI_W 692
+#define MINI_H 178
+#define TOP_PADDING 20
+#define LEFT_PADDING 14
+#define RIGHT_PADDING 4
+#define BOTTOM_PADDING 28
+#define ALBUM_ART_WIDTH 102
+#define ALBUM_ART_HEIGHT 102
+#define BUTTON_SIZE_MIN_MAX    70 70
+#define BUTTON_EXPAND_OFFSET 15
+
+#define MC_BG                                          30 28 28 255
+
+#define MC_IMG_REW_NORMAL                      "mini_controller/quick_btn_music_prev_nor.png"
+#define MC_IMG_REW_PRESSED                     "mini_controller/quick_btn_music_prev_press.png"
+#define MC_IMG_PLAY_NORMAL                     "mini_controller/quick_btn_music_play_nor.png"
+#define MC_IMG_PLAY_PRESSED                    "mini_controller/quick_btn_music_play_press.png"
+#define MC_IMG_PAUSE_NORMAL                    "mini_controller/quick_btn_music_pause_nor.png"
+#define MC_IMG_PAUSE_PRESSED           "mini_controller/quick_btn_music_pause_press.png"
+#define MC_IMG_FF_NORMAL                       "mini_controller/quick_btn_music_next_nor.png"
+#define MC_IMG_FF_PRESSED                      "mini_controller/quick_btn_music_next_press.png"
+#define MC_IMG_BTN_BG_NORMAL           "mini_controller/quick_btn_music_large_bg_normal.png"
+#define MC_IMG_BTN_BG_PRESSED          "mini_controller/quick_btn_music_large_bg_press.png"
+#define MC_IMG_ALBUMART_BG                     "mini_controller/quick_icon_bg.png"
+#define MC_IMG_ALBUMART_MASK           "mini_controller/quick_albumart_mask.png"
+
+#define MC_PART_AREA_FROM_LEFT(__name, __left_part, __width, __height) \
+part { name: __name; \
+       type: RECT; \
+       scale: 1; \
+       mouse_events: 0; \
+       description { state: "default" 0.0; \
+               rel1 { relative: 1.0 0.5; to: __left_part; } \
+               rel2 { relative: 1.0 0.5; to: __left_part; } \
+               min: __width __height; \
+               fixed: 1 1; \
+               align: 0.0 0.5; \
+               visible: 0; \
+       } \
+}
+
+#define MC_PART_ICON_BTN(__name, __to, __normal, __pressed) \
+part { name: __name"_clip"; \
+       type: RECT; \
+       scale: 1; \
+       mouse_events: 0; \
+       description { state: "default" 0.0; \
+               rel1.to: __name"_bg"; \
+               rel2.to: __name"_bg"; \
+               color: 255 255 255 255; \
+       } \
+       description { state: "hide" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+       } \
+} \
+part { name: __name"_bg"; \
+       type: IMAGE; \
+       scale: 1; \
+       mouse_events: 0; \
+       clip_to: __name"_clip"; \
+       description { state: "default" 0.0; \
+               rel1 { relative: 0.5 0.5; to: __to; } \
+               rel2 { relative: 0.5 0.5; to: __to; }\
+               min: BUTTON_SIZE_MIN_MAX; \
+               max: BUTTON_SIZE_MIN_MAX; \
+               image.normal: __normal; \
+               fixed: 1 1; \
+               align: 0.5 0.5; \
+       } \
+       description { state: "pressed" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: __pressed; \
+       } \
+} \
+part { name: __name; \
+       type: RECT; \
+       scale: 1; \
+       mouse_events: 1; \
+       clip_to: __name"_clip"; \
+       description { state: "default" 0.0; \
+               rel1.to: __name"_bg"; \
+               rel2.to: __name"_bg"; \
+               color: 0 0 0 0; \
+       } \
+}
+
+#define MC_PART_TEXT_BTN(__name, __to, __text_part_name) \
+part { name: __name"_clip"; \
+       type: RECT; \
+       scale: 1; \
+       mouse_events: 0; \
+       description { state: "default" 0.0; \
+               rel1.to: __to; \
+               rel2.to: __to; \
+               color: 255 255 255 255; \
+       } \
+       description { state: "hide" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+       } \
+} \
+part { name: __name"_bg"; \
+       type: IMAGE; \
+       scale: 1; \
+       mouse_events: 0; \
+       clip_to: __name"_clip"; \
+       description { state: "default" 0.0; \
+               rel1.to: __to; \
+               rel2.to: __to; \
+               image.normal: MC_IMG_BTN_BG_NORMAL; \
+       } \
+       description { state: "pressed" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: MC_IMG_BTN_BG_PRESSED; \
+       } \
+} \
+part { name: __text_part_name; \
+       type: TEXT; \
+       scale: 1; \
+       mouse_events: 0; \
+       clip_to: __name"_clip"; \
+       description { state: "default" 0.0; \
+               rel1.to: __name"_bg"; \
+               rel2.to: __name"_bg"; \
+               text { \
+                       font: "SLP:style=Medium"; \
+                       text_class: "slp_medium"; \
+                       size: 28; \
+                       align: 0.5 0.5; \
+               } \
+               color: 149 149 149 255; \
+       } \
+} \
+part { name: __name; \
+       type: RECT; \
+       scale: 1; \
+       mouse_events: 1; \
+       clip_to: __name"_clip"; \
+       description { state: "default" 0.0; \
+               rel1.to: __to; \
+               rel2.to: __to; \
+               color: 0 0 0 0; \
+       } \
+}
+
+
+#define MC_PROGRAM_BTN_ACTION(__btn, __down_emission, __down_src, __up_emission, __up_src, __clicked_emission, __clicked_src) \
+program { \
+       signal: "mouse,down,1"; \
+       source: __btn; \
+       script { \
+               set_state(PART:__btn"_bg", "pressed", 0.0); \
+               emit(__down_emission, __down_src); \
+       } \
+} \
+program { \
+       signal: "mouse,up,1"; \
+       source: __btn; \
+       script { \
+               set_state(PART:__btn"_bg", "default", 0.0); \
+               emit(__up_emission, __up_src); \
+       } \
+} \
+program { \
+       signal: "mouse,clicked,1"; \
+       source: __btn; \
+       action: SIGNAL_EMIT __clicked_emission __clicked_src; \
+}
+
+#define MC_PROGRAM_BTN_VISIBLE(__btn, __show_signal, __hide_signal) \
+program { \
+       signal: __show_signal; \
+       source: "*"; \
+       action: STATE_SET "default" 0.0; \
+       target: __btn"_clip"; \
+} \
+program { \
+       signal: __hide_signal; \
+       source: "*"; \
+       action: STATE_SET "hide" 0.0; \
+       target: __btn"_clip"; \
+}
+
+collections {
+group {
+       name: music-minicontroller;
+       images {
+               image: MC_IMG_REW_NORMAL COMP;
+               image: MC_IMG_REW_PRESSED COMP;
+               image: MC_IMG_PLAY_NORMAL COMP;
+               image: MC_IMG_PLAY_PRESSED COMP;
+               image: MC_IMG_PAUSE_NORMAL COMP;
+               image: MC_IMG_PAUSE_PRESSED COMP;
+               image: MC_IMG_FF_NORMAL COMP;
+               image: MC_IMG_FF_PRESSED COMP;
+               image: MC_IMG_BTN_BG_NORMAL COMP;
+               image: MC_IMG_BTN_BG_PRESSED COMP;
+               image: MC_IMG_ALBUMART_BG COMP;
+               image: MC_IMG_ALBUMART_MASK COMP;
+       }
+       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 : MC_BG;
+                       }
+               }
+
+               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 TOP_PADDING;
+                               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;
+                       }
+               }
+
+               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;
+                       }
+               }
+
+               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;
+                       }
+               }
+
+               part { name: "albumarmt_bg";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 0.5; to: "padding.right"; }
+                               rel2 { relative: 0.0 0.5; to: "padding.right"; }
+                               min: 128 128;
+                               max: 128 128;
+                               fixed: 1 1;
+                               align: 1.0 0.5;
+                               image.normal: MC_IMG_ALBUMART_BG;
+                       }
+               }
+
+               part { name: "albumart_image";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.5 0.5; to: "albumarmt_bg"; }
+                               rel2 { relative: 0.5 0.5; to: "albumarmt_bg"; }
+                               min: ALBUM_ART_WIDTH ALBUM_ART_HEIGHT;
+                               max: ALBUM_ART_WIDTH ALBUM_ART_HEIGHT;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                       }
+               }
+
+               part { name: "albumart_mask";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1.to: "albumart_image";
+                               rel2.to: "albumart_image";
+                               image.normal: MC_IMG_ALBUMART_MASK;
+                       }
+               }
+
+               part { name: "albumart_area_left_padding";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; to_x: "albumarmt_bg"; }
+                               rel2 { relative: 0.0 1.0; to_x: "albumarmt_bg"; }
+                               min: 10 0;
+                               fixed: 1 0;
+                               align: 1.0 0.5;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "elm.text.app_name";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1.0 1.0; to_x: "padding.left"; to_y: "padding.top"; }
+                               rel2 { relative: 1.0 1.0; to_x: "padding.left"; to_y: "padding.top"; }
+                               min: 0 50;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               text {
+                                       font: "font=SLP:style=Regular";
+                                       text_class: "slp_regular";
+                                       size: 44;
+                                       align: 0.0 0.5;
+                                       min: 1 1;
+                               }
+                               color: 248 246 239 255;
+                       }
+               }
+
+               part { name: "title_right_padding";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1.0 0.0; to: "elm.text.app_name"; }
+                               rel2 { relative: 1.0 1.0; to: "elm.text.app_name"; }
+                               min: 14 0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "elm.text";                // title
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                          rel1 { relative: 1.0 0.5; to: "title_right_padding"; }
+                          rel2 { relative: 0.0 0.5; to_x: "albumart_area_left_padding"; to_y: "title_right_padding"; }
+                          min: 0 38;
+                          fixed: 0 1;
+                          align: 0.0 0.5;
+                          text {
+                                       font: "font=SLP:style=Medium";
+                                       text_class: "slp_medium";
+                                       size: 28;
+                                       align: 0.0 0.5;
+                                       min: 0 1;
+                               }
+                               color: 255 255 255 128;
+                       }
+               }
+
+               part { name: "padding.center";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 1.0; to_y: "elm.text.app_name"; }
+                               rel2 { relative: 1.0 1.0; to_y: "elm.text.app_name"; }
+                               min: 0 10;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "button_area";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 1; to_x: "padding.left"; to_y: "padding.center"; }
+                               rel2 { relative: 0 0; to_x: "albumart_area_left_padding"; to_y: "padding.bottom"; }
+                               visible: 0;
+                       }
+               }
+
+               part { name: "rew_btn_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 0.5; to: "button_area"; }
+                               rel2 { relative: 0.0 0.5; to: "button_area"; }
+                               min: BUTTON_SIZE_MIN_MAX;
+                               fixed: 1 1;
+                               align: 0.0 0.5;
+                               visible: 0;
+                       }
+               }
+               MC_PART_ICON_BTN("rew_btn", "rew_btn_area", MC_IMG_REW_NORMAL, MC_IMG_REW_PRESSED)
+
+               MC_PART_AREA_FROM_LEFT("rew_right_padding", "rew_btn_area", 36, 70)
+
+               MC_PART_AREA_FROM_LEFT("play_pause_btn_area", "rew_right_padding", 70, 70)
+               MC_PART_ICON_BTN("play_btn", "play_pause_btn_area", MC_IMG_PLAY_NORMAL, MC_IMG_PLAY_PRESSED)
+               MC_PART_ICON_BTN("pause_btn", "play_pause_btn_area", MC_IMG_PAUSE_NORMAL, MC_IMG_PAUSE_PRESSED)
+
+               MC_PART_AREA_FROM_LEFT("play_pause_right_padding", "play_pause_btn_area", 36, 70)
+
+               MC_PART_AREA_FROM_LEFT("ff_btn_area", "play_pause_right_padding", 70, 70)
+               MC_PART_ICON_BTN("ff_btn", "ff_btn_area", MC_IMG_FF_NORMAL, MC_IMG_FF_PRESSED)
+#if 0
+               MC_PART_AREA_FROM_LEFT("ff_right_padding", "ff_btn_area", 92, 70)
+
+               MC_PART_AREA_FROM_LEFT("shuffle_btn_area", "ff_right_padding", 196, 70)
+               MC_PART_TEXT_BTN("shuffle_btn", "shuffle_btn_area", "shuffle_btn_text")
+
+               MC_PART_AREA_FROM_LEFT("shuffle_right_padding", "shuffle_btn_area", 14, 70)
+
+               MC_PART_AREA_FROM_LEFT("repeat_btn_area", "shuffle_right_padding", 196, 70)
+               MC_PART_TEXT_BTN("repeat_btn", "repeat_btn_area", "repeat_btn_text")
+#endif
+       }
+
+       programs {
+               MC_PROGRAM_BTN_ACTION("rew_btn", "rew_btn_down", "edje", "rew_btn_up", "edje", "rew_btn_clicked", "edje")
+
+               MC_PROGRAM_BTN_ACTION("play_btn", "play_btn_down", "edje", "play_btn_up", "edje", "play_btn_clicked", "edje")
+               MC_PROGRAM_BTN_VISIBLE("play_btn", "show_play_btn", "hide_play_btn")
+
+               MC_PROGRAM_BTN_ACTION("pause_btn", "pause_btn_down", "edje", "pause_btn_up", "edje", "pause_btn_clicked", "edje")
+               MC_PROGRAM_BTN_VISIBLE("pause_btn", "show_pause_btn", "hide_pause_btn")
+
+               MC_PROGRAM_BTN_ACTION("ff_btn", "ff_btn_down", "edje", "ff_btn_up", "edje", "rew_btn_clicked", "edje")
+
+#if 0
+               MC_PROGRAM_BTN_ACTION("shuffle_btn", "shuffle_btn_down", "edje", "shuffle_btn_up", "edje", "shuffle_btn_clicked", "edje")
+               MC_PROGRAM_BTN_VISIBLE("shuffle_btn", "show_shuffle_btn", "hide_shuffle_btn")
+
+               MC_PROGRAM_BTN_ACTION("repeat_btn", "repeat_btn_down", "edje", "repeat_btn_up", "edje", "repeat_btn_clicked", "edje")
+               MC_PROGRAM_BTN_VISIBLE("repeat_btn", "show_repeat_btn", "hide_repeat_btn")
+#endif
+
+               program { name: "albumart_cb";
+                  signal: "mouse,clicked,1";
+                  source: "albumart_image";
+                       script{
+                          emit("albumart_clicked", "edje");
+                  }
+               }
+
+               program { name: "set_pause_icon";
+                  signal: "set_pause";
+                  source: "*";
+                  script{
+                               emit("hide_play_btn", "edje");
+                               emit("show_pause_btn", "edje");
+                  }
+               }
+               program { name: "set_play_icon";
+                  signal: "set_play";
+                  source: "*";
+                  script{
+                               emit("show_play_btn", "edje");
+                               emit("hide_pause_btn", "edje");
+                  }
+               }
+#if 0
+               program { name: "pgm_set_landscape_mode";
+                       signal: "sig_set_landscape_mode";
+                       source: "*";
+                       script {
+                               emit("show_shuffle_btn", "edje")
+                               emit("show_repeat_btn", "edje")
+                       }
+               }
+               program { name: "pgm_set_portrait_mode";
+                       signal: "sig_set_portrait_mode";
+                       source: "*";
+                       script {
+                               emit("hide_shuffle_btn", "edje")
+                               emit("hide_repeat_btn", "edje")
+                       }
+               }
+#endif
+       }
+
+} // group
+} // collection
\ No newline at end of file
diff --git a/layout/mp-naviframe.edc b/layout/mp-naviframe.edc
new file mode 100644 (file)
index 0000000..096379c
--- /dev/null
@@ -0,0 +1,1375 @@
+
+#define NAVIFRAME_VIEW_TRANS_TIME 0.3
+
+//2 define custom style here..
+#define NAVIFRAME_TITLE_TEXT_COLOR_INC 255 255 255 255
+#define NAVIFRAME_TITLE_BG_COLOR_INC 0 0 0 255
+#define NAVIFRAME_TITLE_LEFT_SEPARATOR_COLOR_INC 3 3 3 255
+#define NAVIFRAME_TITLE_RIGHT_SEPARATOR_COLOR_INC 52 52 52 255
+#define NAVIFRAME_CONTROLBAR_BG_COLOR_INC 31 31 31 255
+#define NAVIFRAME_OH_BORDER_INC 0 0 4 0
+#define NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 52
+#define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144
+
+////////////////////////////////////////////////////////////////////////////////////////
+// NavigationBar_ex
+////////////////////////////////////////////////////////////////////////////////////////
+
+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: "T02_title_bg.png" COMP;
+      }
+      script {
+         public oh_show = 0;     //optionheader show/hide
+         public oh_close = 0;    //optionheader close/open
+         public cbar_bg = 0;     //Controlbar BG Show call count
+         public left_btn_visible = 0; //whether left btn is shown
+         public icon_visible = 0; //whether icon is shown
+         public right_btn_visible = 0; //whether right btn is shown
+         public more_btn_visible = 0; //whether more btn is shown
+         public large_padded_center_align = 0; //large padding based on button size for center align for 1/2 buttons.
+      }
+      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: "title_bg";
+            //type: RECT;
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 NAVIFRAME_TITLE_H_INC;
+               align: 0.0 0.0;
+               fixed: 0 1;
+               rel1 { relative: 0.0 0.0; to: "base"; }
+               rel2 { relative: 1.0 0.0; to: "base"; }
+               //color: NAVIFRAME_TITLE_BG_COLOR_INC;
+               image.normal: "T02_title_bg.png";
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "title_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "title_bg"; }
+               rel2 { to: "title_bg"; }
+            }
+         }
+         part { name: "optionheader_bg";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 1 0;
+               align: 0.5 0;
+               fixed: 1 1;
+               rel1.to: "title_bg";
+               rel1.relative: 0 1;
+               rel2.to: "title_bg";
+               visible: 0;
+               image { normal: "00_winset_control_top_bg.png";
+                  border: NAVIFRAME_OH_BORDER_INC;
+               }
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 1 NAVIFRAME_OH_OPENED_H_INC;
+               visible: 1;
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               min: 0 0;
+               max: 0 0;
+               fixed: 1 1;
+            }
+         }
+         part { name: "optionheader_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "optionheader_bg"; }
+               rel2 { to: "optionheader_bg"; }
+            }
+         }
+         part { name: "optionheader_top_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 0.0; to: "optionheader_bg"; }
+               rel2 { relative: 1.0 0.0; to: "optionheader_bg"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "optionheader";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_CONTENT_H_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader_top_padding"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader_top_padding"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "optionheader_bottom_padding";
+            type: RECT;
+            scale: 1;
+            clip_to: "optionheader_clip";
+            description { state: "default" 0.0;
+               min: 0 NAVIFRAME_OH_PADDING_INC;
+               rel1 { relative: 0.0 1.0; to: "optionheader"; }
+               rel2 { relative: 1.0 1.0; to: "optionheader"; }
+               fixed: 0 1;
+               align: 0.0 0.0;
+               visible: 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 1.0;
+               rel1.to_x: "base";
+               rel1.to_y: "optionheader_bg";
+               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: "padding_before_left_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_left_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "title_left_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_more_btn";
+            type: RECT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_more_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_more_btn"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_after_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+         }
+         part { name: "padding_before_right_btn";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to: "title_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "title_right_btn"; }
+               visible: 0;
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               align: 1.0 0.5;
+               rel1 { relative: 0.0 0.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.text.title"; to_y: "title_bg"; }
+               fixed: 1 0;
+               min: NAVIFRAME_ICON_PADDING_INC;
+               visible: 0;
+            }
+         }
+         part { name: "padding_center_text1";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 0.0 0.0;
+               rel1 { relative: 0.0 0.0; to: "title_bg"; }
+               rel2 { relative: 0.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+            description { state: "icon" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 0;
+            }
+            description { state: "icon_left_button" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_ICON_VISIBLE_INC 0;
+            }
+         }
+         part { name: "padding_center_text2";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               min: NAVIFRAME_TITLE_FUNC_BTN_PADDING_W_INC 0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1 { relative: 1.0 0.0; to: "title_bg"; }
+               rel2 { relative: 1.0 1.0; to: "title_bg"; }
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TEXT_PADDING_INC 0;
+            }
+         }
+         part { name: "elm.text.title";
+            type: TEXT;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               text { font: "SLP:style=Medium";
+                 text_class: "slp_medium";
+                  size: NAVIFRAME_TITLE_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  align: 0.5 0.5;
+               }
+               color: NAVIFRAME_TITLE_TEXT_COLOR_INC;
+               align: 0.5 0.5;
+               fixed: 1 0;
+               rel1 { relative: 1.0 0.0; to: "padding_center_text1"; }
+               rel2 { relative: 0.0 1.0; to: "padding_center_text2"; }
+            }
+            description { state: "right_and_more_button" 0.0;
+               inherit: "default" 0.0;
+               rel1 { relative: 1.0 0.0; to: "padding_after_left_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_more_btn"; }
+            }
+         }
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_ICON_SIZE_INC;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_before_text"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_text"; }
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               align: 1.0 0.5;
+            }
+         }
+         part { name: "click_event_area";
+             ignore_flags: ON_HOLD;
+             repeat_events: 1;
+             description { state: "default" 0.0;
+                rel1 { to: "title_bg"; }
+                rel2 { to: "title_bg"; }
+             }
+         }
+         part { name: "title_left_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 { relative: 1.0 0.0; to: "padding_before_left_btn"; }
+               rel2 { relative: 1.0 1.0; to: "padding_before_left_btn"; }
+            }
+         }
+         part { name: "title_right_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               align: 1 0.5;
+               fixed: 1 1;
+               rel1 { relative: 0.0 0.0; to: "padding_after_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_after_right_btn"; }
+            }
+         }
+         part { name: "title_more_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "title_clip";
+            description { state: "default" 0.0;
+               max: NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC;
+               fixed: 1 1;
+               align: 1 0.5;
+               rel1 { relative: 0.0 0.0; to: "padding_before_right_btn"; }
+               rel2 { relative: 0.0 1.0; to: "padding_before_right_btn"; }
+            }
+         }
+         part { name: "optionheader_arrow";
+            type: IMAGE;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: NAVIFRAME_OH_ARROW_SIZE_INC;
+               max: NAVIFRAME_OH_ARROW_SIZE_INC;
+               fixed: 1 1;
+               align: 0.5 0.0;
+               rel1 { relative: 0.0 1.025; to: "title_more_btn"; }
+               rel2 { relative: 1.0 1.025; to: "title_more_btn"; }
+               image.normal: "00_winset_control_top_arrow.png";
+               color: 255 255 255 0;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         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: "title_show";
+            signal: "elm,state,title,show";
+            source: "elm";
+            script {
+               set_state(PART:"title_bg", "default", 0.0);
+               if (get_int(oh_show) == 1) {
+                  if (get_int(oh_close) == 1) {
+                     emit("elm,state,optionheader,instant_close", "");
+                  }else {
+                     emit("elm,state,optionheader,instant_open", "");
+                  }
+               }
+               else
+                 set_state(PART:"optionheader_bg", "default", 0.0);
+            }
+         }
+         program { name: "title_hide";
+            signal: "elm,state,title,hide";
+            source: "elm";
+            action: STATE_SET "hide" 0.0;
+            target: "title_bg";
+            target: "optionheader_bg";
+         }
+         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: "left_btn_show";
+            signal: "elm,state,title_left_btn,show";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 1);
+               if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               if ((get_int(more_btn_visible) == 1) && (get_int(right_btn_visible) == 1)) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+            }
+         }
+         program { name: "left_btn_hide";
+            signal: "elm,state,title_left_btn,hide";
+            source: "elm";
+            script {
+               set_int(left_btn_visible, 0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(right_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_show";
+            signal: "elm,state,title_right_btn,show";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 1);
+               if (get_int(more_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "right_btn_hide";
+            signal: "elm,state,title_right_btn,hide";
+            source: "elm";
+            script {
+               set_int(right_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(more_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_show";
+            signal: "elm,state,title_more_btn,show";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 1);
+               if (get_int(right_btn_visible) == 1) {
+                  set_state(PART:"elm.text.title", "right_and_more_button", 0.0);
+                  set_state(PART:"padding_before_right_btn", "right_and_more_button", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(icon_visible) == 1) && ((get_int(left_btn_visible) == 1) ||
+                                                    (get_int(large_padded_center_align) == 1)))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if ((get_int(left_btn_visible) == 1) || (get_int(large_padded_center_align) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "more_btn_hide";
+            signal: "elm,state,title_more_btn,hide";
+            source: "elm";
+            script {
+               set_int(more_btn_visible, 0);
+               set_state(PART:"padding_before_right_btn", "default", 0.0);
+               if ((get_int(right_btn_visible) == 0) && (get_int(left_btn_visible) == 0)) {
+                  set_state(PART:"padding_center_text2", "default", 0.0);
+                  set_int(large_padded_center_align, 0);
+               }
+               else {
+                  set_state(PART:"padding_center_text2", "visible", 0.0);
+                  set_int(large_padded_center_align, 1);
+               }
+               if ((get_int(large_padded_center_align) == 1) && (get_int(icon_visible) == 1))
+                  set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else if (get_int(large_padded_center_align) == 1)
+                  set_state(PART:"padding_center_text1", "visible", 0.0);
+               else if (get_int(icon_visible) == 1)
+                  set_state(PART:"padding_center_text1", "icon", 0.0);
+               else
+                  set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,elm.swallow.icon,show";
+            source: "elm";
+            script {
+               set_int(icon_visible, 1);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "icon_left_button", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "icon", 0.0);
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,elm.swallow.icon,hide";
+            source: "elm";
+            script {
+               set_int(icon_visible, 0);
+               if ((get_int(large_padded_center_align) == 1) || (get_int(left_btn_visible) == 1))
+                 set_state(PART:"padding_center_text1", "visible", 0.0);
+               else
+                 set_state(PART:"padding_center_text1", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            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: "optionheader_show";
+            signal: "elm,state,optionheader,show";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "show", 0.0);
+               set_state(PART:"optionheader_arrow", "show", 0.0);
+               set_int(oh_show, 1);
+            }
+         }
+         program { name: "optionheader_hide";
+            signal: "elm,state,optionheader,hide";
+            source: "elm";
+            script {
+               set_state(PART:"optionheader_bg", "default", 0.0);
+               set_state(PART:"optionheader_arrow", "default", 0.0);
+               set_int(oh_show, 0);
+            }
+         }
+         program { name: "optionheader_open";
+            signal: "elm,state,optionheader,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_close";
+            signal: "elm,state,optionheader,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            transition: LINEAR 0.2;
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_instant_open";
+            signal: "elm,state,optionheader,instant_open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_open_set";
+         }
+         program { name: "optionheader_instant_close";
+            signal: "elm,state,optionheader,instant_close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "optionheader_bg";
+            target: "optionheader_arrow";
+            after: "optionheader_close_set";
+         }
+         program { name: "optionheader_close_set";
+            signal: "elm,state,optionheader,close_set";
+            source: "";
+            script {
+               set_int(oh_close, 1);
+            }
+         }
+         program { name: "optionheader_open_set";
+            signal: "elm,state,optionheader,open_set";
+            source: "";
+            script {
+               set_int(oh_close, 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/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
new file mode 100644 (file)
index 0000000..1c55f02
--- /dev/null
@@ -0,0 +1,252 @@
+
+/*********** no_content ***********************/
+#define IMAGE_NO_CONTENT               "T02_nocomposers.png"
+
+#define IMAGE_NO_CONTENT_W 314
+#define IMAGE_NO_CONTENT_H 310
+
+#define FONT_NO_CONTENT                "SLP:style=Roman"
+#define FONT_NO_CONTENT_SIZE   42
+#define FONT_NO_CONTENT_COLOR  121 121 121 255
+#define TEXT_NO_CONTENT_H 54
+
+#define NO_CONTENT_H (IMAGE_NO_CONTENT_H+TEXT_NO_CONTENT_H)
+
+   group {
+               images {
+                       image: IMAGE_NO_CONTENT COMP;
+               }
+
+               name: "no_content";
+               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: "no_content";
+                               mouse_events: 0;
+                               type: RECT;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.5 0.5;
+                                       min: IMAGE_NO_CONTENT_W NO_CONTENT_H;
+                                       max: IMAGE_NO_CONTENT_W NO_CONTENT_H;
+                                       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: 0.0 0.0; to:no_content;}
+                                       rel2 { relative: 1.0 (IMAGE_NO_CONTENT_H/NO_CONTENT_H); to:no_content;}
+                                       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: "image"; offset: 0 0;}
+                                       rel2 { relative: 1.0 1.0; to: "no_content"; offset: 0 0;}
+                                       color: FONT_NO_CONTENT_COLOR;
+                                       min: 0 46;
+                                       text {
+                                               font: FONT_NO_CONTENT;
+                                               text_class: "slp_roman";
+                                               size: FONT_NO_CONTENT_SIZE;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+
+                       }
+               }
+       }
+
+       group {
+               name: "no_result";
+               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.text";
+                               type: TEXT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 (290/1034); to:bg;}
+                                       rel2 { relative: 1.0 (290/1034); to:bg;}
+                                       color: FONT_NO_CONTENT_COLOR;
+                                       min: 0 46;
+                                       text {
+                                               font: FONT_NO_CONTENT;
+                                               text_class: "slp_roman";
+                                               size: FONT_NO_CONTENT_SIZE;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+
+                       }
+               }
+       }
+
+
+       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: "no_content";
+                               mouse_events: 0;
+                               type: RECT;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.5 0.5;
+                                       min: IMAGE_NO_CONTENT_W NO_CONTENT_H;
+                                       max: IMAGE_NO_CONTENT_W NO_CONTENT_H;
+                                       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: 0.0 0.0; to:no_content;}
+                                       rel2 { relative: 1.0 (IMAGE_NO_CONTENT_H/NO_CONTENT_H); to:no_content;}
+                                       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: "image"; offset: 0 0;}
+                                       rel2 { relative: 1.0 1.0; to: "no_content"; offset: 0 0;}
+                                       color: FONT_NO_CONTENT_COLOR;
+                                       min: 0 46;
+                                       text {
+                                               font: FONT_NO_CONTENT;
+                                               text_class: "slp_roman";
+                                               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: "no_content";
+                               mouse_events: 0;
+                               type: RECT;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       align: 0.5 0.5;
+                                       min: IMAGE_NO_CONTENT_W NO_CONTENT_H;
+                                       max: IMAGE_NO_CONTENT_W NO_CONTENT_H;
+                                       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: 0.0 0.0; to:no_content;}
+                                       rel2 { relative: 1.0 (IMAGE_NO_CONTENT_H/NO_CONTENT_H); to:no_content;}
+                                       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: "image"; offset: 0 0;}
+                                       rel2 { relative: 1.0 1.0; to: "no_content"; offset: 0 0;}
+                                       color: FONT_NO_CONTENT_COLOR;
+                                       min: 0 46;
+                                       text {
+                                               font: FONT_NO_CONTENT;
+                                               text_class: "slp_roman";
+                                               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
new file mode 100644 (file)
index 0000000..e3bd156
--- /dev/null
@@ -0,0 +1,641 @@
+
+#define CONTROL_PAD_T 17
+#define CONTROL_PAD_D 18
+#define CONTROL_BUTTON 80
+#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;
+                       scale: 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 128;
+                       }
+               }
+
+               part { name: "pad.top";
+                       type : RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; to, "bg";}
+                               rel2 { relative: 1.0 CONTROL_PAD_T/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 CONTROL_PAD_T/CONTROL_H; to, "bg"; }
+                               rel2 { relative: 1.0 (CONTROL_PAD_T+CONTROL_BUTTON)/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 (CONTROL_PAD_T+CONTROL_BUTTON)/CONTROL_H; to, "bg";}
+                               rel2 { relative: 1.0 1.0; to, "bg";}
+                               color: 0 0 0 0;
+                       }
+               }
+       }
+}
+
+#define PLAYER_CONTROL_MAIN_W 720
+
+#define CONTROL_BUTTON_VOLUME_BG_W 104
+#define CONTROL_BUTTON_VOLUME_BG_H 74
+#define CONTROL_BUTTON_VOLUME_W 80
+#define CONTROL_BUTTON_REWIND_W 80
+#define CONTROL_BUTTON_FOWARD_W 80
+#define CONTROL_BUTTON_PLAY_W 80
+#define CONTROL_BUTTON_BACK_BG_W 104
+#define CONTROL_BUTTON_BACK_BG_H 74
+#define CONTROL_BUTTON_BACK_W 80
+
+#define CONTROL_BUTTON_PAD_1 52
+#define CONTROL_BUTTON_PAD_2 64
+#define CONTROL_BUTTON_PAD_BG 12
+
+#define CONTROL_BUTTON_VOLUME_BG_X 20
+#define CONTROL_BUTTON_VOLUME_X (CONTROL_BUTTON_VOLUME_BG_X+CONTROL_BUTTON_PAD_BG)
+#define CONTROL_BUTTON_REWIND_X (CONTROL_BUTTON_VOLUME_BG_X+CONTROL_BUTTON_VOLUME_BG_W+CONTROL_BUTTON_PAD_1)
+#define CONTROL_BUTTON_PLAY_X (CONTROL_BUTTON_REWIND_X+CONTROL_BUTTON_REWIND_W+CONTROL_BUTTON_PAD_2)
+#define CONTROL_BUTTON_FOWARD_X (CONTROL_BUTTON_PLAY_X+CONTROL_BUTTON_PLAY_W+CONTROL_BUTTON_PAD_2)
+#define CONTROL_BUTTON_BACK_BG_X (PLAYER_CONTROL_MAIN_W-CONTROL_BUTTON_VOLUME_BG_X-CONTROL_BUTTON_BACK_BG_W)
+#define CONTROL_BUTTON_BACK_X (CONTROL_BUTTON_BACK_BG_X+CONTROL_BUTTON_PAD_BG)
+
+#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     "player/T02_controller_icon_volume.png"
+#define BACK_BTN               "player/T02_controller_icon_back.png"
+#define MUTE_BTN               "player/T02_volume_icon_Mute.png"
+#define BTN_BG         "T02_controller_btn.png"
+#define BTN_PRESS      "T02_controller_btn_press.png"
+
+#define TOUCH_EXPAND_SIZE      15
+
+group { name : "music/playing/main/control/buttons";
+
+       images {
+               image: REW_BTN COMP;
+               image: PLAY_BTN COMP;
+               image: PAUSE_BTN COMP;
+               image: FF_BTN COMP;
+               image: REW_BTN_PRESS COMP;
+               image: PLAY_BTN_PRESS COMP;
+               image: PAUSE_BTN_PRESS COMP;
+               image: FF_BTN_PRESS COMP;
+               image: VOLUME_BTN COMP;
+               image: BACK_BTN COMP;
+               image: BTN_BG COMP;
+               image: BTN_PRESS COMP;
+               image:  MUTE_BTN COMP;
+       }
+
+       parts {
+               part { name: "bg";
+                       type : RECT;
+                       scale: 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: "pad.top";
+                       type : RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 1;
+                               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.center";
+                       type : RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 50;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; to_y, "pad.top";}
+                               rel2 { relative: 1.0 1.0; to_y, "pad.top";}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "pad.down";
+                       type : RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 1;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; to_y, "pad.center";}
+                               rel2 { relative: 1.0 1.0; to_y, "pad.center";}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part{ name: "volume_touch_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description{ state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: -TOUCH_EXPAND_SIZE -TOUCH_EXPAND_SIZE; to: "volume_bg";}
+                               rel2 { relative: 1.0 1.0; offset: TOUCH_EXPAND_SIZE TOUCH_EXPAND_SIZE;to: "volume_bg";}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "volume_bg";
+                       type : IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 52 0;
+                               align: 0.5 0.5;
+                               rel1 { relative: CONTROL_BUTTON_VOLUME_BG_X/PLAYER_CONTROL_MAIN_W 0.0; offset: 3 0; to_x, "bg";}
+                               rel2 { relative: (CONTROL_BUTTON_VOLUME_BG_X+CONTROL_BUTTON_VOLUME_BG_W)/PLAYER_CONTROL_MAIN_W 1.0; offset: -3 0; to_x, "bg";}
+                               image {
+                                       normal: BTN_BG;
+                                       border : 4 4 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description { state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               image {
+                                       normal: BTN_PRESS;
+                               }
+                       }
+               }
+
+               part { name: "volume";
+                   type : IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                   description { state: "default" 0.0;
+                                       visible: 1;
+                                       min: 52 0;
+                                       fixed: 1 0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: CONTROL_BUTTON_VOLUME_X/PLAYER_CONTROL_MAIN_W 0.0; to, "bg";}
+                                       rel2 { relative: (CONTROL_BUTTON_VOLUME_X+CONTROL_BUTTON_VOLUME_W)/PLAYER_CONTROL_MAIN_W 1.0; to, "bg";}
+                                       image { normal: VOLUME_BTN; }
+                               }
+                   description { state: "mute" 0.0;
+                       inherit: "default" 0.0;
+                       visible: 1;
+                                       min: 52 0;
+                                       fixed: 1 0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: CONTROL_BUTTON_VOLUME_X/PLAYER_CONTROL_MAIN_W 0.0; to, "bg";}
+                                       rel2 { relative: (CONTROL_BUTTON_VOLUME_X+CONTROL_BUTTON_VOLUME_W)/PLAYER_CONTROL_MAIN_W 1.0; to, "bg";}
+                                       image { normal: MUTE_BTN; }
+                   }
+                }
+               part{ name: "info_touch_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description{ state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: -TOUCH_EXPAND_SIZE -TOUCH_EXPAND_SIZE; to: "info_bg";}
+                               rel2 { relative: 1.0 1.0; offset: TOUCH_EXPAND_SIZE TOUCH_EXPAND_SIZE;to: "info_bg";}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "info_bg";
+                       type : IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 52 0;
+                               fixed: 1 0;
+                               align: 0.5 0.5;
+                               rel1 { relative: CONTROL_BUTTON_BACK_BG_X/PLAYER_CONTROL_MAIN_W 0.0; to_x, "bg";}
+                               rel2 { relative: (CONTROL_BUTTON_BACK_BG_X+CONTROL_BUTTON_BACK_BG_W)/PLAYER_CONTROL_MAIN_W 1.0; to_x, "bg";}
+                               image {
+                                       normal: BTN_BG;
+                                       border : 4 4 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description { state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               image {
+                                       normal: BTN_PRESS;
+                               }
+                       }
+               }
+
+               part { name: "info";
+                       type : IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 52 0;
+                               fixed: 1 0;
+                               align: 0.5 0.5;
+                               rel1 { relative: CONTROL_BUTTON_BACK_X/PLAYER_CONTROL_MAIN_W 0.0; to, "bg";}
+                               rel2 { relative: (CONTROL_BUTTON_BACK_X+CONTROL_BUTTON_BACK_W)/PLAYER_CONTROL_MAIN_W 1.0; to, "bg";}
+                               image { normal: BACK_BTN; }
+                       }
+                       description { state: "dim" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               image { normal: BACK_BTN; }
+                       }
+               }
+
+               part { name: "info_screen";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               min: 52 0;
+                               fixed: 1 0;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; to, "info_bg";}
+                               rel2 { relative: 1.0 1.0; to, "info_bg";}
+                               color: 0 0 0 0;
+                       }
+                       description { state: "dim" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part { name: "control_area";
+                       type : RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 250 0;
+                               fixed: 1 0;
+                               align: 0.5 0.5;
+                               rel1 { relative: 0.5 0.0; to_y, "pad.center";}
+                               rel2 { relative: 0.5 1.0; to_y, "pad.center";}
+                               color: 0 0 0 0;
+                       }
+               }
+               part { name: "rewind";
+                       type : IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 50 0;
+                               fixed: 1 0;
+                               rel1 { relative: CONTROL_BUTTON_REWIND_X/PLAYER_CONTROL_MAIN_W 0.0; to, "bg";}
+                               rel2 { relative: (CONTROL_BUTTON_REWIND_X+CONTROL_BUTTON_REWIND_W)/PLAYER_CONTROL_MAIN_W 1.0; to, "bg";}
+                               image { normal: REW_BTN; }
+                       }
+                       description { state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               image { normal: REW_BTN_PRESS; }
+                       }
+               }
+
+               part { name: "rewind_touch_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "rewind"; offset: -TOUCH_EXPAND_SIZE -TOUCH_EXPAND_SIZE; }
+                               rel2 { relative: 1 1; to: "rewind"; offset: TOUCH_EXPAND_SIZE TOUCH_EXPAND_SIZE; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "foward";
+                       type : IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 50 0;
+                               fixed: 1 0;
+                               align: 0.5 0.5;
+                               rel1 { relative: CONTROL_BUTTON_FOWARD_X/PLAYER_CONTROL_MAIN_W 0.0; to, "bg";}
+                               rel2 { relative: (CONTROL_BUTTON_FOWARD_X+CONTROL_BUTTON_FOWARD_W)/PLAYER_CONTROL_MAIN_W 1.0; to, "bg";}
+                               image { normal: FF_BTN; }
+                       }
+                       description { state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               image { normal: FF_BTN_PRESS; }
+                       }
+               }
+
+               part { name: "forward_touch_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "foward"; offset: -TOUCH_EXPAND_SIZE -TOUCH_EXPAND_SIZE; }
+                               rel2 { relative: 1 1; to: "foward"; offset: TOUCH_EXPAND_SIZE TOUCH_EXPAND_SIZE; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "play_pause_btn";
+                       type : IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 50 0;
+                               fixed: 1 0;
+                               align: 0.5 0.5;
+                               rel1 { relative: CONTROL_BUTTON_PLAY_X/PLAYER_CONTROL_MAIN_W 0.0; to, "bg";}
+                               rel2 { relative: (CONTROL_BUTTON_PLAY_X+CONTROL_BUTTON_PLAY_W)/PLAYER_CONTROL_MAIN_W 1.0; to, "bg";}
+                               image { normal: PLAY_BTN; }
+                       }
+                       description { state: "default" 1.0;
+                               inherit: "default" 0.0;
+                               image { normal: PAUSE_BTN; }
+                       }
+                       description { state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               image { normal: PLAY_BTN_PRESS; }
+                       }
+                       description { state: "pressed" 1.0;
+                               inherit: "default" 0.0;
+                               image { normal: PAUSE_BTN_PRESS; }
+                       }
+               }
+
+               part { name: "play_pause_btn_touch_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "play_pause_btn"; offset: -TOUCH_EXPAND_SIZE -TOUCH_EXPAND_SIZE; }
+                               rel2 { relative: 1 1; to: "play_pause_btn"; offset: TOUCH_EXPAND_SIZE TOUCH_EXPAND_SIZE; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+       }
+
+       programs {
+
+               //volum button
+               program { name: "vol_btn_down";
+                       source: "volume_touch_area";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "press" 0.0;
+                       target: "volume_bg";
+               }
+               program { name: "vol_btn_up";
+                       source: "volume_touch_area";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "volume_bg";
+               }
+               program { name: "vol_btn_down_sig";
+                       source: "volume_touch_area";
+                       signal: "mouse,down,1";
+                       script {
+                               emit ("vol_btn_down", "ctrl_edj");
+                       }
+               }
+               program { name: "vol_btn_up_sig";
+                       source: "volume_touch_area";
+                       signal: "mouse,up,1";
+                       script {
+                               emit ("vol_btn_up", "ctrl_edj");
+                       }
+               }
+               program { name: "vol_btn_click";
+                       source: "volume_touch_area";
+                       signal: "mouse,clicked,1";
+                       script {
+                               emit ("volume_clicked", "ctrl_edj");
+                       }
+               }
+
+               //info button
+               program { name: "info_btn_down";
+                       source: "info_touch_area";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "press" 0.0;
+                       target: "info_bg";
+               }
+               program { name: "info_btn_up";
+                       source: "info_touch_area";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "info_bg";
+               }
+               program { name: "info_btn_click";
+                       source: "info_touch_area";
+                       signal: "mouse,clicked,1";
+                       script {
+                               emit ("info_clicked", "ctrl_edj");
+                       }
+               }
+               program { name: "info_btn_default";
+                       source: "ctrl_prog";
+                       signal: "info_default";
+                       script {
+                               set_state(PART:"info_bg", "default", 0.0);
+                               set_state(PART:"info", "default", 0.0);
+                               set_state(PART:"info_screen", "default", 0.0);
+                       }
+               }
+               program { name: "info_btn_highlight";
+                       source: "ctrl_prog";
+                       signal: "info_highlight";
+                       script {
+                               set_state(PART:"info_bg", "press", 0.0);
+                               set_state(PART:"info", "default", 0.0);
+                       }
+               }
+               program { name: "info_btn_dim";
+                       source: "ctrl_prog";
+                       signal: "info_dim";
+                       script {
+                               set_state(PART:"info_bg", "default", 0.0);
+                               set_state(PART:"info", "dim", 0.0);
+                               set_state(PART:"info_screen", "dim", 0.0);
+                       }
+               }
+
+               //play,pause
+               program { name: "play_btn_click";
+                       source: "play_pause_btn_touch_area";
+                       signal: "mouse,clicked,1";
+                       script {
+                               new st[31];
+                               new Float:vl;
+                               get_state(PART:"play_pause_btn", st, 30, vl)
+                               if(vl == 0.0)
+                                       emit ("play_clicked", "ctrl_edj");
+                               else
+                                       emit ("pause_clicked", "ctrl_edj");
+                       }
+               }
+               program { name: "play_btn_down";
+                       source: "play_pause_btn_touch_area";
+                       signal: "mouse,down,1";
+                       script {
+                               new st[31];
+                               new Float:vl;
+                               get_state(PART:"play_pause_btn", st, 30, vl)
+                               if(vl == 0.0)
+                                       set_state(PART:"play_pause_btn", "pressed", 0.0);
+                               else
+                                       set_state(PART:"play_pause_btn", "pressed", 1.0);
+                       }
+               }
+               program { name: "play_btn_up";
+                       source: "play_pause_btn_touch_area";
+                       signal: "mouse,up,1";
+                       script {
+                               new st[31];
+                               new Float:vl;
+                               get_state(PART:"play_pause_btn", st, 30, vl)
+                               if(vl == 0.0)
+                                       set_state(PART:"play_pause_btn", "default", 0.0);
+                               else
+                                       set_state(PART:"play_pause_btn", "default", 1.0);
+                       }
+               }
+               program { name: "play_btn_play";
+                       source: "ctrl_prog";
+                       signal: "play";
+                       script {
+                               set_state(PART:"play_pause_btn", "default", 0.0);
+                       }
+               }
+               program { name: "play_btn_pause";
+                       source: "ctrl_prog";
+                       signal: "pause";
+                       script {
+                               set_state(PART:"play_pause_btn", "default", 1.0);
+                       }
+               }
+
+               //ff
+               program { name: "ff_btn_down";
+                       source: "forward_touch_area";
+                       signal: "mouse,down,1";
+                       script {
+                               emit ("ff_btn_down", "ctrl_edj");
+                               set_state(PART:"foward", "pressed", 0.0);
+                       }
+               }
+               program { name: "ff_btn_up";
+                       source: "forward_touch_area";
+                       signal: "mouse,up,1";
+                       script {
+                               emit ("ff_btn_up", "ctrl_edj");
+                               set_state(PART:"foward", "default", 0.0);
+                       }
+               }
+               program { name: "ff_btn_press";
+                       source: "ctrl_prog";
+                       signal: "ff_btn_press";
+                       script {
+                               emit ("ff_btn_down", "ctrl_edj");
+                       }
+               }
+               program { name: "ff_btn_release";
+                       source: "ctrl_prog";
+                       signal: "ff_btn_release";
+                       script {
+                               emit ("ff_btn_up", "ctrl_edj");
+                       }
+               }
+
+               //rewind
+               program { name: "rew_btn_down";
+                       source: "rewind_touch_area";
+                       signal: "mouse,down,1";
+                       script {
+                               emit ("rew_btn_down", "ctrl_edj");
+                               set_state(PART:"rewind", "pressed", 0.0);
+                       }
+               }
+               program { name: "rew_btn_up";
+                       source: "rewind_touch_area";
+                       signal: "mouse,up,1";
+                       script {
+                               emit ("rew_btn_up", "ctrl_edj");
+                               set_state(PART:"rewind", "default", 0.0);
+                       }
+               }
+               program { name: "rew_btn_press";
+                       source: "ctrl_prog";
+                       signal: "rew_btn_press";
+                       script {
+                               emit ("rew_btn_down", "ctrl_edj");
+                       }
+               }
+               program { name: "rew_btn_release";
+                       source: "ctrl_prog";
+                       signal: "rew_btn_release";
+                       script {
+                               emit ("rew_btn_up", "ctrl_edj");
+                       }
+               }
+
+                program { name: "go_active";
+            signal: "mute";
+            source: "volume";
+            action: STATE_SET "mute" 0.0;
+            target: "volume";
+         }
+         program { name: "go_passive";
+            signal: "unmute";
+            source: "volume";
+            action: STATE_SET "default" 0.0;
+            target: "volume";
+         }
+       }
+}
+
diff --git a/layout/mp-play-current-playing.edc b/layout/mp-play-current-playing.edc
new file mode 100644 (file)
index 0000000..44d324a
--- /dev/null
@@ -0,0 +1,252 @@
+#define MP_NOW_PLAYING
+
+#define MP_NOW_PLAYING_W               720.
+#define MP_NOW_PLAYING_H               100.
+
+#define MP_NOW_PLAYING_THUMB_SX                16
+#define MP_NOW_PLAYING_THUMB_SY                12
+#define MP_NOW_PLAYING_THUMB_SIZE      76
+#define MP_NOW_PLAYING_THUMB_EX                (MP_NOW_PLAYING_THUMB_SX+MP_NOW_PLAYING_THUMB_SIZE)
+#define MP_NOW_PLAYING_THUMB_EY                (MP_NOW_PLAYING_THUMB_SY+MP_NOW_PLAYING_THUMB_SIZE)
+#define MP_NOW_PLAYING_LABEL_SX                108
+
+
+#define MP_NOW_PLAYING_LABEL_SY                14
+#define MP_NOW_PLAYING_LABEL_EX                (686)
+#define MP_NOW_PLAYING_LABEL_EY                (MP_NOW_PLAYING_LABEL_SY+38)
+
+#define MP_NOW_PLAYING_PROGRESS_SX             MP_NOW_PLAYING_LABEL_SX
+#define MP_NOW_PLAYING_PROGRESS_SY             70
+#define MP_NOW_PLAYING_PROGRESS_EX             (MP_NOW_PLAYING_PROGRESS_SX+490)
+#define MP_NOW_PLAYING_PROGRESS_EY             (MP_NOW_PLAYING_PROGRESS_SY+10)
+
+#define MP_NOW_PLAYING_PLAYING_ICON_SX         MP_NOW_PLAYING_THUMB_SX
+#define MP_NOW_PLAYING_PLAYING_ICON_SY         MP_NOW_PLAYING_THUMB_SY
+#define MP_NOW_PLAYING_PLAYING_ICON_EX         MP_NOW_PLAYING_THUMB_EX
+#define MP_NOW_PLAYING_PLAYING_ICON_EY         MP_NOW_PLAYING_THUMB_EY
+
+#define MP_NOW_PLAYING_FONT_SIZE               32
+
+
+group {
+       name: "mp_now_playing";
+
+       images {
+               image : "T02_now_playing_bar.png" COMP;
+               image: "T02_now_playing_icon_play.png" COMP;
+               image: "T02_now_playing_icon_pause.png" COMP;
+       }
+
+       parts {
+               part {
+                       name: "now_playing_bg";
+                       type : IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MP_NOW_PLAYING_H;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               image { normal: "T02_now_playing_bar.png"; }
+                       }
+               }       //now_playing_bg
+
+               part { name: "pad.left";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 1;
+                               align: 0 0;
+                               min: 16 0;
+                               rel1 {relative: 0.0 0.0;}
+                               rel2 {relative: 0.0 1.0;}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "thumb_image";
+                       type : SWALLOW;
+                       //type : RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 1;
+                               align: 0 0;
+                               min : MP_NOW_PLAYING_THUMB_SIZE MP_NOW_PLAYING_THUMB_SIZE;
+                               rel1 { relative: 1.0 MP_NOW_PLAYING_THUMB_SY/MP_NOW_PLAYING_H; to, "pad.left";}
+                               rel2 { relative: 1.0 MP_NOW_PLAYING_THUMB_EY/MP_NOW_PLAYING_H; to, "pad.left";}
+                       }
+               }
+
+               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, "thumb_image";}
+                               rel2 {relative: 1.0 0.0; to, "thumb_image";}
+                               color: 0 0 0 255;
+                       }
+               }
+
+               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, "thumb_image";}
+                               rel2 {relative: 1.0 1.0; to, "thumb_image";}
+                               color: 0 0 0 255;
+                       }
+               }
+
+               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, "thumb_image";}
+                               rel2 {relative: 0.0 1.0; to, "thumb_image";}
+                               color: 0 0 0 255;
+                       }
+               }
+
+               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, "thumb_image";}
+                               rel2 {relative: 1.0 1.0; to, "thumb_image";}
+                               color: 0 0 0 255;
+                       }
+               }
+
+               part { name: "pad.right";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 1;
+                               align: 1 0;
+                               min: 16 1;
+                               rel1 {relative: 1.0 0.0;}
+                               rel2 {relative: 1.0 1.0;}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part {
+                       name: "now_playing_label";
+                       type : TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               color: 255 255 255 255;
+                               rel1 { relative: 1.0 MP_NOW_PLAYING_LABEL_SY/MP_NOW_PLAYING_H; to, "thumb_image"; offset: 16 0;}
+                               rel2 { relative: 0.0 MP_NOW_PLAYING_LABEL_EY/MP_NOW_PLAYING_H; to, "pad.right";}
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: MP_NOW_PLAYING_FONT_SIZE;
+                                       align: 0 0.5;
+                                       text: "Title / Artist";
+                               }
+                       }
+               }
+
+               part { name: "progress_bar";
+                       type : SWALLOW;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 1;
+                               align: 0 0;
+                               rel1 { relative: 1.0 MP_NOW_PLAYING_PROGRESS_SY/MP_NOW_PLAYING_H; to, "thumb_image"; offset: 16 0;}
+                               rel2 { relative: 0.0 MP_NOW_PLAYING_PROGRESS_EY/MP_NOW_PLAYING_H; to, "pad.right";}
+                       }
+               }
+
+               part { name: "playing_icon";
+                       //type : SWALLOW;
+                       type : IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0 0; to, "thumb_image"; }
+                               rel2 { relative: 1 1; to, "thumb_image"; }
+                               image { normal: "T02_now_playing_icon_pause.png"; }
+                       }
+                       description {
+                               state: "pause" 0.0;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0 0; to, "thumb_image"; }
+                               rel2 { relative: 1 1; to, "thumb_image"; }
+                               image { normal: "T02_now_playing_icon_play.png"; }
+                       }
+               }
+
+       }       //parts
+
+       programs {
+               program {
+                       name: "now_playing_clicked";
+                       source: "now_playing_bg";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "now_playing_clicked" 0.0;
+               }
+               program {
+                       name: "play_clicked";
+                       source: "playing_icon";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "play_pause_clicked" 0.0;
+               }
+
+               program {
+                       name: "pause";
+                       source: "playing_icon";
+                       signal: "pause";
+                       action: STATE_SET "pause" 0.0;
+                       target: "playing_icon";
+               }
+               program {
+                       name: "play";
+                       source: "playing_icon";
+                       signal: "play";
+                       action: STATE_SET "default" 0.0;
+                       target: "playing_icon";
+               }
+       }
+
+}
+
+
diff --git a/layout/mp-play-info.edc b/layout/mp-play-info.edc
new file mode 100644 (file)
index 0000000..c7894a8
--- /dev/null
@@ -0,0 +1,213 @@
+/* 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
+{
+       name : "music/playing/play_ctrl";
+
+       parts {
+               part {
+                       name: "player_info_bg";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0 ; }
+                               color: 35 35 35 0;
+                       }
+               }
+
+               part {
+                       name: "track_title";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 TRACK_TITLE_H;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: TRACK_TITLE_SX TRACK_TITLE_SY; to: "player_info_bg";}
+                               rel2 { relative: FAVORITE_SX TRACK_TITLE_SY; to: "player_info_bg";}
+                               color: 255 255 255 255;
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: 26;
+                                       align: 0 0.5;
+                                       text: "Track title";
+                               }
+                       }
+               }
+
+               part {
+                       name: "album_title";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 ALBUM_TITLE_H;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: TRACK_TITLE_SX ALBUM_TITLE_SY; to: "player_info_bg";}
+                               rel2 { relative: FAVORITE_SX ALBUM_TITLE_SY; to: "player_info_bg";}
+                               color: 189 188 188 255 ;
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: 22;
+                                       align: 0 0.5;
+                                       text: "Album title";
+                               }
+                       }
+               }
+
+               part {
+                       name: "artist_title";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 ARTIST_TITLE_H;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: TRACK_TITLE_SX ARTIST_TITLE_SY; to: "player_info_bg";}
+                               rel2 { relative: FAVORITE_SX ARTIST_TITLE_SY; to: "player_info_bg";}
+                               color: 189 188 188 255 ;
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: 22;
+                                       align: 0 0.5;
+                                       text: "Artist";
+                               }
+                       }
+               }
+
+               part {
+                       name: "track_index";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 ARTIST_TITLE_H;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 350/MAIN_W ARTIST_TITLE_SY; to: "player_info_bg";}
+                               rel2 { relative: 475/MAIN_W ARTIST_TITLE_SY; to: "player_info_bg";}
+                               color: 255 255 255 255;
+                               text {
+                                       font: FONT_STYLE_ROMAN;
+                                       text_class: "slp_roman";
+                                       size: 22;
+                                       align: 1 0.5;
+                                       text: "/";
+                               }
+                       }
+               }
+
+               part {
+                       name: "player_menu";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                           state: "default" 0.0;
+                            rel1 { relative: 0.0 0.0); to: "player_info_bg";}
+                     rel2 { relative: 1.0 MENUBOX_H/120; to: "player_info_bg";}
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "player_progress";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                           state: "default" 0.0;
+                            rel1 { relative: 0.0 56/120; to: "player_info_bg";}
+                     rel2 { relative: 1.0 1.0; to: "player_info_bg";}
+                       }
+                       description {
+                               state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "progressbar_invisible" ;
+                       signal: "progressbar_invisible";
+                       source: "player_progress";
+                       action:   STATE_SET "invisible" 0.0;
+                       target: "player_progress";
+               }
+               program {
+                       name: "progressbar_visible" ;
+                       signal: "progressbar_visible";
+                       source: "player_progress";
+                       action:   STATE_SET "default" 0.0;
+                       target: "player_progress";
+               }
+       }
+
+}
+
+#define INFO_BASE_SC_H 620
+#define INFO_ITEM_TEXT_H 30
+#define INFO_ITEM_GAP_H 10
+#define INFO_ITEM_H (INFO_ITEM_TEXT_H+INFO_ITEM_GAP_H)
+#define INFO_ITEM_CENTER_H (INFO_ITEM_H*12)
+#define INFO_BASE_H (INFO_ITEM_CENTER_H+60)
+#define INFO_VIEW_H (INFO_BASE_SC_H)
+
+group { name : "music/playing/info";
+       parts {
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 INFO_VIEW_H;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 0.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "contents";
+                       type : SWALLOW;
+//                     type : RECT;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 INFO_BASE_SC_H;
+                               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: 100 100 100 255;
+                       }
+               }
+       }
+}
diff --git a/layout/mp-play-menu.edc b/layout/mp-play-menu.edc
new file mode 100644 (file)
index 0000000..54cdff4
--- /dev/null
@@ -0,0 +1,411 @@
+#define PLAYER_MENU_BTN_PRESS_BG "player/T02_function_btn_press.png"
+
+#define PART_BTN_BG(_name, _to) \
+part { name: _name; \
+       type: RECT; \
+       mouse_events: 0; \
+       scale: 1; \
+       description { state: "default" 0.0; \
+               rel1.to: _to; \
+               rel2.to: _to; \
+               color: 150 150 150 255; \
+               visible: 0; \
+       } \
+       description { state: "clicked" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+       } \
+} \
+part { name: _name"_image"; \
+       type: IMAGE; \
+       mouse_events: 0; \
+       scale: 1; \
+       clip_to: _name; \
+       description { state: "default" 0.0; \
+               rel1.to: _name; \
+               rel2.to: _name; \
+               image { normal: PLAYER_MENU_BTN_PRESS_BG; border: 3 3 1 1; } \
+       } \
+}
+
+group {
+       name: "mp_play_menu";
+
+       images {
+               image:  "T02_option_shuffle_on.png" COMP;
+               image:  "T02_option_shuffle_off.png" COMP;
+               image:  "T02_option_rep_1.png" COMP;
+               image:  "T02_option_rep_all.png" COMP;
+               image:  "T02_option_rep_A.png" COMP;
+               image:  "T02_option_add_playlist.png" COMP;
+               //image:  "T02_option_favorite_on.png" COMP;
+               image:  "T02_option_bg.png" COMP;
+               image: PLAYER_MENU_BTN_PRESS_BG COMP;
+       }
+
+       parts {
+               /* Menu Box **********************************************************************/
+               part {
+                       name: "menu_box_bg";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color : 0 0 0 0;
+                       }
+               }
+               PART_BTN_BG("shuffle_bg", "shuffle")
+
+               part {
+                       name: "shuffle";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               image { normal: "T02_option_shuffle_on.png"; }
+                               rel1 { relative: MENU_SHUFFLE_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; }
+                               rel2 { relative: MENU_SHUFFLE_EX MENU_EY; offset: -1 0; to: "menu_box_bg"; }
+                       }
+                       description {
+                               state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               image { normal: "T02_option_shuffle_on.png"; }
+                       }
+                       description {
+                               state: "invisible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "shuffle_non";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                           state: "default" 0.0;
+                           image { normal: "T02_option_shuffle_off.png"; }
+                            rel1 { relative: MENU_SHUFFLE_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; }
+                     rel2 { relative: MENU_SHUFFLE_EX MENU_EY; offset: 0 0; to: "menu_box_bg"; }
+                       }
+                       description {
+                               state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               image { normal: "T02_option_shuffle_off.png"; }
+                       }
+                       description {
+                               state: "invisible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+
+               PART_BTN_BG("repeat_bg", "rep_all")
+
+               part {
+                       name: "rep_all";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                           state: "default" 0.0;
+                           image { normal: "T02_option_rep_all.png"; }
+                            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: "invisible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "rep_non";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               image { normal: "T02_option_rep_A.png"; }
+                               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;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "rep_1";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               image { normal: "T02_option_rep_1.png"; }
+                               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: "invisible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+
+               PART_BTN_BG("add_to_playlist_bg", "add_to_playlist")
+               part {
+                       name: "add_to_playlist";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               image { normal: "T02_option_add_playlist.png"; }
+                               rel1 { relative: MENU_FAVORITE_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; }
+                               rel2 { relative: MENU_FAVORITE_EX MENU_EY; offset: 0 0; to: "menu_box_bg"; }
+                       }
+                       description {
+                               state: "invisible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+       }
+
+       programs {
+               program { name: "shuffle_down";
+                       source: "shuffle";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "shuffle";
+                       target: "shuffle_bg";
+               }
+               program { name: "shuffle_up";
+                       source: "shuffle";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "shuffle";
+                       target: "shuffle_bg";
+               }
+               program {
+                       name: "shuffle_clicked";
+                       source: "shuffle";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "shuffle_clicked" 0.0;
+               }
+
+               program {
+                       name: "shuffle_visible" ;
+                       signal: "shuffle_visible";
+                       source: "shuffle";
+                       action:   STATE_SET "default" 0.0;
+                       target: "shuffle";
+               }
+
+               program {
+                       name: "shuffle_invisible" ;
+                       signal: "shuffle_invisible";
+                       source: "shuffle";
+                       action:   STATE_SET "invisible" 0.0;
+                       target: "shuffle";
+               }
+
+               program {
+                       name: "shuffle_non_down";
+                       source: "shuffle_non";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "shuffle_non";
+                       target: "shuffle_bg";
+               }
+
+               program {
+                       name: "shuffle_non_up";
+                       source: "shuffle_non";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "shuffle_non";
+                       target: "shuffle_bg";
+               }
+
+               program {
+                       name: "shuffle_non_clicked";
+                       source: "shuffle_non";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "shuffle_non_clicked" 0.0;
+               }
+
+               program {
+                       name: "shuffle_non_visible" ;
+                       signal: "shuffle_non_visible";
+                       source: "shuffle_non";
+                       action:   STATE_SET "default" 0.0;
+                       target: "shuffle_non";
+               }
+
+               program {
+                       name: "shuffle_non_invisible" ;
+                       signal: "shuffle_non_invisible";
+                       source: "shuffle_non";
+                       action:   STATE_SET "invisible" 0.0;
+                       target: "shuffle_non";
+               }
+
+               program {
+                       name: "rep_all_down";
+                       source: "rep_all";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "rep_all";
+                       target: "repeat_bg";
+               }
+
+               program {
+                       name: "rep_all_up";
+                       source: "rep_all";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "rep_all";
+                       target: "repeat_bg";
+               }
+
+               program {
+                       name: "rep_all_clicked";
+                       source: "rep_all";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "rep_all_clicked" 0.0;
+               }
+
+               program {
+                       name: "rep_all_visible" ;
+                       signal: "rep_all_visible";
+                       source: "rep_all";
+                       action:   STATE_SET "default" 0.0;
+                       target: "rep_all";
+               }
+
+               program {
+                       name: "rep_all_invisible" ;
+                       signal: "rep_all_invisible";
+                       source: "rep_all";
+                       action:   STATE_SET "invisible" 0.0;
+                       target: "rep_all";
+               }
+
+               program {
+                       name: "rep_non_down";
+                       source: "rep_non";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "rep_non";
+                       target: "repeat_bg";
+               }
+
+               program {
+                       name: "rep_non_up";
+                       source: "rep_non";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "rep_non";
+                       target: "repeat_bg";
+               }
+
+               program {
+                       name: "rep_non_clicked";
+                       source: "rep_non";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "rep_non_clicked" 0.0;
+               }
+
+               program {
+                       name: "rep_non_visible" ;
+                       signal: "rep_non_visible";
+                       source: "rep_non";
+                       action:   STATE_SET "default" 0.0;
+                       target: "rep_non";
+               }
+
+               program {
+                       name: "rep_non_invisible" ;
+                       signal: "rep_non_invisible";
+                       source: "rep_non";
+                       action:   STATE_SET "invisible" 0.0;
+                       target: "rep_non";
+               }
+
+               program {
+                       name: "rep_1_down";
+                       source: "rep_1";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "rep_1";
+                       target: "repeat_bg";
+               }
+
+               program {
+                       name: "rep_1_up";
+                       source: "rep_1";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "rep_1";
+                       target: "repeat_bg";
+               }
+
+               program {
+                       name: "rep_1_clicked";
+                       source: "rep_1";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "rep_1_clicked" 0.0;
+               }
+
+               program {
+                       name: "rep_1_visible" ;
+                       signal: "rep_1_visible";
+                       source: "rep_1";
+                       action:   STATE_SET "default" 0.0;
+                       target: "rep_1";
+               }
+
+               program {
+                       name: "rep_1_invisible" ;
+                       signal: "rep_1_invisible";
+                       source: "rep_1";
+                       action:   STATE_SET "invisible" 0.0;
+                       target: "rep_1";
+               }
+               program {
+                       name: "add_to_playlist_clicked";
+                       source: "add_to_playlist";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "add_to_playlist_clicked" 0.0;
+               }
+               program {
+                       name: "add_to_playlist_invisible";
+                       source: "play_view";
+                       signal: "add_to_playlist_invisible";
+                       action:   STATE_SET "invisible" 0.0;
+                       target: "add_to_playlist";
+               }
+               program { name: "add_to_playlist_down";
+                       source: "add_to_playlist";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "add_to_playlist_bg";
+               }
+
+               program { name: "add_to_playlist_up";
+                       source: "add_to_playlist";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "add_to_playlist_bg";
+               }
+       }
+}
diff --git a/layout/mp-play-mini-app.edc b/layout/mp-play-mini-app.edc
new file mode 100644 (file)
index 0000000..d5d966c
--- /dev/null
@@ -0,0 +1,371 @@
+
+#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: "SLP";
+                                       style: "Medium";
+                                       text_class: "slp_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: "SLP";
+                                       style: "Roman";
+                                       text_class: "slp_medium";
+                                       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-option.edc b/layout/mp-play-option.edc
new file mode 100644 (file)
index 0000000..9208d20
--- /dev/null
@@ -0,0 +1,371 @@
+/* option box*/
+#define OPTION_BOX_H 64
+#define OPTION_BOX_W 720
+#define OPTION_H 50
+#define OPTION_W 50
+#define OPTION_PAD_TOP 7
+#define OPTION_PAD_LEFT 47
+
+#define OPTION_PAD_MENU 213
+
+#define PLAY_OPTION_SY OPTION_PAD_TOP/OPTION_BOX_H
+#define PLAY_OPTION_EY (OPTION_PAD_TOP+OPTION_H)/OPTION_BOX_H
+
+#define OPTION_SET_SX OPTION_PAD_LEFT/OPTION_BOX_W
+#define OPTION_SET_EX (OPTION_PAD_LEFT+OPTION_W)/OPTION_BOX_W
+#define OPTION_SHARE_SX (OPTION_PAD_LEFT+OPTION_W+OPTION_PAD_MENU)/OPTION_BOX_W
+#define OPTION_SHARE_EX (OPTION_PAD_LEFT+OPTION_W*2+OPTION_PAD_MENU)/OPTION_BOX_W
+#define OPTION_DETAILS_SX (OPTION_PAD_LEFT+OPTION_W*2+OPTION_PAD_MENU*2)/OPTION_BOX_W
+#define OPTION_DETAILS_EX (OPTION_PAD_LEFT+OPTION_W*3+OPTION_PAD_MENU*2)/OPTION_BOX_W
+
+#define PLAYER_ICON_SHARE "player/T02_function_icon_share.png"
+#define PLAYER_ICON_SHARE_FOCUS "player/T02_function_icon_share_focus.png"
+#define PLAYER_ICON_SET "player/T02_function_icon_set.png"
+#define PLAYER_ICON_SET_FOCUS "player/T02_function_icon_set_focus.png"
+#define PLAYER_ICON_DETAILS "player/T02_function_icon_details.png"
+#define PLAYER_ICON_DETAILS_FOCUS "player/T02_function_icon_details_focus.png"
+#define PLAYER_BTN_PRESS_BG "player/T02_function_btn_focus.png"
+
+#define OPTION_BTN_CLIP_COLOR_DIM              77 77 77 255
+
+group {
+       name: "player_view_options";
+
+       images {
+               image:  PLAYER_ICON_SHARE COMP;
+               image:  PLAYER_ICON_SET COMP;
+               image:  PLAYER_ICON_DETAILS COMP;
+               image:  PLAYER_ICON_SHARE_FOCUS COMP;
+               image:  PLAYER_ICON_SET_FOCUS COMP;
+               image:  PLAYER_ICON_DETAILS_FOCUS COMP;
+               image:  PLAYER_BTN_PRESS_BG COMP;
+       }
+
+       parts {
+               part {
+                       name: "bg";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color : 0 0 0 51;
+                       }
+               }
+
+               part {
+                       name: "share";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       clip_to: "share_clipper";
+                       description {
+                               state: "default" 0.0;
+                               image { normal: PLAYER_ICON_SHARE; }
+                               rel1 { relative: OPTION_SET_SX PLAY_OPTION_SY; offset: 0 0; to: "bg"; }
+                               rel2 { relative: OPTION_SET_EX PLAY_OPTION_EY; offset: 0 0; to: "bg"; }
+                       }
+               }
+               part { name: "share_clipper";
+                       type: RECT;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1.to: "share";
+                               rel2.to: "share";
+                               color: 255 255 255 255;
+                       }
+                       description { state: "dimmed" 0.0;
+                               inherit: "default" 0.0;
+                               color: OPTION_BTN_CLIP_COLOR_DIM;
+                       }
+               }
+
+               part {
+                       name: "share_press_bg";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               image { normal: PLAYER_BTN_PRESS_BG; border: 3 3 1 1;}
+                               rel1 { relative: 0.0 0.0; to: "share";}
+                               rel2 { relative: 1.0 1.0; to: "share";}
+                       }
+                       description {
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "share_press";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               image { normal: PLAYER_ICON_SHARE_FOCUS; border: 3 3 1 1;}
+                               rel1 { relative: 0.0 0.0; to: "share";}
+                               rel2 { relative: 1.0 1.0; to: "share";}
+                       }
+                       description {
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part { name: "share_event_blocker";
+                       type: RECT;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; to, "share";}
+                               rel2 { relative: 1.0 1.0; to, "share";}
+                               color: 0 0 0 0;
+                               visible: 0;
+                       }
+                       description { state: "enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "set";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       clip_to: "set_clipper";
+                       description {
+                               state: "default" 0.0;
+                               image { normal: PLAYER_ICON_SET; }
+                               rel1 { relative: OPTION_SHARE_SX PLAY_OPTION_SY; offset: 0 0; to: "bg"; }
+                               rel2 { relative: OPTION_SHARE_EX PLAY_OPTION_EY; offset: 0 0; to: "bg"; }
+                       }
+               }
+               part { name: "set_clipper";
+                       type: RECT;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1.to: "set";
+                               rel2.to: "set";
+                               color: 255 255 255 255;
+                       }
+                       description { state: "dimmed" 0.0;
+                               inherit: "default" 0.0;
+                               color: OPTION_BTN_CLIP_COLOR_DIM;
+                       }
+               }
+
+               part { name: "set_event_blocker";
+                       type: RECT;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; to, "set";}
+                               rel2 { relative: 1.0 1.0; to, "set";}
+                               color: 0 0 0 0;
+                               visible: 0;
+                       }
+                       description { state: "enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "set_press_bg";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               image { normal: PLAYER_BTN_PRESS_BG; border: 3 3 1 1;}
+                               rel1 { relative: 0.0 0.0; to: "set";}
+                               rel2 { relative: 1.0 1.0; to: "set";}
+                       }
+                       description {
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "set_press";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               image { normal: PLAYER_ICON_SET_FOCUS; border: 3 3 1 1;}
+                               rel1 { relative: 0.0 0.0; to: "set";}
+                               rel2 { relative: 1.0 1.0; to: "set";}
+                       }
+                       description {
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "details";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                   state: "default" 0.0;
+                   image { normal: PLAYER_ICON_DETAILS; }
+                   rel1 { relative: OPTION_DETAILS_SX PLAY_OPTION_SY; offset: 0 0; to: "bg"; }
+                       rel2 { relative: OPTION_DETAILS_EX PLAY_OPTION_EY; offset: 0 0; to: "bg"; }
+                       }
+               }
+
+               part {
+                       name: "details_press_bg";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               image { normal: PLAYER_BTN_PRESS_BG; border: 3 3 1 1;}
+                               rel1 { relative: 0.0 0.0; to: "details";}
+                               rel2 { relative: 1.0 1.0; to: "details";}
+                       }
+                       description {
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "details_press";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               image { normal: PLAYER_ICON_DETAILS_FOCUS; border: 3 3 1 1;}
+                               rel1 { relative: 0.0 0.0; to: "details";}
+                               rel2 { relative: 1.0 1.0; to: "details";}
+                       }
+                       description {
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+       }
+
+       programs {
+               program {
+                       name: "set_down";
+                       source: "set";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "press" 0.0;
+                       target: "set";
+                       target: "set_press_bg";
+                       target: "set_press";
+               }
+
+               program {
+                       name: "set_up";
+                       source: "set";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "set";
+                       target: "set_press_bg";
+                       target: "set_press";
+               }
+
+               program {
+                       name: "set_clicked";
+                       source: "set";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "set_clicked" 0.0;
+               }
+
+               program {
+                       name: "share_down";
+                       source: "share";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "press" 0.0;
+                       target: "share";
+                       target: "share_press_bg";
+                       target: "share_press";
+               }
+
+               program {
+                       name: "share_up";
+                       source: "share";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "share";
+                       target: "share_press_bg";
+                       target: "share_press";
+               }
+
+               program {
+                       name: "share_clicked";
+                       source: "share";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "share_clicked" 0.0;
+               }
+
+               program {
+                       name: "details_down";
+                       source: "details";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "press" 0.0;
+                       target: "details";
+                       target: "details_press_bg";
+                       target: "details_press";
+               }
+
+               program {
+                       name: "details_up";
+                       source: "details";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "details";
+                       target: "details_press_bg";
+                       target: "details_press";
+               }
+
+               program {
+                       name: "details_clicked";
+                       source: "details";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "details_clicked" 0.0;
+               }
+
+               program { name: "pgm_disale_option";
+                       source: "*";
+                       signal: "sig_disable_option_btn";
+                       script {
+                               set_state(PART:"set", "press", 0.0);
+                               set_state(PART:"set_event_blocker", "enabled", 0.0);
+                               set_state(PART:"set_clipper", "dimmed", 0.0);
+
+                               set_state(PART:"share", "press", 0.0);
+                               set_state(PART:"share_event_blocker", "enabled", 0.0);
+                               set_state(PART:"share_clipper", "dimmed", 0.0);
+                       }
+               }
+
+               program { name: "pgm_enable_option";
+                       source: "*";
+                       signal: "sig_enable_option_btn";
+                       script {
+                               set_state(PART:"set", "default", 0.0);
+                               set_state(PART:"set_event_blocker", "default", 0.0);
+                               set_state(PART:"set_clipper", "default", 0.0);
+
+                               set_state(PART:"share", "default", 0.0);
+                               set_state(PART:"share_event_blocker", "default", 0.0);
+                               set_state(PART:"share_clipper", "default", 0.0);
+                       }
+               }
+       }
+}
diff --git a/layout/mp-play-progress.edc b/layout/mp-play-progress.edc
new file mode 100644 (file)
index 0000000..38c6f50
--- /dev/null
@@ -0,0 +1,296 @@
+#define PROGRESS_PAD_TOP_1     21
+#define PROGRESS_PAD_TOP_2     6
+#define PROGRESS_PAD_BOTTOM    26
+#define PROGRESS_BG_ALPHA              230
+
+
+#define PROGRESS_PAD_CENTER    14
+
+#define PROGRESS_BAR_PAD_TOP     10
+#define PROGRESS_BAR_H           7
+#define PROGRESS_BAR_PAD_TIME    0
+#define PROGRESS_TIME_H          28
+#define PROGRESS_TIME_PAD_BOTTOM 0
+#define PROGRESS_TIME_PAD_LEFT          20
+#define PROGRESS_TIME_PAD_RIGHT  20
+#define PROGRESS_BAR_PAD_LEFT    117
+#define PROGRESS_BAR_PAD_RIGHT   117
+#define PROGRESS_BOX_H PROGRESS_TIME_H
+#define PROGRESS_BOX_W 720
+
+#define PROGRESS_BAR_SY PROGRESS_BAR_PAD_TOP/PROGRESS_BOX_H
+#define PROGRESS_BAR_EY (PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_H)/PROGRESS_BOX_H
+#define PROGRESS_BAR_SX PROGRESS_BAR_PAD_LEFT/PROGRESS_BOX_W
+#define PROGRESS_BAR_EX (PROGRESS_BOX_W-PROGRESS_BAR_PAD_RIGHT)/PROGRESS_BOX_W
+
+#define PROGRESS_TIME_PLAYING_SY 0.0
+#define PROGRESS_TIME_PLAYING_EY 1.0
+#define PROGRESS_TIME_PLAYING_SX PROGRESS_TIME_PAD_LEFT/PROGRESS_BOX_W
+#define PROGRESS_TIME_PLAYING_EX (PROGRESS_BOX_W-PROGRESS_TIME_PAD_RIGHT)/PROGRESS_BOX_W
+#define PROGRESS_TIME_TOTAL_SY PROGRESS_TIME_PLAYING_SY
+#define PROGRESS_TIME_TOTAL_EY PROGRESS_TIME_PLAYING_EY
+#define PROGRESS_TIME_TOTAL_SX (1-PROGRESS_TIME_PLAYING_EX)
+#define PROGRESS_TIME_TOTAL_EX (1-PROGRESS_TIME_PLAYING_SX)
+
+
+group {
+       name: "music/playing/progress_box";
+
+       parts {
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_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 0;
+                       }
+               }
+
+
+               part { name: "progress_bar_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 0;
+                               fixed: 1 0;
+                               align: 0.5 0;
+                               rel1 { relative: PROGRESS_BAR_SX 0.0; offset: 8 0; to: "bg"; }
+                               rel2 { relative: PROGRESS_BAR_EX (PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_H+PROGRESS_BAR_PAD_TIME)/PROGRESS_BOX_H; offset: -8 0; to: "bg"; }
+
+                               color: 0 0 0 0;
+                       }
+               }
+
+
+               part { name: "progress_bar";
+                       type : SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 0;
+                               fixed: 1 0;
+                               align: 0.5 0;
+                               rel1 { relative: 0.0 0.0; to, "progress_bar_area";}
+                               rel2 { relative: 1.0 1.0; to, "progress_bar_area";}
+                               }
+                       }
+
+               part { name: "progress_text_playing";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 80 0;
+                               fixed: 1 0;
+                               align: 0.0 0.5;
+                               rel1 { relative: PROGRESS_TIME_PLAYING_SX PROGRESS_TIME_PLAYING_SY; offset: 0 0; to: "bg"; }
+                               rel2 { relative: PROGRESS_TIME_PLAYING_EX PROGRESS_TIME_PLAYING_EY; offset: -1 0; to: "bg"; }
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: 25;
+                                       text: "00:00";
+                                       align: 0.0 0.5;
+                               }
+                               color: 255 255 255 255;
+                       }
+               }
+
+               part {
+                       name: "progress_text_total";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 80 0;
+                               fixed: 1 0;
+                               align: 1.0 0.5;
+                               rel1 { relative: PROGRESS_TIME_TOTAL_SX PROGRESS_TIME_TOTAL_SY; offset: 0 0; to: "bg"; }
+                               rel2 { relative: PROGRESS_TIME_TOTAL_EX PROGRESS_TIME_TOTAL_EY; offset: -1 0; to: "bg"; }
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: 25;
+                                       text: "00:00";
+                                       align: 1.0 0.5;
+                               }
+                               color: 255 255 255 255;
+
+                       }
+               }
+       }
+}
+
+group {
+       name: "music/playing/progress_box_ls";
+
+       parts {
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_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 0;
+                       }
+               }
+
+
+               part { name: "progress_bar_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 0;
+                               fixed: 1 0;
+                               align: 0.5 0;
+                               rel1 { relative: PROGRESS_BAR_SX 0.0; offset: 0 0; to: "bg"; }
+                               rel2 { relative: PROGRESS_BAR_EX (PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_H+PROGRESS_BAR_PAD_TIME)/PROGRESS_BOX_H; offset: -1 0; to: "bg"; }
+
+
+                               color: 0 0 0 0;
+                       }
+               }
+
+
+               part { name: "progress_bar";
+                       type : SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 0;
+                               fixed: 1 0;
+                               align: 0.5 0;
+                               rel1 { relative: 0.0 0.0; to, "progress_bar_area";}
+                               rel2 { relative: 1.0 1.0; to, "progress_bar_area";}
+                               }
+                       }
+
+               part { name: "progress_text_playing";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 80 0;
+                               fixed: 1 0;
+                               align: 0.0 0.5;
+                               rel1 { relative: PROGRESS_TIME_PLAYING_SX PROGRESS_TIME_PLAYING_SY; offset: 0 0; to: "bg"; }
+                               rel2 { relative: PROGRESS_TIME_PLAYING_EX PROGRESS_TIME_PLAYING_EY; offset: -1 0; to: "bg"; }
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: 25;
+                                       text: "00:00";
+                                       align: 0.0 0.5;
+                               }
+                               color: 255 255 255 255;
+                       }
+               }
+
+               part {
+                       name: "progress_text_total";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 80 0;
+                               fixed: 1 0;
+                               align: 1.0 0.5;
+                               rel1 { relative: PROGRESS_TIME_TOTAL_SX PROGRESS_TIME_TOTAL_SY; offset: 0 0; to: "bg"; }
+                               rel2 { relative: PROGRESS_TIME_TOTAL_EX PROGRESS_TIME_TOTAL_EY; offset: -1 0; to: "bg"; }
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: 25;
+                                       text: "00:00";
+                                       align: 1.0 0.5;
+                               }
+                               color: 255 255 255 255;
+
+                       }
+               }
+       }
+}
+
+group {
+       name: "music/playing/progress_box/progress_bar";
+       images {
+               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 {
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_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 0;
+                       }
+               }
+
+               part {
+                       name: "progress_bg_img";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 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 : "progress_bar/T02_player_progress_bg.png";
+                               }
+                       }
+               }
+
+               part {
+                       name: "progress_bar";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               image {
+                                       normal: "progress_bar/T02_player_progress_bar.png";
+                               }
+                               rel1 { relative: 0.0 0.0; to: "progress_bg_img"; }
+                               rel2 { relative: 1.0 1.0; to_x: "progressbar_control"; to_y: "progress_bg_img";}
+                       }
+               }
+               part {
+                       name: "progressbar_control";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               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 : "progress_bar/T02_player_progress_point.png";
+                       }
+                       dragable {
+                               confine: "bg";
+                               x: 1 1 0;
+                               y: 0 0 0;
+                       }
+               }
+       }
+}
diff --git a/layout/mp-play-vew-landscape.edc b/layout/mp-play-vew-landscape.edc
new file mode 100644 (file)
index 0000000..62795a8
--- /dev/null
@@ -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
new file mode 100644 (file)
index 0000000..2e8aebb
--- /dev/null
@@ -0,0 +1,1107 @@
+/* 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"
+#define ALBUMART_IMAGE_SHADOW_RGBA 0 0 0 0
+
+#define ALBUM_IMG_H 481
+#define TRACK_INFO_H 139
+#define TRACK_TITLE_H 40
+#define ALBUM_TITLE_H 36
+#define ARTIST_TITLE_H 34
+#define FAVOUR_ICON_H 34
+
+/* main size */
+#define HD_MAIN_W 720
+#define HD_MAIN_H 1280
+
+#define HD_STATUSBAR_H 50
+#define HD_NAVIGATIONBAR_H 100
+
+#define HD_PLAYVIEW_H (HD_MAIN_H-HD_STATUSBAR_H)
+#define HD_PLAYVIEW_W HD_MAIN_W
+
+#define PLAYVIEW_TITLE_H 108
+#define PLAYVIEW_OPTION_H 64
+#define PLAYVIEW_ALBUM_BG_H 843
+#define PLAYVIEW_ALBUM_H 488
+#define PLAYVIEW_ALBUM_W 488
+#define PLAYVIEW_ALBUM_TOP_H 142
+#define PLAYVIEW_ALBUM_BOTTOM_H 140
+#define PLAYVIEW_MENU_H 96
+#define PLAYVIEW_PROGRESSBAR_H 28
+#define PLAYVIEW_PROGRESSBAR_PAD_MENU 48
+#define PLAYVIEW_CONTROLBAR_H 115
+#define PLAYVIEW_CONTROLBAR_PAD_PROGRESSBAR 27
+#define PLAYVIEW_LYRIC_H 744
+
+#define PLAYVIEW_TITLE_SX 0.0
+#define PLAYVIEW_TITLE_EX 1.0
+#define PLAYVIEW_TITLE_SY 0.0
+#define PLAYVIEW_TITLE_EY PLAYVIEW_TITLE_H/HD_PLAYVIEW_H
+
+#define PLAYVIEW_OPTION_SX 0.0
+#define PLAYVIEW_OPTION_EX 1.0
+#define PLAYVIEW_OPTION_SY PLAYVIEW_TITLE_EY
+#define PLAYVIEW_OPTION_EY (PLAYVIEW_OPTION_SY+PLAYVIEW_OPTION_H/HD_PLAYVIEW_H)
+
+#define PLAYVIEW_ALBUM_BG_SX 0.0
+#define PLAYVIEW_ALBUM_BG_EX 1.0
+#define PLAYVIEW_ALBUM_BG_SY PLAYVIEW_OPTION_EY
+#define PLAYVIEW_ALBUM_BG_EY (PLAYVIEW_ALBUM_BG_SY+PLAYVIEW_ALBUM_BG_H/HD_PLAYVIEW_H)
+
+#define PLAYVIEW_ALBUM_SX (1-PLAYVIEW_ALBUM_W/HD_PLAYVIEW_W)/2
+#define PLAYVIEW_ALBUM_EX (1+PLAYVIEW_ALBUM_W/HD_PLAYVIEW_W)/2
+#define PLAYVIEW_ALBUM_SY (PLAYVIEW_OPTION_EY+PLAYVIEW_ALBUM_TOP_H/HD_PLAYVIEW_H)
+#define PLAYVIEW_ALBUM_EY (PLAYVIEW_OPTION_EY+(PLAYVIEW_ALBUM_TOP_H+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_LYRIC_EY
+#define PLAYVIEW_MENU_EY (PLAYVIEW_MENU_SY+PLAYVIEW_MENU_H/HD_PLAYVIEW_H)
+
+#define PLAYVIEW_PROGRESSBAR_SX 0.0
+#define PLAYVIEW_PROGRESSBAR_EX 1.0
+#define PLAYVIEW_PROGRESSBAR_SY (PLAYVIEW_MENU_EY+PLAYVIEW_PROGRESSBAR_PAD_MENU/HD_PLAYVIEW_H)
+#define PLAYVIEW_PROGRESSBAR_EY (PLAYVIEW_PROGRESSBAR_SY+PLAYVIEW_PROGRESSBAR_H/HD_PLAYVIEW_H)
+
+#define PLAYVIEW_CONTROLBAR_SX 0.0
+#define PLAYVIEW_CONTROLBAR_EX 1.0
+#define PLAYVIEW_CONTROLBAR_SY (PLAYVIEW_PROGRESSBAR_EY+PLAYVIEW_CONTROLBAR_PAD_PROGRESSBAR/HD_PLAYVIEW_H)
+#define PLAYVIEW_CONTROLBAR_EY 1.0
+
+#define FLICK_TIMER 0.35
+#define PLAYVIEW_IMAGE_SHADOW "player/T02_Album_art_image_Shadow.png"
+
+#define PLAYVIEW_VOLUME_W      626
+#define PLAYVIEW_VOLUME_H      112
+#define PLAYVIEW_VOLUME_SX     (((HD_PLAYVIEW_W-PLAYVIEW_VOLUME_W)/2)/PLAYVIEW_VOLUME_W)
+#define PLAYVIEW_VOLUME_SY     (798/HD_PLAYVIEW_H)
+#define PLAYVIEW_VOLUME_EX     (1-PLAYVIEW_VOLUME_SX)
+#define PLAYVIEW_VOLUME_EY     ((798+PLAYVIEW_VOLUME_H)/HD_PLAYVIEW_H)
+
+#define PLAYVIEW_SELECTINFO_H  114
+
+#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 {\
+                               name: "option_menu_invisible" ;\
+                               signal: "option_menu_invisible";\
+                               source: "player_option_menu";\
+                               action:   STATE_SET "invisible" 0.0;\
+                               target: "player_option_menu";\
+                               transition: LINEAR 0.3;\
+                               after :"option_hide_done";\
+                       }\
+                       program {\
+                               name: "option_hide_done";\
+                               signal: "option_hide";\
+                               source: "player_option_menu";\
+                               action:   STATE_SET "invisible" 1.0;\
+                               target: "player_option_menu";\
+                       }\
+                       program {\
+                               name: "option_menu_visible" ;\
+                               signal: "option_menu_visible";\
+                               source: "player_option_menu";\
+                               action:   STATE_SET "default" 0.0;\
+                               target: "player_option_menu";\
+                               transition: LINEAR 0.3;\
+                       }
+
+
+group {
+    name: "mp_play_view_layout";
+
+    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_base";
+                    type: RECT;
+                    mouse_events:1;
+                    scale : 1;
+                    description {
+                            visible:1;
+                            color: 0 0 0 0;
+                            state: "default" 0.0;
+                            rel1 { relative: 0.0 0.0;to: "bg";}
+                            rel2 { relative: 1.0 1.0;to: "bg";}
+                    }
+            }
+
+            part {
+                    name: "bg_clipper";
+                    mouse_events: 0;
+                    type: RECT;
+                    description {
+                            state: "default" 0.0;
+                            visible: 1;
+                            rel1 { relative: 0.0 0.0;
+                            offset : 0 0; to: "bg_base";}
+                            rel2 { relative: 1.0 1.0; to: "bg_base";}
+                            color: 255 255 255 255;
+                    }
+            }
+
+            part {
+                    name : "bg_list_content";
+                    type: SWALLOW;
+                    mouse_events: 1;
+                    repeat_events: 1;
+                    scale: 1;
+                    clip_to : "bg_clipper";
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            state: "default" 0.0;
+                            rel1 { relative: 0.0 0.0;to: "bg_base";}
+                            rel2 { relative: 1.0 1.0;to: "bg_base";}
+                    }
+                    description {
+                            visible:0;
+                            fixed: 1 1;
+                            state: "invisible" 0.0;
+                            rel1 { relative: 0.0 0.0;to: "bg_base";}
+                            rel2 { relative: 1.0 1.0;to: "bg_base";}
+                    }
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            state: "left" 0.0;
+                            rel1 { relative: -1.0 0.0;to: "bg_base";}
+                            rel2 { relative: 0.0 1.0;to: "bg_base";}
+                    }
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            state: "right" 0.0;
+                            rel1 { relative: 1.0.0 0.0;to: "bg_base";}
+                            rel2 { relative: 2.0 1.0;to: "bg_base";}
+                    }
+            }
+
+            part {
+                    name : "bg_list_content_temp";
+                    type: SWALLOW;
+                    mouse_events: 1;
+                    repeat_events: 1;
+                    scale: 1;
+                    clip_to : "bg_clipper";
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            state: "default" 0.0;
+                            rel1 { relative: 0.0 0.0;to: "bg_base";}
+                            rel2 { relative: 1.0 1.0;to: "bg_base";}
+                    }
+                    description {
+                            visible:0;
+                            fixed: 1 1;
+                            state: "invisible" 0.0;
+                            rel1 { relative: 0.0 0.0;to: "bg_base";}
+                            rel2 { relative: 1.0 1.0;to: "bg_base";}
+                    }
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            state: "left" 0.0;
+                            rel1 { relative: -1.0 0.0;to: "bg_base";}
+                            rel2 { relative: 0.0 1.0;to: "bg_base";}
+                    }
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            state: "right" 0.0;
+                            rel1 { relative: 1.0.0 0.0;to: "bg_base";}
+                            rel2 { relative: 2.0 1.0;to: "bg_base";}
+                    }
+            }
+
+            part{
+                    name : "player_info";
+                    type: SWALLOW;
+                    mouse_events:1;
+                    scale : 1;
+                    description {
+                            visible:1;
+                            color: 0 0 0 0;
+                            state: "default" 0.0;
+                            rel1 { relative: PLAYVIEW_TITLE_SX PLAYVIEW_TITLE_SY; to: "bg";}
+                            rel2 { relative: PLAYVIEW_TITLE_EX PLAYVIEW_TITLE_EY; to: "bg";}
+                    }
+                    description {
+                                                       state: "hide" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       visible:0;
+                                       }
+            }
+
+            part{
+                    name : "player_options";
+                    type: SWALLOW;
+                    mouse_events:1;
+                    scale : 1;
+                    description {
+                            visible:1;
+                            color: 0 0 0 0;
+                            state: "default" 0.0;
+                            rel1 { relative: PLAYVIEW_OPTION_SX PLAYVIEW_OPTION_SY; to: "bg";}
+                            rel2 { relative: PLAYVIEW_OPTION_EX PLAYVIEW_OPTION_EY; to: "bg";}
+                    }
+                    description {
+                                                       state: "hide" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       visible:0;
+                                       }
+            }
+
+            part {
+                    name : "list_content";
+                    type: SWALLOW;
+                    mouse_events: 1;
+                    repeat_events: 1;
+                    scale: 1;
+                    clip_to : "bg_clipper";
+                    description {
+                            visible:1;
+                            //min: PLAYVIEW_ALBUM_W PLAYVIEW_ALBUM_H;
+                            //max: PLAYVIEW_ALBUM_W PLAYVIEW_ALBUM_H;
+                            fixed: 1 1;
+                            align: 0.5 0.5;
+                            state: "default" 0.0;
+                            rel1 { relative: PLAYVIEW_ALBUM_SX PLAYVIEW_ALBUM_SY;to: "bg_base";}
+                            rel2 { relative: PLAYVIEW_ALBUM_EX PLAYVIEW_ALBUM_EY;to: "bg_base";}
+                    }
+                    description {
+                            visible:0;
+                            fixed: 1 1;
+                            align: 0.5 0.5;
+                            state: "invisible" 0.0;
+                            rel1 { relative: PLAYVIEW_ALBUM_SX PLAYVIEW_ALBUM_SY;to: "bg_base";}
+                            rel2 { relative: PLAYVIEW_ALBUM_EX PLAYVIEW_ALBUM_EY;to: "bg_base";}
+                    }
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            align: 0.5 0.5;
+                            state: "left" 0.0;
+                            rel1 { relative: (-1.0+PLAYVIEW_ALBUM_SX) PLAYVIEW_ALBUM_SY;to: "bg_base";}
+                            rel2 { relative: (-1.0+PLAYVIEW_ALBUM_EX) PLAYVIEW_ALBUM_EY;to: "bg_base";}
+                    }
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            align: 0.5 0.5;
+                            state: "right" 0.0;
+                            rel1 { relative: (1.0+PLAYVIEW_ALBUM_SX) PLAYVIEW_ALBUM_SY;to: "bg_base";}
+                            rel2 { relative: (1.0+PLAYVIEW_ALBUM_EX) PLAYVIEW_ALBUM_EY;to: "bg_base";}
+                    }
+            }
+
+            part {
+                    name : "list_content_temp";
+                    type: SWALLOW;
+                    mouse_events: 1;
+                    repeat_events: 1;
+                    scale: 1;
+                    clip_to : "bg_clipper";
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            align: 0.5 0.5;
+                            state: "default" 0.0;
+                            rel1 { relative: PLAYVIEW_ALBUM_SX PLAYVIEW_ALBUM_SY;to: "bg_base";}
+                            rel2 { relative: PLAYVIEW_ALBUM_EX PLAYVIEW_ALBUM_EY;to: "bg_base";}
+                    }
+                    description {
+                            visible:0;
+                            fixed: 1 1;
+                            align: 0.5 0.5;
+                            state: "invisible" 0.0;
+                            rel1 { relative: PLAYVIEW_ALBUM_SX PLAYVIEW_ALBUM_SY;to: "bg_base";}
+                            rel2 { relative: PLAYVIEW_ALBUM_EX PLAYVIEW_ALBUM_EY;to: "bg_base";}
+                    }
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            align: 0.5 0.5;
+                            state: "left" 0.0;
+                            rel1 { relative: (-1.0+PLAYVIEW_ALBUM_SX) PLAYVIEW_ALBUM_SY;to: "bg_base";}
+                            rel2 { relative: (-1.0+PLAYVIEW_ALBUM_EX) PLAYVIEW_ALBUM_EY;to: "bg_base";}
+                    }
+                    description {
+                            visible:1;
+                            fixed: 1 1;
+                            align: 0.5 0.5;
+                            state: "right" 0.0;
+                            rel1 { relative: (1.0+PLAYVIEW_ALBUM_SX) PLAYVIEW_ALBUM_SY;to: "bg_base";}
+                            rel2 { relative: (1.0+PLAYVIEW_ALBUM_EX) PLAYVIEW_ALBUM_EY;to: "bg_base";}
+                    }
+            }
+
+                       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_EY; 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; offset: 0 -1; to: "bg";}
+                    }
+            }
+
+            part {
+                    name: "bottom_bg";
+                    type: RECT;
+                    mouse_events: 1;
+                    description {
+                            state: "default" 0.0;
+                            visible: 1;
+                                                       rel1 { relative: 0.0 PLAYVIEW_MENU_SY; to: "bg";}
+                            rel2 { relative: 1.0 1.0; offset: 0 1; to: "bg";}
+                            color: 0 0 0 204;
+                    }
+                    description {
+                                                       state: "hide" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       visible:0;
+                                       }
+            }
+
+            part {
+                    name: "separate_line";
+                    type: RECT;
+                    mouse_events: 1;
+                    description {
+                            state: "default" 0.0;
+                            visible: 1;
+                                                       rel1 { relative: 0.0 0.0; offset: 0 -1; to: "bottom_bg";}
+                            rel2 { relative: 1.0 0.0; offset: 0 0; to: "bg";}
+                            color: 255 255 255 179;
+                    }
+                    description {
+                                                       state: "hide" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       visible:0;
+                                       }
+            }
+
+            part {
+                                       name: "player_option_menu";
+                                       type: SWALLOW;
+                                       mouse_events: 1;
+                                       description {
+                                                       state: "default" 0.0;
+                                                       rel1 { relative: PLAYVIEW_MENU_SX PLAYVIEW_MENU_SY; to: "bg";}
+                                       rel2 { relative: PLAYVIEW_MENU_EX PLAYVIEW_MENU_EY; to: "bg";}
+                                                       color: 35 35 35 0;
+                                       }
+                                       description {
+                                                       state: "invisible" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       rel1 { relative: PLAYVIEW_MENU_SX PLAYVIEW_MENU_SY; to: "bg";}
+                                       rel2 { relative: PLAYVIEW_MENU_EX PLAYVIEW_MENU_EY; to: "bg";}
+                    }
+                    description {
+                                                       state: "invisible" 1.0;
+                                                       inherit: "invisible" 0.0;
+                                                       visible: 0;
+                    }
+                    description {
+                                                       state: "hide" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       visible:0;
+                                       }
+            }
+
+                       part {
+                    name: "controlbar_bg";
+                    type: RECT;
+                    mouse_events: 1;
+                    description {
+                            state: "default" 0.0;
+                            visible: 1;
+                                                       rel1 { relative: 0.0 (1-215/HD_PLAYVIEW_H); to: "bg";}
+                            rel2 { relative: 1.0 1.0; offset: 0 1; to: "bg";}
+                            color: 0 0 0 0;
+                    }
+                    description {
+                                                       state: "hide" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       visible:0;
+                                       }
+            }
+
+            part {
+                    name: "player_progress";
+                    type: SWALLOW;
+                    mouse_events: 1;
+                    description {
+                            state: "default" 0.0;
+                            visible: 1;
+                                                       rel1 { relative: PLAYVIEW_PROGRESSBAR_SX PLAYVIEW_PROGRESSBAR_SY; to: "bg";}
+                            rel2 { relative: PLAYVIEW_PROGRESSBAR_EX PLAYVIEW_PROGRESSBAR_EY; to: "bg";}
+                    }
+                    description {
+                                                       state: "hide" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       visible:0;
+                                       }
+            }
+
+            part {
+                    name : "elm.swallow.controlbar";
+                    type: SWALLOW;
+                    mouse_events:1;
+                    scale : 1;
+                    description {
+                            visible:1;
+                            state: "default" 0.0;
+                                                       rel1 { relative: PLAYVIEW_CONTROLBAR_SX PLAYVIEW_CONTROLBAR_SY; to: "bg";}
+                            rel2 { relative: PLAYVIEW_CONTROLBAR_EX PLAYVIEW_CONTROLBAR_EY; to: "bg";}
+                    }
+                    description {
+                                                       state: "hide" 0.0;
+                                                       inherit: "default" 0.0;
+                                                       visible:0;
+                                       }
+            }
+
+                       part  { name: "volume_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       rel1 { relative: PLAYVIEW_VOLUME_SX PLAYVIEW_VOLUME_SY; to: "bg"; }
+                                       rel2 { relative: PLAYVIEW_VOLUME_EX PLAYVIEW_VOLUME_EY; to: "bg"; }
+                               }
+                       }
+       }
+
+       programs {
+               LRC_PROG
+
+               #if 0
+               OPT_PROG
+           #endif
+                program { name: "flick_left";
+                       signal: "flick_left";
+                       source: "list_content";
+                       action: STATE_SET "left" 0.0;
+                       target: "bg_list_content";
+                       target: "list_content";
+                       transition: LINEAR FLICK_TIMER;
+                }
+                program { name: "flick_right";
+                       signal: "flick_right";
+                       source: "list_content";
+                       action: STATE_SET "right" 0.0;
+                       target: "bg_list_content";
+                       target: "list_content";
+                       transition: LINEAR FLICK_TIMER;
+                }
+                 program { name: "set_right";
+                       signal: "set_right";
+                       source: "list_content_temp";
+                       action: STATE_SET "right" 0.0;
+                       target: "bg_list_content_temp";
+                       target: "list_content_temp";
+                }
+                program { name: "set_left";
+                       signal: "set_left";
+                       source: "list_content_temp";
+                       action: STATE_SET "left" 0.0;
+                       target: "bg_list_content_temp";
+                       target: "list_content_temp";
+                }
+                 program { name: "set_default";
+                       signal: "set_default";
+                       source: "list_content_temp";
+                       action: STATE_SET "default" 0.0;
+                       target: "bg_list_content_temp";
+                       target: "list_content_temp";
+                       transition: LINEAR FLICK_TIMER;
+                       after :"list_content_transit_done";
+                }
+                program { name: "set_default_list";
+                       signal: "set_default";
+                       source: "list_content";
+                       action: STATE_SET "default" 0.0;
+                       target: "bg_list_content";
+                       target: "list_content";
+               }
+                program { name : "list_content_transit_done";
+                        signal: "transit_done";
+                        source: "list_content";
+                       script {
+                               emit("transit_done", "list");
+               }
+               in: 0.0 0.0;  //delay
+               after :"set_default_parts";
+               }
+                program { name : "list_temp_transit_done";
+                        signal: "transit_done";
+                        source: "list_content_temp";
+                       script {
+                               emit("transit_done", "temp");
+            }
+               }
+                program { name: "set_default_parts";
+                       signal: "set_default";
+                       source: "mp_play_view_layout";
+                       action: STATE_SET "default" 0.0;
+                       target: "player_info";
+                       target: "player_options";
+                       target: "player_option_menu";
+                       target: "controlbar_bg";
+                       target: "player_progress";
+                       target: "bottom_bg";
+                       target: "separate_line";
+                       target: "elm.swallow.controlbar";
+               }
+               program { name: "set_hide_parts";
+                       signal: "set_hide";
+                       source: "mp_play_view_layout";
+                       action: STATE_SET "hide" 0.0;
+                       target: "player_info";
+                       target: "player_options";
+                       target: "player_option_menu";
+                       target: "controlbar_bg";
+                       target: "player_progress";
+                       target: "bottom_bg";
+                       target: "separate_line";
+                       target: "elm.swallow.controlbar";
+               }
+       }
+}
+
+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;
+       image:  PLAYVIEW_IMAGE_SHADOW COMP;
+    }
+
+       parts {
+
+               part {
+                       name: "bg";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+
+               part {
+                       name: "album_shadow_bg";
+                       type: IMAGE;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0 0; offset: -19 -19; to: "bg";}
+                               rel2 { relative: 1 1; offset: 19 19; to: "bg";}
+                               image {
+                                       normal : PLAYVIEW_IMAGE_SHADOW;
+                                       border: 19 19 19 19;
+                                       border_scale: 1;
+                               }
+                       }
+               }
+
+               part {
+                       name: "album_bg";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0 0; to: "bg";}
+                               rel2 { relative: 1 1; to: "bg";}
+                       }
+               }
+
+               part {
+                       name: "album_art";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0 0; to: "bg";}
+                               rel2 { relative: 1 1; to: "bg";}
+                       }
+               }
+
+               part { name: "event_box";
+                       type : SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: ((0-(HD_PLAYVIEW_W-PLAYVIEW_ALBUM_W)/2)/PLAYVIEW_ALBUM_W) (-PLAYVIEW_ALBUM_TOP_H/PLAYVIEW_ALBUM_H); to: "album_bg"; }
+                               rel2 { relative: (1.0+((HD_PLAYVIEW_W-PLAYVIEW_ALBUM_W)/2)/PLAYVIEW_ALBUM_W)) (1.0+PLAYVIEW_ALBUM_BOTTOM_H/PLAYVIEW_ALBUM_H); to: "album_bg"; }
+                       }
+               }
+
+               /* streaming buffering area */
+               part {
+                       name: "buffering_area";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               min: 100 100;
+                               align: 1.0 1.0;
+                               fixed: 1 1;
+                               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";
+               }
+       }
+}
+
+group {  name : "mp_play_view_bg";
+
+       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 {
+
+               part {
+                       name: "bg";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0;}
+                               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";}
+                       }
+               }
+
+               part {
+                       name: "album_art";
+                       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";}
+                       }
+               }
+
+               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_bg"; }
+                               rel2 { relative: 1.0 1.0; to: "album_bg"; }
+                       }
+               }
+
+               /* streaming buffering area */
+               part {
+                       name: "buffering_area";
+                       type: SWALLOW;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               min: 100 100;
+                               align: 1.0 1.0;
+                               fixed: 1 1;
+                               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";
+               }
+       }
+}
+
+#define PLAYVIEW_H_LANDSCAPE HD_MAIN_W
+#define PLAYVIEW_CONTROLBAR_H_LANDSCAPE 128
+
+group {
+       name: "landscape_layout";
+
+       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: 37 37 37 255;
+                       }
+               }
+
+               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 1.0;to: "bg";}
+                       }
+               }
+
+               part {
+                       name : "elm.swallow.controlbar";
+                       type: SWALLOW;
+                       mouse_events:1;
+                       scale : 1;
+                       description {
+                               visible:1;
+                               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: "empty_layout";
+       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;
+                       }
+               }
+       }
+}
+
+#define TITLE_BOX_H 108
+#define TITLE_BOX_W 720
+
+#define TITLE_SONG_TITLE_H 48
+#define TITLE_ARTIST_NAME_H 40
+
+#define TITILE_PAD 10
+
+#define TITILE_ICON_PAD 2
+#define TITILE_ICON_W 120
+
+#define TITLE_SOUND_PATH_BG_SX ((TITLE_BOX_W-TITILE_ICON_W)/TITLE_BOX_W)
+#define TITLE_SOUND_PATH_BG_SY TITILE_PAD/TITLE_BOX_H
+#define TITLE_SOUND_PATH_BG_EX 1.0
+#define TITLE_SOUND_PATH_BG_EY ((TITLE_BOX_H-TITILE_PAD)/TITLE_BOX_H)
+
+#define TITLE_NEARBY_DEVICE_BG_SX ((TITLE_BOX_W-TITILE_ICON_W*2-TITILE_ICON_PAD)/TITLE_BOX_W)
+#define TITLE_NEARBY_DEVICE_BG_SY TITLE_SOUND_PATH_BG_SY
+#define TITLE_NEARBY_DEVICE_BG_EX (TITLE_SOUND_PATH_BG_SX-TITILE_ICON_PAD/TITLE_BOX_W)
+#define TITLE_NEARBY_DEVICE_BG_EY TITLE_SOUND_PATH_BG_EY
+
+#define TITLE_SONG_TITLE_SX (TITILE_PAD/TITLE_BOX_W)
+#define TITLE_SONG_TITLE_SY (TITILE_PAD/TITLE_BOX_H)
+#define TITLE_SONG_TITLE_EX (TITLE_NEARBY_DEVICE_BG_SX-TITILE_PAD/TITLE_BOX_W)
+#define TITLE_SONG_TITLE_EY ((TITLE_SONG_TITLE_H+TITILE_PAD)/TITLE_BOX_H)
+
+#define TITLE_ARTIST_NAME_SX TITLE_SONG_TITLE_SX
+#define TITLE_ARTIST_NAME_SY TITLE_SONG_TITLE_EY
+#define TITLE_ARTIST_NAME_EX TITLE_SONG_TITLE_EX
+#define TITLE_ARTIST_NAME_EY ((TITLE_BOX_H-TITILE_PAD)/TITLE_BOX_H)
+
+group {
+       name: "player_view_info";
+
+       images {
+               image:  "T02_title_icon_nearby_device.png" COMP;
+               image:  "T02_title_icon_sound_path.png" COMP;
+       }
+
+       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 51;
+                       }
+               }
+
+               part { name: "sound_path";
+                       mouse_events: 1;
+                       type : SWALLOW;
+                       description { state: "default" 0.0;
+                               rel1 { relative: TITLE_SOUND_PATH_BG_SX TITLE_SOUND_PATH_BG_SY;to: "bg";}
+                               rel2 { relative: TITLE_SOUND_PATH_BG_EX TITLE_SOUND_PATH_BG_EY;to: "bg";}
+                       }
+               }
+
+               part { name: "nearby_dmr";
+                       mouse_events: 1;
+                       type : SWALLOW;
+                       description { state: "default" 0.0;
+                               rel1 { relative: TITLE_NEARBY_DEVICE_BG_SX TITLE_NEARBY_DEVICE_BG_SY;to: "bg";}
+                               rel2 { relative: TITLE_NEARBY_DEVICE_BG_EX TITLE_NEARBY_DEVICE_BG_EY;to: "bg";}
+                       }
+               }
+
+               part {
+                       name : "title";
+                       type: TEXT;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               visible:1;
+                               state: "default" 0.0;
+                               rel1 { relative: TITLE_SONG_TITLE_SX TITLE_SONG_TITLE_SY;to: "bg";}
+                               rel2 { relative: TITLE_SONG_TITLE_EX TITLE_SONG_TITLE_EY;to: "bg";}
+                               text {
+                                       font: FONT_STYLE_ROMAN;
+                                       text_class: "slp_roman";
+                                       size: 38;
+                                       align: 0.0 0.5;
+                               }
+                               color: 255 255 255 255;
+                       }
+               }
+               part {
+                       name : "artist_name";
+                       type: TEXT;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               visible:1;
+                               state: "default" 0.0;
+                               rel1 { relative: TITLE_ARTIST_NAME_SX TITLE_ARTIST_NAME_SY;to: "bg";}
+                               rel2 { relative: TITLE_ARTIST_NAME_EX TITLE_ARTIST_NAME_EY;to: "bg";}
+                               text {
+                                       font: FONT_STYLE_ROMAN;
+                                       text_class: "slp_roman";
+                                       size: 32;
+                                       align: 0.0 0.5;
+                               }
+                               color: 255 255 255 255;
+                       }
+               }
+
+               part { name: "separate_line";
+                       mouse_events: 0;
+                       type : RECT;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 1.0; offset: 0 -1; to: "bg";}
+                               rel2 { relative: 1.0 1.0; to: "bg";}
+                               color: 255 255 255 77;
+                       }
+               }
+       }
+}
+
+/* sub layout option */
+#define OPTION_BUTTON_H 70
+
+#define MP_FEATURE_INNER_SETTINGS
+#define OPTION_BUTTON_W 220
+#define OPTION_BUTTON_PAD_LEFT 12
+
+#define OPTION_BUTTON_PAD_TOP 4
+#define OPTION_BUTTON_PAD_BUTTON 18
+#define OPTION_SY OPTION_BUTTON_PAD_TOP/PLAYVIEW_OPTION_H
+#define OPTION_EY (OPTION_BUTTON_PAD_TOP+OPTION_BUTTON_H)/PLAYVIEW_OPTION_H
+#define OPTION_1_SX OPTION_BUTTON_PAD_LEFT/HD_PLAYVIEW_W
+#define OPTION_1_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W)/HD_PLAYVIEW_W
+#define OPTION_2_SX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W+OPTION_BUTTON_PAD_BUTTON)/HD_PLAYVIEW_W
+#define OPTION_2_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*2+OPTION_BUTTON_PAD_BUTTON)/HD_PLAYVIEW_W
+#define OPTION_3_SX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*2+OPTION_BUTTON_PAD_BUTTON*2)/HD_PLAYVIEW_W
+#define OPTION_3_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*3+OPTION_BUTTON_PAD_BUTTON*2)/HD_PLAYVIEW_W
+#define OPTION_4_SX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*3+OPTION_BUTTON_PAD_BUTTON*3)/HD_PLAYVIEW_W
+#define OPTION_4_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*4+OPTION_BUTTON_PAD_BUTTON*3)/HD_PLAYVIEW_W
\ No newline at end of file
diff --git a/layout/mp-progressbar.edc b/layout/mp-progressbar.edc
new file mode 100644 (file)
index 0000000..c61e9ff
--- /dev/null
@@ -0,0 +1,401 @@
+
+group { name: "elm/progressbar/horizontal/music/list_progress";
+      images {
+         image: "T02_now_playing_progress_bg.png" COMP;
+         image: "T02_now_playing_progress_bar.png" COMP;
+      }
+      parts {
+         part { name: "elm.padding.left";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 0 0;
+               }
+               color: 0 0 0 0;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "elm.padding.right";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset:   0   0;
+               }
+               color: 0 0 0 0;
+               align: 1.0 0.0;
+            }
+         }
+         part { name: "elm.background.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to_x: "elm.padding.left";
+                  relative: 1.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  to_x: "elm.padding.right";
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+               }
+            }
+         }
+         part { name: "elm.swallow.bar";
+            mouse_events: 0;
+            scale: 1;
+            type: SWALLOW;
+            description {
+               min: 48 10;
+               max: 99999 10;
+               state: "default" 0.0;
+               rel1 {
+                  to: "elm.background.progressbar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.background.progressbar";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  offset: 0 0;
+                  to_y: "elm.background.progressbar";
+               }
+               rel2 {
+                  offset: 0 -1;
+                  relative: 0.0 1.0;
+                  to_y: "elm.background.progressbar";
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel2.offset: 4 -1;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to_x: "elm.swallow.content";
+               rel1.relative: 1.0 0.0;
+               rel2.to_x: "elm.swallow.content";
+               rel2.relative: 1.0 1.0;
+               color: 0 0 0 255;
+               text {
+                  font: "SLP:style=Medium";
+                 text_class: "slp_medium";
+                  size: 10;
+                  min: 0 0;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "background";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "elm.background.progressbar";
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+               image {
+                  normal: "T02_now_playing_progress_bg.png";
+                  border: 0 0 1 1;
+               }
+            }
+         }
+         part { name: "elm.text.status";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               visible: 0;
+               rel1 {
+                  to: "background";
+                  relative: 0.5 0.5;
+               }
+               rel2 {
+                  to: "background";
+                  relative: 0.5 0.5;
+               }
+               text {
+                  font: "SLP:style=Medium";
+                 text_class: "slp_medium";
+                  size: 10;
+                  min: 0 0;
+                  align: 0.5 0.0;
+               }
+               color: 0 0 0 255;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "elm.progress.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "elm.background.progressbar";
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 1;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to_y: "elm.swallow.bar";
+                  to_x: "elm.cur.progressbar";
+                  offset: -1 -1;
+               }
+               image {
+                  normal: "T02_now_playing_progress_bar.png";
+                  border: 0 0 1 1;
+               }
+            }
+            description {
+               state: "invert" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to_y: "elm.swallow.bar";
+                  to_x: "elm.cur.progressbar";
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+            }
+            description {
+               state: "state_begin" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 0.1 1.0;
+               }
+            }
+            description {
+               state: "state_end" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.9 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part { name: "text-bar";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "progress-rect";
+            //effect: SOFT_SHADOW;
+            scale: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               fixed: 1 1;
+               visible: 0;
+               rel1.to: "elm.text.status";
+               rel1.offset: -1 -1;
+               rel2.to: "elm.text.status";
+               text {
+                  text_source: "elm.text.status";
+                  font: "SLP:style=Medium";
+                 text_class: "slp_medium";
+                  size: 10;
+                  min: 0 0;
+                  align: 0.0 0.0;
+               }
+               color: 224 224 224 255;
+               color3: 0 0 0 64;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "elm.cur.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            dragable {
+               confine: "background";
+               x: 1 1 1;
+               y: 0 0 0;
+            }
+            description { state: "default" 0.0;
+               min: 0 28;
+               fixed: 1 1;
+               visible: 0;
+               rel1 {
+                  to: "background";
+                  relative: 0 0;
+               }
+               rel2.to: "background";
+           }
+         }
+         part { name: "progress-rect";
+            mouse_events: 0;
+            scale: 1;
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "elm.progress.progressbar";
+               rel2.to: "elm.progress.progressbar";
+            }
+         }
+      }
+      programs {
+         program { name: "label_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+         program { name: "label_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.text";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "units_show";
+            signal: "elm,state,units,visible";
+            source: "elm";
+            action:  STATE_SET "show" 0.0;
+            target: "text-bar";
+            target: "elm.text.status";
+         }
+         program { name: "units_hide";
+            signal: "elm,state,units,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "text-bar";
+            target: "elm.text.status";
+         }
+         program { name: "slide_to_end";
+            action:  STATE_SET "state_end" 0.0;
+            transition: LINEAR 0.5;
+            target: "elm.progress.progressbar";
+            after: "slide_to_begin";
+         }
+         program { name: "slide_to_begin";
+            signal: "elm,state,slide,begin";
+            action: STATE_SET "state_begin" 0.0;
+            target: "elm.progress.progressbar";
+            transition: LINEAR 0.5;
+            after: "slide_to_end";
+         }
+         program { name: "start_pulse";
+            signal: "elm,state,pulse,start";
+            source: "elm";
+           // after: "slide_to_end";
+         }
+         program { name: "stop_pulse";
+            signal: "elm,state,pulse,stop";
+            source: "elm";
+            action: ACTION_STOP;
+            target: "slide_to_begin";
+            target: "slide_to_end";
+            target: "start_pulse";
+            //after: "state_pulse";
+         }
+         program { name: "state_pulse";
+            signal: "elm,state,pulse";
+            source: "elm";
+            action: STATE_SET "state_begin" 0.0;
+            target: "elm.progress.progressbar";
+            after: "units_hide";
+         }
+         program { name: "state_fraction";
+            signal: "elm,state,fraction";
+            source: "elm";
+            action: ACTION_STOP;
+            target: "slide_to_begin";
+            target: "slide_to_end";
+            target: "start_pulse";
+            action: STATE_SET "default" 0.0;
+            target: "elm.progress.progressbar";
+         }
+         program { name: "set_invert_on";
+            signal: "elm,state,inverted,on";
+            source: "elm";
+            action:  STATE_SET "invert" 0.0;
+            target: "elm.progress.progressbar";
+         }
+         program { name: "set_invert_off";
+            signal: "elm,state,inverted,off";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.progress.progressbar";
+         }
+      }
+   }
+
+
diff --git a/layout/mp-rich-info.edc b/layout/mp-rich-info.edc
new file mode 100644 (file)
index 0000000..c7068c3
--- /dev/null
@@ -0,0 +1,2060 @@
+#ifndef FONT_NAME
+#define FONT_NAME "system_content"
+#endif
+
+#ifndef MAIN_W
+#define MAIN_W 720.
+#endif
+
+#ifndef MAIN_H
+#define MAIN_H 1280
+#endif
+
+#ifndef FONT_NAME
+#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 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 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
+
+#define RICH_INFO_BIO_ALBUM_WIDTH 528
+#define RICH_INFO_BIO_ALBUM_HEIGHT 370
+
+#define MP_INFO_BG_COLOR 255 255 255 255;
+#define RICH_INFO_TITLE_FONT_SIZE 38
+#define BOTTOM_LINE_COLOR 82 82 82 255
+
+#define MP_INFO_DETAIL_BG_COLOR 236 240 242 255
+
+#define RICH_INFO_PART_TRANSITION(sval, ssource) \
+       program { \
+               name: ssource"."sval; \
+               signal: sval; \
+               source: ssource; \
+               action: STATE_SET sval 0.0; \
+               target: ssource; \
+       }
+
+#define RICH_INFO_ADD_BASE_BOX_STATUS(part_name, status_name) \
+                       description { state: status_name 0.0;\
+                               visible: 1;\
+                               fixed: 0 0;\
+                               rel1 { relative: ((RICH_INFO_GAB*2+ RICH_INFO_ALBUM_WIDTH)/RICH_INFO_WIDTH) 0.0; offset: 0 0; to: "bg";}\
+                               rel2 { relative: 1 1; offset: 0 0; to: "bg";}\
+                               align: 0.5 0.5;\
+                       }\
+                       RICH_INFO_PART_TRANSITION(status_name, part_name)
+
+#define RICH_INFO_ADD_BASE_BOX_OUTSIDE_STATUS(part_name, status_name) \
+                       description { state: status_name 0.0;\
+                               visible: 1;\
+                               fixed: 0 0;\
+                               rel1 { relative: 1.0 0.0; offset: 0 0; to: "bg";}\
+                               rel2 { relative: (1+(RICH_INFO_WIDTH-RICH_INFO_GAB*2-RICH_INFO_ALBUM_WIDTH)/RICH_INFO_WIDTH) 1.2; offset: 0 0; to: "bg";}\
+                               align: 0.5 0.5;\
+                       }\
+                       RICH_INFO_PART_TRANSITION(status_name, part_name)
+
+#define BASE_BOX_DETAIL_PART( part_name ) \
+         part { name: part_name; \
+            type: SWALLOW;\
+            RICH_INFO_ADD_BASE_BOX_STATUS(part_name, "inside")\
+            RICH_INFO_ADD_BASE_BOX_OUTSIDE_STATUS(part_name, "default")\
+         }
+
+#define BASE_BOX_PART( part_name ) \
+         part { name: part_name; \
+            type: SWALLOW;\
+                       RICH_INFO_ADD_BASE_BOX_STATUS(part_name, "default")\
+            RICH_INFO_ADD_BASE_BOX_OUTSIDE_STATUS(part_name, "outside")\
+         }
+
+#define RICH_INFO_ADD_DETAIL_SCROLLER_STATUS(part_name, status_name, start_y) \
+                       description { state: status_name 0.0;\
+                               visible: 1;\
+                               min: 0 0;\
+                               fixed: 0 1;\
+                               align: 0 0;\
+                               rel1 { relative: ((RICH_INFO_GAB*2+ RICH_INFO_ALBUM_WIDTH)/RICH_INFO_WIDTH) (start_y/RICH_INFO_HEIGHT); offset: 0 0; to: "bg";}\
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";}\
+                       }\
+                       RICH_INFO_PART_TRANSITION(status_name, part_name)
+
+#define RICH_INFO_ADD_DETAIL_SCROLLER_OUTSIDE_STATUS(part_name, status_name, start_y) \
+                       description { state: status_name 0.0;\
+                               visible: 1;\
+                               min: 0 0;\
+                               fixed: 0 1;\
+                               align: 0 0;\
+                               rel1 { relative: 1.0 (start_y/RICH_INFO_HEIGHT); offset: 0 0; to: "bg";}\
+                               rel2 { relative: (1.0+(RICH_INFO_WIDTH-RICH_INFO_GAB*2-RICH_INFO_ALBUM_WIDTH)/RICH_INFO_WIDTH) 1.0; to: "bg";}\
+                       }\
+                       RICH_INFO_PART_TRANSITION(status_name, part_name)
+
+#define DETAIL_SCROLLER_PART( part_name , start_y) \
+               part {name: part_name;\
+                       type: SWALLOW;\
+                       mouse_events: 1;\
+                       scale: 1;\
+                       RICH_INFO_ADD_DETAIL_SCROLLER_STATUS(part_name, "inside", start_y)\
+                       RICH_INFO_ADD_DETAIL_SCROLLER_OUTSIDE_STATUS(part_name, "default", start_y)\
+               }
+
+#define BASE_BOX_SCROLLER_PART( part_name , start_y) \
+        part {name: part_name;\
+            type: SWALLOW;\
+            mouse_events: 1;\
+            scale: 1;\
+                       RICH_INFO_ADD_DETAIL_SCROLLER_STATUS(part_name, "default", start_y)\
+            RICH_INFO_ADD_DETAIL_SCROLLER_OUTSIDE_STATUS(part_name, "outside", start_y)\
+        }
+
+group{
+       name: "richinfo/base";
+
+       parts {
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               min: MAIN_W 1;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "swallow";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               visible: 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+       }
+}
+
+//for info view
+group{
+       name: "richinfo/test_rich_info";
+
+       parts {
+               part { name: "bg";
+                       type : RECT;
+                       scale: 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_DETAIL_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"; }
+            }
+        }
+
+               ///left area
+               part {
+                       name: "left_area";
+                       type : SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 1;
+                               rel1 { relative: 0.0 0.0; offset: 0 0; to: "bg";}
+                               rel2 { relative: ((RICH_INFO_GAB*2+ RICH_INFO_ALBUM_WIDTH)/RICH_INFO_WIDTH) 1.0; offset: 0 0; to: "bg";}
+                               align: 0.5 0.5;
+                       }
+               }
+
+               /////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)
+       }
+}
+
+group{
+       name: "info_view_left_area";
+
+       images {
+               image:  "T02_Video_play.png" COMP;
+               image:  "T02_Page_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_GAB*2+ RICH_INFO_ALBUM_WIDTH) 710;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part {
+                       name: "left_album_bg";
+                       type : SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 1;
+                               rel1 { relative: (RICH_INFO_GAB/RICH_INFO_LEFT_WIDTH) (RICH_INFO_GAB/RICH_INFO_HEIGHT);
+                                          offset: 0 0;
+                                          to: "bg";
+                                         }
+                               rel2 {  relative: ((RICH_INFO_GAB+ RICH_INFO_ALBUM_WIDTH)/RICH_INFO_LEFT_WIDTH) ((RICH_INFO_GAB+ RICH_INFO_ALBUM_HEIGHT)/RICH_INFO_HEIGHT);
+                                               offset: 0 0;
+                                               to: "bg";
+                                        }
+                               align: 0.5 0.5;
+                       }
+               }
+
+               part {
+                       name: "video_play_img";
+                       type : SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               align: 0.5 0.5;
+                               rel1 { relative: 0.0 0.0; to: "left_album_bg";}
+                               rel2 { relative: 1.0 1.0; to: "left_album_bg";}
+                       }
+               }
+
+               part { name: "seq_text";
+                       mouse_events: 1;
+                       type, IMAGE;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               image { normal: "T02_Page_bg.png"; }
+                               align: 0.5 0.5;
+                               rel1 { relative: 22/RICH_INFO_LEFT_WIDTH 178/RICH_INFO_HEIGHT;
+                                       offset: 0 0;
+                                       to: "bg";
+                               }
+                               rel2 {  relative: 138/RICH_INFO_LEFT_WIDTH 220/RICH_INFO_HEIGHT;
+                                       offset: 0 0;
+                                       to: "bg";
+                               }
+                       }
+                       description { state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part{ name, "seq_text_content";
+                       type, TEXT;
+                       scale: 1;
+                       description {
+                               state, "default" 0.0;
+                               align: 0.5 0.5;
+                               rel1 { relative: 0.0 0.0; to: "seq_text";}
+                               rel2 { relative: 1.0 1.0; to: "seq_text";}
+                               color, 255 255 255 255;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: RICH_INFO_SEQ_TEXT_SIZE;
+                                       align: 0.5 0.5;
+                               }
+                       }
+               }
+       }
+
+       programs {
+         program { name: "show_text";
+            signal: "show";
+            source: "seq_text";
+            action: STATE_SET "show" 0.0;
+            target: "seq_text";
+         }
+         program { name: "hide_text";
+            signal: "hide";
+            source: "seq_text";
+            action: STATE_SET "default" 0.0;
+            target: "seq_text";
+         }
+      }
+}
+
+group{
+       name: "base_box_no_xml";
+
+       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: "find_tag_bt";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; offset:0 0; to: "bg";}
+                               rel2 { relative: 1.0 (RICH_INFO_NO_XML_FIND_TAG_HEIGHT/RICH_INFO_HEIGHT); offset:0 0; to: "bg";}
+                       }
+               }
+
+               part{name,"media_content";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "find_tag_bt"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                               align: 0 0;
+                               fixed: 0 0;
+                       }
+               }
+
+               part{name,"no_sim_media_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;
+                       }
+               }
+       }
+}
+
+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;
+                                       text_class: "slp_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: "parent_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: MP_INFO_DETAIL_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: 255 255 255 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;
+                                       text_class: "slp_medium";
+                                       size: TITLE_TEXT_01_SIZE;
+                                       align: 0.5 0.5;
+                               }
+                       }
+               }
+
+               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";}
+                       }
+               }
+
+               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;
+                       }
+               }
+       }
+}
+
+#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;
+                                       text_class: "slp_medium";
+                                       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;
+                                       text_class: "slp_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;
+                                       text_class: "slp_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;
+                                       text_class: "slp_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;
+                                       text_class: "slp_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;
+                                       text_class: "slp_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_DETAIL_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;
+                                       text_class: "slp_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_DETAIL_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;
+                                       text_class: "slp_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;
+                                       text_class: "slp_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_DETAIL_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;
+                                       text_class: "slp_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_DETAIL_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;
+                                       text_class: "slp_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_DETAIL_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;
+                                       text_class: "slp_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_DETAIL_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;
+                                       text_class: "slp_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_DETAIL_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;
+                                       text_class: "slp_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_DETAIL_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;
+                                       text_class: "slp_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_DETAIL_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;
+                       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_DETAIL_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); offset: 0 0; to: "bg";}
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       text_class: "slp_medium";
+                                       size: TITLE_TEXT_01_SIZE;
+                                       align: 0 0.5;
+                                       text: "Media info";
+                               }
+                       }
+               }
+
+               part{name,"mi_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: "mi_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"; }
+                       }
+               }
+       }
+}
+/******************for  media info detail view end****************************************/
+
+
diff --git a/layout/mp-selection-info.edc b/layout/mp-selection-info.edc
new file mode 100644 (file)
index 0000000..78142e3
--- /dev/null
@@ -0,0 +1,135 @@
+
+#define SELECTION_INFO_BACKGROUND_COLOR_INC          215 225 232 255
+#define SELECTION_INFO_TEXT_COLOR_INC                77 77 77 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
+#define SELECTION_INFO_LEFT_PADDING_INC              16
+#define SELECTION_INFO_TEXT_FONT_SIZE_INC            32
+#define SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC       150
+#define SELECTION_INFO_MIN_VER_BOTTOM_86_H_INC       186
+
+group { name: "elm/standard/selectioninfo/music/vertical/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_VER_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" "";
+      }
+   }
+}
+
+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-slider.edc b/layout/mp-slider.edc
new file mode 100644 (file)
index 0000000..e70cd0a
--- /dev/null
@@ -0,0 +1,553 @@
+#define SLIDER_INDICATOR_TEXT_COLOR_INC      42 137 194 255
+#define SLIDER_UNITS_TEXT_COLOR_INC      0 0 0 255
+#define SLIDER_UNITS_TEXT_SIZE_INC  30
+#define SLIDER_INDICATOR_TEXT_SIZE_INC  40
+#define SLIDER_BASE_HEIGHT_INC  16
+#define SLIDER_BASE_MIN_WIDTH_INC 375
+#define SLIDER_BASE_HEIGHT_INC  16
+#define SLIDER_SWALLOW_BAR_MIN_WIDTH_INC  58
+#define SLIDER_SWALLOW_BAR_HEIGHT_INC  58
+#define SLIDER_INDICATOR_MAX_WIDTH_INC 90
+#define SLIDER_INDICATOR_WIDTH_INC 58
+#define SLIDER_INDICATOR_HEIGHT_INC 58
+
+
+
+group { name: "elm/slider/horizontal/indicator/default";
+          alias: "elm/slider/horizontal/indicator/disabled";
+          alias: "elm/slider/vertical/indicator/default";
+          alias: "elm/slider/vertical/indicator/disabled";
+          alias: "elm/slider/horizontal/indicator/tap_to_drag";
+  images {
+        image: "00_slider_handle.png" COMP;
+        image: "00_slider_handle_dim.png" COMP;
+  }
+  parts {
+        part { name: "button_events";
+               type: RECT;
+               mouse_events: 1;
+               scale: 1;
+               description { state: "default" 0.0;
+                  fixed: 1 1;
+                  min: 2*SLIDER_INDICATOR_WIDTH_INC 1.5*SLIDER_INDICATOR_HEIGHT_INC;
+                  aspect: 1.0 1.0;
+                  aspect_preference: VERTICAL;
+                  color: 0 0 0 0;
+               }
+               description { state: "disabled" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 0;
+               }
+        }
+        part { name: "button0";
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  fixed: 1 1;
+                  min: SLIDER_INDICATOR_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
+                  max: SLIDER_INDICATOR_MAX_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
+                  rel1 {
+                         to: "elm.indicator";
+                         offset: -2 -2;
+                  }
+                  rel2 {
+                         to: "elm.indicator";
+                         offset: 2 2;
+                  }
+                  image {
+                         normal: "00_slider_handle.png";
+                         border: 3 3 3 3;
+                         border_scale: 1;
+                  }
+               }
+               description { state: "disabled" 0.0;
+                  inherit: "default" 0.0;
+                  image {
+                         normal: "00_slider_handle_dim.png";
+                  }
+               }
+        }
+        part { name: "elm.indicator";
+               type: TEXT;
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  visible: 1;
+                  color: SLIDER_INDICATOR_TEXT_COLOR_INC;
+                  text {
+                         font: "SLP:style=Medium";
+                         size: SLIDER_INDICATOR_TEXT_SIZE_INC;
+                         min: 1 1;
+                         align: 0.5 0.5;
+                         text_class: "slp_medium";
+                  }
+               }
+               description { state: "hide" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 0;
+                }
+        }
+  }
+  programs {
+        program { name: "set_val_show";
+               signal: "elm,state,val,show";
+               source: "elm";
+               action:  STATE_SET "default" 0.0;
+               target: "elm.indicator";
+        }
+        program { name: "set_val_hide";
+               signal: "elm,state,val,hide";
+               source: "elm";
+               action:  STATE_SET "hide" 0.0;
+               target: "elm.indicator";
+        }
+        program { name: "slider_disable";
+               signal: "elm,state,disabled";
+               source: "elm";
+               action:  STATE_SET "disabled" 0.0;
+               target: "button0";
+               target: "button_events";
+        }
+        program { name: "slider_enable";
+               signal: "elm,state,enabled";
+               source: "elm";
+               action:  STATE_SET "default" 0.0;
+               target: "button0";
+               target: "button_events";
+        }
+  }
+}
+
+group { name: "elm/slider/horizontal/music-player/default";
+          alias: "elm/slider/horizontal/music-player/disabled";
+  images {
+        image: "00_winset_list_progress_bg.png" COMP;
+        image: "00_winset_list_progress_bar.png" COMP;
+        image: "00_slider_popup_bg.png" COMP;
+  }
+  script {
+        public invert_on = 0;
+        public set_invert_on() {
+               set_state(PART:"level", "inverted", 0.0);
+               set_state(PART:"level2", "inverted", 0.0);
+               set_int(invert_on, 1);
+        }
+        public set_invert_off() {
+               set_state(PART:"level", "default", 0.0);
+               set_state(PART:"level2", "default", 0.0);
+               set_int(invert_on, 0);
+        }
+        public thumb_down() {
+               if(get_int(invert_on) == 0)
+                  set_state(PART:"level", "pressed", 0.0);
+               else if(get_int(invert_on) == 1)
+                  set_state(PART:"level2", "pressed", 0.0);
+               }
+        public thumb_up() {
+               if(get_int(invert_on) == 0)
+                  set_state(PART:"level", "default", 0.0);
+               else if(get_int(invert_on) == 1)
+                  set_state(PART:"level2", "inverted", 0.0);
+               }
+        }
+        parts {
+               part { name: "slider_bg_area";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to_x: "elm.swallow.icon"; offset: -16 0; }
+                               rel2 { relative: 1 1; to_x: "elm.swallow.end"; offset: 16 0; }
+                               visible: 0;
+                       }
+               }
+               part { name: "bg_image";
+                       type: IMAGE;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "slider_bg_area";
+                               rel2.to: "slider_bg_area";
+                               image { normal: "00_slider_popup_bg.png"; border: 7 7 5 12; }
+                       }
+               }
+
+               part { name: "base";
+                  mouse_events: 0;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         min: SLIDER_BASE_MIN_WIDTH_INC SLIDER_BASE_HEIGHT_INC;
+                         max: 99999 SLIDER_BASE_HEIGHT_INC;
+                         rel1.to: "bg";
+                         rel2.to: "bg";
+                         image.normal: "00_winset_list_progress_bg.png";
+                         image.border: 0 0 4 4;
+                         image.border_scale: 1;
+                  }
+               }
+               part { name: "level";
+                  mouse_events: 0;
+                  scale: 1;
+                  clip_to: "clipper";
+                  description { state: "default" 0.0;
+                         fixed: 1 1;
+                         rel1.to: "base";
+                         rel2 {
+                                to_y: "base";
+                                to_x: "elm.dragable.slider";
+                                relative: 0.5 1.0;
+                         }
+                         image.normal: "00_winset_list_progress_bar.png";
+                         image.border: 0 0 4 4;
+                         image.border_scale: 1;
+                  }
+                  description { state: "inverted" 0.0;
+                         inherit: "default" 0.0;
+                         visible: 0;
+                  }
+                  description { state: "pressed" 0.0;
+                         inherit: "default" 0.0;
+                         image.normal: "00_winset_list_progress_bar.png";
+                  }
+               }
+               part { name: "level2";
+                  mouse_events: 0;
+                  scale: 1;
+                  clip_to: "clipper";
+                  description { state: "default" 0.0;
+                         fixed: 1 1;
+                         visible: 0;
+                         rel1 {
+                                to_y: "base";
+                                to_x: "elm.dragable.slider";
+                                relative: 0.5 0.0;
+                         }
+                         rel2.to: "base";
+                         image.normal: "00_winset_list_progress_bg.png";
+                         image.border: 0 0 4 4;
+                         image.border_scale: 1;
+                  }
+                  description { state: "inverted" 0.0;
+                         inherit: "default" 0.0;
+                         visible: 1;
+                  }
+                  description { state: "pressed" 0.0;
+                         inherit: "default" 0.0;
+                         visible: 1;
+                         image.normal: "00_winset_list_progress_bg.png";
+                  }
+               }
+               part { name: "bg";
+                  type: RECT;
+                  mouse_events: 0;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         visible: 0;
+                         rel1.to: "elm.swallow.bar";
+                         rel2.to: "elm.swallow.bar";
+                  }
+               }
+               part { name: "elm.swallow.bar";
+                  type: SWALLOW;
+                  mouse_events: 0;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         min: SLIDER_SWALLOW_BAR_MIN_WIDTH_INC SLIDER_SWALLOW_BAR_HEIGHT_INC;
+                         max: 99999 SLIDER_SWALLOW_BAR_HEIGHT_INC;
+                         align: 1.0 0.5;
+                         rel1 {
+                                to_x: "bar_left_padding";
+                                relative: 1.0 0.0;
+                         }
+                         rel2 {
+                                to_x: "bar_right_padding";
+                                relative: 0.0 1.0;
+                         }
+                  }
+               }
+               part {
+                  name: "bar_left_padding";
+                  type: SWALLOW;
+                  scale: 1;
+                  description {
+                         state: "default" 0.0;
+                         visible: 0;
+                         min: 10 0;
+                         fixed: 1 1;
+                         rel1 {
+                                relative: 1.0  0.5;
+                                to_x: "elm.text";
+                         }
+                         rel2 {
+                                relative: 1.0  0.5;
+                                to_x: "elm.text";
+                         }
+                         align: 0.0 0.5;
+                  }
+               }
+               part {
+                  name: "bar_right_padding";
+                  type: SWALLOW;
+                  scale: 1;
+                  description {
+                         state: "default" 0.0;
+                         visible: 0;
+                         min: 10 0;
+                         fixed: 1 1;
+                         rel1 {
+                                relative: 0.0  0.5;
+                                to_x: "elm.units";
+                         }
+                         rel2 {
+                                relative: 0.0  0.5;
+                                to_x: "elm.units";
+                         }
+                         align: 1.0 0.5;
+                  }
+               }
+               part { name: "elm.swallow.icon";
+                  type: SWALLOW;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         visible: 0;
+                         align: 0.0 0.5;
+                         rel1 {
+                                to_y: "elm.swallow.bar";
+                         }
+                         rel2 {
+                                relative: 0.0 1.0;
+                                to_y: "elm.swallow.bar";
+                         }
+                  }
+                  description { state: "visible" 0.0;
+                         inherit: "default" 0.0;
+                         visible: 1;
+                         aspect: 1.0 1.0;
+                         aspect_preference: VERTICAL;
+                  }
+               }
+               part { name: "elm.text";
+                  type: TEXT;
+                  mouse_events: 0;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         visible: 0;
+                         fixed: 1 1;
+                         align: 0.0 0.5;
+                         rel1.to_x: "elm.swallow.icon";
+                         rel1.relative: 1.0 0.0;
+                         rel2.to_x: "elm.swallow.icon";
+                         color: SLIDER_UNITS_TEXT_COLOR_INC;
+                         text {
+                                font: "SLP:style=Medium";
+                                size: SLIDER_UNITS_TEXT_SIZE_INC;
+                                min: 0 0;
+                                align: 0.0 0.5;
+                                text_class: "slp_medium";
+                         }
+                  }
+                  description { state: "visible" 0.0;
+                         inherit: "default" 0.0;
+                         visible: 1;
+                         text.min: 1 1;
+                  }
+               }
+               part { name: "elm.swallow.end";
+                  type: SWALLOW;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         visible: 0;
+                         align: 1.0 0.5;
+                         rel1 {
+                                relative: 1.0 0.0;
+                                to_y: "elm.swallow.bar";
+                         }
+                         rel2 {
+                                relative: 1.0 1.0;
+                                to_y: "elm.swallow.bar";
+                         }
+                  }
+                  description { state: "visible" 0.0;
+                         inherit: "default" 0.0;
+                         visible: 1;
+                         aspect: 1.0 1.0;
+                         aspect_preference: VERTICAL;
+                  }
+               }
+               part { name: "units";
+                  mouse_events: 0;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         visible: 0;
+                         rel1 {
+                                to_x: "elm.units";
+                         }
+                  }
+                  description { state: "visible" 0.0;
+                         inherit: "default" 0.0;
+                         visible: 1;
+                  }
+               }
+               part { name: "elm.units";
+                  type: TEXT;
+                  mouse_events: 0;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         visible: 0;
+                         fixed: 1 1;
+                         align: 1.0 0.5;
+                         rel1.to_x: "elm.swallow.end";
+                         rel2.relative: 0.0 1.0;
+                         rel2.to_x: "elm.swallow.end";
+                         color: SLIDER_UNITS_TEXT_COLOR_INC;
+                         text {
+                                font: "SLP:style=Bold";
+                                size: SLIDER_UNITS_TEXT_SIZE_INC;
+                                min: 0 0;
+                                align: 0.0 0.5;
+                                text_class: "slp_bold";
+                         }
+                  }
+                  description { state: "visible" 0.0;
+                         inherit: "default" 0.0;
+                         fixed: 1 1;
+                         visible: 1;
+                         text.min: 1 1;
+                  }
+               }
+               part { name: "elm.dragable.slider";
+                  type: GROUP;
+                  source: "elm/slider/horizontal/indicator/default";
+                  mouse_events: 1;
+                  scale: 1;
+                  dragable {
+                         x: 1 1 0;
+                         y: 0 0 0;
+                         confine: "bg";
+                  }
+                  description { state: "default" 0.0;
+                         min: SLIDER_INDICATOR_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
+                         fixed: 1 1;
+                         align: 0.5 0.5;
+                         color: 0 0 0 0;
+                  }
+               }
+               part { name: "disabler";
+                  type: RECT;
+                  mouse_events: 1;
+                  repeat_events: 0;
+                  scale: 1;
+                  description { state: "default" 0.0;
+                         visible: 0;
+                         color: 0 0 0 0;
+                  }
+                  description { state: "disabled" 0.0;
+                         inherit: "default" 0.0;
+                         visible: 1;
+                  }
+               }
+               part { name: "clipper";
+                  type: RECT;
+                  description { state: "default" 0.0;
+                         color: 255 255 255 255;
+                  }
+                  description { state: "disabled" 0.0;
+                         color: 255 255 255 102;
+                  }
+               }
+        }
+        programs {
+               program { name: "text_show";
+               signal: "elm,state,text,visible";
+               source: "elm";
+               action:  STATE_SET "visible" 0.0;
+               target: "elm.text";
+        }
+        program { name: "text_hide";
+               signal: "elm,state,text,hidden";
+               source: "elm";
+               action:  STATE_SET "default" 0.0;
+               target: "elm.text";
+        }
+        program { name: "icon_show";
+               signal: "elm,state,icon,visible";
+               source: "elm";
+               action:  STATE_SET "visible" 0.0;
+               target: "elm.swallow.icon";
+        }
+        program { name: "icon_hide";
+               signal: "elm,state,icon,hidden";
+               source: "elm";
+               action:  STATE_SET "default" 0.0;
+               target: "elm.swallow.icon";
+        }
+        program { name: "end_show";
+               signal: "elm,state,end,visible";
+               source: "elm";
+               action:  STATE_SET "visible" 0.0;
+               target: "elm.swallow.end";
+        }
+        program { name: "end_hide";
+               signal: "elm,state,end,hidden";
+               source: "elm";
+               action:  STATE_SET "default" 0.0;
+               target: "elm.swallow.end";
+        }
+        program { name: "units_show";
+               signal: "elm,state,units,visible";
+               source: "elm";
+               action:  STATE_SET "visible" 0.0;
+               target: "elm.units";
+               target: "units";
+        }
+        program { name: "units_hide";
+               signal: "elm,state,units,hidden";
+               source: "elm";
+               action:  STATE_SET "default" 0.0;
+               target: "elm.units";
+               target: "units";
+        }
+        program { name: "invert_on";
+               signal: "elm,state,inverted,on";
+               source: "elm";
+               script {
+                  set_invert_on();
+               }
+        }
+        program { name: "invert_off";
+               signal: "elm,state,inverted,off";
+               source: "elm";
+               script {
+                  set_invert_off();
+               }
+        }
+        program { name: "val_show";
+               signal: "mouse,down,*";
+               source: "elm.dragable.slider";
+               script {
+                  thumb_down();
+               }
+        }
+        program { name: "val_hide";
+               signal: "mouse,up,*";
+               source: "elm.dragable.slider";
+               script {
+                  thumb_up();
+               }
+        }
+        program { name: "slider_disable";
+               signal: "elm,state,disabled";
+               source: "elm";
+               action:  STATE_SET "disabled" 0.0;
+               target: "disabler";
+               target: "clipper";
+        }
+        program { name: "slider_enable";
+               signal: "elm,state,enabled";
+               source: "elm";
+               action:  STATE_SET "default" 0.0;
+               target: "disabler";
+               target: "clipper";
+        }
+  }
+}
+
diff --git a/layout/mp-square-view.edc b/layout/mp-square-view.edc
new file mode 100644 (file)
index 0000000..8349d7a
--- /dev/null
@@ -0,0 +1,594 @@
+#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
+
+#define SQUARE_AXIS_TEXT_FONT  "SLP:style=Bold"
+#define SQUARE_AXIS_TEXT_CLASS "slp_bold"
+
+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.82;to: "bg";}
+                       }
+               }
+
+               part {
+                       name : "options_bg";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               visible:0;
+                               fixed: 1 1;
+                               state: "default" 0.0;
+                               image { normal: "00_winset_control_toolbar_bg.png";}
+                               rel1 { relative: 0.0 0.82; 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: 720 690;
+                               max: 720 690;
+                               fixed: 0 1;
+                               align: 0.5 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;
+                   min: 640 640;
+                   max: 640 640;
+                   align: 0.5 0.5;
+                   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: SQUARE_AXIS_TEXT_FONT;
+                                       text_class: SQUARE_AXIS_TEXT_CLASS;
+                                       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: SQUARE_AXIS_TEXT_FONT;
+                                       text_class: SQUARE_AXIS_TEXT_CLASS;
+                                       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: SQUARE_AXIS_TEXT_FONT;
+                                       text_class: SQUARE_AXIS_TEXT_CLASS;
+                                       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: SQUARE_AXIS_TEXT_FONT;
+                                       text_class: SQUARE_AXIS_TEXT_CLASS;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "New";
+                               }
+                       }
+               }
+       }
+}
+
+group {
+       name: "mp_square_view_landscape";
+
+       images {
+               image:  "T02_square_cell_bg_horizontal.png" COMP;
+               image:  "T02_square_cell_press.png" COMP;
+       }
+
+       parts {
+               part {
+                       name: "square_bg";
+                       mouse_events: 0;
+                   type: RECT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   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_horizontal.png";}
+                   rel1 { relative: 0.0 0.01;}
+                   rel2 { relative: 1.005 1.0;}
+                       }
+               }
+
+               part {
+                   name: "gengrid";
+                   mouse_events: 1;
+                   type: SWALLOW;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   max: 455 455;
+                   align: 0.5 0.5;
+                   rel1 { relative: 0.0 0.0; to: square_bg;}
+                   rel2 { relative: 1.0 1.0; to: square_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: SQUARE_AXIS_TEXT_FONT;
+                                       text_class: SQUARE_AXIS_TEXT_CLASS;
+                                       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: SQUARE_AXIS_TEXT_FONT;
+                                       text_class: SQUARE_AXIS_TEXT_CLASS;
+                                       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: SQUARE_AXIS_TEXT_FONT;
+                                       text_class: SQUARE_AXIS_TEXT_CLASS;
+                                       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: SQUARE_AXIS_TEXT_FONT;
+                                       text_class: SQUARE_AXIS_TEXT_CLASS;
+                                       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";
+            }
+         }
+      }
+   }
+}
+
+#define SQUARE_VIEW_BACK_BUTTON_W      104
+#define SQUARE_VIEW_BACK_BUTTON_H      74
+#define NAVIFRAME_TOOLBAR_BG_COLOR_INC 248 246 239 255
+
+group { name: "square_toolbar";
+       parts{
+               part { name: "base";
+                       type: RECT;
+                       mouse_events:  0;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 1.0;}
+                               color: NAVIFRAME_TOOLBAR_BG_COLOR_INC;
+                       }
+               }
+
+               part { name: "toolbar_button1";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1 { relative: 0.10 0.0; to: "base"; }
+                               rel2 { relative: 0.40 1.0; to: "base"; }
+                       }
+               }
+
+               part { name: "toolbar_button2";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               rel1 { relative: 0.50 0.0; to: "base"; }
+                               rel2 { relative: 0.80 1.0; to: "base"; }
+                       }
+               }
+
+               part { name: "prev_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min: SQUARE_VIEW_BACK_BUTTON_W SQUARE_VIEW_BACK_BUTTON_H;
+                               fixed: 1 1;
+                               align: 1.0 0.5;
+                               rel1 { relative: 1.0 0.0; to: "base"; }
+                               rel2 { relative: 1.0 1.0; to: "base"; }
+                       }
+               }
+       }
+}
diff --git a/layout/mp-toolbar.edc b/layout/mp-toolbar.edc
new file mode 100644 (file)
index 0000000..189d602
--- /dev/null
@@ -0,0 +1,1730 @@
+
+#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
new file mode 100644 (file)
index 0000000..bd8c8cc
--- /dev/null
@@ -0,0 +1,116 @@
+
+#define GENLIST_HEIGHT_1_INC 1
+#define GENLIST_HEIGHT_16_INC 16
+#define GENLIST_HEIGHT_33_INC 33
+#define GENLIST_HEIGHT_49_INC 49
+#define GENLIST_HEIGHT_62_INC 62
+#define GENLIST_HEIGHT_65_INC 65
+#define GENLIST_HEIGHT_73_INC 73
+#define GENLIST_HEIGHT_77_INC 77
+#define GENLIST_HEIGHT_89_INC 89
+#define GENLIST_HEIGHT_93_INC 93
+#define GENLIST_HEIGHT_97_INC 97
+#define GENLIST_HEIGHT_113_INC 113
+#define GENLIST_HEIGHT_129_INC 129
+#define GENLIST_HEIGHT_177_INC 177
+#define GENLIST_HEIGHT_182_INC 182
+#define GENLIST_HEIGHT_190_INC 190
+#define GENLIST_HEIGHT_207_INC 207
+#define GENLIST_HEIGHT_260_INC 260
+#define GENLIST_HEIGHT_291_INC 291
+#define GENLIST_HEIGHT_454_INC 454
+#define GENLIST_HEIGHT_566_INC 566
+
+#define GENLIST_PADDING_4_INC 4
+#define GENLIST_PADDING_5_INC 5
+#define GENLIST_PADDING_6_INC 6
+#define GENLIST_PADDING_8_INC 8
+#define GENLIST_PADDING_7_INC 7
+#define GENLIST_PADDING_10_INC 10
+#define GENLIST_PADDING_11_INC 11
+#define GENLIST_PADDING_12_INC 12
+#define GENLIST_PADDING_13_INC 13
+#define GENLIST_PADDING_14_INC 14
+#define GENLIST_PADDING_16_INC 16
+#define GENLIST_PADDING_18_INC 18
+#define GENLIST_PADDING_21_INC 21
+#define GENLIST_PADDING_22_INC 22
+#define GENLIST_PADDING_24_INC 24
+#define GENLIST_PADDING_27_INC 27
+#define GENLIST_PADDING_32_INC 32
+#define GENLIST_PADDING_34_INC 34
+#define GENLIST_PADDING_46_INC 46
+#define GENLIST_PADDING_48_INC 48
+#define GENLIST_PADDING_64_INC 64
+#define GENLIST_PADDING_74_INC 74
+#define GENLIST_PADDING_88_INC 88
+#define GENLIST_PADDING_124_INC 124
+
+#define GENLIST_FONT_27_INC 27
+#define GENLIST_FONT_28_INC 28
+#define GENLIST_FONT_30_INC 30
+#define GENLIST_FONT_32_INC 32
+#define GENLIST_FONT_STYLE_32_INC "32"
+#define GENLIST_FONT_36_INC 36
+#define GENLIST_FONT_STYLE_36_INC "36"
+#define GENLIST_FONT_40_INC 40
+#define GENLIST_FONT_STYLE_40_INC "40"
+#define GENLIST_FONT_42_INC 42
+#define GENLIST_FONT_STYLE_42_INC "42"
+#define GENLIST_FONT_44_INC 44
+#define GENLIST_FONT_STYLE_44_INC "44"
+#define GENLIST_FONT_48_INC 48
+#define GENLIST_FONT_STYLE_48_INC "48"
+
+#define GENLIST_SIZE_6_INC 6
+#define GENLIST_SIZE_8_INC 8
+#define GENLIST_SIZE_10_INC 10
+#define GENLIST_SIZE_13_INC 13
+#define GENLIST_SIZE_16_INC 16
+#define GENLIST_SIZE_18_INC 18
+#define GENLIST_SIZE_21_INC 21
+#define GENLIST_SIZE_32_INC 32
+#define GENLIST_SIZE_35_INC 35
+#define GENLIST_SIZE_38_INC 38
+#define GENLIST_SIZE_40_INC 40
+#define GENLIST_SIZE_42_INC 42
+#define GENLIST_SIZE_45_INC 45
+#define GENLIST_SIZE_48_INC 48
+#define GENLIST_SIZE_54_INC 54
+#define GENLIST_SIZE_56_INC 56
+#define GENLIST_SIZE_57_INC 57
+#define GENLIST_SIZE_61_INC 61
+#define GENLIST_SIZE_SLIDE_60_INC 60
+#define GENLIST_SIZE_64_INC 64
+#define GENLIST_SIZE_80_INC 80
+#define GENLIST_SIZE_90_INC 90
+#define GENLIST_SIZE_96_INC 96
+#define GENLIST_SIZE_112_INC 112
+#define GENLIST_SIZE_116_INC 116
+#define GENLIST_SIZE_128_INC 128
+#define GENLIST_SIZE_133_INC 133
+#define GENLIST_SIZE_141_INC 141
+#define GENLIST_SIZE_144_INC 144
+#define GENLIST_SIZE_154_INC 154
+#define GENLIST_SIZE_160_INC 160
+#define GENLIST_SIZE_163_INC 163
+#define GENLIST_SIZE_168_INC 168
+#define GENLIST_SIZE_174_INC 174
+#define GENLIST_SIZE_SLIDE_165_INC 165
+#define GENLIST_SIZE_176_INC 176
+#define GENLIST_SIZE_177_INC 177
+#define GENLIST_SIZE_192_INC 192
+#define GENLIST_SIZE_195_INC 195
+#define GENLIST_SIZE_206_INC 206
+#define GENLIST_SIZE_234_INC 234
+#define GENLIST_SIZE_235_INC 235
+#define GENLIST_SIZE_SLIDE_220_INC 220
+#define GENLIST_SIZE_390_INC 390
+#define GENLIST_SIZE_448_INC 448
+#define GENLIST_SIZE_560_INC 560
+#define GENLIST_SIZE_576_INC 576
+#define GENLIST_SIZE_672_INC 672
+
+#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
new file mode 100644 (file)
index 0000000..0afbbf7
--- /dev/null
@@ -0,0 +1,780 @@
+#define FONT_STYLE_ROMAN "SLP:style=Roman"
+#define FONT_STYLE_MEDIUM "SLP:style=Medium"
+#define FONT_STYLE_BOLD "SLP:style=Bold"
+#define FONT_STYLE_LIGHT "SLP:style=Light"
+#define FONT_STYLE_REGULAR "SLP:style=Regular"
+
+#define TEXT_CLASS_ROMAN    text_class: "slp_roman";
+#define TEXT_CLASS_MEDIUM   text_class: "slp_medium";
+#define TEXT_CLASS_BOLD     text_class: "slp_bold";
+#define TEXT_CLASS_REGULAR  text_class: "slp_regular";
+#define TEXT_CLASS_SLP      text_class: "slp";
+
+#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 ALBUM_GENLIST_PART_BASE \
+       images {\
+                 image:  "T02_album_bar.png" COMP;\
+         }\
+         part { name: "base";\
+             type: IMAGE;\
+             clip_to: "disclip";\
+             mouse_events: 0;\
+             description { state: "default" 0.0;\
+                 min: 0 108;\
+                 rel1 {\
+                   relative: 0.0 0.0;\
+                } \
+                rel2 { \
+                   relative: 1.0 1.0; \
+                } \
+                image { normal: "T02_album_bar.png"; }; \
+             } \
+          }
+
+#define MP_GENLIST_BG_COLOR  248 246 239 255;
+#define GENLIST_PART_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: MP_GENLIST_BG_COLOR;\
+            } \
+         }
+
+#define GENLIST_PART_BG_SELECTED_COLOR_INC 42 137 194 255
+#define GENLIST_PART_BG_UNSELECTED_COLOR_INC 0 0 0 0
+
+#define MP_BOTTOM_LINE_COLOR 169 169 169 255;
+
+#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_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_BG_IMAGE \
+         part { name: "bg_image"; \
+            type: RECT; \
+            clip_to: "disclip"; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: MP_GENLIST_BG_COLOR; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+            } \
+         }
+
+#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 110
+
+#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_DISCLIP \
+        part { name: "disclip"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_PART_DISCLIP_COLOR_INC; \
+            } \
+         }
+
+#define GENLIST_DESCRIPTION_FLIP_ENABLED \
+            description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            }
+#define GENLIST_DESCRIPTION_INVISIBLE_SELECTED \
+            description { state: "selected" 1.0; \
+               inherit: "default" 0.0; \
+               visible: 0; \
+            }
+#define GENLIST_PART_FLIP \
+         part { name: "elm.flip.content"; \
+            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: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         }
+ #define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_1TEXT \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               set_state(PART:"bg_image", "selected", 0.0); \
+               if (!strcmp(st, "flip_enabled")) \
+                  set_state(PART:"elm.text", "selected", 1.0); \
+               else \
+                  set_state(PART:"elm.text", "selected", 0.0); \
+            }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text.1", st, 30, vl); \
+               set_state(PART:"bg_image", "selected", 0.0); \
+               if (!strcmp(st, "flip_enabled")) { \
+                  set_state(PART:"elm.text.1", "selected", 1.0); \
+                  set_state(PART:"elm.text.2", "selected", 1.0); \
+               } \
+               else { \
+                  set_state(PART:"elm.text.1", "selected", 0.0); \
+                  set_state(PART:"elm.text.2", "selected", 0.0); \
+               } \
+            }
+
+#define GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text.1", st, 30, vl); \
+               set_state(PART:"bg_image", "selected", 0.0); \
+               if (!strcmp(st, "flip_enabled")) { \
+                  set_state(PART:"elm.text.1", "selected", 1.0); \
+                  set_state(PART:"elm.text.2", "selected", 1.0); \
+                  set_state(PART:"elm.text.3", "selected", 1.0); \
+               } \
+               else { \
+                  set_state(PART:"elm.text.1", "selected", 0.0); \
+                  set_state(PART:"elm.text.2", "selected", 0.0); \
+                  set_state(PART:"elm.text.3", "selected", 0.0); \
+               } \
+            }
+
+#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"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_1ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_2ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT_3ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_1ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_2ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+             target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_3ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_1ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_2ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_PROGRAM_FLIP_3TEXT_3ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.text.3"; \
+            target: "elm.icon.1"; \
+            target: "elm.icon.2"; \
+            target: "elm.icon.3"; \
+            target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
+         }
+
+#define GENLIST_EXPANDABLE_PART_PERSPECTIVE_POINT() \
+               part { name: "point"; \
+                       type: RECT; \
+                       scale: 1; \
+         description { \
+            state: "default" 0.0; \
+            color: 0 0 0 0; \
+            rel1 { relative: 0.0 0.0; } \
+            rel2 { relative: 1.0 0.0; } \
+         } \
+      }
+
+#define GENLIST_PART_MAP_START( param_x, param_y, param_z ) \
+               description { state: "map_transition" 0.0; \
+                   inherit: "default" 0.0; \
+                   color: 50 50 50 100; \
+                   map { \
+                      perspective: "point"; \
+                      on: 1; \
+                      smooth: 1; \
+                      perspective_on: 1; \
+                      backface_cull: 1; \
+                      rotation { \
+                         center: "point"; \
+                         x: param_x; \
+                         y: param_y; \
+                         z: param_z; \
+                      } \
+                  } \
+                } \
+                description { \
+                        state: "hide" 0.0; \
+                        inherit: "default" 0.0; \
+                        visible: 0; \
+                }
+
+#define GENLIST_PART_MAP_FINISH( param_x, param_y, param_z ) \
+                description { \
+                        state: "map_rotate" 0.0; \
+                        inherit: "default" 0.0; \
+                        map { \
+                                perspective: "point"; \
+                                on: 1; \
+                                smooth: 1; \
+                                perspective_on: 1; \
+                                backface_cull: 1; \
+                                rotation { \
+                                        center: "point"; \
+                                        x: param_x; \
+                                        y: param_y; \
+                                        z: param_z; \
+                                } \
+                       } \
+               } \
+
+#define GENLIST_EXPANDABLE_PART_BASE( GE_HEIGHT , GE_COLOR ) \
+         part { name: "base"; \
+            type: RECT; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 GE_HEIGHT; \
+               color: GE_COLOR; \
+            } \
+            description { state: "selected" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_PART_BOTTOM_EFFECT_LINE \
+         part { name: "bottom_line"; \
+            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; \
+               } \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_PART_DIALOGUE_ITEM \
+         part { name: "elm.rect.dialogue"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: GENLIST_PADDING_12_INC 0; \
+               fixed: 1 0; \
+               color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+               rel2.relative: 0.0 1.0; \
+               align: 0.0 0.0; \
+            } \
+         }
+
+#define GENLIST_PART_DIALOGUE_RIGHT_LINE \
+         part { name: "elm.rect.dialogue.right.line"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 1 0; \
+               fixed: 1 0; \
+               visible: 1; \
+               rel1 { \
+                  relative: 1.0  0.0; \
+                  offset: -1 0; \
+               } \
+               align: 1.0 0.0; \
+               color: GENLIST_PART_LIST_LINE_COLOR_INC; \
+            } \
+         }
+
+#define GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC 108 168 199 255
+#define GENLIST_PART_DIALOGUE_EXPANDABLE_ITEM \
+         part { name: "elm.rect.dialogue"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: GENLIST_PADDING_12_INC 0; \
+               fixed: 1 0; \
+               color: GENLIST_DIALOGUE_GROUP_LEFT_BG_COLOR_INC; \
+               rel2.relative: 0.0 1.0; \
+               align: 0.0 0.0; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_PART_EXPANDABLE_SWALLOW_PADDING \
+         part { name: "elm.swallow.pad"; \
+            type: SWALLOW; \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               align: 0.0 0.5; \
+               rel1 { \
+                  relative: 1.0 0.0;\
+                  to_x: "elm.padding.left"; \
+               } \
+               rel2.to_x: "elm.padding.left"; \
+            } \
+            GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \
+            GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \
+         }
+
+#define GENLIST_PROGRAM_MAP_ROTATE_EXPAND_START() \
+                name: "rotaion_transition"; \
+                signal: "flip_item"; \
+                action: STATE_SET "map_transition" 0.0; \
+                after: "rotation";
+
+#define GENLIST_PROGRAM_MAP_ROTATE_EXPAND_FINISH( second ) \
+                name: "rotation"; \
+                action: STATE_SET "map_rotate" 0.0; \
+                transition: LINEAR second; \
+                after: "rotation_end";
+
+#define GENLIST_PROGRAM_MAP_EXPAND_END() \
+                name: "rotation_end"; \
+                action: STATE_SET "default" 0.0;
+
+#define GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_START() \
+                name: "rotation_transition2"; \
+                signal: "elm,state,contract_flip"; \
+                action: STATE_SET "map_rotate" 0.0; \
+                after: "rotation2";
+
+#define GENLIST_PROGRAM_MAP_ROTATE_CONTRACT_FINISH( second ) \
+                name: "rotation2"; \
+                action: STATE_SET "map_transition" 0.0; \
+                transition: LINEAR second; \
+                after: "rotation3";
+
+#define GENLIST_PROGRAM_MAP_CONTRACT_END() \
+                name: "rotation3"; \
+                action: STATE_SET "hide" 0.0;
diff --git a/layout/music.edc b/layout/music.edc
new file mode 100644 (file)
index 0000000..0124172
--- /dev/null
@@ -0,0 +1,17 @@
+
+#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"
+       #include "mp-play-option.edc"
+
+}
diff --git a/layout/tizen-hd-inc.edc b/layout/tizen-hd-inc.edc
new file mode 100644 (file)
index 0000000..0e0d141
--- /dev/null
@@ -0,0 +1,1177 @@
+#define BG_DEFAULT_COLOR_INC 248 246 239 255
+#define BG_EDIT_MODE_COLOR_INC 248 246 239 255
+#define BG_GROUP_LIST_COLOR_INC 248 246 239 255
+#define BG_TRANSPARENT_COLOR_INC 0 0 0 0
+
+#define LAYOUT_BG_COLOR_INC 248 246 239 255
+#define LAYOUT_EDIT_MODE_BG_COLOR_INC 248 246 239 255
+#define LAYOUT_GROUP_LIST_BG_COLOR_INC 248 246 239 255
+#define LAYOUT_INDICATOR_HEIGHT_INC 60
+#define LAYOUT_INDICATOR_COLOR_INC 0 0 0 255
+
+#define NAVIFRAME_TITLE_BG_COLOR_INC 248 246 239 255
+#define NAVIFRAME_TOOLBAR_BG_COLOR_INC 248 246 239 255
+#define NAVIFRAME_TITLE_TOP_PADDING_INC 0 32
+#define NAVIFRAME_TITLE_TOOLBAR_TOP_PADDING_INC 0 33
+#define NAVIFRAME_TITLE_TOOLBAR_BOTTOM_PADDING_INC 0 8
+#define NAVIFRAME_TITLE_H_INC 111
+#define NAVIFRAME_TAB_TITLE_H_INC 165
+#define NAVIFRAME_TOOLBAR_HEIGHT_INC 98
+#define NAVIFRAME_TITLE_FUNC_BTN_SIZE_INC 68 68
+#define NAVIFRAME_PREV_FUNC_BTN_SIZE_INC 60 60
+#define NAVIFRAME_TITLE_TAB_H_INC 68
+#define NAVIFRAME_TITLE_TAB_LARGE_H_INC 111
+#define NAVIFRAME_TITLE_TAB_FONT_SIZE_INC 44
+#define NAVIFRAME_TITLE_TAB_TEXT_H_INC 87
+#define NAVIFRAME_TITLE_FONT_SIZE_INC 56
+#define NAVIFRAME_TITLE_SMALL_FONT_SIZE_INC 44
+#define NAVIFRAME_ICON_SIZE_INC 38 38
+#define NAVIFRAME_PADDING_INC 16 0
+#define NAVIFRAME_PADDING2_INC 18 0
+#define NAVIFRAME_PADDING3_INC 8 0
+#define NAVIFRAME_BOTTOM_TEXT_PADDING_INC 0 11
+#define NAVIFRAME_BOTTOM_RIGHT_PADDING_INC 26 11
+#define NAVIFRAME_BOTTOM_PADDING_INC 0 10
+#define NAVIFRAME_TOOLBAR_BUTTON_BG_PADDING_INC 115 0
+#define NAVIFRAME_TOOLBAR_BUTTONS_PADDING_INC 15
+#define NAVIFRAME_ICON_PADDING_INC 70 0
+#define NAVIFRAME_TITLE_TEXT_COLOR_INC 59 115 182 255
+#define NAVIFRAME_SUBTITLE_TEXT_COLOR_INC 59 115 182 255
+#define NAVIFRAME_SUBTITLE_FONT_SIZE_INC 32
+
+#define PROGRESSBAR_TITLE_FONT_SIZE_INC 28
+#define PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC 20
+
+#define POPUP_ITEM_BG_DEFAULT_MIN_INC 0 112
+#define POPUP_ITEM_LEFT_MIN_PADDING_INC 26 0
+#define POPUP_ITEM_RIGHT_MIN_PADDING_INC 26 0
+#define POPUP_ITEM_ICON_TEXT_PADDING_INC 16 0
+#define POPUP_ITEM_TEXT_DISABLED_COLOR_INC 128 128 128 255
+#define POPUP_ITEM_TEXT_DISABLED_VISIBLE_COLOR_INC 128 128 128 255
+
+#define POPUP_DEFAULT_TITLE_TEXT_COLOR_INC "#3b73b6"
+#define POPUP_DEFAULT_DESCRIPTION_TEXT_COLOR_INC "#000000"
+#define POPUP_DIM_BG_DEFAULT_COLOR_INC 0 0 0 0
+#define POPUP_DIM_BG_COLOR_INC 0 0 0 127
+#define POPUP_DIM_BG_CLICKED_COLOR_INC 0 0 0 127
+#define POPUP_DIM_BG_TRANS_COLOR_INC 0 0 0 0
+#define POPUP_DIM_BG_CLICKED_TRANS_COLOR_INC 0 0 0 50
+#define POPUP_CUSTOMSTYLE_TITLE_BOTTOM_LINE_COLOR_INC 70 82 102 255
+#define POPUP_CUSTOMSTYLE_TITLE_TEXT_COLOR_INC 80 147 182 255
+
+#define CTXPOPUP_WIDTH_MIN_INC 386
+#define CTXPOPUP_BUBBLE_BG_IMAGE_BORDER 22 22 20 28
+#define CTXPOPUP_SHADOW_LEFT_PADDING 10
+#define CTXPOPUP_SHADOW_RIGHT_PADDING 10
+#define CTXPOPUP_SHADOW_TOP_PADDING 8
+#define CTXPOPUP_SHADOW_BOTTOM_PADDING 16
+#define CTXPOPUP_CONTENT_PADDING 4
+#define CTXPOPUP_FRAME_CORNER_ARROW_PADDING 20
+#define CTXPOPUP_BG_COLOR_INC 0 0 0 0
+#define CTXPOPUP_BG_PRESS_COLOR_INC 42 137 194 255
+#define CTXPOPUP_MAIN_TEXT_UNREAD_COLOR_INC 255 255 255 255
+#define CTXPOPUP_MAIN_TEXT_PRESS_COLOR_INC 255 255 255 255
+#define CTXPOPUP_SEPARATOR_PXLINE_SIZE_INC 1
+#define CTXPOPUP_SEPARATOR_PADDING_INC 20
+#define CTXPOPUP_SEPARATOR_COLOR_INC 45 45 45 255
+#define CTXPOPUP_SEPARATOR2_COLOR_INC 91 91 91 255
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_1_COLOR_INC 45 45 45 255
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_2_COLOR_INC 91 91 91 255
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_MIN_SIZE_INC 1 74
+#define CTXPOPUP_HORIZONTAL_SEPARATOR_MAX_SIZE_INC 1 74
+#define CTXPOPUP_TP_BG_COLOR_INC 7 180 211 255
+#define CTXPOPUP_ITEM_TEXT_SIZE_INC 40
+#define CTXPOPUP_ITEM_MAIN_TEXT_SIZE_INC 32
+#define CTXPOPUP_ITEM_HEIGHT_INC 110
+#define CTXPOPUP_ITEM_HORIZONTAL_WIDTH_INC 128
+#define CTXPOPUP_ITEM_HORIZONTAL_HEIGHT_INC 96
+#define CTXPOPUP_ICON_WIDTH_INC 64
+#define CTXPOPUP_ICON_HEIGHT_INC 64
+#define CTXPOPUP_ICON_HORIZONTAL_WIDTH_INC 48
+#define CTXPOPUP_ICON_HORIZONTAL_HEIGHT_INC 48
+#define CTXPOPUP_ARROW_SIZE_INC 48 48
+#define CTXPOPUP_VERTICAL_ARROW_SIZE_INC 40 30
+#define CTXPOPUP_HORIZONTAL_ARROW_SIZE_INC 30 40
+#define CTXPOPUP_ITEM_TEXT_PADDING_INC 20
+#define CTXPOPUP_ITEM_ICON_PADDING_INC 16
+#define CTXPOPUP_IE_ARROW_SIZE_INC 52
+#define CTXPOPUP_IE_FONT_SIZE_INC 40
+#define CTXPOPUP_IE_ITEM_PADDING_INC 22
+#define CTXPOPUP_IE_ITEM_HEIGHT_INC 75
+#define CTXPOPUP_IE_CONTENT_WIDTH_MAX_INC 720
+#define CTXPOPUP_IE_ICON_WIDTH_INC 60
+#define CTXPOPUP_IE_ICON_HEIGHT_INC 60
+#define CTXPOPUP_TP_ARROW_SIZE_INC 30
+#define CTXPOPUP_TP_HEIGHT_INC 106
+#define CTXPOPUP_MORE_ITEM_PADDING_INC 24
+#define CTXPOPUP_MORE_ITEM_HEIGHT_INC 102
+#define CTXPOPUP_MORE_ICON_WIDTH_INC 72
+#define CTXPOPUP_MORE_ICON_HEIGHT_INC 72
+#define CTXPOPUP_MORE_ITEM_TEXT_SIZE_INC 40
+#define CTXPOPUP_MORE_SEPARATOR_PADDING_INC 20
+
+#define DISKSELECTOR_DF_FONT_COLOR_INC 255 255 255 178
+#define DISKSELECTOR_DF_FONT_MOUSE_DOWN_COLOR_INC 255 255 255 255
+#define DISKSELECTOR_DF_ITEM_MIN_SIZE_INC 70 106;
+#define DISKSELECTOR_DF_FONT_SIZE_INC 48
+#define DISKSELECTOR_DF_DATA_MIN_HEIGHT_INC "106"
+
+#define LABEL_TEXT_BLOCK_STYLE_COLOR_INC "#000000"
+#define LABEL_FONT_SIZE_INC 36
+#define LABEL_MIN_FONT_SIZE_INC 27
+#define LABEL_MAX_FONT_SIZE_INC 90
+
+#define GENGRID_FONT_STYLE_18_INC "26"
+#define GENGRID_PART_BG_COLOR_INC 0 0 0 0
+#define GENGRID_PART_REORDER_DEFAULT_BG_COLOR_INC 0 0 0 77
+#define GENGRID_PART_REORDER_BG_COLOR_INC 0 0 0 77
+#define GENGRID_PART_TEXTBLOCK_STYLE_COLOR_INC "#000000"
+#define GENGRID_PART_BACKGROUND_COLOR_INC 0 0 0 0
+#define GENGRID_EDIT_MODE_CHECK_TOP_RIGHT_INC 6 6
+#define GENGRID_EDIT_MODE_CHECK_SIZE_INC 54 54
+#define GENGRID_EDIT_MODE_CHECK_BG_COLOR_INC 0 0 0 154
+#define GENGRID_ITEM_CHECK_TOP_RIGHT_PADDING_INC 6 6
+
+#define GENGRID_DEFAULT_LEFT_TOP_PADDING_INC 2 2
+#define GENGRID_DEFAULT_RIGHT_BOTTOM_PADDING_INC 2 2
+#define GENGRID_DEFAULT_ITEM_BG_LEFT_TOP_PADDING_INC 1 1
+#define GENGRID_DEFAULT_ITEM_BG_RIGHT_BOTTOM_PADDING_INC 1 1
+#define GENGRID_DEFAULT_ITEM_REAL_BG_RIGHT_PADDING_INC 0 0
+#define GENGRID_DEFAULT_LEFT_TOP_FOCUS_PADDING_INC 2 2
+#define GENGRID_DEFAULT_RIGHT_BOTTOM_FOCUS_PADDING_INC 2 2
+
+#define GENGRID_LANDSCAPE_LEFT_TOP_PADDING_INC 5 5
+#define GENGRID_LANDSCAPE_RIGHT_BOTTOM_PADDING_INC 5 5
+#define GENGRID_LANDSCAPE_LEFT_TOP_FOCUS_PADDING_INC 4 4
+#define GENGRID_LANDSCAPE_RIGHT_BOTTOM_FOCUS_PADDING_INC 4 4
+#define GENGRID_LANDSCAPE_GRID_TEXT_LEFT_TOP_PADDING_INC 5 5
+#define GENGRID_LANDSCAPE_GRID_TEXT_RIGHT_BOTTOM_PADDING_INC 5 59
+#define GENGRID_LANDSCAPE_GRID_TEXT_LEFT_TOP_FOCUS_PADDING_INC 4 4
+#define GENGRID_LANDSCAPE_GRID_TEXT_RIGHT_BOTTOM_FOCUS_PADDING_INC 4 60
+
+#define GENGRID_GRID_TEXT_LEFT_TOP_PADDING_INC 2 2
+#define GENGRID_GRID_TEXT_RIGHT_BOTTOM_PADDING_INC 2 62
+#define GENGRID_GRID_TEXT_ITEM_BG_LEFT_TOP_PADDING_INC 1 1
+#define GENGRID_GRID_TEXT_ITEM_BG_RIGHT_BOTTOM_PADDING_INC 1 1
+#define GENGRID_GRID_TEXT_ITEM_REAL_BG_RIGHT_PADDING_INC 0 0
+#define GENGRID_GRID_TEXT_LEFT_TOP_FOCUS_PADDING_INC 2 2
+#define GENGRID_GRID_TEXT_RIGHT_BOTTOM_FOCUS_PADDING_INC 2 62
+
+#define GENGRID_GRID_TEXT2_LEFT_TOP_PADDING_INC 2 62
+#define GENGRID_GRID_TEXT2_RIGHT_BOTTOM_PADDING_INC 2 2
+#define GENGRID_GRID_TEXT2_ITEM_BG_LEFT_TOP_PADDING_INC 1 1
+#define GENGRID_GRID_TEXT2_ITEM_BG_RIGHT_BOTTOM_PADDING_INC 1 1
+#define GENGRID_GRID_TEXT2_ITEM_REAL_BG_RIGHT_PADDING_INC 0 0
+#define GENGRID_GRID_TEXT2_LEFT_TOP_FOCUS_PADDING_INC 2 62
+#define GENGRID_GRID_TEXT2_RIGHT_BOTTOM_FOCUS_PADDING_INC 2 2
+
+// Please do not use these !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#define GENLIST_PADDING_5_INC 5
+#define GENLIST_PADDING_24_INC 24
+#define GENLIST_PADDING_64_INC 64
+#define GENLIST_PADDING_88_INC 88
+#define GENLIST_PADDING_34_INC 34
+#define GENLIST_PADDING_32_INC 32
+#define GENLIST_PADDING_16_INC 16
+#define GENLIST_SIZE_80_INC 80
+
+#define BUBBLE_DISCLIP_COLOR                        255 255 255 102 // opacity 40%
+
+// List bg color
+#define GENLIST_LIST_BG_COLOR                       248 246 239 255
+#define GENLIST_DIALOGUE_BG_COLOR                   248 246 239 255
+#define GENLIST_LIST_PRESS_COLOR                    87 135 194 255
+#define GENLIST_LIST_DIM_COLOR                      219 217 212 255
+#define GENLIST_LIST_LINE1_COLOR                    211 209 203 255
+#define GENLIST_LIST_LINE2_COLOR                    255 255 255 255
+#define GENLIST_LIST_DIVIDER1_COLOR                 185 184 178 255
+#define GENLIST_LIST_DIVIDER2_COLOR                 255 255 255 255
+#define GENLIST_LIST_CENTERLINE1_COLOR              206 205 202 255
+#define GENLIST_SELECT_ALL_BG_COLOR                 220 218 211 255
+
+// Group Index
+#define GENLIST_GROUPINDEX_LIST_SIZE                     32
+#define GENLIST_GROUPINDEX_LIST_COLOR                    59 115 182 255
+#define GENLIST_GROUPINDEX_LIST_FOCUS_COLOR              255 255 255 255
+
+#define GENLIST_GROUPINDEX_LIST_BG_COLOR                 248 246 239 255
+#define GENLIST_GROUPINDEX_LIST_PRESS_COLOR              132 162 198 255
+#define GENLIST_GROUPINDEX_LINE_COLOR                    59 115 182 255
+#define GENLIST_GROUPINDEX_LINE_FOCUS_COLOR              255 255 255 255
+
+// Genlist Text
+#define GENLIST_LIST_MAIN_TEXT_SIZE                         44
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR                 0 0 0 255
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE           "#000000FF"
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR             0 0 0 102
+#define GENLIST_LIST_MAIN_TEXT_UNREAD_DIM_COLOR_STYLE       "#00000066"
+#define GENLIST_LIST_MAIN_TEXT_READ_COLOR                   128 128 128 255
+#define GENLIST_LIST_MAIN_TEXT_READ_DIM_COLOR               128 128 128 204
+#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR                  255 255 255 255
+#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE            "#FFFFFFFF"
+
+#define GENLIST_LIST_SUB_TEXT_SIZE                          32
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR                 128 128 128 255
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR_STYLE           "#808080FF"
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_DIM_COLOR             128 128 128 204
+#define GENLIST_LIST_SUB_TEXT_DEFAULT_DIM_COLOR_STYLE       "#808080CC"
+#define GENLIST_LIST_SUB_TEXT_SETTINGS_COLOR                59 115 182 255
+#define GENLIST_LIST_SUB_TEXT_SETTINGS_COLOR_STYLE          "#3B73B6FF"
+#define GENLIST_LIST_SUB_TEXT_SETTINGS_DIM_COLOR            59 115 182 76
+#define GENLIST_LIST_SUB_TEXT_SETTINGS_DIM_COLOR_STYLE      "#3B73B64C"
+#define GENLIST_LIST_SUB_TEXT_FOCUS_COLOR                   255 255 255 255
+#define GENLIST_LIST_SUB_TEXT_FOCUS_COLOR_STYLE             "#FFFFFFFF"
+
+#define GENLIST_CONTENTS_TEXT_SIZE                          28
+#define GENLIST_CONTENTS_TEXT_COLOR                         128 128 128 255
+#define GENLIST_CONTENTS_TEXT_COLOR_STYLE                   "#808080FF"
+
+#define GENLIST_LIST_BUBBLE_TEXT_SIZE                       32
+#define GENLIST_LIST_BUBBLE_TEXT_COLOR                      249 249 249 255
+
+// Dialogue group
+#define GENLIST_DIALOGUE_GROUP_TITLE_SIZE           32
+#define GENLIST_DIALOGUE_GROUP_TITLE_COLOR          59 115 182 255
+
+#define GENLIST_APPS_NAME_SIZE                          30
+#define GENLIST_APPS_NAME_COLOR                         128 128 128 255
+#define GENLIST_APPS_INC_SIZE                           30
+#define GENLIST_APPS_INC_COLOR                          0 0 0 255
+#define GENLIST_APPS_RATING_SIZE                        24
+#define GENLIST_APPS_RATING_COLOR                       128 128 128 255
+#define GENLIST_APPS_PRICE_SIZE                         24
+#define GENLIST_APPS_PRICE_ORIGINAL_COLOR               59 115 182 255
+#define GENLIST_APPS_PRICE_SALE_COLOR                   229 33 52 255
+#define GENLIST_APPS_PRICE_FREE_COLOR                   59 115 182 255
+
+#define DIALOGUE_PASSWORD_TITLE_SIZE                    32
+#define DIALOGUE_PASSWORD_TITLE_COLOR                   128 128 128 255
+
+#define GENLIST_DIALOGUE_GROUP_HELP_TEXT_SIZE           32
+#define GENLIST_DIALOGUE_GROUP_HELP_TEXT_COLOR_STYLE    "#808080FF"
+#define GENLIST_PART_MATCH_TAG_COLOR                    "+ color=#3F8DAD"
+
+#define BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_SHADOW_DIM_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_SHADOW_PRESSED_COLOR_INC 0 0 0 255
+
+#define BUTTON_NAVIFRAME_TEXT_SHADOW_NORMAL_COLOR_INC 255 255 255 255
+#define BUTTON_NAVIFRAME_TEXT_SHADOW_DIM_COLOR_INC 0 0 0 163
+
+#define BUTTON_TICKER_TEXT_SHADOW_NORMAL_COLOR_INC 0 0 0 127
+#define BUTTON_TICKER_TEXT_SHADOW_NORMAL_COLOR_INC 0 0 0 127
+
+#define BUTTON_NUMBER_TEXT_NORMAL_COLOR_INC 50 50 50 255
+#define BUTTON_NUMBER_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_NUMBER_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_NUMBER_TEXT_DISABLE_VISIBLE_COLOR_INC 50 50 50 76
+
+#define BUTTON_SEARCH_BUTTON_TEXT_NORMAL_COLOR_INC 58 58 58 255
+#define BUTTON_SEARCH_BUTTON_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_SEARCH_BUTTON_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_SEARCH_BUTTON_TEXT_DISABLED_COLOR_INC 58 58 58 76
+#define BUTTON_SEARCH_BUTTON_TEXT_SHADOW_PRESSED_COLOR_INC 0 0 0 153
+
+#define BUTTON_SEARCH_BUTTON_SEND_NORMAL_COLOR_INC 248 246 239 255
+#define BUTTON_SEARCH_BUTTON_SEND_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_SEARCH_BUTTON_SEND_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_SEARCH_BUTTON_SEND_DISABLED_COLOR_INC 248 246 239 76
+#define BUTTON_SEARCH_BUTTON_SEND_SHADOW_NORMAL_COLOR_INC 0 0 0 153
+
+#define BUTTON_SEARCH_BUTTON_CANCEL_NORMAL_COLOR_INC 248 246 239 255
+#define BUTTON_SEARCH_BUTTON_CANCEL_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_SEARCH_BUTTON_CANCEL_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_SEARCH_BUTTON_CANCEL_DISABLED_COLOR_INC 248 246 239 76
+#define BUTTON_SEARCH_BUTTON_CANCEL_SHADOW_NORMAL_COLOR_INC 0 0 0 153
+
+#define BUTTON_SEND_BUBBLE_TEXT_NORMAL_COLOR_INC 50 50 50 255
+#define BUTTON_SEND_BUBBLE_TEXT_PRESSED_COLOR_INC 50 50 50 255
+#define BUTTON_SEND_BUBBLE_TEXT_FOCUSED_COLOR_INC 50 50 50 255
+#define BUTTON_SEND_BUBBLE_TEXT_DISABLED_COLOR_INC 50 50 50 255
+#define BUTTON_SEND_BUBBLE_TEXT_SHADOW_NORMAL_COLOR_INC 255 255 255 153
+
+#define BUTTON_RECEIVE_BUBBLE_TEXT_NORMAL_COLOR_INC 248 246 239 255
+#define BUTTON_RECEIVE_BUBBLE_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_RECEIVE_BUBBLE_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_RECEIVE_BUBBLE_TEXT_DISABLED_COLOR_INC 248 246 239 255
+#define BUTTON_RECEIVE_BUBBLE_TEXT_SHADOW_NORMAL_COLOR_INC 0 0 0 153
+
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 50 50 50 255
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 50 50 50 76
+
+#define BUTTON_NAVIFRAME_TITLE1_NORMAL_COLOR_INC 77 77 77 255
+#define BUTTON_NAVIFRAME_TITLE1_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_NAVIFRAME_TITLE1_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_NAVIFRAME_TITLE1_DISABLED_COLOR_INC 58 58 58 76
+
+#define BUTTON_POPUP_BUTTON_TEXT_NORMAL_COLOR_INC 50 50 50 255
+#define BUTTON_POPUP_BUTTON_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_POPUP_BUTTON_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_POPUP_BUTTON_TEXT_DISABLED_COLOR_INC 50 50 50 76
+
+#define BUTTON_EXPAND_BUTTON_NORMAL_COLOR_INC 249 249 249 255
+#define BUTTON_EXPAND_BUTTON_PRESSED_COLOR_INC 249 249 249 255
+#define BUTTON_EXPAND_BUTTON_FOCUSED_COLOR_INC 249 249 249 255
+#define BUTTON_EXPAND_BUTTON_DISABLED_COLOR_INC 48 49 50 255
+
+#define BUTTON_DELETE_BUTTON_TEXT_NORMAL_COLOR_INC 248 246 239 255
+#define BUTTON_DELETE_BUTTON_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_DELETE_BUTTON_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_DELETE_BUTTON_TEXT_DISABLED_COLOR_INC 248 246 239 76
+
+#define BUTTON_SWEEP_BUTTON_TEXT_NORMAL_COLOR_INC 50 50 50 255
+#define BUTTON_SWEEP_BUTTON_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_SWEEP_BUTTON_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_SWEEP_BUTTON_TEXT_DISABLED_COLOR_INC 50 50 50 76
+
+#define BUTTON_DEFAULT_STYLE_BUTTON_TEXT_NORMAL_COLOR_INC 50 50 50 255
+#define BUTTON_DEFAULT_STYLE_BUTTON_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_DEFAULT_STYLE_BUTTON_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_DEFAULT_STYLE_BUTTON_TEXT_DISABLED_COLOR_INC 50 50 50 255
+
+#define BUTTON_CONTACT_BUTTON_BG_NORMAL_COLOR_INC 8 158 185 255
+#define BUTTON_CONTACT_BUTTON_BG_PRESSED_COLOR_INC 2 85 100 255
+
+#define BUTTON_CONTACT_BUTTON_TEXT_NORMAL_COLOR_INC 255 255 255 255
+#define BUTTON_CONTACT_BUTTON_TEXT_PRESSED_COLOR_INC 255 255 255 255
+#define BUTTON_CONTACT_BUTTON_TEXT_FOCUSED_COLOR_INC 255 255 255 255
+#define BUTTON_CONTACT_BUTTON_TEXT_DISABLED_COLOR_INC 255 255 255 76
+
+#if 0
+#define BUTTON_HIDDEN_BUTTON_TEXT_NORMAL_COLOR_INC 50 50 50 76
+#define BUTTON_HIDDEN_BUTTON_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_HIDDEN_BUTTON_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_HIDDEN_BUTTON_TEXT_DISABLED_COLOR_INC 106 106 106 255
+
+#define BUTTON_HIDDEN_BG_NORMAL_MIN_INC 12 74
+#define BUTTON_HIDDEN_BG_BORDER_INC 12 12 12 12
+#define BUTTON_HIDDEN_PADDING_MIN_INC 12 5
+#define BUTTON_HIDDEN_ICON_RECT_MIN_INC 0 38
+#define BUTTON_HIDDEN_PADDING_ICON_TEXT_VISIBLE_MIN_INC 16 0
+#define BUTTON_HIDDEN_ICON_ICONONLY_MIN_INC 38 38
+#define BUTTON_HIDDEN_TEXT_MIN_INC 90 36
+#define BUTTON_HIDDEN_FONT_SIZE_INC 36
+
+#define BUTTON_PICKER_TEXT_DEFAULT_COLOR_INC 249 249 249 255
+#define BUTTON_PICKER_TEXT_CLICKED_COLOR_INC 249 249 249 255
+#define BUTTON_PICKER_TEXT_DISABLED_COLOR_INC 48 49 50 255
+#define BUTTON_PICKER_TEXT_FOCUSED_COLOR_INC 249 249 249 255
+
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_BG_DEFAULT_MIN_INC 74 66
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_BG_DEFAULT_BORDER_INC 5 5 5 5
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_PADDING_MIN_INC 16 5
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_ICON_RECT_MIN_INC 0 56
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_PADDING_ICON_RECT_TEXT_MIN_INC 5 0
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_CONTENT_ICON_ONLY_MIN_INC 56 56
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_TEXT_FONT_SIZE_INC 32
+#define BUTTON_PICKER_PREV_TEXT_DEFAULT_TEXT_VISIBLE_MIN_INC 96 56
+
+#define BUTTON_PICKER_PREV_ICON_DEFAULT_BG_DEFAULT_MIN_MAX_INC 74 66
+#define BUTTON_PICKER_PREV_ICON_DEFAULT_BG_DEFAULT_BORDER_INC 5 5 5 5
+#define BUTTON_PICKER_PREV_ICON_DEFAULT_PADDING_MIN_INC 5 5
+#define BUTTON_PICKER_PREV_ICON_DEFAULT_IMAGE_MIN_MAX_INC 32 32
+
+#define BUTTON_PICKER_BAR_DEFAULT_BG_DEFAULT_MIN_INC 74 66
+#define BUTTON_PICKER_BAR_DEFAULT_BG_DEFAULT_IMAGE_BORDER_INC 5 5 5 5
+#define BUTTON_PICKER_BAR_DEFAULT_PADDING_MIN_INC 5 5
+#define BUTTON_PICKER_BAR_DEFAULT_ICON_RECT_DEFAULT_MIN_INC 0 56
+#define BUTTON_PICKER_BAR_DEFAULT_PADDING_ICON_RECT_TEXT_MIN_INC 5 0
+#define BUTTON_PICKER_BAR_DEFAULT_CONTENT_ICONONLY_MIN_INC 56 56
+#define BUTTON_PICKER_BAR_DEFAULT_TEXT_FONT_SIZE_INC 32
+#define BUTTON_PICKER_BAR_DEFAULT_TEXT_VISIBLE_MIN_INC 128 56
+
+#define BUTTON_NAVIFRAME_TITLE1_BG_BORDER_INC 5 5 5 5
+#define BUTTON_NAVIFRAME_TITLE1_BG_MIN_INC 74 70
+#define BUTTON_NAVIFRAME_TITLE1_PADDING_MIN_INC 28 0
+#define BUTTON_NAVIFRAME_TITLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_TITLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 8 0
+#define BUTTON_NAVIFRAME_TITLE1_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_TITLE1_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_TITLE1_FONT_SIZE_INC 32
+
+#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_MIN_INC 14 72
+#define BUTTON_NAVIFRAME_CENTER_BG_NORMAL_BORDER_INC 6 6 6 6
+#define BUTTON_NAVIFRAME_CENTER_PADDING_MIN_MAX_INC 16 2
+#define BUTTON_NAVIFRAME_CENTER_ICON_RECT_VISIBLE_MIN_SIZE 36 36
+#define BUTTON_NAVIFRAME_CENTER_PADDING_AFTER_ICON_VISIBLE_MIN_INC 6 0
+#define BUTTON_NAVIFRAME_CENTER_PADDING_BEFORE_TEXT_DEFAULT_MIN_INC 6 0
+#define BUTTON_NAVIFRAME_CENTER_SWALLOW_VISIBLE_MIN_MAX_INC 36 36
+#define BUTTON_NAVIFRAME_CENTER_SWALLOW_ICONONLY_MIN_MAX_INC 38 38
+#define BUTTON_NAVIFRAME_CENTER_TEXT_FONT_SIZE_INC 32
+#define BUTTON_NAVIFRAME_MULTILINE_TEXT_FONT_SIZE_INC 24
+#endif
+
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_NORMAL_COLOR_INC 255 255 255 255
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_DEFAULT_COLOR_INC 101 101 101 255
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_PRESSED_COLOR_INC 64 147 247 255
+#define BUTTON_NAVIFRAME_TITLE_ICON_CLIPPER_DISABLED_COLOR_INC 101 101 101 76
+
+#define BUTTON_TEXT_CONTACTS_DELETE_NORMAL_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_CONTACTS_DELETE_PRESSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_CONTACTS_DELETE_DISABLED_COLOR_INC 0 0 0 128
+
+#define BUTTON_NAVIFRAME_TITLE_TEXT_NORMAL_COLOR_INC 77 77 77 255
+#define BUTTON_NAVIFRAME_TITLE_TEXT_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_NAVIFRAME_TITLE_TEXT_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_NAVIFRAME_TITLE_TEXT_DISABLED_COLOR_INC 58 58 58 76
+
+#define BUTTON_NAVIFRAME_BG_COLOR_PRESSED_INC 109 159 238 255
+
+#define BUTTON_NUMBERED_TEXT_NORMAL_COLOR_INC 249 249 249 255
+
+#define BUTTON_DATETIME_AMPM_BG_MIN_INC 106 56
+
+#define BUTTON_SEARCH_BUTTON_BG_BORDER_INC 12 12 12 12
+#define BUTTON_SEARCH_BUTTON_BG_MIN_INC 100 66
+#define BUTTON_SEARCH_BUTTON_VISIBLE_BG_MIN_INC 148 66
+#define BUTTON_SEARCH_BUTTON_ICONONLY_BG_MIN_INC 66 66
+#define BUTTON_SEARCH_BUTTON_TEXT_FONT_SIZE_INC 30
+
+#define BUTTON_BUBBLE_CIRCLE_BG_MIN_MAX_INC 74 74
+#define BUTTON_BUBBLE_CIRCLE_IMAGE_MIN_MAX_INC 74 74
+#define BUTTON_BUBBLE_CIRCLE_MIN_WIDTH_INC 74
+#define BUTTON_BUBBLE_CIRCLE_MIN_HEIGHT_INC 74
+
+#define BUTTON_SENT_BUBBLE_BG_BORDER_INC 12 12 12 12
+#define BUTTON_SENT_BUBBLE_TEXT_FONT_SIZE_INC 36
+#define BUTTON_SENT_BUBBLE_TEXT_MULTILINE_FONT_SIZE_INC 28
+
+#define BUTTON_RECEIVE_BUBBLE_BG_BORDER_INC 12 12 12 12
+#define BUTTON_RECEIVE_BUBBLE_TEXT_FONT_SIZE_INC 36
+#define BUTTON_RECEIVE_BUBBLE_TEXT_MULTILINE_FONT_SIZE_INC 28
+
+#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74
+#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 12 12 12 12
+#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 12 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 44 44
+#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 4 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 44 44
+#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 44 44
+#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 36
+
+#define BUTTON_TEXT_STYLE1_MULTILINE_BG_MIN_INC 100 80
+#define BUTTON_TEXT_STYLE1_MULTILINE_VISIBLE_BG_MIN_INC 148 80
+#define BUTTON_TEXT_STYLE1_MULTILINE_ICONONLY_BG_MIN_INC 74 80
+#define BUTTON_TEXT_STYLE1_MULTILINE_PADDING_MIN_INC 12 0
+#define BUTTON_TEXT_STYLE1_MULTILINE_FONT_SIZE_INC 28
+
+#define BUTTON_TEXT_STYLE2_BG_MIN_INC 100 74
+#define BUTTON_TEXT_STYLE2_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE2_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE2_BG_BORDER_INC 12 12 12 12
+#define BUTTON_TEXT_STYLE2_PADDING_MIN_INC 12 0
+#define BUTTON_TEXT_STYLE2_VISIBLE_ICON_RECT_MIN_MAX_INC 44 44
+#define BUTTON_TEXT_STYLE2_VISIBLE_PADDING_ICON_TEXT_MIN_INC 4 0
+#define BUTTON_TEXT_STYLE2_VISIBLE_ICON_MIN_MAX_INC 44 44
+#define BUTTON_TEXT_STYLE2_ICONONLY_ICON_MIN_MAX_INC 44 44
+#define BUTTON_TEXT_STYLE2_FONT_SIZE_INC 36
+
+#define BUTTON_TEXT_STYLE2_MULTILINE_BG_MIN_INC 100 80
+#define BUTTON_TEXT_STYLE2_MULTILINE_VISIBLE_BG_MIN_INC 148 80
+#define BUTTON_TEXT_STYLE2_MULTILINE_ICONONLY_BG_MIN_INC 74 80
+#define BUTTON_TEXT_STYLE2_MULTILINE_PADDING_MIN_INC 12 8
+#define BUTTON_TEXT_STYLE2_MULTILINE_FONT_SIZE_INC 28
+
+#define BUTTON_CONTACT_STYLE_BG_MIN_MAX_INC 74 74
+#define BUTTON_CONTACT_STYLE_IMAGE_MIN_MAX_INC 74 74
+
+#define BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC 74 74
+#define BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC 74 74
+#define BUTTON_CIRCLE_STYLE_CONTENT_MIN_MAX_INC 44 44
+
+#define BUTTON_CIRCLE_NORMAL_MIN_WIDTH_INC 74
+#define BUTTON_CIRCLE_NORMAL_MIN_HEIGHT_INC 74
+#define BUTTON_CIRCLE_EXTENEDED_MIN_WIDTH_INC 110
+#define BUTTON_CIRCLE_EXTENEDED_MIN_HEIGHT_INC 110
+
+#define BUTTON_POPUP_BG_NORMAL_MIN_INC 30 74
+#define BUTTON_POPUP_BG_BORDER_INC 12 12 12 12
+#define BUTTON_POPUP_PADDING_MIN_INC 12 3
+#define BUTTON_POPUP_PADDING_ICON_TEXT_VISIBLE_MIN_INC 8 0
+#define BUTTON_POPUP_ICON_ICONONLY_MIN_INC 44 44
+#define BUTTON_POPUP_TEXT_MIN_INC 64 20
+#define BUTTON_POPUP_TEXT_FONT_SIZE_INC 36
+
+#define BUTTON_POPUP_MULTILINE_BG_NORMAL_MIN_INC 30 80
+#define BUTTON_POPUP_MULTILINE_TEXT_FONT_SIZE_INC 28
+#define BUTTON_POPUP_MULTILINE_PADDING_MIN_INC 12 0
+
+#define BUTTON_EDIT_STYLE_BG_NORMAL_MIN_MAX_INC 74 74
+#define BUTTON_EDIT_STYLE_IMAGE_NORMAL_MIN_MAX_INC 74 74
+
+#define BUTTON_EDIT_NORMAL_MIN_WIDTH_INC 74
+#define BUTTON_EDIT_NORMAL_MIN_HEIGHT_INC 74
+#define BUTTON_EDIT_EXTENDED_MIN_WIDTH_INC 90
+#define BUTTON_EDIT_EXTENDED_MIN_HEIGHT_INC 90
+
+#define BUTTON_SWEEP_BG_NORMAL_MIN_INC 26 74
+#define BUTTON_SWEEP_BG_BORDER_INC 12 12 12 12
+#define BUTTON_SWEEP_PADDING_MIN_INC 12 0
+#define BUTTON_SWEEP_ICON_RECT_MIN_INC 0 44
+#define BUTTON_SWEEP_PADDING_ICON_TEXT_VISIBLE_MIN_INC 8 0
+#define BUTTON_SWEEP_ICONONLY_ICON_MIN_INC 44 44
+#define BUTTON_SWEEP_TEXT_MIN_INC 90 26
+#define BUTTON_SWEEP_FONT_SIZE_INC 26
+
+#define BUTTON_EXPAND_BUTTON_TEXT_SIZE_INC 30
+
+#define BUTTON_EXPANDABLE_NUMBER_BG_NORMAL_MIN_MAX_INC 98 46
+#define BUTTON_EXPANDABLE_NUMBER_BG_BORDER_INC 12 12 12 12
+#define BUTTON_EXPANDABLE_NUMBER_PADDING_MIN_INC 12 1
+#define BUTTON_EXPANDABLE_NUMBER_ICON_RECT_EXPAND_MIN_MAX_INC 24 46
+#define BUTTON_EXPANDABLE_NUMBER_TEXT_MIN_MAX_INC 50 46
+#define BUTTON_EXPANDABLE_NUMBER_FONT_SIZE_INC 28
+
+#define BUTTON_CONTACT_DELETE_BG_NORMAL_MIN_INC 50 74
+#define BUTTON_CONTACT_DELETE_BG_BORDER_INC 8 0 5 5
+#define BUTTON_CONTACT_DELETE_PADDING_LEFT_TOP_MIN_INC 36 2
+#define BUTTON_CONTACT_DELETE_PADDING_RIGHT_BOTTOM_MIN_INC 14 2
+#define BUTTON_CONTACT_DELETE_PADDING_ICON_TEXT_VISIBLE_MIN_INC 5 0
+#define BUTTON_CONTACT_DELETE_ICON_ICONONLY_MIN_INC 42 42
+#define BUTTON_CONTACT_DELETE_FONT_SIZE_INC 32
+
+#define BUTTON_CONTACT_BG_MIN_INC 30 48
+#define BUTTON_CONTACT_BG_BORDER_INC 12 16 0 0
+#define BUTTON_CONTACT_LEFT_PADDING_MIN_INC 28 0
+#define BUTTON_CONTACT_RIGHT_PADDING_MIN_INC 16 0
+#define BUTTON_CONTACT_FONT_SIZE_INC 36
+
+#define BUTTON_NAVIFRAME_BACK_BUTTON_BG_MIN_MAX_INC 98 98
+#define BUTTON_NAVIFRAME_BACK_BUTTON_MIN_MAX_INC 60 60
+
+#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255
+#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255
+
+#define BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC 68 68
+#define BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC 68 68
+
+#define BUTTON_NAVIFRAME_TITLE_ICON_BG_NORMAL_MIN_INC 60 60
+#define BUTTON_NAVIFRAME_TITLE_ICON_MORE_MIN_WIDTH_INC 60
+#define BUTTON_NAVIFRAME_TITLE_ICON_MORE_MIN_HEIGHT_INC 60
+#define BUTTON_NAVIFRAME_TITLE_ICON_PLUS_MIN_WIDTH_INC 68
+#define BUTTON_NAVIFRAME_TITLE_ICON_PLUS_MIN_HEIGHT_INC 68
+#define BUTTON_NAVIFRAME_TITLE_ICON_CANCEL_MIN_WIDTH_INC 60
+#define BUTTON_NAVIFRAME_TITLE_ICON_CANCEL_MIN_HEIGHT_INC 60
+#define BUTTON_NAVIFRAME_TITLE_ICON_EDIT_MIN_WIDTH_INC 68
+#define BUTTON_NAVIFRAME_TITLE_ICON_EDIT_MIN_HEIGHT_INC 68
+#define BUTTON_NAVIFRAME_TITLE_ICON_PREV_MIN_WIDTH_INC 60
+#define BUTTON_NAVIFRAME_TITLE_ICON_PREV_MIN_HEIGHT_INC 60
+
+#define BUTTON_NAVIFRAME_TITLE_TEXT_BG_NORMAL_MIN_INC 182 70
+#define BUTTON_NAVIFRAME_TITLE_TEXTBLOCK_MIN_INC 126 70
+#define BUTTON_NAVIFRAME_TITLE_TEXT_BG_PRESSED_BORDER_INC 36 36 0 0
+#define BUTTON_NAVIFRAME_TITLE_TEXT_PADDING_MIN_INC 28 5
+#define BUTTON_NAVIFRAME_TITLE_TEXT_FONT_SIZE_INC 32
+#define BUTTON_NAVIFRAME_TITLE_VISIBLE_ICON_RECT_MIN_MAX_INC 44 44
+#define BUTTON_NAVIFRAME_TITLE_ICONONLY_ICON_MIN_MAX_INC 44 44
+#define BUTTON_NAVIFRAME_TITLE_VISIBLE_PADDING_ICON_TEXT_MIN_INC 8 0
+#define BUTTON_NAVIFRAME_TITLE_TEXT_BG_NORMAL_COLOR_INC 249 249 249 255
+
+#define BUTTON_NAVIFRAME_MORE_BG_MIN_MAX_INC 98 98
+#define BUTTON_NAVIFRAME_MORE_DEFAULT_IMAGE_MIN_MAX_INC 60 60
+
+#define BUTTON_TICKERNOTI_BG_MIN_MAX_INC 154 74
+#define BUTTON_TICKERNOTI_BG_BORDER_INC 12 12 12 12
+#define BUTTON_TICKERNOTI_PADDING_MIN_INC 12 0
+#define BUTTON_TICKERNOTI_VISIBLE_ICON_RECT_MIN_MAX_INC 44 44
+#define BUTTON_TICKERNOTI_VISIBLE_PADDING_ICON_TEXT_MIN_INC 4 0
+#define BUTTON_TICKERNOTI_VISIBLE_ICON_MIN_MAX_INC 44 44
+#define BUTTON_TICKERNOTI_ICONONLY_ICON_MIN_MAX_INC 44 44
+#define BUTTON_TICKERNOTI_FONT_SIZE_INC 36
+
+#define BUTTON_COLORSELECTOR_BG_DEFAULT_MIN_INC 74 74
+#define BUTTON_COLORSELECTOR_BG_BORDER_INC 12 12 12 12
+#define BUTTON_COLORSELECTOR_IMAGE_MIN_MAX_INC 74 74
+
+#define BUTTON_DEFAULT_STYLE_BG_MIN_INC 100 74
+#define BUTTON_DEFAULT_STYLE_BG_BORDER_INC 12 12 12 12
+#define BUTTON_DEFAULT_STYLE_PADDING_MIN_INC 12 5
+#define BUTTON_DEFAULT_STYLE_PADDING_ICON_TEXT_VISIBLE_MIN_INC 8 0
+#define BUTTON_DEFAULT_STYLE_ICONONLY_ICON_MIN_INC 44 44
+#define BUTTON_DEFAULT_STYLE_TEXT_MIN_INC 144 36
+#define BUTTON_DEFAULT_STYLE_FONT_SIZE_INC 36
+
+#define BUTTON_DEFAULT_STYLE_MULTILINE_BG_MIN_INC 100 80
+#define BUTTON_DEFAULT_STYLE_MULTILINE_PADDING_MIN_INC 12 0
+
+#define CHECK_DELETE_TEXT_DELETE_NORMAL_COLOR_INC 249 249 249 255
+#define CHECK_DELETE_TEXT_DELETE_PRESS_COLOR_INC 249 249 249 255
+
+#define CHECK_DEFAULT_TEXT_FONT_SIZE_INC 36
+
+#define CHECK_ONOFF_BG_NORMAL_MIN_MAX_INC 132 70
+#define CHECK_ONOFF_ON_FONT_SIZE_INC 24
+#define CHECK_ONOFF_OFF_FONT_SIZE_INC 24
+
+#define CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_WIDTH_INC 74
+#define CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC 74
+#define CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE_MIN_WIDTH_INC 100
+#define CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE_MIN_HEIGHT_INC 100
+#define CHECK_STYLE_FAVORITE_BG_NORMAL_MIN_MAX_INC 74 74
+
+#define CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_WIDTH_INC 64
+#define CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC 64
+#define CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_WIDTH_INC 75
+#define CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_HEIGHT_INC 91
+#define CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC 64 64
+
+#define CHECK_STYLE_DELETE_BUTTON_BG_IMAGE_MIN_MAX_WIDTH_INC 74 74
+#define CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_IMAGE_MIN_MAX_WIDTH_INC 124 74
+#define CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_BORDER_INC 8 0 5 5
+#define CHECK_STYLE_DELETE_BUTTON_TEXT_FONT_SIZE_INC 32
+
+#define INDEX_BG_NINEPATCH_INC 8 8 8 8
+#define INDEX_ITEM_WIDTH_INC 49
+#define INDEX_ITEM_HEIGHT_INC 33
+#define INDEX_LEVEL_PADDING_INC 70
+#define INDEX_1ST_LEVEL_POPUP_WIDTH_INC 188
+#define INDEX_2ND_LEVEL_POPUP_WIDTH_INC 188
+#define INDEX_POPUP_HEIGHT_INC 180
+#define INDEX_ROLLOVER_TEXT_SIZE_INC 26
+#define INDEX_POPUP_BG_NINEPATCH_INC 20 20 20 20
+#define INDEX_POPUP_TEXT_SIZE_INC 136
+#define INDEX_ROLLOVER_TEXT_COLOR_INC 160 159 154 255
+#define INDEX_ROLLOVER_ACTIVE_TEXT_COLOR_INC 59 115 182 255
+#define INDEX_POPUP_TEXT_COLOR_INC 255 255 255 255
+#define INDEX_SCROLL_BG_COLOR_INC 230 227 216 255
+#define INDEX_BOTTOM_LINE_COLOR_INC 197 194 183 255
+#define INDEX_LEFT_LINE_COLOR_INC 65 119 184 255
+
+#define INDEX_PAGECONTROL_IND_INC 10 9
+#define INDEX_PAGECONTROL_IND_MIN_INC 10 9
+#define INDEX_PAGECONTROL_FONT_SIZE_INC 28
+#define INDEX_PAGECONTROL_FONT_COLOR_INC 120 120 120
+
+#define RADIO_STYLE_DEFAULT_BG_IMAGE_MIN_WIDTH_INC 64
+#define RADIO_STYLE_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC 64
+#define RADIO_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_WIDTH_INC 76
+#define RADIO_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_WIDTH_INC 76
+#define RADIO_STYLE_DEFAULT_BG_MIN_MAX_INC 64 64
+#define RADIO_STYLE_DEFAULT_FONT_SIZE_INC 36
+
+#define PANES_STYLE_DEFAULT_MOVABLE_SIZE_INC 60
+#define PANES_STYLE_DEFAULT_PADDING_LEFT_SIZE_INC 25
+#define PANES_STYLE_DEFAULT_PADDING_RIGHT_SIZE_INC 22
+#define PANES_STYLE_DEFAULT_MIDDLE_SIZE_INC 26
+#define PANES_STYLE_DEFAULT_FIXED_SIZE_INC 52
+
+#define SEGMENT_CONTROL_DEFAULT_ITEM_TEXT_COLOR_NORMAL_INC 153 153 153 255
+#define SEGMENT_CONTROL_ITEM_TITLE_TEXT_COLOR_PRESSED_INC 59 115 182 255
+#define SEGMENT_CONTROL_ITEM_TITLE_TEXT_COLOR_SELECTED_INC 59 115 182 255
+#define SEGMENT_CONTROL_ITEM_TITLE_TEXT_COLOR_DISABLED_INC 153 153 153 255
+
+#define SEGMENT_CONTROL_MULTILINE_TEXT_SIZE_INC 30
+#define SEGMENT_CONTROL_TEXT_SIZE_RANGE_MIN_INC 12
+#define SEGMENT_CONTROL_TEXT_SIZE_RANGE_MAX_INC 28
+#define SEGMENT_CONTROL_DIVIDER_LINE_MIN_SIZE_INC 2 32
+#define SEGMENT_CONTROL_TEXT_PADDING_MIN_SIZE_INC 18 0
+#define SEGMENT_CONTROL_VISIBLE_ICON_RECT_MIN_MAX_INC 40 40
+#define SEGMENT_CONTROL_BADGE_TEXT_LEFT_PADDING_MIN_INC 22 45
+#define SEGMENT_CONTROL_BADGE_TEXT_RIGHT_PADDING_MIN_INC 18 47
+#define SEGMENT_CONTROL_BADGE_TEXT_COLOR_INC 10 100 208 255;
+#define SEGMENT_CONTROL_BADGE_TEXT_FONT_SIZE_INC 26;
+
+#define EDITFIELD_TITLE_SIZE_INC 32
+#define EDITFIELD_TITLE_COLOR_INC 42 137 194 255
+#define EDITFIELD_GUIDE_TEXT_COLOR_INC 121 131 138 255
+#define EDITFIELD_DEFAULT_ERASER_MINW_INC 48
+#define EDITFIELD_DEFAULT_ERASER_MINH_INC 48
+#define EDITFIELD_DEFAULT_ERASER_EVENT_MINW_INC 48
+#define EDITFIELD_DEFAULT_ERASER_EVENT_MINH_INC 70
+#define EDITFIELD_SEARCHBAR_ERASER_MINW_INC 38
+#define EDITFIELD_SEARCHBAR_ERASER_MINH_INC 38
+#define EDITFIELD_SEARCHBAR_ERASER_EVENT_MINW_INC 38
+#define EDITFIELD_SEARCHBAR_ERASER_EVENT_MINH_INC 50
+#define EDITFIELD_DEFAULT_MINH_INC 112
+#define EDITFIELD_TITLE_MINH_INC 128
+#define EDITFIELD_SEARCHBAR_MINH_INC 50
+#define EDITFIELD_DEFAULT_TOP1_SINGLE_INC 27
+#define EDITFIELD_DEFAULT_TOP1_MULTI_INC 56
+#define EDITFIELD_DEFAULT_TOP2_INC 8
+#define EDITFIELD_DEFAULT_LEFT1_INC 0
+#define EDITFIELD_DEFAULT_LEFT2_INC 0
+#define EDITFIELD_DEFAULT_LEFT3_INC 1
+#define EDITFIELD_DEFAULT_RIGHT1_ERASER_SHOW_INC 56
+#define EDITFIELD_DEFAULT_RIGHT2_INC 0
+#define EDITFIELD_DEFAULT_BOTTOM1_SINGLE_INC 25
+#define EDITFIELD_DEFAULT_BOTTOM1_MULTI_INC 8
+#define EDITFIELD_DEFAULT_BOTTOM2_SINGLE_INC 32
+#define EDITFIELD_DEFAULT_BOTTOM2_MULTI_INC 12
+#define EDITFIELD_DEFAULT_BOTTOM3_SINGLE_INC 85
+#define EDITFIELD_DEFAULT_BOTTOM3_MULTI_INC 60
+#define EDITFIELD_SEARCHBAR_TOP1_SINGLE_INC 6
+#define EDITFIELD_SEARCHBAR_TOP1_MULTI_INC 10
+#define EDITFIELD_SEARCHBAR_TOP2_INC 10
+#define EDITFIELD_SEARCHBAR_LEFT1_INC 0
+#define EDITFIELD_SEARCHBAR_LEFT2_INC 0
+#define EDITFIELD_SEARCHBAR_LEFT3_INC 1
+#define EDITFIELD_SEARCHBAR_RIGHT1_ERASER_SHOW_INC 56
+#define EDITFIELD_SEARCHBAR_RIGHT2_INC 5
+#define EDITFIELD_SEARCHBAR_BOTTOM1_SINGLE_INC 8
+#define EDITFIELD_SEARCHBAR_BOTTOM1_MULTI_INC 2
+#define EDITFIELD_SEARCHBAR_BOTTOM2_SINGLE_INC 16
+#define EDITFIELD_SEARCHBAR_BOTTOM2_MULTI_INC 2
+#define EDITFIELD_SEARCHBAR_BOTTOM3_SINGLE_INC 50
+#define EDITFIELD_SEARCHBAR_BOTTOM3_MULTI_INC 50
+
+#define BUTTON_TICKERNOTI_NORMAL_COLOR_INC        225 215 215 255
+#define BUTTON_TICKERNOTI_PRESSED_COLOR_INC       248 246 239 255
+#define BUTTON_TICKERNOTI_DISABLED_COLOR_INC      225 215 215 76
+
+#define BUTTON_DISCLIP_NORMAL_COLOR_INC           255 255 255 255
+#define BUTTON_DISCLIP_DISABLED_COLOR_INC         255 255 255 76
+
+#define CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC        50 50 50 255
+#define CHECK_DEFAULT_TEXT_PRESSED_COLOR_INC      248 246 239 255
+#define CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC          50 50 50 76
+#define CHECK_DISCLIP_NORMAL_COLOR_INC             255 255 255 255
+#define CHECK_DISCLIP_DISABLED_COLOR_INC           255 255 255 76
+
+#define RADIO_DEFAULT_TEXT_NORMAL_COLOR_INC        50 50 50 255
+#define RADIO_DEFAULT_TEXT_PRESSED_COLOR_INC       248 246 239 255
+#define RADIO_DEFAULT_TEXT_DISABLED_COLOR_INC      50 50 50 76
+#define RADIO_DISCLIP_NORMAL_COLOR_INC             255 255 255 255
+#define RADIO_DISCLIP_DISABLED_COLOR_INC           255 255 255 76
+
+#define CONTROLBAR_LARGE_HEIGHT_INC 122
+#define CONTROLBAR_SMALL_HEIGHT_INC 114
+#define CONTROLBAR_WIDTH_INC 122
+#define CONTROLBAR_SEPARATEBAR_DARK_COLOR_INC 23 34 38 255
+#define CONTROLBAR_SEPARATEBAR_BRIGHT_COLOR_INC 58 68 74 255
+
+#define MULTIBUTTONENTRY_NORMAL_BUTTON_COLOR_INC 8 158 185 255
+#define MULTIBUTTONENTRY_PRESSED_BUTTON_COLOR_INC 2 85 100 255
+#define MULTIBUTTONENTRY_LABEL_TEXT_COLOR_INC 102 102 102 255
+#define MULTIBUTTONENTRY_TEXT_COLOR_INC "#666666"
+#define MULTIBUTTONENTRY_GUIDETEXT_COLOR_INC 70 70 70 255
+#define MULTIBUTTONENTRY_BUTTON_TEXT_COLOR_INC "#FFFFFF"
+#define MULTIBUTTONENTRY_WIDTH_PAD_INC 26
+#define MULTIBUTTONENTRY_HEIGHT_PAD_INC 13
+#define MULTIBUTTONENTRY_BUTTON_MAX_SIZE_INC 330
+#define MULTIBUTTONENTRY_BUTTON_BASE_SIZE_INC 64
+#define MULTIBUTTONENTRY_BUTTON_NINEPATCH_INC 12 16 0 0
+#define MULTIBUTTONENTRY_BUTTON_TOP_BUTTOM_PAD_INC 8
+#define MULTIBUTTONENTRY_BUTTON_LEFT_INNER_PAD_INC 24
+#define MULTIBUTTONENTRY_BUTTON_RIGHT_INNER_PAD_INC 16
+#define MULTIBUTTONENTRY_BUTTON_RIGHT_PAD_INC 27
+#define MULTIBUTTONENTRY_BUTTON_TEXT_SIZE_INC 32
+#define MULTIBUTTONENTRY_GUIDETEXT_SIZE_INC 36
+#define MULTIBUTTONENTRY_CLOSEDBUTTON_SIZE_INC 1
+#define MULTIBUTTONENTRY_CLOSEDBUTTON_AREA_HEIGHT_INC 60
+#define MULTIBUTTONENTRY_LABEL_RIGHT_PAD_INC 26
+#define MULTIBUTTONENTRY_LABEL_TEXT_SIZE_INC 36
+#define MULTIBUTTONENTRY_LABEL_MIN_HEIGHT_INC 64
+
+#define SEARCHBAR_CANCEL_BUTTON_W_INC 136
+#define SEARCHBAR_CANCEL_BUTTON_WITH_PADDING_W_INC 150
+#define SEARCHBAR_CANCEL_BUTTON_WITH_DOUBLE_PADDING_W_INC 166
+#define SEARCHBAR_TOP_PADDING_INC 10
+#define SEARCHBAR_BOTTOM_PADDING_INC 10
+#define SEARCHBAR_HEIGHT_INC 66
+#define SEARCHBAR_LEFT_PADDING_INC 26
+#define SEARCHBAR_RIGHT_PADDING_INC 26
+#define SEARCHBAR_INPUTFIELD_BORDER_INC 9 9 9 9
+#define SEARCHBAR_LEFT_ICON_PADDING_INC 16
+#define SEARCHBAR_ICON_MIN_W_INC 44
+#define SEARCHBAR_ICON_MIN_H_INC 44
+#define SEARCHBAR_LEFT_PADDING_SEARCHFIELD_INC 16
+#define SEARCHBAR_RIGHT_PADDING_SEARCHFIELD_INC 8
+#define SEARCHBAR_SEARCH_TEXTFIELD_H_INC 60
+#define SEARCHBAR_H_INC 86
+
+#define SELECTION_INFO_BACKGROUND_COLOR_INC          68 68 68 255
+#define SELECTION_INFO_TEXT_COLOR_INC                255 255 255 255
+#define SELECTION_INFO_MIN_VER_W_INC                 720
+#define SELECTION_INFO_MIN_HORZ_W_INC                1280
+#define SELECTION_INFO_VER_PADDING_INC               48
+#define SELECTION_INFO_LEFT_PADDING_INC              16
+#define SELECTION_INFO_TEXT_FONT_SIZE_INC            32
+#define SELECTION_INFO_SHADOW_VER_W_INC              720
+#define SELECTION_INFO_SHADOW_VER_H_INC              10
+#define SELECTION_INFO_SHADOW_HORZ_W_INC             1280
+#define SELECTION_INFO_SHADOW_HORZ_H_INC             10
+#define SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC       150
+#define SELECTION_INFO_MIN_VER_BOTTOM_86_H_INC       186
+
+#define POPUP_DESCRIPTION_DEFAULT_TEXT_MIN_INC 648 0
+#define POPUP_DESCRIPTION_DEFAULT_TEXT_FONT_SIZE_INC 42
+
+#define POPUP_BASE_DEFAULT_BASE_DEFAULT_MIN_INC 720 0
+#define POPUP_BASE_DEFAULT_BASE_DEFAULT_MAX_INC 720 1120
+#define POPUP_BASE_DEFAULT_BG_DEFAULT_IMAGE_BORDER_INC 18 18 32 52
+#define POPUP_BASE_DEFAULT_TITLE_DEFAULT_MIN_INC 648 80
+#define POPUP_BASE_DEFAULT_TITLE_VOLUMEBAR_MIN_INC 720 68
+#define POPUP_BASE_DEFAULT_TITLE_DEFAULT_IMAGE_BORDER_INC 4 4 3 3
+#define POPUP_BASE_DEFAULT_PADDING_MIN_MAX_INC 16 0
+#define POPUP_BASE_DEFAULT_TITLE_ICON_DEFAULT_MIN_MAX_INC 64 64
+#define POPUP_BASE_DEFAULT_CONTENT_DEFAULT_MIN_MAX_INC 648 0
+#define POPUP_BASE_DEFAULT_BUTTON_BG_DEFAULT_MIN_INC 648 114
+#define POPUP_BASE_DEFAULT_BUTTON_BG_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_DEFAULT_TEXT_FONT_SIZE_INC 50
+
+#define POPUP_DESC_LEFT_PADDING 0
+#define POPUP_DESC_RIGHT_PADDING 0
+#define POPUP_DESC_TOP_PADDING 14
+#define POPUP_DESC_BOTTOM_PADDING 34
+#define POPUP_LABEL_DESC_TOP_PADDING 39
+#define POPUP_LABEL_DESC_BOTTOM_PADDING 39
+#define POPUP_TITLE_TOP_PADDING 18
+#define POPUP_TITLE_BOTTOM_PADDING 0
+#define POPUP_TITLE_ICON_TEXT_PADDING_INC 16 0
+
+#define POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC 20
+#define POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 36
+#define POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC 36
+#define POPUP_CONTENT_DEFAULT_PADDING_BOTTOM_MIN_INC 20
+#define POPUP_CONTENT_DEFAULT_CONTENT_DEFAULT_MIN_INC 648 0
+
+#define POPUP_BASE_CONTENT_EXPAND_BG_DEFAULT_MIN_INC 0 114
+#define POPUP_BASE_CONTENT_EXPAND_TITLE_DEFAULT_MIN_INC 0 80
+
+#define POPUP_BASE_VERTICAL_BUTTON_BASE_MIN_INC 648 0
+#define POPUP_BASE_VERTICAL_BUTTON_BASE_MAX_INC 648 1120
+#define POPUP_BASE_VERTICAL_BUTTON_BG_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_VERTICAL_BUTTON_TITLE_DEFAULT_MIN_INC 648 80
+#define POPUP_BASE_VERTICAL_BUTTON_TITLE_IMAGE_BORDER_MIN_INC 3 3 3 3
+#define POPUP_BASE_VERTICAL_BUTTON_TITLE_ICON_MIN_MAX_INC 64 64
+#define POPUP_BASE_VERTICAL_BUTTON_CONTENT_DEFAULT_MIN_INC 648 0
+#define POPUP_BASE_VERTICAL_BUTTON_BUTTONAREA_DEFAULT_MIN_INC 648 294
+
+#define POPUP_BUTTON3_VERTICAL_BUTTON_BG_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BUTTON3_VERTICAL_BUTTON_PADDING_TOP_MIN_INC 0 20
+#define POPUP_BUTTON_VERTICAL_ACTION_AREA_HEIGHT "294"
+#define POPUP_BUTTON3_VERTICAL_BUTTON_BUTTON_MIN_MAX_INC 394 74
+#define POPUP_BUTTON3_VERTICAL_BUTTON_PADDING_BUTTON_MIN_INC 0 16
+#define POPUP_BUTTON3_VERTICAL_BUTTON_PADDING_BUTTON_MAX_INC 9999 16
+
+#define POPUP_CONTENT_LISTSTYLE_PADDING_TOP_MIN_MAX_INC 3 3
+#define POPUP_CONTENT_LISTSTYLE_CONTENT_DEFAULT_MIN_INC 614 408
+#define POPUP_CONTENT_LISTSTYLE_PADDING_RIGHT_MIN_INC 3 0
+
+#define POPUP_CONTENT_MINSTYLE_CONTENT_DEFAULT_MIN_INC 614 0
+
+#define POPUP_BASE_CUSTOMSTYLE_BASE_DEFAULT_MIN_INC 620 0
+#define POPUP_BASE_CUSTOMSTYLE_BASE_DEFAULT_MAX_INC 620 1120
+#define POPUP_BASE_CUSTOMSTYLE_BG_DEFAULT_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_CUSTOMSTYLE_TITLE_DEFAULT_MIN_INC 620 64
+#define POPUP_BASE_CUSTOMSTYLE_TITLE_BOTTOM_LINE_MIN_INC 0 1
+#define POPUP_BASE_CUSTOMSTYLE_TITLE_ICON_DEFAULT_MIN_MAX_INC 62 62
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_DEFAULT_MIN_INC 620 0
+#define POPUP_BASE_CUSTOMSTYLE_BUTTONAREA_BG_DEFAULT_MIN_INC 620 96
+#define POPUP_BASE_CUSTOMSTYLE_BUTTONAREA_BG_IMAGE_BORDER_INC 3 3 3 3
+#define POPUP_BASE_CUSTOMSTYLE_TEXT_FONT_SIZE_INC 38
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_WIDTH_INC 620
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_HEIGHT_INC 146
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_SIDE_PADDING_INC 127
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_ENTRY_MIN_INC 82 82
+#define POPUP_BASE_CUSTOMSTYLE_CONTENT_CENTER_PADDING_MIN_INC 22
+#define POPUP_ENTRYPASSWORD_VIEW_BG_BORDER_INC 9 9 9 9
+
+#define POPUP_CONTENT_CUSTOMSTYLE_DEFAULT_MIN_INC 648 0
+#define POPUP_BUTTON_DEFAULT_ACTION_AREA_HEIGHT "114"
+#define POPUP_BUTTON1_DEFAULT_BUTTON1_DEFAULT_MIN_INC 394 74
+#define POPUP_BUTTON1_DEFAULT_BUTTON1_DEFAULT_MAX_INC 648 74
+#define POPUP_BUTTON2_DEFAULT_HEIGHT_INC 74
+#define POPUP_BUTTON2_DEFAULT_BUTTON_DEFAULT_MIN_MAX_INC 270 74
+#define POPUP_BUTTON2_DEFAULT_PADDING_BUTTON_MIN_MAX_INC 20 74
+#define POPUP_BUTTON2_DEFAULT_PADDING_LEFT_RIGHT_WIDTH_INC 36
+#define POPUP_BUTTON3_DEFAULT_HEIGHT_INC 74
+#define POPUP_BUTTON3_DEFAULT_BUTTON_DEFAULT_MIN_MAX_INC 202 74
+#define POPUP_BUTTON3_DEFAULT_PADDING_BUTTON_MIN_MAX_INC 20 74
+#define POPUP_BUTTON3_DEFAULT_PADDING_LEFT_RIGHT_WIDTH_INC 36
+
+#define POPUP_BASE_VOLUMEBAR_STYLE_BASE_DEFAULT_MIN_INC 720 0
+#define POPUP_BASE_VOLUMEBAR_STYLE_BASE_DEFAULT_MAX_INC 720 1120
+#define POPUP_BASE_VOLUMEBAR_STYLE_TITLE_DEFAULT_IMAGE_BORDER_INC 3 3 6 0
+#define POPUP_BASE_VOLUMEBAR_STYLE_CONTENT_DEFAULT_MIN_INC 668 0
+#define POPUP_BASE_VOLUMEBAR_STYLE_BUTTONAREA_BG_DEFAULT_MIN_INC 668 134
+#define POPUP_BASE_VOLUMEBAR_STYLE_PADDING_MIN_MAX_INC 26
+
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_PADDING_TOP_MIN_INC 0 35
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_PADDING_LEFT_MIN_INC 26 0
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_PADDING_RIGHT_MIN_INC 26 0
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_CONTENT_DEFAULT_MIN_INC 668 134
+#define POPUP_CONTENT_VOLUMEBAR_TEXT_STYLE_CONTENT_DEFAULT_MIN_INC 668 250
+#define POPUP_CONTENT_VOLUMEBAR_STYLE_PADDING_BOTTOM_MIN_INC 0 35
+
+#define PROGRESSBAR_DEFAULT_STYLE_TEXT_COLOR_INC          128 128 128 255
+#define PROGRESSBAR_DEFAULT_STYLE_STATUS_TEXT_COLOR_INC          128 128 128 255
+#define PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC          128 128 128 255
+#define PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC          128 128 128 255
+#define PROGRESSBAR_LIST_TITLE_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC      128 128 128 255
+#define PROGRESSBAR_LIST_PROCESS_WIDTH_INC 66
+#define PROGRESSBAR_LIST_PROCESS_HEIGHT_INC 66
+#define PROGRESSBAR_LIST_PROCESS_SMALL_INC 35
+#define PROGRESSBAR_LIST_PROCESS_SMALL_IMAGE "32x32"
+#define PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC 36
+#define PROGRESSBAR_LIST_PENDING_HEIGHT_INC 34
+#define PROGRESSBAR_PROGRESS_CIRCLE_BG_SIZE_INC 128 128
+
+#define NOCONTENT_TEXT_BLOCK_STYLE_COLOR_INC 128 128 128 255
+#define NOCONTENT_TEXT_BLOCK_TEXT_SIZE_INC   32
+#define NOCONTENT_MIDDLE_PADDING_INC         38
+#define NOCONTENT_BASE_SEARCH_PADDING_INC    40
+#define NOCONTENT_IMAGE_WIDTH_HEIGHT_INC     280 280
+#define NOCONTENT_BG_COLOR_INC               0 0 0 0
+#define NOCONTENT_TEXT_STYLE_BG_MIN_INC       0 76
+
+#define ENTRY_TEXT_SIZE_INC 44
+#define ENTRY_TEXT_COLOR_INC "#000000"
+#define ENTRY_CURSOR_COLOR_INC 59 115 182 255
+#define ENTRY_PREEDIT_BACKGROUND_COLOR_INC "#000000"
+#define ENTRY_PREEDIT_TEXT_COLOR_INC "#FFFFFF"
+#define ENTRY_PREEDIT_UNDERLINE_COLOR_INC "#000000"
+#define ENTRY_PREEDIT_SUB1_COLOR_INC "#2EA8E1"
+#define ENTRY_PREEDIT_SUB2_COLOR_INC "#9962C3"
+#define ENTRY_PREEDIT_SUB3_COLOR_INC "#76DE37"
+#define ENTRY_PREEDIT_SUB4_COLOR_INC "#999999"
+#define ENTRY_SELECTION_BG_COLOR 90 123 138 127
+#define ENTRY_SELECTION_BLOCK_HANDLE_MIN_SIZE 48 67
+#define MAGNIFIER_HEIGHT_FILL 182
+#define MAGNIFIER_HEIGHT_FIXED 108
+#define MAGNIFIER_WIDTH_FIXED 358
+
+#define ENTRY_BUBBLE_EX_PAD 58
+#define ENTRY_BUBBLE_EX_CALLERID_PAD 178
+#define ENTRY_BUBBLE_IX_PAD 20
+#define ENTRY_BUBBLE_Y_PAD 15
+#define ENTRY_BUBBLE_BOTTOM_PAD 24
+#define ENTRY_BUBBLE_CALLERID_PAD 16
+#define ENTRY_BUBBLE_CALLERID_WIDTH 104
+#define ENTRY_BUBBLE_CALLERID_HEIGHT 104
+#define ENTRY_BUBBLE_DATE_AREA_TEXT_SIZE_INC 26
+#define ENTRY_BUBBLE_TEXT_SIZE 38
+
+#define ENTRY_BUBBLE_SENT_TEXT_COLOR "#000000"
+#define ENTRY_BUBBLE_SENT_TEXT_SHADOW_STYLE "far_shadow,bottom"
+#define ENTRY_BUBBLE_SENT_TEXT_SHADOW_COLOR "#ffffff7f"
+#define ENTRY_BUBBLE_RECEV_TEXT_COLOR "#FFFFFF"
+#define ENTRY_BUBBLE_RECEV_TEXT_SHADOW_STYLE "far_shadow,top"
+#define ENTRY_BUBBLE_RECEV_TEXT_SHADOW_COLOR "#0000009f"
+#define ENTRY_BUBBLE_RECEV_BG_BORDER_INC 58 24 62 20
+#define ENTRY_BUBBLE_SENT_BG_BORDER_INC 24 58 62 20
+#define ENTRY_BUBBLE_CALLERID_RELATIVE_INC 0.0 0.0
+#define ENTRY_BUBBLE_RECEV_CALLERID_REL_INC 1.0 0.0
+#define ENTRY_BUBBLE_BOTTOMRIGHT_PAD 120
+#define ENTRY_BUBBLE_TEXT_CALLID_REL2_X_INC "elm.rect.right.pad"
+#define ENTRY_BUBBLE_READ_TEXT_CALLID_REL1_X_INC "elm.rect.left.pad"
+#define ENTRY_BUBBLE_TEXT_CALLID_REL2_Y_INC "elm.rect.groupchat.text.pad"
+#define ENTRY_BUBBLE_STATUS_TIME_PAD_MIN_H_INC 14
+#define ENTRY_BUBBLE_STATUS_TIME_PAD_REL_INC 0.0 1.0
+#define ENTRY_BUBBLE_READ_STATUS_TIME_PAD_REL_INC 1.0 1.0
+#define ENTRY_BUBBLE_STATUS_TIME_SIZE_INC 22
+#define ENTRY_BUBBLE_SENT_STATUS_TIME_COLOR_INC 139 139 139 255
+#define ENTRY_BUBBLE_READ_STATUS_TIME_COLOR_INC 139 139 139 255
+#define ENTRY_BUBBLE_GROUPCHAT_SIZE_INC 24
+#define ENTRY_BUBBLE_GROUPCHAT_COLOR_INC 139 139 139 255
+#define ENTRY_BUBBLE_GROUPCHART_ENABLE_INC 1
+#define ENTRY_BUBBLE_GROUPCHART_PAD 36 30
+#define ENTRY_BUBBLE_GROUPCHART_WITH_CALLERID_PAD 158 30
+#define ENTRY_BUBBLE_READ_STATUS_REL_INC 1.0 0.0
+#define ENTRY_BUBBLE_READ_TIME_REL_INC 1.0 1.0
+
+#define PANES_DEFAULT_FIXED_SEPERATOR_NORMAL_COLOR_INC 118 118 118 255
+
+#define DAYSELECTOR_BACKGROUND_COLOR_INC       82 84 87 255
+#define DAYSELECTOR_WEEKDAY_COLOR_INC          249 249 249 255
+#define DAYSELECTOR_SATURDAY_COLOR_INC         0 168 231 255
+#define DAYSELECTOR_SUNDAY_COLOR_INC           7 180 211 255
+#define DAYSELECTOR_DAY_PRESSED_COLOR_INC      249 249 249 255
+#define DAYSELECTOR_DAY_FONT_SIZE_INC 32
+#define DAYSELECTOR_CHECK_WIDTH_INC 94
+#define DAYSELECTOR_CHECK_HEIGHT_INC 90
+
+#define SLIDER_INDICATOR_TEXT_COLOR_INC      42 137 194 255
+#define SLIDER_UNITS_TEXT_COLOR_INC      0 0 0 255
+#define SLIDER_UNITS_TEXT_SIZE_INC  30
+#define SLIDER_INDICATOR_TEXT_SIZE_INC  40
+#define SLIDER_BASE_HEIGHT_INC  34
+#define SLIDER_BASE_MIN_WIDTH_INC 375
+#define SLIDER_SWALLOW_BAR_MIN_WIDTH_INC  72
+#define SLIDER_SWALLOW_BAR_HEIGHT_INC  74
+#define SLIDER_INDICATOR_MAX_WIDTH_INC 90
+#define SLIDER_INDICATOR_WIDTH_INC 72
+#define SLIDER_INDICATOR_HEIGHT_INC 72
+#define SLIDER_EBOOK_HEIGHT_INC  23
+#define SLIDER_EBOOK_UNITS_TEXT_COLOR_INC   164 160 149 255
+#define SLIDER_EBOOK_UNITS_TEXT_SIZE_INC  48
+#define SLIDER_EBOOK_INDICATOR_TEXT_COLOR_INC   7 180 211 255
+#define SLIDER_EBOOK_INDICATOR_DEFAULT_TEXT_SIZE_INC 36
+#define SLIDER_EBOOK_INDICATOR_DRAG_TEXT_SIZE_INC 48
+#define SLIDER_EBOOK_INDICATOR_WIDTH_INC 54
+#define SLIDER_EBOOK_INDICATOR_HEIGHT_INC 54
+
+#define TICKER_NOTI_DEFAULT_TEXT_COLOR_INC "#ffffff"
+#define TICKER_NOTI_DEFAULT_TEXT2_COLOR_INC "#ffffff"
+
+#define DATETIME_FIELD_MIN_SIZE_INC                40 60
+#define DATETIME_SEPARATOR_MIN_SIZE_INC            40 60
+#define DATETIME_TEXT_FONT_SIZE_INC                36
+#define DATETIME_TEXT_NORMAL_COLOR_INC             0 0 0 255
+#define DATETIME_SEPARATOR_TEXT_COLOR_INC          150 150 150 255
+#define DATETIME_TEXT_SELECTED_COLOR_INC           255 255 255 255
+#define DATETIME_LABEL_TEXT_BLOCK_STYLE_COLOR_INC  0 0 0 255
+#define DATETIME_LABEL_TEXT_BLOCK_STYLE_SELECTED_COLOR_INC  59 115 182 255
+
+#define COLORSELECTOR_MIN_W_INC 688
+#define COLORSELECTOR_MIN_H_INC 336
+#define COLORSELECTOR_MAX_W_INC 1014
+#define COLORSELECTOR_COLORBAR_HEIGHT 112
+#define COLORSELECTOR_COLORBAR_LEFT_PADDING 122
+#define COLORSELECTOR_COLORBAR_RIGHT_PADDING 122
+#define COLORSELECTOR_BUTTON_TOP_PADDING 19
+#define COLORSELECTOR_ARROW_BG_LEFT_PADDING 120
+#define COLORSELECTOR_ARROW_BG_RIGHT_PADDING 120
+#define COLORSELECTOR_ARROW_MIN_WIDTH 22
+#define COLORSELECTOR_ARROW_MIN_HEIGHT 70
+#define COLORSELECTOR_ARROW_REL1_OFFSET 0 5
+#define COLORSELECTOR_ARROW_REL2_OFFSET 0 5
+#define COLORSELECTOR_DRAGGABLE_EVENT_AREA 80 80
+#define COLORSELECTOR_BUTTON_LEFT_PADDING 32
+#define COLORSELECTOR_BUTTON_RIGHT_PADDING 32
+#define COLORSELECTOR_BUTTON_WIDTH 74
+#define COLORSELECTOR_BUTTON_HEIGHT 74
+#define COLORSELECTOR_BUTTON_BORDER 6 6 6 6
+#define COLORSELECTOR_PADDING_COLOR_INC 225 223 218 255
+
+#define COLORSELECTOR_PALETTE_COLORBG_MIN_WIDTH_INC 86
+#define COLORSELECTOR_PALETTE_COLORBG_MIN_HEIGHT_INC 86
+#define COLORSELECTOR_PALETTE_COLORBG_FOCUS_MIN_WIDTH_INC 84
+#define COLORSELECTOR_PALETTE_COLORBG_FOCUS_MIN_HEIGHT_INC 84
+#define COLORSELECTOR_PORTRAIT_HOR_PAD_INC "60"
+#define COLORSELECTOR_PORTRAIT_VER_PAD_INC "20"
+#define COLORSELECTOR_LANDSCAPE_HOR_PAD_INC "36"
+#define COLORSELECTOR_LANDSCAPE_VER_PAD_INC "0"
+#define COLORSELECTOR_PALETTE_BORDER_INC 11 11 11 11
+
+#define CALENDAR_DAY_FONT_SIZE_INC 24
+#define CALENDAR_DATE_FONT_SIZE_INC 32
+#define CALENDAR_MONTH_FONT_SIZE_INC 38
+#define CALENDAR_MONTH_FONT_COLOR_INC 249 249 249 255
+#define CALENDAR_SATURDAY_FONT_COLOR_INC 47 120 220 255
+#define CALENDAR_SUNDAY_FONT_COLOR_INC 226 20 20 255
+#define CALENDAR_WEEKDAY_FONT_COLOR_INC 249 249 249 255
+#define CALENDAR_SELECTED_DATE_FONT_COLOR_INC 255 255 255 255
+#define CALENDAR_SEPERATOR_FONT_COLOR_INC 68 68 68 255
+#define CALENDAR_BACKGROUND_COLOR_INC 89 89 89 255
+#define CALENDAR_BUTTON_HEIGHT_INC 66
+#define CALENDAR_BUTTON_WIDTH_INC 74
+#define CALENDAR_ARROW_WIDTH_INC 30
+#define CALENDAR_ARROW_HEIGHT_INC 36
+#define CALENDAR_BASE_MIN_WIDTH_INC 692
+#define CALENDAR_BASE_MIN_HEIGHT_INC 420
+#define CALENDAR_HEADER_MIN_WIDTH_INC 98
+#define CALENDAR_HEADER_MIN_HEIGHT_INC 90
+
+#define CTXPOPUP_ENTRY_CENTER_IMAGE_BORDER 12 12 9 9
+#define CTXPOPUP_ENTRY_IMAGE_BORDER_WIDTH 12
+#define CTXPOPUP_ENTRY_ITEM_TEXT_COLOR   249 249 249 255
+#define CTXPOPUP_ENTRY_ITEM_LEFT_SEPARATOR_COLOR 68 68 68 255
+#define CTXPOPUP_ENTRY_ITEM_RIGHT_SEPARATOR_COLOR 0 0 0 255
+#define CTXPOPUP_ENTRY_SEPARATOR_WIDTH 1
+#define CTXPOPUP_ENTRY_SEPARATOR_HEIGHT 50
+#define CTXPOPUP_ENTRY_ITEM_HEIGHT 74
+#define CTXPOPUP_ENTRY_ITEM_PADDING_WIDTH 14
+#define CTXPOPUP_ENTRY_ITEM_FONT_SIZE 28
+#define CTXPOPUP_ENTRY_ICON_SIZE 58
+#define CTXPOPUP_ENTRY_ITEM_WIDTH_MAX 240
+#define CTXPOPUP_ENTRY_LIST_SHADOW_PADDING 3
+#define CTXPOPUP_ENTRY_ITEM_DISABLED_COLOR 200 200 200 127
+#define CTXPOPUP_ENTRY_ARROW_SIZE_HEIGHT 18
+#define CTXPOPUP_ENTRY_ARROW_SIZE_WIDTH 29
+
+#define TICKERNOTI_DEFAULT_BG_MIN_HEIGHT_INC 100
+#define TICKERNOTI_DEFAULT_BG_BOTTOM_MIN_HEIGHT_INC 12
+#define TICKERNOTI_DEFAULT_BG_BORDER_INC 2 2 2 14
+#define TICKERNOTI_DEFAULT_BG_PADDING_LEFT_TOP_INC 16 18
+#define TICKERNOTI_DEFAULT_BG_PADDING_RIGHT_BOTTOM_INC 16 18
+#define TICKERNOTI_DEFAULT_PADDING_AFTER_ICON_INC 16 0
+#define TICKERNOTI_DEFAULT_TEXT_MIN_INC 0 60
+#define TICKERNOTI_DEFAULT_BUTTON_MIN_INC 154 74
+#define TICKERNOTI_DEFAULT_BUTTON_MAX_INC 154 74
+#define TICKERNOTI_DEFAULT_ICON_MIN_INC 64 64
+#define TICKERNOTI_DEFAULT_PADDING_BEFORE_BUTTON_INC 16 0
+#define TICKERNOTI_DEFAULT_TEXT_FONT_SIZE_INC 30
+#define TICKERNOTI_DEFAULT_TEXT2_FONT_SIZE_INC 24
+#define TICKERNOTI_INFO_BG_MIN_HEIGHT_INC 60
+#define TICKERNOTI_INFO_BG_PADDING_LEFT_TOP_INC 8 5
+#define TICKERNOTI_INFO_BG_PADDING_RIGHT_BOTTOM_INC 8 5
+#define TICKERNOTI_BG_PADDING_AFTER_ICON_INC 15 0
+#define TICKERNOTI_INFO_TEXT_FONT_SIZE_INC 28
+#define TICKERNOTI_TEXT_ONLY_TEXT_MIN_INC 0 64
+
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_MIN_SIZE_INC 16 238
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_MAX_SIZE_INC 16 99999
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_MIN_SIZE_INC 180 16
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_MAX_SIZE_INC 99999 16
+#define SCROLLER_DEFAULT_SCROLLBAR_VBAR_PADDING_SIZE 6
+#define SCROLLER_DEFAULT_SCROLLBAR_HBAR_PADDING_SIZE 16
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_MATCHLIST_SCROLLBAR_BG_IMAGE_BORDER 13 13 10 15
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_PADDING_SIZE 6
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_PADDING_SIZE 16
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_MIN_SIZE_INC 16 238
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_MAX_SIZE_INC 16 99999
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_MIN_SIZE_INC 180 16
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_MAX_SIZE_INC 99999 16
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_RUNNER_BORDER 0 0 4 4
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_RUNNER_BORDER 4 4 0 0
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_OVER1 6 6 6 0
+#define SCROLLER_MATCHLIST_SCROLLBAR_VBAR_OVER2 6 6 6 0
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_OVER1 6 6 6 0
+#define SCROLLER_MATCHLIST_SCROLLBAR_HBAR_OVER2 6 6 6 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_IMAGE "00_scroll_bar.png"
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_PADDING_SIZE 6
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_PADDING_SIZE 16
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_MIN_SIZE_INC 16 238
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_MAX_SIZE_INC 16 99999
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_MIN_SIZE_INC 180 16
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_MAX_SIZE_INC 99999 16
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_RUNNER_BORDER 0 0 4 4
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_RUNNER_BORDER 4 4 0 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_IMAGE_BORDER 5 10 5 10
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_OVER1 6 6 6 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_VBAR_OVER2 6 6 6 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_OVER1 6 6 6 0
+#define SCROLLER_PHOTOCAM_SCROLLBAR_HBAR_OVER2 6 6 6 0
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC 54 220
+#define SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC 220 54
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_MIDDLE_MIN_SIZE_INC 54 26
+#define SCROLLER_HANDLER_SCROLLBAR_HBAR_MIDDLE_MIN_SIZE_INC 26 54
+#define SCROLLER_HANDLER_SCROLLBAR_PADDING_INC 4
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_BOTTOM_BORDER 10 10 0 10
+#define SCROLLER_HANDLER_SCROLLBAR_VBAR_RIGHT_BORDER 0 10 10 10
+
+#define TOOLBAR_ITEM_SEPARATOR_LEFT_COLOR_INC 53 53 53 255
+#define TOOLBAR_ITEM_SEPARATOR_MIDDLE_COLOR_INC 0 0 0 255
+#define TOOLBAR_ITEM_SEPARATOR_RIGHT_COLOR_INC 25 25 25 255
+#define TOOLBAR_ITEM_BG_REL1_OFFSET_INC 4 4
+#define TOOLBAR_ITEM_BG_REL2_OFFSET_INC -5 -5
+#define TOOLBAR_ITEM_BG_SELECTED_BORDER_INC 3 3 3 3
+#define TABBAR_ITEM_TEXTBLOCK_COLOR_INC "#999999"
+#define TABBAR_ITEM_SELECTED_TEXTBLOCK_COLOR_INC "#3b73b6"
+#define TABBAR_ITEM_BG_DEFAULT_BORDER_INC 9 9 9 9
+#define TABBAR_ITEM_BG_DEFAULT_VISIBLE_INC 0
+#define TABBAR_ITEM_BG_DEFAULT_COLOR_INC 255 255 255 0
+#define TABBAR_DEFAULT_HEIGHT_INC 111
+#define TABBAR_ICON_TEXT_HEIGHT_INC 149
+#define TABBAR_HORIZONTAL_HEIGHT_INC 91
+#define TABBAR_HORIZONTAL_ICON_TEXT_HEIGHT_INC 142
+#define TABBAR_ITEM_ICON_SIZE_INC 68 68
+
+#define CONFORMANT_INDICATOR_BG_DEFAULT_COLOR_INC 52 52 50 255
+#define CONFORMANT_INDICATOR_BG_TRANSLUCENT_COLOR_INC 0 0 0 125
+#define CONFORMANT_INDICATOR_BG_TRANSPARENT_COLOR_INC 0 0 0 0
diff --git a/org.tizen.music-player.manifest b/org.tizen.music-player.manifest
new file mode 100644 (file)
index 0000000..1800197
--- /dev/null
@@ -0,0 +1,140 @@
+<manifest>
+       <define>
+               <domain name="org.tizen.music-player" />
+               <request>
+                        <smack request="ail::db" type="rw"/>
+                        <smack request="system::vconf" type="arwxt"/>
+                        <smack request="system::homedir" type="arwxt"/>
+                        <smack request="system::use_internet" type="r"/>
+                        <smack request="xorg" type="w"/>
+                        <smack request="sound_server" type="rw"/>
+                        <smack request="media-data::db" type="rw"/>
+                       <smack request="efreet" type="rx"/>
+                       <smack request="pkgmgr" type="r"/>
+                       <smack request="isf" type="rwx"/>
+                       <smack request="syspopup::db" type="rw"/>
+                       <smack request="dbus" type="rw"/>
+                       <smack request="media-server" type="rw"/>
+                       <smack request="pulseaudio" type="wx"/>
+                       <smack request="ug_bluetooth" type="r"/>
+                       <smack request="contacts-service" type="rw"/>
+                       <smack request="contacts-service::db" type="rw"/>
+                       <smack request="email-service" type="w"/>
+                       <smack request="email-service::db" type="rw"/>
+                       <smack request="msg-service" type="w"/>
+               </request>
+               <permit>
+                       <smack permit="media-server" type="w"/>
+               </permit>
+       </define>
+       <request>
+               <domain name="org.tizen.music-player" />
+       </request>
+       <assign>
+               <filesystem path="/opt/usr/apps/org.tizen.music-player/data" label="org.tizen.music-player" type="transmutable" />
+               <filesystem path="/opt/usr/apps/org.tizen.sound-player/data" label="org.tizen.music-player" type="transmutable" />
+               <filesystem path="/usr/share/applications/org.tizen.music-player.desktop" label="_" />
+               <filesystem path="/usr/share/icons/default/small/org.tizen.music-player.png" label="_" />
+               <filesystem path="/usr/share/applications/org.tizen.sound-player.desktop" label="_" />
+               <filesystem path="/usr/share/icons/default/small/org.tizen.sound-player.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/edje/mp-library.edj" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/edje/music.edj" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/edje/mp-minicontroller.edj" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/edje/mp-custom-winset-style.edj" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/ro/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/lt/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/pl/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/en_US/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/ar/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/tr_TR/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/fr_CA/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/is/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/pt_BR/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/zh_SG/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/de_DE/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/zh_HK/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/ru_RU/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/bg/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/en_PH/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/hu/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/eu/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/lv/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/da/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/gl/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/az/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/ka/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/en/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/hi/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/kk/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/ko_KR/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/pt_PT/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/it_IT/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/et/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/es_ES/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/uk/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/sv/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/sk/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/ca/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/hr/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/fi/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/mk/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/el_GR/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/cs/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/ga/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/nl_NL/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/zh_TW/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/sl/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/es_US/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/ja_JP/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/zh_CN/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/sr/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/locale/fr_FR/LC_MESSAGES/music-player.mo" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_share.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_nearby_device.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_add_to_playlist.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_all.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_move.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/34_recentlyplayed.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_folders.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/02_controlbar_icon_synchronise_start_sync.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/34_recentlyadded.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/00_winset_Back.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_icon_soundPath.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/mini_app" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/mini_app/T02_control_icon_apps.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_icon_allshare.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_music_albums.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_music_square.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_genres.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/storage_type" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/storage_type/T02_memory_card_02.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/storage_type/T02_phone_02.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/storage_type/T02_external_storage_02.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_delete.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/34_mostplayed.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_square_cell_press.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/music_play_square_cell_selected.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_playlists.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_cancel.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/music_play_square_cell.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_music_player_image_shadow.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/3d_picture" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/3d_picture/T02_cover_flow_bg.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/3d_picture/T02_cover_flow_album_shadow_bg.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_Video_play.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/34_quicklist.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/34_player_list_thum_noitems.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/34_thumb_07.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_edit.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_title_icon_nearby_device.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_songs.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_years.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_search.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_composer.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_artist.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_controlbar_icon_add.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/default_folder.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_volume_icon_01.png" label="_" />
+               <filesystem path="/usr/apps/org.tizen.music-player/res/images/music_player/T02_volume_icon_02.png" label="_" />
+       </assign>
+</manifest>
diff --git a/org.tizen.music-player.xml b/org.tizen.music-player.xml
new file mode 100755 (executable)
index 0000000..dee540a
--- /dev/null
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.music-player" version="0.1.0" install-location="internal-only">
+       <label>Music</label>
+       <author email="hm2007.kim@samsung.com" href="www.samsung.com">Hyungmin Kim</author>
+       <description>Music player</description>
+       <ui-application appid="org.tizen.music-player" exec="/usr/apps/org.tizen.music-player/bin/music-player" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+               <label>Music</label>
+               <icon>org.tizen.music-player.png</icon>
+               <label xml:lang="hy-am">Երաժշտությն</label>
+               <label xml:lang="az-az">Musiqi</label>
+               <label xml:lang="eu-es">Musika</label>
+               <label xml:lang="bg-bg">Музика</label>
+               <label xml:lang="ca-es">Música</label>
+               <label xml:lang="zh-cn">音乐</label>
+               <label xml:lang="zh-hk">音樂</label>
+               <label xml:lang="zh-tw">音樂</label>
+               <label xml:lang="hr-hr">Glazba</label>
+               <label xml:lang="cs-cz">Hudba</label>
+               <label xml:lang="da-dk">Musik</label>
+               <label xml:lang="nl-nl">Muziek</label>
+               <label xml:lang="en-gb">Music</label>
+               <label xml:lang="en-us">Music</label>
+               <label xml:lang="et-ee">Muusika</label>
+               <label xml:lang="fi-fi">Musiikki</label>
+               <label xml:lang="fr-fr">Musique</label>
+               <label xml:lang="gl-es">Música</label>
+               <label xml:lang="ka-ge">მუსიკა</label>
+               <label xml:lang="de-de">Musik</label>
+               <label xml:lang="el-gr">Μουσική</label>
+               <label xml:lang="hu-hu">Zenék</label>
+               <label xml:lang="is-is">Tónlist</label>
+               <label xml:lang="ga-ie">Ceol</label>
+               <label xml:lang="it-it">Musica</label>
+               <label xml:lang="ja-jp">音楽</label>
+               <label xml:lang="kk-kz">Музыка</label>
+               <label xml:lang="ko-kr">음악</label>
+               <label xml:lang="lv-lv">Mūzika</label>
+               <label xml:lang="lt-lt">Muzika</label>
+               <label xml:lang="mk-mk">Музика</label>
+               <label xml:lang="nb-no">Musikk</label>
+               <label xml:lang="pl-pl">Muzyka</label>
+               <label xml:lang="pt-pt">Música</label>
+               <label xml:lang="pt-br">Músicas</label>
+               <label xml:lang="ro-ro">Muzică</label>
+               <label xml:lang="ru-ru">Музыка</label>
+               <label xml:lang="sr-rs">Muzika</label>
+               <label xml:lang="sk-sk">Hudba</label>
+               <label xml:lang="sl-si">Glasba</label>
+               <label xml:lang="es-es">Música</label>
+               <label xml:lang="es-mx">Música</label>
+               <label xml:lang="sv-se">Musik</label>
+               <label xml:lang="tr-tr">Müzik</label>
+               <label xml:lang="uk-ua">Музика</label>
+               <label xml:lang="uz-uz">Musiqa</label>
+               <label xml:lang="ar-ae">ﺎﻠﻣﻮﺴﻴﻗﻯ</label>
+               <label xml:lang="zh-sg">音乐</label>
+               <label xml:lang="hi-in">संगीत</label>
+               <label xml:lang="en-ph">Music</label>
+               <label xml:lang="fr-ca">Musique</label>
+               <application-service>
+                       <mime name="music-player.uri" />
+               </application-service>
+       </ui-application>
+        <ui-application appid="org.tizen.sound-player" exec="/usr/apps/org.tizen.sound-player/bin/sound-player" nodisplay="true" multiple="false" type="capp" taskmanage="true">
+               <label>Sound player</label>
+               <icon>org.tizen.sound-player.png</icon>
+               <label xml:lang="hy-am">Ձայնի նվագարկում</label>
+               <label xml:lang="az-az">Səs pleyeri</label>
+               <label xml:lang="eu-es">Soinu erreproduzitzailea</label>
+               <label xml:lang="bg-bg">Звуков плейър</label>
+               <label xml:lang="ca-es">Reproductor de so</label>
+               <label xml:lang="zh-cn">声音播放器</label>
+               <label xml:lang="zh-hk">聲音播放器</label>
+               <label xml:lang="zh-tw">聲音播放器</label>
+               <label xml:lang="hr-hr">MP3 player</label>
+               <label xml:lang="cs-cz">Zvukový přehrávač</label>
+               <label xml:lang="da-dk">Lydafspiller</label>
+               <label xml:lang="nl-nl">MP3-speler</label>
+               <label xml:lang="en-gb">Sound Player</label>
+               <label xml:lang="en-us">Sound Player</label>
+               <label xml:lang="et-ee">Helimängija</label>
+               <label xml:lang="fi-fi">Soitin</label>
+               <label xml:lang="fr-fr">Lecteur de son</label>
+               <label xml:lang="gl-es">Reprodutor de son</label>
+               <label xml:lang="ka-ge">პლეერი</label>
+               <label xml:lang="de-de">Soundplayer</label>
+               <label xml:lang="el-gr">Αναπαραγωγή ήχου</label>
+               <label xml:lang="hu-hu">Hanglejátszó</label>
+               <label xml:lang="is-is">Hljóðspilun</label>
+               <label xml:lang="ga-ie">Seinnteoir fuaime</label>
+               <label xml:lang="it-it">Lettore suoni</label>
+               <label xml:lang="ja-jp">サウンドプレーヤー</label>
+               <label xml:lang="kk-kz">Дыбыс ойнатқышы</label>
+               <label xml:lang="ko-kr">사운드 플레이어</label>
+               <label xml:lang="lv-lv">Audio atskaņotājs</label>
+               <label xml:lang="lt-lt">Garso grotuvas</label>
+               <label xml:lang="mk-mk">Плеер за звук</label>
+               <label xml:lang="nb-no">Lydspiller</label>
+               <label xml:lang="pl-pl">Odtwarzacz muzyki</label>
+               <label xml:lang="pt-pt">Leitor de som</label>
+               <label xml:lang="pt-br">Player de som</label>
+               <label xml:lang="ro-ro">Player sunete</label>
+               <label xml:lang="ru-ru">Аудиопроигрыватель</label>
+               <label xml:lang="sr-rs">Plejer zvuka</label>
+               <label xml:lang="sk-sk">Prehrávač zvuku</label>
+               <label xml:lang="sl-si">Predvajalnik zvoka</label>
+               <label xml:lang="es-es">Reproductor de sonido</label>
+               <label xml:lang="es-mx">Reproductor de sonido</label>
+               <label xml:lang="sv-se">Ljudspelare</label>
+               <label xml:lang="tr-tr">Ses oynatıcı</label>
+               <label xml:lang="uk-ua">Музичний плеєр</label>
+               <label xml:lang="uz-uz">Аудио плейер</label>
+               <label xml:lang="ar-ae">مشغل الصوت</label>
+               <label xml:lang="zh-sg">声音播放器</label>
+               <label xml:lang="hi-in">साउंड प्‍लेयर</label>
+               <label xml:lang="en-ph">Sound player</label>
+               <label xml:lang="fr-ca">Lecteur de son</label>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/view" />
+                       <mime name="application/ogg" />
+                       <mime name="application/x-smaf" />
+                       <mime name="application/vnd.smaf" />
+                       <mime name="audio/aac" />
+                       <mime name="audio/ac3" />
+                       <mime name="audio/amr" />
+                       <mime name="audio/amr-wb" />
+                       <mime name="audio/AMR" />
+                       <mime name="audio/AMR-WB" />
+                       <mime name="audio/imelody" />
+                       <mime name="audio/iMelody" />
+                       <mime name="audio/imy" />
+                       <mime name="audio/isma" />
+                       <mime name="audio/melody" />
+                       <mime name="audio/mid" />
+                       <mime name="audio/midi" />
+                       <mime name="audio/mmf" />
+                       <mime name="audio/mobile-xmf" />
+                       <mime name="audio/mpeg" />
+                       <mime name="audio/mpeg3" />
+                       <mime name="audio/mpeg4" />
+                       <mime name="audio/mpg" />
+                       <mime name="audio/mpg3" />
+                       <mime name="audio/mp3" />
+                       <mime name="audio/mp4" />
+                       <mime name="audio/MP4A-LATM" />
+                       <mime name="audio/m4a" />
+                       <mime name="audio/ogg" />
+                       <mime name="audio/rmf" />
+                       <mime name="audio/smaf" />
+                       <mime name="audio/sp-midi" />
+                       <mime name="audio/vnd.ms-playready.media.pya" />
+                       <mime name="audio/vorbis" />
+                       <mime name="audio/wav" />
+                       <mime name="audio/wave" />
+                       <mime name="audio/wma" />
+                       <mime name="audio/xmf" />
+                       <mime name="audio/x-amr" />
+                       <mime name="audio/x-flac" />
+                       <mime name="audio/x-mid" />
+                       <mime name="audio/x-midi" />
+                       <mime name="audio/x-mpeg" />
+                       <mime name="audio/x-mpeg3" />
+                       <mime name="audio/x-mpegaudio" />
+                       <mime name="audio/x-mpg" />
+                       <mime name="audio/x-mp3" />
+                       <mime name="audio/x-ms-asf" />
+                       <mime name="audio/x-ms-wma" />
+                       <mime name="audio/x-rmf" />
+                       <mime name="audio/x-wav" />
+                       <mime name="audio/x-wave" />
+                       <mime name="audio/x-xmf" />
+                       <mime name="text/x-iMelody" />
+                       <mime name="audio/x-vorbis+ogg" />
+                       <uri name="http" />
+                       <uri name="https" />
+                       <uri name="rtsp" />
+                       <uri name="rtp" />
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/view" />
+                       <mime name="application/x-smaf" />
+                       <mime name="application/vnd.smaf" />
+                       <mime name="audio/aac" />
+                       <mime name="audio/ac3" />
+                       <mime name="audio/amr" />
+                       <mime name="audio/amr-wb" />
+                       <mime name="audio/AMR" />
+                       <mime name="audio/AMR-WB" />
+                       <mime name="audio/imelody" />
+                       <mime name="audio/iMelody" />
+                       <mime name="audio/imy" />
+                       <mime name="audio/isma" />
+                       <mime name="audio/melody" />
+                       <mime name="audio/mid" />
+                       <mime name="audio/midi" />
+                       <mime name="audio/mmf" />
+                       <mime name="audio/mobile-xmf" />
+                       <mime name="audio/mpeg" />
+                       <mime name="audio/mpeg3" />
+                       <mime name="audio/mpeg4" />
+                       <mime name="audio/mpg" />
+                       <mime name="audio/mpg3" />
+                       <mime name="audio/mp3" />
+                       <mime name="audio/mp4" />
+                       <mime name="audio/MP4A-LATM" />
+                       <mime name="audio/m4a" />
+                       <mime name="audio/ogg" />
+                       <mime name="audio/rmf" />
+                       <mime name="audio/smaf" />
+                       <mime name="audio/sp-midi" />
+                       <mime name="audio/vnd.ms-playready.media.pya" />
+                       <mime name="audio/vorbis" />
+                       <mime name="audio/wav" />
+                       <mime name="audio/wave" />
+                       <mime name="audio/wma" />
+                       <mime name="audio/xmf" />
+                       <mime name="audio/x-amr" />
+                       <mime name="audio/x-flac" />
+                       <mime name="audio/x-mid" />
+                       <mime name="audio/x-midi" />
+                       <mime name="audio/x-mpeg" />
+                       <mime name="audio/x-mpeg3" />
+                       <mime name="audio/x-mpegaudio" />
+                       <mime name="audio/x-mpg" />
+                       <mime name="audio/x-mp3" />
+                       <mime name="audio/x-ms-asf" />
+                       <mime name="audio/x-ms-wma" />
+                       <mime name="audio/x-rmf" />
+                       <mime name="audio/x-wav" />
+                       <mime name="audio/x-wave" />
+                       <mime name="audio/x-xmf" />
+                       <mime name="text/x-iMelody" />
+                       <mime name="audio/x-vorbis+ogg" />
+
+               </application-service>
+       </ui-application>
+</manifest>
diff --git a/packaging/org.tizen.music-player.spec b/packaging/org.tizen.music-player.spec
new file mode 100644 (file)
index 0000000..8ff4d82
--- /dev/null
@@ -0,0 +1,143 @@
+%define PKG_PREFIX org.tizen
+
+Name:       org.tizen.music-player
+Summary:    music player application
+Version:    0.1.177
+Release:    2
+License:    Flora
+Source0:    %{name}-%{version}.tar.gz
+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(glib-2.0)
+BuildRequires:  pkgconfig(minicontrol-provider)
+BuildRequires:  pkgconfig(capi-system-media-key)
+BuildRequires:  pkgconfig(xext)
+BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(capi-content-media-content)
+BuildRequires:  pkgconfig(capi-network-bluetooth)
+BuildRequires:  pkgconfig(capi-system-system-settings)
+BuildRequires:  pkgconfig(utilX)
+BuildRequires:  pkgconfig(sqlite3)
+BuildRequires:  pkgconfig(status)
+BuildRequires:  cmake
+BuildRequires:  prelink
+BuildRequires:  edje-tools
+BuildRequires:  gettext-tools
+Requires:  media-server email-service media-data-sdk ug-bluetooth-efl
+
+%description
+music player application.
+
+%package -n %{PKG_PREFIX}.sound-player
+Summary:    Sound player
+
+%description -n %{PKG_PREFIX}.sound-player
+Description: sound player application
+
+#Requires:   %{name} = %{version}-%{release}
+
+
+%prep
+%setup -q
+
+%define DESKTOP_DIR /usr/share
+%define INSTALL_DIR    /usr/apps
+%define DATA_DIR       /opt/usr/apps
+
+%define PKG_NAME %{name}
+%define PREFIX %{INSTALL_DIR}/%{PKG_NAME}
+%define DATA_PREFIX %{DATA_DIR}/%{PKG_NAME}
+
+%define SP_PKG_NAME %{PKG_PREFIX}.sound-player
+%define SP_PREFIX %{INSTALL_DIR}/%{SP_PKG_NAME}
+%define SP_DATA_PREFIX %{DATA_DIR}/%{SP_PKG_NAME}
+
+%define UG_PREFIX /usr/ug
+
+%build
+cmake . -DUG_PREFIX="%{UG_PREFIX}" -DINSTALL_DIR="%{INSTALL_DIR}" -DCMAKE_INSTALL_PREFIX="%{PREFIX}" -DCMAKE_DESKTOP_ICON_DIR="%{DESKTOP_DIR}/icons/default/small" -DDESKTOP_DIR="%{DESKTOP_DIR}" -DPKG_NAME="%{PKG_NAME}" -DSP_PKG_NAME="%{SP_PKG_NAME}" -DDATA_PREFIX="%{DATA_PREFIX}" -DSP_DATA_PREFIX="%{SP_DATA_PREFIX}"
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+execstack -c %{buildroot}%{PREFIX}/bin/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 music-player
+        fi
+        PID=`/bin/pidof sound-player`
+        if [ -n "$PID" ]; then
+                echo "preinst: kill current sound-player app"
+                /usr/bin/killall sound-player
+        fi
+fi
+
+%post
+mkdir -p %{DATA_PREFIX}/data
+chown -R 5000:5000 %{DATA_PREFIX}/data
+mkdir -p %{SP_DATA_PREFIX}/data
+chown -R 5000:5000 %{SP_DATA_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 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 memory/private/org.tizen.music-player/player_state 1 -i -g 5000
+/usr/bin/vconftool set -t bool memory/private/org.tizen.music-player/play_clicked 1 -i -g 5000
+/usr/bin/vconftool set -t bool memory/private/org.tizen.music-player/pause_clicked 1 -i -g 5000
+/usr/bin/vconftool set -t bool memory/private/org.tizen.music-player/prev_pressed 1 -i -g 5000
+/usr/bin/vconftool set -t bool memory/private/org.tizen.music-player/prev_released 1 -i -g 5000
+/usr/bin/vconftool set -t bool memory/private/org.tizen.music-player/next_pressed 1 -i -g 5000
+/usr/bin/vconftool set -t bool memory/private/org.tizen.music-player/next_released 1 -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 db/private/org.tizen.music-player/square_axis_val 0 -g 5000
+/usr/bin/vconftool set -t int db/private/org.tizen.music-player/playlist 7 -g 5000
+
+/usr/bin/vconftool set -t int memory/private/org.tizen.music-player/playing_pid 0 -i -g 5000
+
+
+
+%files
+%manifest %{name}.manifest
+%{DESKTOP_DIR}/packages/%{name}.xml
+%{DESKTOP_DIR}/icons/default/small/%{name}.png
+%{PREFIX}/bin/music-player
+%{PREFIX}/res/locale/*/LC_MESSAGES/*.mo
+%{PREFIX}/res/images/*
+%{PREFIX}/res/edje/*.edj
+
+%{DESKTOP_DIR}/icons/default/small/%{SP_PKG_NAME}.png
+%{SP_PREFIX}/bin/sound-player
+
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644 (file)
index 0000000..6fd2efc
--- /dev/null
@@ -0,0 +1,75 @@
+# for i18n
+
+SET(POFILES
+       ar.po
+       az.po
+       bg.po
+       ca.po
+       cs.po
+       da.po
+       de_DE.po
+       el_GR.po
+       en.po
+       en_PH.po
+       en_US.po
+       es_ES.po
+       es_MX.po
+       et.po
+       eu.po
+       fi.po
+       fr_CA.po
+       fr_FR.po
+       ga.po
+       gl.po
+       hi.po
+       hr.po
+       hu.po
+       hy.po
+       is.po
+       it_IT.po
+       ja_JP.po
+       ka.po
+       kk.po
+       ko_KR.po
+       lt.po
+       lv.po
+       mk.po
+       nb.po
+       nl_NL.po
+       pl.po
+       pt_BR.po
+       pt_PT.po
+       ro.po
+       ru_RU.po
+       sk.po
+       sl.po
+       sr.po
+       sv.po
+       tr_TR.po
+       uk.po
+       uz.po
+       zh_CN.po
+       zh_HK.po
+       zh_SG.po
+       zh_TW.po
+)
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${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(po ALL DEPENDS ${moFiles})
diff --git a/po/ar.po b/po/ar.po
new file mode 100644 (file)
index 0000000..190999c
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "صوت مباشر"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "مجلدات"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "الألبومات"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "المفضلة"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "قد تضر مستويات الصوت العالية بسمعك إذا استمعت إليها لفترة طويلة"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "الفنانون"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "تلقائي"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "المؤلفون"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "الانواع"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "أكثر ما تم عرضه"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "قائمة الموسيقى"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "المضاف حديثا"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "سنوات"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "نغمة المكالمة"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "إنشاء قائمة تشغيل"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "حذف"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "نغمة رنين المتصل"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "الفنانون"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "الانواع"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "الكل"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "مسح"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "مشاركة"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "إضافة إلى قائمة التشغيل"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "قوائم التشغيل"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "المعروض حديثا"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "إضافة"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "ألبومات"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "عادي"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "البوب"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "الروك"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "الجاز"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "رقص"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "كلاسيك"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "مباشر"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "معالج إعداد الموسيقى"
+
+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_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_CONCERT_HALL"
+msgstr "قاعة الحفلة"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "ضبط مخصص"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "الجاز"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "مباشر"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "تعديل العنوان"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "القادة"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "منزل"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "تعيين"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "مؤثر الصوت هذا يعمل في وضعي سماعة الأذن وسماعة البلوتوث فقط"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "مربع الموسيقى"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "فتح ق"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "لا توجد ملفات موسيقى كافية للتشغيل في‏‫ مربع الموسيقى. يلزم وجود %d ملفات موسيقى على الأقل"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "عاطفة"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "سريع الغضب"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "ديناميكي"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "هادئ"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "بهجة"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "تحديث المكتبة"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "هل تريد تحديث المكتبة؟"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "تغيير المحور"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "كل الأغاني"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "القائمة المحددة فارغة"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "المؤلفون"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "إضافة الى الرئيسية"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "معلومات الوسائط"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "أنماط"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "أعوام"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "قديمة"
+
diff --git a/po/az.po b/po/az.po
new file mode 100644 (file)
index 0000000..5b607de
--- /dev/null
+++ b/po/az.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Qovluqlar"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albomlar"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Sevimlilər"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Uzun müddət ucadan qulaq assanız, bu sizin eşitmənizə mənfi təsir edə bilər"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Müğənnilər"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Avtomatik"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Bəstəkarlar"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Janrlar"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Daha çox çalınan"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musiqi menyusu"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Sonuncu dəfə əlavə edilən"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "İllər"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Zəng Tonu"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Mahnı siyahısı yaradın"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Sil"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Zəng egənin zəng tonu"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Müğənnilər"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Janrlar"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "İllər"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Əlavə etmək mümkün deyil"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Sözlər yoxdur"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "5.1 kanalından istifadə edərkən səs effektlərini dəyişmək mümkün deyil"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "İşarəni tapın"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 kanalının səs effekti yalnız qulaqlıq rejimində işləyir"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 kanalı yalnız səs effektləri aktiv olmadıqda aktivləşdirilə bilər"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Mahnı siyahısı yaratmaq mümkün deyil"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Etiket əldə etmək mümkün deyil"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Elementin yerini dəyişdirmək mümkün deyil"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "%d musiqi faylından çox əlavə etmək mümkün deyil"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Zəng zamanı səsləndirmək olmur"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albom"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Müəllif"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Müəllif hüququ"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Mahnı siyahısı yaradın"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Təsvir"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Mümkün deyil"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Yeri"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Mahnı siyahısı yoxdur"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Cığırın nömrəsi"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tip"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Naməlum"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Sil"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Əlavə edildi"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Silinsin?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s silindi"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Silindi"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Silinsin?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Mahnı siyahısının adını dəyişdirmək  mümkün deyil"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Zəng melodiyası kimi qurmaq mümkün deyil"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM faylını paylaşmaq mümkün deyil"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albomlar"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Hamısı"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Sil"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Musiqi siyahısina əlavə et"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Musiqi siyahılrı"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Son dəfə çalınan"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Əlavə et"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albomlar"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Caz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Rəqs"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassik"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Canlı"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Musiqi tərtibatı üzrə köməkçi funksiya"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Bioqrafiya"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "İştirakçıların siyahısı"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Media məlumatı"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskoqrafiya"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Sözlər"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Ad çox uzundur"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Valideyn reytinqi"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Mümkündür"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Gözdən keçir"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Musiqi siyahısı"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Artıq əlavə olunmuşdur"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanal"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Mahnılar siyahısına daxil et"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "İstifadəsi mümkün olanlar"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Basın yüksəldilməsi"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Xor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassik"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Tərtibat proqramı"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Konsert Zalı"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Adi"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Rəqs"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvalayzer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Kənarlaşdırma"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Göndərilir"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Janr"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Caz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Canlı"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musiqi aydınlığı"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Musiqi parametrləri"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "İncəsənət albomu"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Mahnı siyahıları"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Son dəfə çalınan"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Cığırın uzunluğu"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Etibarlılıq"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Geniş"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Söndür"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Mahnı yoxdur"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Mahnılar"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Musiqi siyahısına əlavə edin"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Başlığı redaktə et"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Tarix"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Adını dəyişdir"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Yenidən nizamlayın"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Musiqi siyahısı kimi saxlayın"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Xəbərdarlıq zənginin tonu"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "%s-ə əlavə olunmuşdur"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth söndürüldü"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maksimum sayda (%d) element seçilmişdir"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "He nə seçilməmişdir"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Silmək mümkün deyil. Seçilmiş musiqi ifa olunur"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Səsləndirmək mümkün deyil. Səhv baş verdi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Çaldırmaq mümkün deyil. Dəstəklənməyən fayl növü"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Əlv et"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Bölüşün"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Hamısını"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirijorlar"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podkastlar"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Qurğu seç"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Bir daha göstərmə"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Siz AllShare istifadə edərək musiqini cihazlara göndərə bilərsiniz"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Kimi bax"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "İstifadəçi"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bəm səsin yüksəldilməsi"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Diskant səs yüksəldilməsi"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 kanal"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 dəqiqə sonra"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 dəqiqədən sonra"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 saatdan sonra"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1 saat 30 dəqiqədən sonra"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 saatdan sonra"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Musiqini avtomatik söndür"
+
+msgid "IDS_MUSIC_BODY_HOUSE_M_GENRE"
+msgstr "Hausi"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Bunun kimi qur"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Bu səs effekti yalnız qulaqlıq və Bluetooth qulaqlığı rejimlərində işləyir"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Musiqi meydanı"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Ms.syh.aç"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Musiqi meydanında səsləndirmək üçün kifayət qədər musiqi faylı yoxdur. Ən azı %d musiqi faylı tələb olunur"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Həvəs"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Həvəsli"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Sakit"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Sevinc"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Kitabxana yeniləməsi"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Kitabxana yenilənsin?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Oxu dəyiş"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Bütün mahnılar"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Seçilmiş şəhər boşdur"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Bəstəkrlər"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Başlanğıca əlavə et"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Media məlumatı"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Əhvallar"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "İllər"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Köhnə"
+
diff --git a/po/bg.po b/po/bg.po
new file mode 100644 (file)
index 0000000..188aeab
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Папки"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Албуми"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Предпочитани"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Голямата сила на звука може да увреди слуха ви, ако слушате дълго"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Изпълнители"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Композитор"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Жанрове"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Най-изпълнявани"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Меню музика"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Последно добавени"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Години"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Тон за звънене"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Създаване на списък за изпълнение"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Премаxване"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Тон за звънене за повикващ"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Изпълнители"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Жанрове"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Всички"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Изтрий"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Сподели"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Добави в спис. изпълн."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Плейлиста"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Последно изпълнени"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Добавяне"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Албуми"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Нормален"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Поп"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Рок"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Танц"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Класическа"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "На живо"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Съветник за настройки на музика"
+
+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_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_CONCERT_HALL"
+msgstr "Концертна зала"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "По избор"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "На живо"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "Редактиране на заглавие"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "Диригент"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "Хаус"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Задаване като"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Този звуков ефект работи само в режими на слушалка и Bluetooth слушалки"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Музикална пиаца"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Сп из"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Няма достатъчно музикални файлове, които да се изпълняват в Музикалната пиаца. Необходими са поне %d музикални файла"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Страст"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Страстно"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Динамично"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Спокоен/йна"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Радост"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Актуализиране на библиотека"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Актуализиране на библиотека?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Смяна на оста"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Всички песни"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Избраният списък е празен"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Композ."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Добави към дом."
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Мултимедийна информация"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Настроения"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Години"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Стар"
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100644 (file)
index 0000000..04325a2
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Carpetes"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Àlbums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Preferits"
+
+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_BODY_ARTISTS"
+msgstr "Artistes"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositors"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Gèneres"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "El més reproduït"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menú Música"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Afegides recentment"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Anys"
+
+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_REMOVE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Melodia de la persona que truca"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistes"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Gèneres"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Anys"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Tot"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Esborrar"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Compart"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Afegir a llista reprod"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Llistes de repr"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Escoltades recentment"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Afegir"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Àlbums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Clàssica"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Directe"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Assistent d'instal·lació música"
+
+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_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_CONCERT_HALL"
+msgstr "Sala de concerts"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personalitzat"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Directe"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Claredat musical"
+
+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_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_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_EDIT_TITLE"
+msgstr "Editar títol"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historial"
+
+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_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_CONDUCTORS"
+msgstr "Directors"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Definir com a"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Ll reprod"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "No hi ha prou fitxers de música per reproduir a Music square. En calen almenys %d"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passió"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Apassionant"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinàmica"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Tranquil"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Alegria"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Actualització de biblioteca"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Actualitzar biblioteca?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Canviar eix"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Totes les cançons"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Llista seleccionada buida"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Composit"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Afegir a l'inici"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Info multimèdia"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Estats d'ànim"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Anys"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Antic"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100644 (file)
index 0000000..5da455e
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Složky"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Alba"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Oblíbené"
+
+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_BODY_ARTISTS"
+msgstr "Interpreti"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automaticky"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Skladatelé"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žánry"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Nejčastěji přehrávané"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Nabídka Hudba"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Poslední přidané"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Roky"
+
+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_REMOVE"
+msgstr "Odstranit"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Zvonění volajícího"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Interpreti"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žánry"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Roky"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Vše"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Odstranit"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Sdílet"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Přidat do sezn. skladeb"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Seznamy skladeb"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Poslední přehrané"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Přidat"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Alba"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normální"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Tanec"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Živě"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Průvodce nastavením hudby"
+
+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_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_CONCERT_HALL"
+msgstr "Koncertní sál"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Vlastní"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Tanec"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Živě"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Čistý zvuk"
+
+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_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_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_EDIT_TITLE"
+msgstr "Upravit název"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historie"
+
+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_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_CONDUCTORS"
+msgstr "Dirigenti"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasty"
+
+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 minut"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Nastavit jako"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Hudební ráj"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Ot. s. s."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "V Music Square není dostatek hudebních souborů k přehrávání. Je zapotřebí alespoň %d hudebních souborů"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Vášeň"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Vášnivá"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamicky"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Klidný"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Radost"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Aktualizace knihovny"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Aktualizovat knihovnu?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Změnit osu"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Všechny skladby"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Vybraný seznam je prázdný"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Skladat."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Přidat do domů"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Informace o médiu"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Nálady"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Roky"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Stará"
+
diff --git a/po/da.po b/po/da.po
new file mode 100644 (file)
index 0000000..deea0dc
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mapper"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritter"
+
+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_BODY_ARTISTS"
+msgstr "Kunstnere"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Komponister"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genrer"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Mest afspillede"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musikmenu"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Tilføjet for nylig"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Telefonringetone"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Opret afspilningsliste"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Fjern"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Kontakt ringetone"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Kunstnere"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genrer"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "År"
+
+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_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_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_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_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 "Albums"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Alle"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Slet"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Del"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Føj til afspil.liste"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Afspiln. lister"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Afspillet for nylig"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Tilføj"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassisk"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Direkte"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Konfigurationsguide til musik"
+
+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_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 "Opretter"
+
+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_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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Direkte"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musikklarhed"
+
+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_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_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_EDIT_TITLE"
+msgstr "Redigér titel"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Oversigt"
+
+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_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_CONDUCTORS"
+msgstr "Dirigent"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Indstil som"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Musiktorv"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Åbn afspl"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Ikke tilstrækkelige musikfiler til at afspille på Musiktorv. Der kræves mindst %d musikfiler"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Passioneret"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamisk"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Rolig"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Glæde"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Biblioteksopdatering"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Opdatér bibliotek?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Skift akse"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Alle sange"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Den valgte liste er tom"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Kompon."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Føj til start"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Medieoplysninger"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Tilstande"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Gammel"
+
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100644 (file)
index 0000000..3a6ca82
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Ordner"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Alben"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoriten"
+
+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_BODY_ARTISTS"
+msgstr "Interpreten"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Komponisten"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Am häufigsten wiedergegeben"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musik-Menü"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Zuletzt hinzugefügt"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Jahre"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Anruf-Klingelton"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Wiedergabeliste erstellen"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Entfernen"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Anruferklingelton"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Interpreten"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Jahre"
+
+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_POP_ITEM_NOT_REMOVE"
+msgstr "Element kann nicht entfernt werden"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Mehr als %d Musikdateien können nicht hinzugefügt werden"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Wiedergabe während Anruf nicht möglich"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Urheberrecht"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Wiedergabeliste erstellen"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Beschreibung"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Nicht möglich"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Ort"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Keine Wiedergabelisten"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Nummer des Titels"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Typ"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Unbekannt"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Löschen"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Hinzugefügt"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Löschen?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s entfernt"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Entfernt"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Entfernen?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Wiedergabeliste kann nicht umbenannt werden"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Festlegen als Klingelton nicht möglich."
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM-Datei kann nicht freigegeben werden"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Alben"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Alle"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Löschen"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Senden"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Zu Wied. hzfg."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Wdg-Listen"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Kürzlich wiedergegeben"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Hinzufügen"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Alben"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassik"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Musikeinrichtungsassistent"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biographie"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Danksagungen"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Medien-Info"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografie"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Liedtext"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Name zu lang"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Altersbeschränkung"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Möglich"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Überprüfen"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Wiedergabeliste"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Bereits hinzugefügt"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1-Kanal"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Zu Wiedergabeliste hinzufügen"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Künstler"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Verfügbare Nutzungen"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bassverstärkung"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Chor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassik"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Komponist"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Konzertsaal"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Benutzerdefiniert"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamisch"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalisierung"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Weiterleitung"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musikklarheit"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Musik-Einstellungen"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Bild für Album"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Wiedergabelisten"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Kürzlich wiedergegeben"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Länge des Titels"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Gültigkeit"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Weit"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Aus"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Keine Lieder"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Lieder"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Wiedergabeliste hinzufügen"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Titel bearbeiten"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Verlauf"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Umbenennen"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Neu sortieren"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Als Wiedergabeliste speichern"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarmton"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Hinzugefügt zu %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth getrennt"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maximale Anzahl an Elementen (%d) ausgewählt"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nichts ausgewählt"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Löschen nicht möglich. Ausgewählte Musik wird wiedergegeben."
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Datei kann nicht wiedergegeben werden. Fehler aufgetreten."
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Wiedergabe nicht möglich. Nicht unterstützter Dateityp"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Hzfg."
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Senden"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Alle"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Diri\n-genten"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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 Minuten"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Einst. als"
+
+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."
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music Square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Wgl. öff."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nicht genügend Musikdateien zur Wiedergabe in Musik Square verfügbar. Mindestens %d Musikdateien erforderlich"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Leidenschaftlich"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamisch"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Ruhig"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joy"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Bibliotheksaktualisierung"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Bibliothek aktualisieren?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Achse wechseln"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Alle Lieder"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Ausgewählte Liste ist leer"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Komponisten"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Zum Startbildschirm hzfg."
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Medien-Info"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Stimmung"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Jahre"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Alt"
+
diff --git a/po/el_GR.po b/po/el_GR.po
new file mode 100644 (file)
index 0000000..8094f01
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Φάκελοι"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Άλμπουμ"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Αγαπημένα"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Η ακρόαση μουσικής σε υψηλή ένταση για μεγάλο χρονικό διάστημα μπορεί να βλάψει την ακοή σας"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Καλλιτέχνες"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Αυτόματο"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Συνθέτες"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Είδη"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Επιλέχθηκε πρόσφατα"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Μενού μουσικής"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Προστέθηκε πρόσφατα"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Έτη"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "'Ηχος κλήσης"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Δημιουργία λίστας αναπαραγωγής"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Κατάργηση"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ήχος κλήσης καλούντος"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Καλλιτέχνες"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Είδη"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Όλα"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Διαγραφή"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Κοιν.χρ"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Προσ. σε λίστα αναπ."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Λίστες αναπαραγ."
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Αναπ/χθηκε πρόσφατα"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Προσθήκη"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Άλμπουμ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Κανονική"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Ποπ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Ροκ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Τζαζ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Χορός"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Κλασική"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Πραγματικός χρόνος"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Οδηγός εγκατάστασης μουσικής"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biography"
+
+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_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_CONCERT_HALL"
+msgstr "Αίθουσα συναυλιών"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Προσαρμοσμένη"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "Τζαζ"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Πραγματικός χρόνος"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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 "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+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_EDIT_TITLE"
+msgstr "Επεξεργασία τίτλου"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "Αρχιμ."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Ορισμός ως"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Αυτό το εφέ ήχων εκτελείται μόνο στη λειτουργία ακουστικών και Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Μουσικό κουτί"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Άν.λί.αν."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Δεν υπάρχουν αρκετά αρχεία μουσικής προς αναπαραγωγή στο Music square. Απαιτούνται τουλάχιστον %d αρχεία μουσικής"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Πάθος"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Παθιασμένος"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Δυναμική"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Ήρεμος"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Χαρά"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Ενημέρωση βιβλιοθήκης"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Ενημέρωση βιβλιοθήκης;"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Αλλαγή άξονα"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Όλα τα τραγούδια"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Η επιλεγμένη λίστα είναι κενή"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Συνθέτες"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Προσθήκη σε αρχική σελίδα"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Πληροφορίες πολυμέσων"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Διάθεση"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Έτη"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Παλιό"
+
diff --git a/po/en.po b/po/en.po
new file mode 100644 (file)
index 0000000..58b6b16
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Folders"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favourites"
+
+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_BODY_ARTISTS"
+msgstr "Artists"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Composers"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Most played"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Music menu"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Recently added"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Years"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Call ringtone"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Create playlist"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Caller ringtone"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artists"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Years"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "All"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Delete"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Share"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Add to playlist"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Playlists"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Recently played"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Add"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Music setup wizard"
+
+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_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_CONCERT_HALL"
+msgstr "Concert hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamic"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effect"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equaliser"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalisation"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Forwarding"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Music clarity"
+
+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_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_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_EDIT_TITLE"
+msgstr "Edit title"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "History"
+
+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_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_CONDUCTORS"
+msgstr "Conductors"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Set as"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Open playlist"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "There are not enough music files to play in Music square. At least %d music files required"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Passionate"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamic"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calm"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joy"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Library update"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Update library?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Change axis"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "All songs"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Selected list empty"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Composers"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Media info"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Moods"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Years"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Old"
+
diff --git a/po/en_PH.po b/po/en_PH.po
new file mode 100644 (file)
index 0000000..cbe040d
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Folders"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favorites"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "High volume may harm your hearing if you listen to it for a long time"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artists"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Composers"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Most played"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Music menu"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Recently added"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Years"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Call ringtone"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Create playlist"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Caller ringtone"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artists"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Years"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "All"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Delete"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Share"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Add to playlist"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Playlists"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Recently played"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Add"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Music set up wizard"
+
+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_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_CONCERT_HALL"
+msgstr "Concert hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Music clarity"
+
+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_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_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_EDIT_TITLE"
+msgstr "Edit title"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "History"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Re-order"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Save as playlist"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarm tone"
+
+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_CONDUCTORS"
+msgstr "Conductors"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Set as"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Open playlist"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Not enough music files to play in Music square. At least %d music files required"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Passionate"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamic"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calm"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joy"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Library update"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Update library?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Change axis"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "All songs"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Selected list empty"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Composers"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Media info"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Moods"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Years"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Old"
+
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100644 (file)
index 0000000..5950fb7
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Folders"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favorites"
+
+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_BODY_ARTISTS"
+msgstr "Artists"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Composers"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Most played"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Music menu"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Recently added"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Years"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Call ringtone"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Create playlist"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Delete"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Caller ringtone"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artists"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Years"
+
+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_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_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_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 "Remove"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Delete?"
+
+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_ITAB4_ALL"
+msgstr "All"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Delete"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Share"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Add to playlist"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Playlists"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Recently played"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Add"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Music setup wizard"
+
+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_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_CONCERT_HALL"
+msgstr "Concert hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Music clarity"
+
+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_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_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_EDIT_TITLE"
+msgstr "Edit title"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "History"
+
+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_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_CONDUCTORS"
+msgstr "Conductors"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Set as"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Open playlist"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Not enough music files to play in Music square. At least %d music files required"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Passionate"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamic"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calm"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joy"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Library update"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Update library?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Change axis"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "All songs"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Selected list empty"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Composers"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Media info"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Moods"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Years"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Old"
+
diff --git a/po/es_ES.po b/po/es_ES.po
new file mode 100644 (file)
index 0000000..439b575
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Carpetas"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Álbumes"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritos"
+
+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_BODY_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositores"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Géneros"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Las más escuchadas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menú de música"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Añadidas recientemente"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Años"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Melodía de llamada"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Crear lista de reproducción"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Melodía del llamante"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Géneros"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Años"
+
+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_POP_ITEM_NOT_REMOVE"
+msgstr "No se puede quitar elemento"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "No se pueden añadir más de %d archivos de música"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "No se puede reproducir durante la llamada"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Álbum"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Crear lista de reproducción"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Descripción"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Imposible"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Ubicación"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Sin listas de reproducción"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Número de pista"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipo"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Desconocido"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Añadido"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "¿Eliminar?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s eliminado"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Elimininado"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "¿Eliminar?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "No se puede cambiar el nombre de la lista de reproducción"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "No se puede definir como melodía"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "No se puede compartir el archivo DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Álbumes"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Todos"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Añadir a lista repr"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Listas reproducc"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Reproducidas recientemente"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Añadir"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Álbumes"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Clásica"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Asistente para la configuración de música"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografía"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Créditos"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Info multimedia"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografía"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Letra"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nombre demasiado largo"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Clasificación parental"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Posible"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Revisar"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lista de pistas"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Ya se ha añadido"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Canal 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Añadir a lista de reproducción"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Usos disponibles"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Mejora de bajos"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Coros"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Clásica"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositor"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Auditorio"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinámico"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efecto"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ecualizador"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalización"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Reenviando"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Género"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Claridad de la música"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Configuración de música"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Álbum artístico"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Listas de reproducción"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Reproducidas recientemente"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Duración de pista"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Trémolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validez"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Amplio"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Ninguna canción"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Canciones"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Añadir lista reproducción"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Editar título"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historial"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renombrar"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Reordenar"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Guardar como lista de reproducción"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Tono de alarma"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Añadido a %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth desconectado"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Número máximo de elementos (%d) seleccionados"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "No se ha seleccionado nada"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Imposible eliminar. La canción seleccionada se está reproduciendo"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "No se puede reproducir. Se ha producido un error"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "No se puede reproducir. Tipo de archivo no admitido"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Añadir"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Todos"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Directores"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Definir como"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Ab ls rep"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "No hay suficientes archivos de música para reproducir en Music square. Hacen falta al menos %d"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Pasión"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Apasionado"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinámico"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Tranquilo"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Alegría"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Actualizar biblioteca"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "¿Actualizar biblioteca?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Cambiar eje"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Todas las canciones"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Lista seleccionada vacía"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Composit"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Añadir a inicio"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Info multimedia"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Estado"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Años"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Antiguo"
+
diff --git a/po/es_MX.po b/po/es_MX.po
new file mode 100644 (file)
index 0000000..56a7763
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Carpetas"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Álbumes"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritos"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Volúmenes elevados pueden dañar su oído si los escucha durante un tiempo prolongado"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automático"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositores"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Géneros"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Más reproducidas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menú de reproductor de música"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Añadidas recientemente"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Años"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Tono de llamada"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Crear lista de reproducción"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "ID del llamante"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Géneros"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Años"
+
+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 etiq."
+
+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 solo 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_POP_ITEM_NOT_REMOVE"
+msgstr "No se puede eliminar el elemento"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "No se pueden añadir más de %d archivos de música"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "No se puede reproducir durante la llamada"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Álbum"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Crear lista de reproducción"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Descripción"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Imposible"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Ubicación"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Vacío"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Número de pista"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipo"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Desconocido"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Añadido"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "¿Eliminar?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s eliminado"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Eliminado"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "¿Eliminar?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "No se puede renombrar la lista de reproducción"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "No se puede definir como melodía"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "No se puede compartir el archivo DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Álbumes"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Todo"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Añadir a lista reprod"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "List reproducc"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Reproducidas recientemente"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Añadir"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Álbumes"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Clásica"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "En vivo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Asistente de configuración de música"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografía"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Créditos"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Información multimedia"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografía"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Letra"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nombre demasiado largo"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Evaluar pista"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Posible"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Revisar"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lista de pistas"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Ya añadido"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Canal 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Añadir a lista de reproducción"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Usos disponibles"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Mejora de bajos"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Coros"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Clásica"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositor"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Auditorio"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinámico"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efectos"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "EQ"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalización"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Reenvío"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Género"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "En vivo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Claridad de música"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Configuración de música"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Portada del álbum"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Listas de reproducción"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Reproducidas recientemente"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Duración"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Trémolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validez"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Amplio"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Desactivado"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Vacío"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Canciones"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Añadir lista de reproducción"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Editar título"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historial"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renombrar"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Reordenar"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Guardar como lista de reproducción"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Tono de alarma"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Añadido a %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth desactivado"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Número máximo de elementos (%d) seleccionados"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "No se ha seleccionado nada"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "No se puede eliminar. La canción seleccionada se está reproduciendo"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "No se puede reproducir. Se ha producido un error"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "No se puede reproducir. Tipo de archivo no soportado"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Añadir"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Todo"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Directores"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Seleccionar 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 a dispositivos mediante AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Ver"
+
+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 "Virtual 7.1 ch"
+
+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 "Desactivación automática de música"
+
+msgid "IDS_MUSIC_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Definir como"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Cuadrado musical"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Abr lista rep"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "No hay suficientes archivos de música para reproducir. Se necesitan al menos %d archivos de música."
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Pasión"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Apasionado"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinámico"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Tranquilo"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Alegría"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Actualización de biblioteca"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "¿Actualizar biblioteca?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Cambiar eje"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Todas las canciones"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Lista seleccionada vacía"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Composi."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Añadir a inicio"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Información multimedia"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Estado"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Años"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Anterior"
+
diff --git a/po/et.po b/po/et.po
new file mode 100644 (file)
index 0000000..1397166
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Kaustad"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumid"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Lemmikud"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Valju heli kuulamine pika aja vältel võib põhjustada kuulmiskahjustusi"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Esitajad"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automaatne"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Heliloojad"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanrid"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Enim esitatud"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Muusika menüü"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Hiljuti lisatud"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Aastad"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Kõne helin"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Loo esitusloend"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Eemalda"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Helistaja helin"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Esitajad"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanrid"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Aastad"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Ei saa lisada"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Laulusõnu pole"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Heliefekte ei saa muuta, kui kasutusel on 5.1 kanal"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Otsi silti"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-kanaline heliefekt töötab ainult kõrvaklappide režiimis"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 kanalit saab aktiveerida ainult siis, kui heliefektid on väljas"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Esitusloendit ei ole võimalik luua"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Silti ei saa hankida"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Üksust ei ole võimalik eemaldada"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Üle %d muusikafaili ei saa lisada"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Kõne ajal ei saa esitada"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Autoriõigus"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Loo esitusloend"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Kirjeldus"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Vorming"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Võimatu"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Asukoht"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Sünkroonimine..."
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Muusikapala number"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tüüp"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Tundmatu"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Kustuta"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Lisatud"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Kustutada?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s eemaldatud"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Eemaldatud"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Eemaldada?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Esitusloendit ei ole võimalik ümber nimetada"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Helinaks ei saa määrata"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM-faili ei saa jagada"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumid"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Kõik"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Kustuta"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Jaga"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Lisa esitusl.-sse"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Esitusloendid"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Hiljuti esitatud"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Lisa"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumid"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Tavaline"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Popmuusika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Džäss"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Tantsumuusika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassikaline"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Elav muusika"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Muusika seadistusviisard"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Elulugu"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Tiitrid"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Meediumiteave"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskograafia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Laulusõnad"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nimi on liiga pikk"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Vanemate hinnang"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Võimalik"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Eelvaade"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lugude loend"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Juba lisatud"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5,1 kanalit"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Lisa esitusloendisse"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Esitaja"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Võimalikud kasutusviisid"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bassi rikastamine"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Koorilaul"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassikaline"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Helilooja"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Kontserdisaal"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Kohandus"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Tantsumuusika"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dünaamiline"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvalaiser"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Eksternalisatsioon"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Edastamine"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Žanr"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Džäss"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Elav muusika"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Muusika selgus"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Muusika seaded"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albumi kujundus"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Esitusloendid"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Popmuusika"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Hiljuti esitatud"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Muusikapala pikkus"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Väriheli"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Kehtivus"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Laialdane"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Väljas"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Laule pole"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Laulud"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Lisa esitusloend"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Muuda nimetust"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Ajalugu"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Nimeta ümber"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Järjesta ümber"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Salvesta esitusloendina"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarmi toon"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Lisatud asukohta %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetoothi ühendus katkestatud"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maksimaalne arv üksusi (%d) on valitud"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Valik tegemata"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Ei saa kustutada. Valitud muusikat esitatakse"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Ei saa esitada. Ilmnes tõrge"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Ei saa esitada. Toetuseta failitüüp"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Lisa"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Jaga"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Kõik"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigen-did"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Pod-castid"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Vali seade"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ära näita uuesti"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Muusikat saate seadmetes voogesitada AllShare'i abil"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Kuva:"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Tavaline"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Kasutaja"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokaal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bassi võimendamine"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Kõrg. helide võimendamine"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kohvik"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuaalne 7.1 kanal"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 minuti järel"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 minuti pärast"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 tunni pärast"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1 tunni ja 30 minuti pärast"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 tunni pärast"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Muusika automaatselt välja"
+
+msgid "IDS_MUSIC_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Määra"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "See heliefekt töötab ainult kõrvaklappide ja Bluetooth-peakomplekti režiimides"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Muusikaruut"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Ava loend"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Pole piisavalt muusikafaile, mida esitada Muusikaruudus. Nõutav on vähemalt %d muusikafaili"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Kirg"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Kirglik"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dünaamiline"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Rahulik"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Rõõm"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Teegi värskendamine"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Kas värskendada teeki?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Vaheta telge"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Kõik laulud"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Valitud loend on tühi"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Helil.-d"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Lisa avaekraanile"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Meediumiteave"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Meeleolud"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Aastad"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Vana"
+
diff --git a/po/eu.po b/po/eu.po
new file mode 100644 (file)
index 0000000..ef4d256
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Karpetak"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumak"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Gogokoenak"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Baliteke bolumen handien zure entzumena kaltetzea denbora luzean entzuten baduzu"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artistak"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Egileak"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Generoak"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Gehienetan erreproduzitutakoak"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musikaren menua"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Azken gehitutakoak"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Urteak"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Dei doinua"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Erreprodukzio zerrenda sortu"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Kendu"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Dei egilearen dei doinua"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistak"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Generoak"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Urteak"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Ezin da gehitu"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Letrarik ez"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Ezin dira soinu efektuak aldatu 5.1 kanala erabiltzerakoan"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Bilatu etiketa"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 kanalaren soinu efektuak aurikular moduan soilik funtzionatzen du"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 kanala soinu efektuak itzalita daudenean bakarrik aktibatu daiteke"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Ezin da erreprodukzio zerrenda sortu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Ezin da etiketa eskuratu"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Ezin da elementua kendu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Ezin izan dira %d musika fitxategi baino gehiago gehitu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Ezin da deian zehar erreproduzitu"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albuma"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Egilea"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Erreprodukzio zerrenda sortu"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Deskribapena"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formatua"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Ezinezkoa"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Kokalekua"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Erreprodukzio zerrendarik ez"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Abesti zenbakia"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Mota"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Ezezaguna"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Ezabatu"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Gehituta"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Ezabatu?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s ezabatu da"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Kenduta"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Kendu?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Ezin da erreprodukzio zerrenda berrizendatu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Ezin da dei tonu gisa ezarri"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Ezin da DRM fitxategia partekatu"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumak"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Guztiak"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Ezabatu"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Partek."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Gehitu erreprod. zerrendara"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Errepr. zerrendak"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Azken erreproduzituak"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Gehitu"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumak"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Arrunta"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasikoa"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Zuzenean"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Musika konfigurazio laguntzailea"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografia"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Kredituak"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Multimedia informazioa"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lirikoa"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Izen luzeegia"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Gurasoen balorazioa"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Posible"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Berrikusi"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Pisten zerrenda"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Gehituta dago lehendik"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanala"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Erreprodukzio zerrendara gehitu"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Erabilera eskuragarriak"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Baxuak hobetu"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Chorus"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasikoa"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Egilea"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Antzokia"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Pertsonalizatua"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamikoa"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efektua"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekualizadorea"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Kanporatzea"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Birbidaltzea"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Generoa"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Zuzenean"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musikaren argitasuna"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Musika konfigurazio"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albumaren azala"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Erreprodukzio zerrendak"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Azken erreproduzituak"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Abesti iraupena"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Baliozkotasuna"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Zabala"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Desaktibatu"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Abestirik ez"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Abestiak"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Gehitu erreprodukzio zerrenda"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Izenburua editatu"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historia"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Berrizendatu"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Ordenatu berriro"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Gorde erreprodukzio zerrenda gisa"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarma doinua"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "%s zerrendan gehitua"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth deskonektatuta"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Elementuen kopuru maximoa (%d) hautatu duzu"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Ez da ezer aukeratu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Ezin da ezabatu. Hautatutako musika erreproduzitzen ari da"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Ezin da erreproduzitu. Errorea gertatu da"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Ezin da erreproduzitu. Fitxategi mota ez onartua"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Gehitu"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Partekatu"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Guztia(k)"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Zuzend."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast-ak"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Gailua aukeratu"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ez erakutsi berriro"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Zure musikaren stream egin dezakezu gailuetara AllShare bidez"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Ik. hon."
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Arrunta"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Erabiltzailea"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Ahots musika"
+
+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 "Kafetegia"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "7.1 kate birtuala"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 min. geroago"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 min ostean"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Ordu 1en ostean"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Ordu 1 eta 30 minutu ondoren"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 orduren ostean"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Musika automatikoa itzalita"
+
+msgid "IDS_MUSIC_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Ezarri"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Soinu efektu honek aurikular eta Bluetooth aurikular moduetan soilik funtzionatzen du"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Musika plaza"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Err. zr. ir."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Ez dago nahikoa musika fitxategi erreproduzitzeko Music square-n. Gutxienez %d musika fitxategi behar dira"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Pasioa"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Apasionatua"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamikoa"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Lasaia"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Poztasuna"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Liburutegi eguneraketa"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Eguneratu liburutegia?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Aldatu ardatza"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Abesti guztiak"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Hautatutako zerrenda hutsik"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Konposit."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Gehitu nagusira"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Multimedia informazioa"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Aldarteak"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Urteak"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Zaharra"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100644 (file)
index 0000000..9c985bf
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Kansiot"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumit"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Suosikit"
+
+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_BODY_ARTISTS"
+msgstr "Esittäjät"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automaattinen"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Säveltäjät"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Tyylilajit"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Eniten soitetut"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musiikkivalikko"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Viimeksi lisätyt"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Vuosi"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Puhelun soittoääni"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Luo soittolista"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Poista"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Soittajan soittoääni"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Esittäjät"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Tyylilajit"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Vuodet"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Kaikki"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Poista"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Jaa"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Lisää soittolistaan"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "S.listat"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Viimeksi soitetut"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Lisää"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumit"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normaali"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Tanssi"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassinen"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Suora"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Ohjattu musiikkiasennus"
+
+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_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_CONCERT_HALL"
+msgstr "Konserttisali"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Mukautettu"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Tanssi"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Suora"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musiikin selkeys"
+
+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_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_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_EDIT_TITLE"
+msgstr "Muokkaa otsikkoa"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historia"
+
+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_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_CONDUCTORS"
+msgstr "Kap.m."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Määritä"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Musiikkineliö"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "A.s.lista"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Musiikkineliössä ei ole riittävästi toistettavia musiikkitiedostoja. Vaaditaan vähintään %d musiikkitiedostoa"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Intohimo"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Intohimoinen"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynaaminen"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Rauhallinen"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Ilo"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Kirjaston päivitys"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Päivitetäänkö kirjasto?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Vaihda akselia"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Kaikki kappaleet"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Valittu luettelo on tyhjä"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Sävelt."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Lisää etusivulle"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Median tiedot"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Tunnelmat"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Vuodet"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Vanha"
+
diff --git a/po/fr_CA.po b/po/fr_CA.po
new file mode 100644 (file)
index 0000000..21122de
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Dossiers"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoris"
+
+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_BODY_ARTISTS"
+msgstr "Artistes"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositeurs"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Les plus écoutés"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menu musique"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Ajoutés récemment"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Ans"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Sonnerie d'appel"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Créer une liste de lecture"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Retirer"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Sonnerie de l'appelant"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistes"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Années"
+
+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 "Impossible de modifier les effets sonores pendant l'utilisation de la chaine 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Rechercher un libellé"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "L'effet sonore de la chaine 5.1 ne fonctionne qu'en mode Écouteur uniquement"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "La chaine 5.1 ne peut être activée 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_POP_ITEM_NOT_REMOVE"
+msgstr "Impossible de retirer l'élément"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Impossible d'ajouter plus de %d fichier(s) musical/aux"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Impossible de lire le message pendant un appel"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Auteur"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Droit d'auteur"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Créer une liste de lecture"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Description"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formater"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Impossible"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Emplacement"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Aucune liste de lecture"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Numéro de la piste"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Type"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Inconnu"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Ajouté"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Supprimer ?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s supprimé"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Retiré"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Retirer?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Impossible de renommer la liste de lecture"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Impossible de définir en tant que sonnerie"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Impossible de partager le fichier GDN"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Tout"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Partag."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Aj. dans liste lecture"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Listes de lecture"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Écoutés récemment"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Ajouter"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Classique"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Direct"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Assistant de configuration de la musique"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biographie"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Remerciements"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Informations sur les multimédias"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discographie"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Paroles"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nom trop long"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Classement parental"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Possible"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Aperçu"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Liste des pistes"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Déjà ajouté"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Chaine 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Ajouter à liste de lecture"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artiste"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Utilisations disponibles"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Optimisation des basses"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Chorale"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Classique"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositeur"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Salle de concert"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personnaliser"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamique"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effets"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Égaliseur"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalisation"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Transfert"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Direct"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Clarté musicale"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Paramètres de musique"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Illustration de l'album"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Listes de lecture"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Écoutés récemment"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Durée de la piste"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Trémolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validité"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha Wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Écran large"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Désactivé"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Aucun titre"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Chansons"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Ajouter liste de lecture"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Modifier le titre"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historique"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renommer"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Réorganiser"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Enregistrer comme liste de lecture"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Tonalité d'alarme"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Ajouté à %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth déconnecté"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Nombre maximum d'éléments (%d) sélectionnés"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Aucune sélection"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Suppression impossible. La musique sélectionnée est en cours de lecture"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Lecture impossible. Une erreur s'est produite"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Lecture impossible. Type de fichier non pris en charge"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Ajouter"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Partager"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Tout"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Chefs d'orch."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Balados"
+
+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 "Vocal"
+
+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 "Chaine 7.1 virtuelle"
+
+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 h 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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Définir comme"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "L'effet sonore fonctionne uniquement avec le mode Écouteur et le casque Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Coin musique"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Liste"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nombre de fichiers musicaux insuffisant pour la lecture dans Coin musique. Au moins %d fichiers musicaux requis"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Passionné"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamique"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calme"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joie"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Mise à jour de la bibliothèque"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Mettre à jour la bibliothèque?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Modifier l'axe"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Tous les morceaux"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "La liste sélectionnée est vide"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Compos."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Ajouter à l'accueil"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Informations sur les multimédias"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Ambiances"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Années"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Ancien"
+
diff --git a/po/fr_FR.po b/po/fr_FR.po
new file mode 100644 (file)
index 0000000..e0d71fa
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Dossiers"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoris"
+
+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_BODY_ARTISTS"
+msgstr "Artistes"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto."
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositeurs"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Les plus écoutés"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menu musique"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Ajoutés récemment"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Années"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Sonnerie d'appel"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Créer une liste de lecture"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Supprimer"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Sonnerie d'appelant"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistes"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Années"
+
+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 Écouteur 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_POP_ITEM_NOT_REMOVE"
+msgstr "Impossible de retirer l'élément"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Impossible d'ajouter plus de %d fichier(s) musical/aux"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Lecture impossible pendant un appel"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Auteur"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Créer une liste de lecture"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Description"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Impossible"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Emplacement"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Aucune liste de lecture"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Numéro de la piste"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Type"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Inconnu"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Ajouté"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Supprimer ?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s supprimé"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Supprimé"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Supprimer ?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Impossible de renommer la liste de lecture"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Impossible de définir en tant que sonnerie"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Impossible de partager le fichier DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Tout"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Supprimer"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Partag."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Aj. dans liste lecture"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Listes lecture"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Écoutés récemment"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Ajouter"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Classique"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Assistant de configuration de la musique"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biographie"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Remerciements"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Infos sur le média"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discographie"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Paroles"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nom trop long"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Classement parental"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Possible"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Compte-rendu"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Liste des pistes"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Déjà ajouté"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Canal 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Ajouter à liste de lecture"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artiste"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Utilisations disponibles"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Optimisation des basses"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Chorale"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Classique"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositeur"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Salle de concert"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personnaliser"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamique"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effets"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Egaliseur"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalisation"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Transfert"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Clarté musicale"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Paramètres audio"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Illustration de l'album"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Listes de lecture"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Écoutés récemment"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Durée de la piste"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Trémolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validité"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha Wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Espace ouvert"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Désactivé"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Aucun titre"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Chansons"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Ajouter liste de lecture"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Modifier le titre"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historique"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renommer"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Réorganiser"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Enregistrer comme liste de lecture"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Tonalité de l'alarme"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Ajouté à %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth déconnecté"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Nombre maximum d'éléments (%d) sélectionnés"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Aucune sélection"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Suppression impossible. La musique sélectionnée est en cours de lecture"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Lecture impossible. Une erreur s'est produite"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Lecture impossible. Type de fichier non pris en charge"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Ajouter"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Partager"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Tout"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Chefs d'orch."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Définir comme"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "L'effet sonore fonctionne uniquement avec le mode Écouteur et le casque Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Coin musique"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Liste"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nombre de fichiers musicaux insuffisant pour la lecture dans Coin musique. Au moins %d fichiers musicaux requis"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Passionné"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamique"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calme"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joie"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Mise à jour de la bibliothèque"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Mettre à jour la bibliothèque ?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Modifier l'axe"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Tous les morceaux"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "La liste sélectionnée est vide"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Compos."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Ajouter à l'accueil"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Infos sur le média"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Ambiances"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Années"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Ancien"
+
diff --git a/po/ga.po b/po/ga.po
new file mode 100644 (file)
index 0000000..d07331a
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Fillteáin"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albaim"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Ceanáin"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Is féidir le hairdí arda dochar a dhéanamh don éisteacht má éisteann tú ar feadh tamall fada"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Ceoltóirí"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Uath-"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Cumadóirí"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Seánraí"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Is mó seinm"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Roghchlár ceoil"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Curtha leis le déanaí"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Blianta"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Clingthon glao"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Déan seinnliosta"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Bain"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Clingthon glaoiteora"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Ceoltóirí"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Seanrá"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Blianta"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Ní féidir cur leis"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Níl liricí ann"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Ní féidir maisíochtaí fuaime a athrú agus imfhuaim in úsáid"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Aimsigh clib"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Ní fheidhmíonn maisíocht fuaime imfhuaime ach i mód cluasáin amháin"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Ní féidir imfhuaim a chur i ngníomh ach amháin nuair a bhíonn maisíochtaí fuaime as"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Ní féidir seinnliosta a chruthú"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Ní féidir clib a fháil"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Ní féidir mír a bhaint"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Ní féidir níos mó ná %d comhad ceoil a chur leis"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Ní féidir seinm le linn glao"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albam"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Údar"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Cóipcheart"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Déan seinnliosta"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Cur síos"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formáid"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Dodhéanta"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Suíomh"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Níl seinnliostaí ann"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Uimhir an riain"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Cineál"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Anaithnid"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Scrios"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Curtha leis"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Scrios?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s bainte"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Bainte"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Bain?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Ní féidir seinnliosta a athainmniú"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Ní féidir é a shocrú mar chlingthon"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Ní féidir comhad DRM a chomhroinnt"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albaim"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Gach"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Scrios"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "C.roinn"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Cuir le seinnliosta"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Seinnliostaí"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Seinnte le déanaí"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Cuir leis"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albaim"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normálta"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rac"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Snagcheol"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Damhsa"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Clasaiceach"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Beo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Draoi suiteála ceoil"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Beathaisnéis"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Creidiúintí"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Faisnéis faoi mheáin"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Dioscliosta"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Liric"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Ainm ró-fhada"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Rátáil tuismitheoirí"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Indéanta"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Athbhreithniú"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Liosta fuaimrianta"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Curtha leis cheana"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Imfhuaim"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Cuir le seinnliosta"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Ceoltóir"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Úsáidí atá ar fáil"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Breisiú doird"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Cór"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Clasaiceach"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Cumadóir"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Halla ceolchoirme"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Saincheaptha"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Damhsa"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinimiciúil"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Maisíocht"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Cothromóir"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Seachtrú"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Seoladh ar aghaidh"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Seánra"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Snagcheol"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Beo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Soiléireacht cheoil"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Socruithe ceoil"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Ealaín albaim"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Seinnliostaí"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Seinnte le déanaí"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rac"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Fad ama an riain"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremoló"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Bailíocht"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Leathan"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "As"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Níl amhráin ann"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Amhráin"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Cuir seinnliosta leis"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Cuir teideal in eagar"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Stair"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Athainmnigh"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Déan athordú"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Sábháil mar sheinnliosta"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Ton aláraim"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Curtha le %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth dícheangailte"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Uaslíon na míreanna roghnaithe (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Dada roghnaithe"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Ní féidir scriosadh. Tá an ceol roghnaithe á sheinm"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Ní féidir seinm. Tharla earráid"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Ní féidir seinm. Cineál comhaid gan tacú"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Cuir leis"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Comhroinn"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Gach"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Stiúrthóirí"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podchraoltaí"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Roghnaigh gléas"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ná taispeáin arís"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Is féidir leat do cheol a shruthú chuig gléasanna le AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Féach mar"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normálta"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Úsáideoir"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Guthach"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Treisiú doird"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Treisiú tribile"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Caife"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Cainéal fíorúil 7.1"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Tar éis 15 nóim"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "I ndiaidh 30 nóim"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "I ndiaidh 1 uair an chloig"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Tar éis 1 uair an chloig 30 nóim"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "I ndiaidh 2 uair an chloig"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Uathcheol as"
+
+msgid "IDS_MUSIC_BODY_HOUSE_M_GENRE"
+msgstr "Ceol tí"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Socraigh mar"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Ní oibríonn an mhaisíocht fuaime seo ach amháin sna móid cluasáin agus gléas cinn Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Cearnóg ceoil"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Osc. SL"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Níl go leor comhad ceoil ann le seinm sa Chearnóg ceoil. Tá %d comhad ceoil ar a laghad de dhíth"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Paisean"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Paiseanta"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinimiciúil"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Suaimhneach"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Lúcháir"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Nuashonrú leabharlainne"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Nuashonraigh leabharlann?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Athraigh ais"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Gach amhrán"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Liosta roghnaithe folamh"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Cumadóir"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Cuir le baile"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Faisnéis faoi mheáin"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Mothúcháin"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Blianta"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Sean"
+
diff --git a/po/gl.po b/po/gl.po
new file mode 100644 (file)
index 0000000..f85e107
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Carpetas"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Álbums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritos"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "A música a un volume elevado pode danar a túa capacidade auditiva se a escoitas durante un período de tempo prolongado"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automático"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositores"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Xéneros"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "As máis escoitadas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menú de música"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Engadidas recentemente"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Anos"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Melodía de chamada"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Crear lista de reprodución"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Melodía do chamante"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Xéneros"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Anos"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Non se pode engadir"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Sen letras"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Non se poden cambiar os efectos de son mentres estás a usar a canle 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 "O efecto de son da canle 5.1 só funciona no modo de auriculares"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Só se pode activar a canle 5.1 cando os efectos de son están desactivados"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Non se pode crear a lista de reprodución"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Non se pode obter etiqueta"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Non se pode eliminar o elemento"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Non se pode(n) engadir máis de %d arquivo(s) de música"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Non se pode reproducir durante a chamada"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Álbum"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Crear lista de reprodución"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Descrición"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Non é posible"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Situación"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Sen listas de reprodución"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Número de pista"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipo"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Descoñecido"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Engadido"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Eliminar?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s eliminado"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Eliminado"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Eliminar?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Non se pode cambiar o nome da lista de reprodución"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Non se pode definir como melodía"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Non se pode compartir o arquivo DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Álbums"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Todas"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Compart"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Eng á lista de reprod"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Listas de música"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Reproducida recentemente"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Engadir"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Álbums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Clásico"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "En directo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Asistente de configuración de música"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografía"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Créditos"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Información multimedia"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografía"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Letra"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nome demasiado longo"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Preferidos polos pais"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Posible"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Revisar"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lista de pistas"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Xa engadida"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Canle 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Engadir á lista de reprodución"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Usos dispoñibles"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Aumento de grave"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Coro"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Clásico"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositor"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Auditorio"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personalizado"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinámico"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efecto"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ecualizador"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Exteriorización"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Reenviando"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Xénero"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "En directo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Claridade musical"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Configuración de música"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Portada"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Listas de reprodución"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Reproducida recentemente"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Duración da pista"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Trémolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validez"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Amplo"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Desactiv."
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Non hai cancións"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Cancións"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Engadir lista de reprodución"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Editar título"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historial"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "C. nome"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Volver ordenar"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Gardar como lista de reprodución"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Ton de alarma"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Engadido a %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth desconectado"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Número máximo de elementos (%d) seleccionados"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Non se seleccionou nada"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Non se pode eliminar. Estase a reproducir a música seleccionada"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Non se pode reproducir. Produciuse un erro"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Non se pode reproducir. Tipo de arquivo non admitido"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Eng."
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Todo"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Directores"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Seleccionar dispositivo"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Non volver mostrar"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Podes transmitir por secuencias a túa música a dispositivos mediante 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 "Música vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Potenciación de graves"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Potenciación de agudos"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafetaría"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual de 7.1 canles"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Logo de 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Tras 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Tras 1 hora"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Tras 1 hora e 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Tras 2 horas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Música automática desactivada"
+
+msgid "IDS_MUSIC_BODY_HOUSE_M_GENRE"
+msgstr "Música house"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Definir como"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Este efecto de son funciona só no modo de auriculares e audiófono Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Ab lr"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Non hai arquivos de música suficientes para reproducir en Music square. Precísanse polo menos %d arquivos de música"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Pasional"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinámico"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Tranquilo"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joy"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Actualización da biblioteca"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Actualizar biblioteca?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Cambiar eixo"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Todas as cancións"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Lista seleccionada baleira"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Composit"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Engadir ao inicio"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Información multimedia"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Ambientes"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Anos"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Antiga"
+
diff --git a/po/hi.po b/po/hi.po
new file mode 100644 (file)
index 0000000..9506562
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "साउंडअलाइव"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "फ़ोल्‍डर्स"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "एल्बम"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "पसंदीदा"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "उच्च वॉल्यूम से आपके सुनने में नुकसान हो सकता है यदि आप लंबे समय तक उसे सुनते हैं"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "कलाकार"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "स्वतः"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "संगीतकार"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "शैली"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "अधिकांश चलायें हुए"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "संगीत मेन्यू"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "हाल में जोड़ा गया"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "वर्ष"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "कॉल रिंगटोन"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "प्लेसूची बनाएँ"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "हटाएँ"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "कॉलर रिंगटोन"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "कलाकार"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "जेन्रेस"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "सभी"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "हटाएँ"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "साझा करें"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "प्लेसूची में जोड़ें"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "प्लेसूची"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "हाल में चलाया गया"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "जोड़ें"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "ऐलबम्स"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "सामान्य"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "पॉप"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "रॉक"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "जैज़"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "नृत्य"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "शास्त्रीय"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "लाइव"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "संगीत सेटअप विज़ार्ड"
+
+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_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_CONCERT_HALL"
+msgstr "कॉन्‍सर्ट हॉल"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "कस्‍टम"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "जैज़"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "लाइव"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "शीर्षक सम्पादित करें"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "कंडक्टर"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "घर"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "के जैसे सेट"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "यह ध्वनि प्रभाव केवल इयरफ़ोन और Bluetooth headset मोड्स में काम करता है"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "संगीत स्क्वेयर"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Open playlist"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "म्यूज़िक वर्ग में प्ले करने हेतु पर्याप्त म्‍यूज़िक फ़ाइलें नहीं। कम से कम %d म्‍यूज़िक फ़ाइलें आवश्यक"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "जोश"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "भावुक"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "डायनामिक"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "शांत"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "आनंद"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "लाइब्रेरी अपडेट"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "लायब्रेरी अपडेट करें?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "अक्ष बदलें"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "सभी गाने"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "चयनित सूची खाली"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "संगीतकार"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "होम में जोड़े"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "मीडिया सूचना"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "मूड्स"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "वर्ष"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "पुराना"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100644 (file)
index 0000000..f798ae8
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mape"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoriti"
+
+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_BODY_ARTISTS"
+msgstr "Izvođači"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Skladatelji"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanrovi"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najslušanije"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Glazbeni meni"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Nedavno dodano"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Godine"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Melodija zvona"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Novi popis pjesama"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Ukloni"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ton pozivatelja"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Izvođači"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanrovi"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Godine"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Sve"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Dijeli"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Dodati na popis za rep."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Popisi pjesama"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Posljednje"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Dodaj"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normalna"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasično"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Uživo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Čarobnjak postavki glazbe"
+
+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_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_CONCERT_HALL"
+msgstr "Koncertna dvorana"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Prilagođeno"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Uživo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Čistoća glazbe"
+
+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_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_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_EDIT_TITLE"
+msgstr "Uredi naslov"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Povijest"
+
+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_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_CONDUCTORS"
+msgstr "Dirigenti"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Postavi kao"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Glazbeni kutak"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Otvori"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nedovoljno glazbenih datoteka za reprodukciju u Glazbenom kutku. Potrebno je min. %d glazbenih datoteka"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Strastveno"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Strastveno"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamično"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Mirno"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Veselo"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Aktualizacija biblioteke"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Aktualiziraj biblioteku?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Promijeni os"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Sve pjesme"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Odabrani popis prazan"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Skladat."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Dodaj na početnu"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Podaci o mediju"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Raspoloženja"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Godine"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Stari"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100644 (file)
index 0000000..eb2cf23
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mappák"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumok"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Kedvencek"
+
+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_BODY_ARTISTS"
+msgstr "Előadók"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto."
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Szerzők"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Műfajok"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Leggyakrabban játszott"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Zene menü"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Legutóbb hozzáadott"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Év"
+
+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_REMOVE"
+msgstr "Eltávolít"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Hívó csengőhangja"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Előadók"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Műfajok"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Évek"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Összes"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Töröl"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Megoszt"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Listára vétel"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Lejátsz. listák"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Legutóbb lejátszott"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Hozzáad"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumok"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normál"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Zenelejátszó beállításvarázsló"
+
+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_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_CONCERT_HALL"
+msgstr "Concert hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Egyedi"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Music clarity"
+
+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_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_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_EDIT_TITLE"
+msgstr "Név szerkesztése"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Előzmények"
+
+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_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_CONDUCTORS"
+msgstr "Kar- mesterek"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Pod- castok"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Beállít, mint"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Zene-sarok"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "L. megnyit"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nincs elég lejátszható zenei fájl a Zenesarokban. Legalább %d zenei fájl szükséges"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Szenvedély"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Szenvedélyes"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamikus"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Higgadt"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Vidámság"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Könyvtár frissítése"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Frissíti a könyvtárat?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Tengely módosítása"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Összes szám"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "A kiválasztott lista üres"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Szerzők"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Kezdőképernyőhöz ad"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Média adatai"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Hangulatok"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Évek"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Régi"
+
diff --git a/po/hy.po b/po/hy.po
new file mode 100644 (file)
index 0000000..377a2d9
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Թղթապանակներ"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Ալբոմներ"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Սիրվածները"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Բարձր ձայնը կարող է վնասել Ձեր լսողությունը, եթե այն լսեք երկար ժամանակ"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Կատարողներ"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Ավտոմատ"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Կոմպիոզիտորներ"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Ժանրեր"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Հաճախակի նվագարկվող"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Երաժշտության մենյու"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Վերջերս ավելացված"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Տարիներ"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Զանգի մեղեդի"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Երգացանկ ստեղծել"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Հեռացնել"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Զանգահարողի զանգի մեղեդի"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Կատարողներ"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Ժանրեր"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Բոլորը"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Ջնջել"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Համօգտ."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Ավելացնել երգացանկին"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Երգացանկեր"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Վերջերս լսված"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Ավելացնել"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Ալբոմներ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Նորմալ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Փոփ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Ռոք"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Ջազ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Պարային"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Դասական"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Ուղիղ եթեր"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Երաժշտության տեղադրման վարպետ"
+
+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_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_CONCERT_HALL"
+msgstr "Համերգային դահլիճ"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Կարգավորել"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "Ջազ"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Ուղիղ եթեր"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "Խմբագրել վերնագիրը"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "Դիրիժորներ"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "Հաուս"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Նշանակել որպես"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Այս հնչյունային էֆեկտը գործում է միայն ականջակալի և Bluetooth գլխային հեռախոսի ռեժիմներում"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Երաժշտահրապարակ"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Բց եգ"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Երաժշտական հրապարակում նվագարկելու համար բավարար երաժշտական ֆայլեր չկան: Պահանջվում է առնվազն %d երաժշտական ֆայլ"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Կիրք"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Կրքոտ"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Դինամիկական"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Անվրդով"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Ուրախություն"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Երաժշտադարանի թարմացում"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Թարմացնե՞լ մեդիադարանը:"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Փոխել առանցքը"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Բոլոր երգերը"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Ընտրված ցուցակը դատարկ է"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Կմպզտրնր"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Ավելացնել տանը"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Մեդիա տվյալներ"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Տրամադրություն"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Տարիներ"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Հին"
+
diff --git a/po/is.po b/po/is.po
new file mode 100644 (file)
index 0000000..33afd87
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Möppur"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Plötur"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Eftirlæti"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Hátt spiluð tónlist getur skaðað heyrn þína ef hlustað er í langan tíma í einu"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Flytjandi"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Sjálfvirkt"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Höfundar"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Tónlistartegund"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Spilað mest"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Tónlistarvalmynd"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Bætt við nýlega"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Ár"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Hringitónn viðmælanda"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Búa til afspilunarlista"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Fjarlægja"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Hringitónn hringjanda"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Flytjandi"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Tónlistartegund"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Ár"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Ekki tókst að bæta við"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Enginn texti"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Mistókst að breyta hljóðhrifum þegar 5.1 rás er notuð"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Leita að merki"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Hljóðbrellan „5.1 rás“ virkar aðeins með heyrnartólum"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Einungis er hægt að kveikja á 5.1 stöð þegar slökkt er á hljóðhrifum"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Ekki tókst að búa til afspilunarlista"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Merki fannst ekki"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Ekki tókst að fjarlægja atriði"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Ekki tókst að bæta við nema %d tónlistarskrám"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Ekki er hægt að spila á meðan símtal stendur yfir"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albúm"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Höfundur"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Höfundaréttur"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Búa til afspilunarlista"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Lýsing"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Snið"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Ekki hægt"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Staðsetning"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Engir spilunarlistar"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Númer lags"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tegund"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Óþekkt"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eyða"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Bætt við"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Á að eyða?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s var fjarlægt"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Fjarlægt"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Á að fjarlægja?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Ekki tókst að endurnefna afspilunarlista"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Ekki hægt að nota sem hringitón"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Mistókst að vista höfundarréttarvarða skrá"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albúm"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Allt"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Eyða"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Samnýta"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Bæta á spilunarl."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Spilunarlistar"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Spilað nýlega"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Bæta við"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Möppur"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Venjulegt"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Popp"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rokk"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jass"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dans"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Sígilt"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Bein sending"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Uppsetningarforrit tónlistar"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Upplýsingar"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Höfundar"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Miðlaupplýsingar"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Útgáfusaga"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Texti"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nafn of langt"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Einkunn foreldra"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Mögulegt"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Endurskoða"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lagalisti"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Þegar bætt við"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 rás"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Bæta við lagalista"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Listamaður"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Tiltæk notkun"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Viðbótarbassi"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Kór"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Sígilt"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Tónskáld"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Tónleikasalur"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Sérstilla"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dans"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Breytilegt"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Brella"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Tónjafnari"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Útvíkkun"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Framsending"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Stefna"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jass"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Bein sending"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Skýrleiki tónlistar"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Tónlistarstillingar"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albúmmyndir"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Lagalistar"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Popp"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Spilað nýlega"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rokk"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Lengd lags"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Gildistími"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Breitt"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Slökkt"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Engin lög"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Lög"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Setja inn spilunarlista"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Breyta titli"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Saga"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Endurnefna"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Panta aftur"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Vista sem lagalista"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Vekjaratónn"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Bætt við %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth aftengt"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Komið er að hámarksfjölda valinna atriða (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Ekkert er valið"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Mistókst að eyða. Valda tónlistin er í spilun"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Mistókst að spila. Villa kom upp"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Ekki tókst að spila. Óstutt skrársnið"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Bæta"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Samnýta"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Allt"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Stjórar"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Netvörp"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Veldu tæki"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ekki birta aftur"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Þú getur streymt tónlistina þína í tæki sem nota AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Birta sem"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Venjulegt"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Notandi"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Söngur"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bassaaukning"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Hátónaaukning"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kaffihús"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Sýndar 7.1 ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Eftir 15 mín."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Eftir 30 mín."
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Eftir 1 klst."
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Eftir 1 klst. 30 mín."
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Eftir 2 klukkustundir"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Sjálfvirk lokun"
+
+msgid "IDS_MUSIC_BODY_HOUSE_M_GENRE"
+msgstr "House-tónlist"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Nota sem"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Þessi hljóðbrella virkar aðeins í með heyrnartólum og Bluetooth höfuðtólum"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Tónfern."
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Opna sp.lista"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Of fáar tónlistarskrár til að spila í Tónlistarferningi . Lágmarkið er %d tónlistarskrár"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Ástríða"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Ástríðufullt"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Breytilegt"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Rólegt"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Gleði"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Uppfærsla á safni"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Uppfæra safn?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Breyta ás"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Öll lög"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Listinn er tómur"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Höfundar"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Bæta við heimaskjá"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Miðlaupplýsingar"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Lyndi"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Ár"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Eldri"
+
diff --git a/po/it_IT.po b/po/it_IT.po
new file mode 100644 (file)
index 0000000..a87d58a
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Cartelle"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Preferiti"
+
+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_BODY_ARTISTS"
+msgstr "Artisti"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatica"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositori"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Generi"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Più ascoltati"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menu musicale"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Ultimi aggiunti"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Anni"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Suoneria chiamata"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Crea playlist"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Rimuovi"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Suoneria chiamante"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Generi"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Anni"
+
+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_POP_ITEM_NOT_REMOVE"
+msgstr "Impossibile rimuovere elemento"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Impossibile aggiungere più di %d file musicali"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Impossibile riprodurre durante una chiamata"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autore"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Crea playlist"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Descrizione"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Impossibile"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Posizione"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nessuna playlist"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Numero traccia"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipo"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Sconosciuto"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Elimina"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Aggiunto"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Eliminare?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s rimosso"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Rimosso"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Rimuovere?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Impossibile rinominare playlist"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Impossibile impostare come suoneria"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Impossibile condividere file DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Tutto"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Elimina"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Condiv."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Aggiungi a playlist"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Playlist"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Ultimi riprodotti"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Aggiungi"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Danza"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Classica"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Procedura guidata configurazione musica"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografia"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Ringraziamenti"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Info multimedia"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Testo"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nome troppo lungo"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Valutazione genitori"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Possibile"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Verifica"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Elenco brani"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Già aggiunto"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 canali"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Aggiungi a playlist"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Usi disponibili"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Potenziamento bassi"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Coro"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Classica"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositore"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Sala concerti"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personale"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Danza"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamico"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effetto"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizzatore"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Esternalizzazione"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Inoltro"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genere"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Riduzione rumore musica"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Impostazioni musica"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Copertina album"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Playlist"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Ultimi riprodotti"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Durata traccia"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validità"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Spazio ampio"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "No"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Nessuna canzone"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Canzoni"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Aggiungi playlist"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Modifica titolo"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Cronologia"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Rinomina"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Riordina"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Salva come playlist"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Tono sveglia"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Aggiunto a %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth disconnesso"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Selezionare numero max. di elementi (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nessun elemento selezionato"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Impossibile eliminare. La musica selezionata è in riproduzione"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Impossibile riprodurre. Si è verificato un errore"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Impossibile riprodurre. Tipo file non supportato"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Aggiungi"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Condividi"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Tutto"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Condutt."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Imposta come"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Apri play"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Non sono presenti abbastanza file musicali in Music square. Sono necessari almeno %d file"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Sentimentale"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Appassionato"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamica"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calmo"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Allegro"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Aggiornamento libreria"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Aggiornare la libreria?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Modifica asse"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Tutte le canzoni"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Elenco selezionato vuoto"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Compos."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Agg. a schermata home"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Info multimedia"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Mood"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Anni"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Passato"
+
diff --git a/po/ja_JP.po b/po/ja_JP.po
new file mode 100644 (file)
index 0000000..ba1584f
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "フォルダ"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "アルバム"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "お気に入り"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr " 長時間大音量で聴き続けると、聴力を損傷する可能性があります"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "アーティスト"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "作曲者"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "ジャンル"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "よく聴く曲"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "音楽メニュー設定"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "最近追加した曲"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "年"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "着信音"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "プレイリストを作成"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "クイックリストから削除"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "個別着信音"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "アーティスト"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "ジャンル"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "全て"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "削除"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "共有"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "プレイリストに追加"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "プレイリスト"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "最近再生した曲"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "追加"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "アルバム"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "標準"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "ポップ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "ロック"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "ジャズ"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "ダンス"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "クラシック"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "ライブ"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "ミュージックセットアップウィザード"
+
+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_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_CONCERT_HALL"
+msgstr "コンサートホール"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "カスタム"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "ジャズ"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "ライブ"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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 "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "ワイド"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "OFF"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "曲がありません。"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "曲"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "プレイリストを追加"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "タイトルを編集"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "指揮者"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "ハウス"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "登録"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "この​音響​効果​は​、​イヤホン​および​ Bluetooth ​ヘッド​セット ​モード​で​のみ​機能​します"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "ミュージックスクエア"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "プレイリスト​表示"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "ミュージックスクエアで再生するには音楽ファイルが不足しています。少なくとも、%d曲の音楽ファイルが必要となります。"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Passionate"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamic"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calm"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joy"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "ライブラリーを更新"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "ライブラリーを更新しますか?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "軸の変更"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "全曲"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "選択されたリストは空です。"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "作曲家"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "ホームに追加"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "メディア情報"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "ムード"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "年"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "OLD"
+
diff --git a/po/ka.po b/po/ka.po
new file mode 100644 (file)
index 0000000..d37f94e
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "საქაღალდეები"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "ალბომები"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "ფავორიტები"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "ხანგრძლივი დროით მუსიკის მაღალ ხმაზე მოსმენა შეიძლება გახდეს სმენის დაქვეითების მიზეზი"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "შემსრულებლები"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "ავტომატური"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "კომპოზიტორები"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "ჟანრები"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "ყველაზე ხშირად დაკრული"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "მუსიკის მენიუ"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "ბოლოს დამატებული"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "წლები"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "ზარის მელოდია"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "მუსიკის სიის შექმნა"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "წაშლა"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "აბონენტის ზარის მელოდია"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "მსახიობები"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "ჟანრები"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "ყველა"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "წაშლა"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "გაზიარ."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "მუსიკის სიაში დამატება"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "მუსიკის სიები"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "ბოლოს დაკრული"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "დამატება"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "ალბომები"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "ნორმალური"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "ამოხტომა"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "როკი"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "ჯაზი"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "ცეკვა"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "კლასიკური"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "ცოცხალი"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "მუსიკის შერჩევა"
+
+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_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_CONCERT_HALL"
+msgstr "საკონცერტო დარბაზი"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "შერჩეული"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "ჯაზი"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "ცოცხალი"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "სათაურის შეცვლა"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "ორგანიზატორები"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "სახლი"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "დაყენება"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "ეს ხმოვანი ეფექტი მუშაობს მხოლოდ ყურმილისა და Bluetooth გარნიტურის რეჟიმებში"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "მუსიკის სკვერი"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "ღია სია"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "მუსიკის ფაილების რაოდენობა არ არის საკმარისი ”მუსიკის სკვერში” დასაკრავად. უნდა იყოს მინიმუმ %d მუსიკის ფაილი"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "ჟინი"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "მგზნებარე"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "დინამიკური"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "მშვიდი"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "სიხარული"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "ბიბლიოთეკის განახლება"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "განახლდეს ბიბლიოთეკა?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "ღერძის შეცვლა"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "ყველა სიმღერა"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "არჩეული სია ცარიელია"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "კომპოზიტ."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "დამატება საწყის გვერდზე"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "მედია ინფო"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "რითმები"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "წლები"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "ძველი"
+
diff --git a/po/kk.po b/po/kk.po
new file mode 100644 (file)
index 0000000..d08d431
--- /dev/null
+++ b/po/kk.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Қалталар"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Альбомдар"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Таңдаулылар"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Ұзақ уақыт тыңдайтын болсаңыз, қатты дауыс деңгейі есту мүшеңізді зақымдауы мүмкін"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Орындаушылар"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Композиторлар"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Жанрлары"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Әйгілі файлдар"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Музыка мәзірі"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Соңғы қосылғандар"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Жылдар"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Қоңырау рингтоны"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Әндер тізімін құру"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Жоғалту"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Телефон шалушы әуені"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Орындаушылар"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Жанрлары"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_AUTHOR"
+msgstr "Aвтор"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Авторлық құқықтар"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Әндер тізімін құру"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+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_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_ITAB4_ALL"
+msgstr "Барлығы"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Жою"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Бөлісу"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Файлдар тізіміне қосу"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Файл тізімдері"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Соңғы файлдар"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Қосу"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Альбом-р"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Қалыпты"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Поп"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Рок"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Би"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Классика"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Тікелей трансляция"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Пішіндеу шебері"
+
+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_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_CONCERT_HALL"
+msgstr "Концерт залы"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Әдеттегі"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Тікелей трансляция"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "Тақырыпты өзгерту"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "Дирижерлар"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "Хаус"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Орнату реті"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Бұл дыбыс әсері тек құлақаспап және Bluetooth гарнитурасы режимдерінде істейді"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Музыка. квадрат"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Ә. тіз.аш"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Музыкалық квадратта ойнатуға музыкалық файлдар жеткілікті емес. Кемінде %d музыкалық файл қажетті"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Құмарлық"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Ашулы"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Динамикалық"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Тыныш"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Қуаныш"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Кітапхана жаңарту"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Кітапхананы жаңарту керек пе?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Осін өзгерту"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Барлық өлеңдер"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Таңдалған тізім бос"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Компози-р"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Бастапқы бетке қосу"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Медиялық ақпарат"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Қөңілдер"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Жылдар"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Ескі"
+
diff --git a/po/ko_KR.po b/po/ko_KR.po
new file mode 100644 (file)
index 0000000..0e37427
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "폴더"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "앨범"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "즐겨찾기"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "오랫동안 큰 소리로 음악을 들으면 청각이 손상될 수 있습니다"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "아티스트"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "자동"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "작곡가"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "장르"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "많이 재생된 음악"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "음악 라이브러리"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "최근 추가 목록"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "연도"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "수신벨"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "재생 목록 추가"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "제거"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "개인 벨소리"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "아티스트"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "장르"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "모두"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "삭제"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "공유"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "재생 목록에 추가"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "재생 목록"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "최근 재생된 음악"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "추가"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "앨범"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "보통"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "팝"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "락"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "재즈"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "댄스"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "클래식"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "라이브"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "음악 설정 마법사"
+
+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_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_CONCERT_HALL"
+msgstr "콘서트 홀"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "사용자 설정"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "재즈"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "라이브"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "제목 편집"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "지휘자"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "하우스"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "설정"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "이 음향 효과는 이어폰과 블루투스 헤드셋 모드에서만 작동합니다"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "뮤직스퀘어"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "재생 목록 열기"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "뮤직스퀘어에서 재생할 음악 파일이 부족합니다. %d곡 이상의 음악 파일이 있어야 합니다"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "열정적인"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "열정적인"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "다이내믹"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "차분한"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "기쁜"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "라이브러리 업데이트"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "라이브러리를 업데이트할까요?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "축 변경"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "모든 노래"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "선택된 목록이 비어 있습니다"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "작곡가"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "홈에 추가"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "미디어 정보"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "분위기"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "연도"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "오래된"
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100644 (file)
index 0000000..59fdf0c
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "„SoundAlive“"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Aplankai"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumai"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Mėgstamiausieji"
+
+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_BODY_ARTISTS"
+msgstr "Atlikėjai"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatinis"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Kompozitoriai"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanrai"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Dažniausiai grojami"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Muzikos meniu"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Neseniai pridėti"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Metai"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Skambučio tonas"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Sukurti grojaraštį"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Šalinti"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Skambintojo skambėjimo tonas"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Atlikėjai"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanrai"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Metai"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Viskas"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Trinti"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Bendr."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Įtraukti į grojaraštį"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Grojaraščiai"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Neseniai groti"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Pridėti"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumai"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Įprastas"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Popmuzika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rokas"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Džiazas"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Šokis"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Gyvai"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Muzikos sąrankos vedlys"
+
+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_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_CONCERT_HALL"
+msgstr "Koncertų salė"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Pasirinktinis"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Šokis"
+
+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_JAZZ"
+msgstr "Džiazas"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Gyvai"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Muzikos aiškumas"
+
+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_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_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_EDIT_TITLE"
+msgstr "Redaguoti antraštę"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Istorija"
+
+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_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_CONDUCTORS"
+msgstr "Dirigentai"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Interneto trans."
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "Housas"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Nustatyti kaip"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Muzikos kvadrat."
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Atid. groj."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nepakanka muzikos failų, kad juos būtų galima atkurti muzikos kvadrate. Reikia ne mažiau kaip %d muzikos failų"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Aistra"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Aistringa"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinaminis"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Ramus"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Džiaugsmas"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Bibliotekos naujinys"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Atnaujinti biblioteką?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Keisti ašį"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Visos dainos"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Pasirinktas sąrašas yra tuščias"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Kompozit."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Pridėti prie pradž."
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Informacija apie mediją"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Nuotaikos"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Metai"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Sena"
+
diff --git a/po/lv.po b/po/lv.po
new file mode 100644 (file)
index 0000000..08ded20
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mapes"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Izlases"
+
+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_BODY_ARTISTS"
+msgstr "Izpildītāji"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automātiski"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Komponisti"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanri"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Visvairāk atskaņotie"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Mūzikas izvēlne"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Nesen pievienotie"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Gadi"
+
+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_REMOVE"
+msgstr "Noņemt"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Zvanītāja zvana signāls"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Izpildītāji"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanri"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Gadi"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Visi"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Dzēst"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Kopl."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Piev. atsk. sarakstam"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Atskaņ. saraksti"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Nesen atskaņotie"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Pievienot"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Parasta"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Popmūzika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Roks"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Džezs"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Deju mūzika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasiskais"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Dzīvā mūzika"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Mūzikas iestatīšanas vednis"
+
+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_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_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_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_JAZZ"
+msgstr "Džezs"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Dzīvā mūzika"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Mūzikas dzidrums"
+
+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_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_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_EDIT_TITLE"
+msgstr "Rediģēt nosaukumu"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Vēsture"
+
+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_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_CONDUCTORS"
+msgstr "Diriģ."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Aplādes"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "Hausmūzika"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Iestatīt kā"
+
+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ā"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Mūzikas laukums"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Atv.atsk.s"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nepietiek mūzikas failu, lai atskaņotu Mūzikas laukumā. Nepieciešami vismaz %d mūzikas faili"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Kaislība"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Kaislīgs"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamisks"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Mierīgs"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Prieks"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Bibliotēkas atjauninājums"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Vai atjaunināt bibliotēku?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Mainīt asi"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Visas dziesmas"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Izvēlētais saraksts ir tukšs"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Kompon."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Pievienot sākumam"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Multivides informācija"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Noskaņa"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Gadi"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Vecā"
+
diff --git a/po/mk.po b/po/mk.po
new file mode 100644 (file)
index 0000000..c038c6e
--- /dev/null
+++ b/po/mk.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Папки"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Албуми"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Омилени"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Големи јачини може да ви го оштетат слухот ако слушате долго време"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Изведувачи"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Автоматски"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Композитори"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Жанрови"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Најчесто емитувано"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Музичко мени"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Последно додадено"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Години"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Ѕвонење за повик"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Нова музичка листа"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Отстрани"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Тон за повикувач"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Изведувачи"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Жанрови"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Сите"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Избриши"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Сподели"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Додај во листа"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Музички листи"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Последно емитувано"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Додај"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Албуми"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Нормално"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Поп"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Рок"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Џез"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Денс"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Класика"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Во живо"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Програма за конфигурација на музиката"
+
+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_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_CONCERT_HALL"
+msgstr "Концертна сала"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Одредено"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "Џез"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Во живо"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "Измени наслов"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "Дириг."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "Хаус"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Постави како"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Звучниот ефект е само за слушалка и слушалки Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Музички плоштад"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Отвори"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Нема доволно музички фајлови за емитување на Музичкиот плоштад. Потребни се барем %d музички фајлови"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Страст"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Страсно"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Динамично"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Смирен"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Радост"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Ажурирај библиотека"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Ажурирај библиотека?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Смени оска"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Сите песни"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Избраната листа е празна"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Композ."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Додај дома"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Податоци за медиумот"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Расположенија"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Години"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Стари"
+
diff --git a/po/nb.po b/po/nb.po
new file mode 100644 (file)
index 0000000..0bab6a4
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mapper"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritter"
+
+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_BODY_ARTISTS"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Komponister"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Sjangre"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Mest spilt"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musikkmeny"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Nylig lagt til"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Ringetone for samtale"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Opprett spilleliste"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Fjerne"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Anropsringetone"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Sjangre"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "År"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Alle"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Slett"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Del"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Legg til i spilleliste"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Spille-\nlister"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Nylig avspilt"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Legg til"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dans"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassisk"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Veiviser for musikkonfigurering"
+
+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_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_CONCERT_HALL"
+msgstr "Concert Hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Egendefinert"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dans"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musikklarhet"
+
+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_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_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_EDIT_TITLE"
+msgstr "Rediger tittel"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historikk"
+
+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_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_CONDUCTORS"
+msgstr "Dirig."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Angi som"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Musikk-firkant"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Åpn sp.l."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Ikke nok musikkfiler til å spille av i Musikk-firkant. Minst %d musikkfiler kreves"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Lidenskap"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Lidenskapelig"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamisk"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Rolig"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Glede"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Biblioteksoppdatering"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Oppdatere bibliotek?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Endre akse"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Alle sanger"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Valgt liste er tom"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Kompon."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Legg til på startside"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Medieinformasjon"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Stemninger"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Gammel"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
new file mode 100644 (file)
index 0000000..45d1758
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mappen"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favorieten"
+
+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_BODY_ARTISTS"
+msgstr "Artiesten"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatisch"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Componisten"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Meest afgespeeld"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Muziekmenu"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Onlangs toegevoegd"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Jaar"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Beltoon voor oproep"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Afspeellijst maken"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Wissen"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Beltoon beller"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artiest"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Jaren"
+
+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_POP_ITEM_NOT_REMOVE"
+msgstr "Kan het item niet wissen"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Kan niet meer dan %d muziekbestanden toevoegen"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Niet mogelijk tijdens gesprek"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Auteur"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Afspeellijst maken"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Omschrijving"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formaat"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Niet mogelijk"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Locatie"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Geen afspeellijsten"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Tracknummer"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Type"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Onbekend"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Wissen"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Toegevoegd"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Verwijderen?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s verwijderd"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Verwijderd"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Verwijderen?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Kan de naam van de afspeellijst niet wijzigen"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Kan niet ingesteld worden als beltoon"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Kan DRM-bestand niet delen"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Alles"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Wissen"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Delen"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Toev. aan afspeellijst"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Afspl. lijsten"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Onlangs afgespeeld"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Toevoegen"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normaal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassiek"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Wizard Muziek instellen"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografie"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Credits"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Media-info"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografie"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Songtekst"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Naam te lang"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Leeftijdsclassificatie"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Mogelijk"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Overzicht"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Afspeellijst"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Al toegevoegd"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1-kanaals"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Naar afspeellijst"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artiest"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Aantal keer dat het gebruikt mag worden"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Lage tonen versterken"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Koor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassiek"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Componist"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Concertzaal"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Aangepast"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamisch"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effect"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Weergeven als extern geluid"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Doorsturen"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Helderheid muziek"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Muziekinstellingen"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Album art"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Afspeellijsten"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Onlangs afgespeeld"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Lengte track"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Vibrato"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Geldigheid"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Ruimtelijk"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Uit"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Geen nummers"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Nummers"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Afspeellijst toevoegen"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Titel bewerken"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Geschiedenis"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Naam wijzigen"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Indeling wijzigen"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Opslaan als afspeellijst"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarmtoon"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Toegevoegd aan %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Verbinding met Bluetooth verbroken"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maximumaantal items (%d) geselecteerd"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Niets geselecteerd"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Kan niet verwijderen. Geselecteerde muziek wordt afgespeeld"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Kan niet afspelen. Fout opgetreden"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Kan niet afspelen. Niet-ondersteund bestandstype"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Voeg toe"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Delen"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Alles"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigent"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Apparaat selecteren"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Niet meer tonen"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Instellen als"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Afsp.lijst"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Onvoldoende muziekbestanden om af te spelen in Music square. Ten minste %d bestanden vereist"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passion"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Vurig"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamisch"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Rustig"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Joy"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Bibliotheek bijwerken"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Bibliotheek bijwerken?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "As wijzigen"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Alle nummers"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Geselecteerde lijst is leeg"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Compon."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Toevoegen aan startpagina"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Media-info"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Stemmingen"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Jaren"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Oud"
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100644 (file)
index 0000000..ce98d06
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Katalogi"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumy"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Ulubione"
+
+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_BODY_ARTISTS"
+msgstr "Artyści"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatyczny"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Kompozytorzy"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Rodzaje"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najczęściej odtwarzane"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Elementy menu muzyka"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Ostatnio dodane"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Rok"
+
+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_REMOVE"
+msgstr "Usuń"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Dzwonek kontaktu"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artyści"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Rodzaje"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Lata"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Wszystkie"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Usuń"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Udost."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Dodaj do listy odtw."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Listy odtwarz."
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Ostatnio odtwarzane"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Dodaj"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumy"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normalny"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Kreator konfiguracji muzyki"
+
+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_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_CONCERT_HALL"
+msgstr "Sala koncertowa"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Niestand."
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "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_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_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_EDIT_TITLE"
+msgstr "Edytuj tytuł"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historia"
+
+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_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_CONDUCTORS"
+msgstr "Dyrygenci"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasty"
+
+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 "Wirtualne 7.1"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Ustaw jako"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Plac muzyczny"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Ot. odtw."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Niewystarczająca liczba plików muzycznych do odtwarzania na Placu muzycznym. Minimalna liczba wymaganych plików muzycznych: %d"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Pasja"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Żarliwe"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamiczna"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Spokojna"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Radość"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Aktualizacja biblioteki"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Zaktualizować bibliotekę?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Zmień oś"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Wszystkie utwory"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Wybrana lista jest pusta"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Kompoz."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Dodaj do ekr. startowego"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Multimedia"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Rodzaje"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Lata"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Stare"
+
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644 (file)
index 0000000..599d84f
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Pastas"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Álbuns"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritos"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "O volume alto do som  pode prejudicar a sua audição se a expor durante muito tempo"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automático"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositores"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Gêneros"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Mais tocadas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menu Música"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Adic. recentemente"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Anos"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Toque da chamada"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Criar lista de reprodução"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Remover"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Toque para um contato"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Gêneros"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Anos"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Impossível adicionar"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Nenhuma letra"
+
+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 Surround 5.1 funciona apenas no modo de fone de ouvido"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "O canal 5.1 só pode ser ativado 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 link"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Impossível remover item"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Impossível adicionar mais que %d arquivos de música"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Impossível durante chamada"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Álbum"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Criar lista de reprodução"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Descrição"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Impossível"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Local"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nenhuma lista de reprodução"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Nº do rastreamento"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipo"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Desconhecido"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Apagar"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Adicionado"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Apagar?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s removida"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Removido"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Remover?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Impossível renomear a lista de reprodução"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Impossível definir como tom de toque"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Impossível compartilhar arquivo DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Álbuns"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Todas"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Apagar"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Compart."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Adicion. à lista reprod."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "List. reprodução"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Tocadas recentemente"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Adicionar"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Álbuns"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Clássico"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Vivo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Assistente de música"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografia"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Créditos"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Informações"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Letra"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nome muito longo"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Taxa anterior"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Possível"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Rever"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lista de faixas"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Já adicionado"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Canal 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Adic. à lista de reprodução"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Utilizações disponíveis"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Aumento do grave"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Coral"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Clássico"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositor"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Sala de concertos"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinâmico"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efeito"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizador"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalização"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Encaminhamento"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Gênero"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Vivo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Claridade da música"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Configurações de música"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Capa do álbum"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Listas de reprodução"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Tocadas recentemente"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Duração"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validade"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Wide"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Desativado"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Nenhuma música"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Músicas"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Adicionar lista de reprodução"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Editar título"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Histórico"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Renomear"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Reordenar"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Salvar como lista de reprod."
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Som do alarme"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Adicionada a %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth desligado"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Número máximo de itens (%d) selecionados"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nada selecionado"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Impossível apagar. música selecionada em reprodução"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Impossível reproduzir. Ocorreu um erro"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Impossível reproduzir. Tipo de arquivo não suportado"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Adicionar"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Compart."
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Todos"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Maestros"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Selecione 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 "Você pode enviar música para dispositivos usando o AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Ver como"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Usuário"
+
+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 "7.1 ch Virtual"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Definir como"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Este efeito de som funciona apenas com fone de ouvido ou fone de ouvido Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Salão de música"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Abrir lista de reprodução"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Não há arquivos de música suficientes para tocar no Salão de música. Pelo menos %d arquivos de música são necessários"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Paixão"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Apaixonada"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinâmica"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calmo"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Alegria"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Atualização de biblioteca"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Atualizar biblioteca?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Alterar eixo"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Todas as músicas"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Lista selecionada vazia"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Compos."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Adicionar à tela principal"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Informações"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Ambiente"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Anos"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Antiga"
+
diff --git a/po/pt_PT.po b/po/pt_PT.po
new file mode 100644 (file)
index 0000000..24aa0fb
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Pastas"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Álbuns"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritos"
+
+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_BODY_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automático"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositores"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Géneros"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Mais reproduzidas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menu Música"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Adicionadas recentemente"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Anos"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Tom de toque de chamada"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Criar lista de reprodução"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Remover"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Toque do chamador"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistas"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Géneros"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Anos"
+
+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_POP_ITEM_NOT_REMOVE"
+msgstr "Impossível remover item"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Impossível adicionar mais de %d ficheiros de música"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Impossível jogar durante chamada"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Álbum"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Direitos de autor"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Criar lista de reprodução"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Descrição"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formato"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Impossível"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Localização"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nenhuma lista de reprodução"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Número da faixa"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipo"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Desconhecido"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Adicionado"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Eliminar?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s removida"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Removido"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Remover?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Impossível mudar o nome da lista de reprodução"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Impossível definir como tom de toque"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Impossível partilhar ficheiro DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Álbuns"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Tudo"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Enviar"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Adicion. à lista reprod."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Listas reprod."
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Reprod. recentem."
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Adicionar"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Álbuns"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dança"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Clássica"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Em directo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Assistente de configuração de música"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografia"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Créditos"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Info multimédia"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Letra"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nome demasiado comprido"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Classificação parental"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Possível"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Rever"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lista de faixas"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Já adicionado"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Canal 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Adic. á lista de reprod."
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Utilizações disponíveis"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Melhoramento de graves"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Coro"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Clássica"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositor"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Sala de concertos"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personalizar"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dança"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinâmico"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efeito"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizador"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalização"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Reencaminhar"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Género"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Em directo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Nitidez da música"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Definições de música"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Capa do álbum"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Listas de reprod."
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Reprod. recentem."
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Duração da faixa"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validade"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Amplo"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Desligar"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Nenhumas músicas"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Músicas"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Adicionar lista de reprodução"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Editar título"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Histórico"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Mudar nome"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Reordenar"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Guardar como lista de reprodução"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Tom do alarme"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Adicionada a %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth desligado"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Número máximo de itens (%d) seleccionados"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nada seleccionado"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Impossível eliminar. A música seleccionada está a ser reproduzida"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Impossível reproduzir. Ocorreu um erro"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Impossível reproduzir. Tipo de ficheiro não suportado"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Adicion."
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Partilhar"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Tudo"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Maestros"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Definir como"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Music square"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Lis. rep."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Ficheiros de música insuficientes para reproduzir em Music Square. São necessárias pelo menos %d ficheiros de música"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Paixão"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Apaixonada"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinâmico"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calmo"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Alegria"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Actualização da biblioteca"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Actualizar biblioteca?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Alterar eixo"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Todas as músicas"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Lista seleccionada vazia"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Compos."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Adicionar ao início"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Info multimédia"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Humores"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Anos"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Antigo"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100644 (file)
index 0000000..9cee942
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Foldere"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albume"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favorite"
+
+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_BODY_ARTISTS"
+msgstr "Artişti"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automat"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compozitori"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genuri"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Cea mai redată"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Meniu muzică"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Adăugat recent"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Ani"
+
+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_REMOVE"
+msgstr "Eliminare"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ton sonerie apelant"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artişti"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genuri"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Ani"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Toate"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Ştergere"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Partaj."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Ad. la lista de red."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Liste de redare"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Redate recent"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Adăugat"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albume"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Clasic"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Expert configurare muzică"
+
+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_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_CONCERT_HALL"
+msgstr "Sală de concert"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Particularizat"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Claritate 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_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_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_EDIT_TITLE"
+msgstr "Editare titlu"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Istoric"
+
+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_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_CONDUCTORS"
+msgstr "Dirijori"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast."
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Setare ca"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Pătrat muzical"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Des. listă"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nu sunt suficiente fişiere muzicale pentru redarea în pătratul muzical. Sunt necesare cel puţin %d fişiere muzicale"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Pasiune"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Pasional"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamic"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Calm"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Bucurie"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Actualizare bibliotecă"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Actualizaţi biblioteca?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Schimbare axă"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Toate melodiile"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Listă selectată goală"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Compoz."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Adăugare la ecran principal"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Informaţii media"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Stări"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Ani"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Vechi"
+
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100644 (file)
index 0000000..01b6869
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Папки"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Альбомы"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Избранное"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Прослушивание громкой музыки в течение продолжительного времени может привести к ухудшению слуха"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Исполнители"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Композиторы"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Жанры"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Популярные файлы"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Музыкальное меню"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Недавно добавленные"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Годы"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Мелодия звонка"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Создать список"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Удалить"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Мелодия контакта"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Исполнители"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Жанры"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Все"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Удалить"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Отправ."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Добавить в список воспр."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Списки воспроизведения"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Последние файлы"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Добавить"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Альбомы"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Обычный"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Поп"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Рок"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Танец"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Классика"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Живой звук"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Мастер настройки"
+
+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_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_CONCERT_HALL"
+msgstr "Концертный зал"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Создать"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Живой звук"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "Изменить заголовок"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "Дирижеры"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "Хаус"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Установ."
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Этот звуковой эффект доступен только в режимах наушников и гарнитуры Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Музык. квадрат"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Откр."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Недостаточно файлов для музыкального квадрата. Требуется не менее %d аудиофайлов"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Страсть"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Страстная"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Динамичная"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Спокойная"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Радость"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Обновление библиотеки"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Обновить библиотеку?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Сменить ось"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Все песни"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Выбранный список пуст"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Композ."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Добавить на главный экран"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Информация"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Настроение"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Годы"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Старая"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100644 (file)
index 0000000..ea0d0f6
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Priečinky"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumy"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Obľúbené"
+
+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_BODY_ARTISTS"
+msgstr "Interpreti"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automaticky"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Skladatelia"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žánre"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najčastejšie prehrávané"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Hudobné menu"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Posledne pridané"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Roky"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Zvonenie hovoru"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Vytvoriť zoznam skladieb"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Odstrániť"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Zvonenie volajúceho"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Interpreti"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žánre"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Roky"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Všetko"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Odstrániť"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Zdieľať"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Pridať do zoz. prehr."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Zoznamy skladieb"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Posledne prehrávané"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Pridať"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumy"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normál."
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Tanec"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Naživo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Sprievodca nastavením hudby"
+
+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_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_CONCERT_HALL"
+msgstr "Koncertná sieň"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Vlastné"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Tanec"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Naživo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Čistota hudby"
+
+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_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_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_EDIT_TITLE"
+msgstr "Upraviť názov"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "História"
+
+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_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_CONDUCTORS"
+msgstr "Dirigen."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasty"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Nastaviť ako"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Hudobný blok"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "O. z. skl."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nedostatok hudobných súborov na prehrávanie v Hudobnom bloku. Vyžadujú sa hudobné súbory v počte aspoň %d"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Vášeň"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Vášnivá"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamický"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Pokojný"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Radosť"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Aktualizácia knižnice"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Aktualizovať knižnicu?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Zmeniť os"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Všetky piesne"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Vybraný zoznam je prázdny"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Sklad."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Pridať na úv. obrazovku"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Informácie o médiách"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Nálady"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Roky"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Stará"
+
diff --git a/po/sl.po b/po/sl.po
new file mode 100644 (file)
index 0000000..26a42de
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mape"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Priljubljene"
+
+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_BODY_ARTISTS"
+msgstr "Izvajalci"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Samodejno"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Skladatelji"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Zvrsti"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najpogosteje predvajano"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Glasbeni meni"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Dodano pred kratkim"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Let"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Zvonjenje za klic"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Ustvari seznam predvajanja"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Odstrani"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Melodija kličočega"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Izvajalci"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Zvrsti"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Leta"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Vse"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Soupor."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Dodaj na seznam"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Sezn.predvajanja"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Nazadnje predvajano"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Dodaj"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Ples"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasično"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "V živo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Čarovnik za nastavitev glasbe"
+
+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_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_CONCERT_HALL"
+msgstr "Koncertna dvorana"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Osebne"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Ples"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "V živo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Jasnost glasbe"
+
+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_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_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_EDIT_TITLE"
+msgstr "Uredi naslov"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Zgodovina"
+
+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_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_CONDUCTORS"
+msgstr "Dirigent"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Spletne oddaje"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Nastavi kot"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Glasbeni kotiček"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Od.sez."
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Ni dovolj glasbenih datotek za predvajanje v glasbenem kotičku. Zahtevanih je vsaj %d glasbenih datotek"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Strast"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Strastna"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamično"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Umirjen"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Veselje"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Posodobitev knjižnice"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Posodobim knjižnico?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Spremeni os"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Vse skladbe"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Izbrani seznam je prazen"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Sklad."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Dodaj na domači zaslon"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Informacije o mediju"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Razpoloženja"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Leta"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Staro"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100644 (file)
index 0000000..8e24f12
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Folderi"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Omiljeni"
+
+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_BODY_ARTISTS"
+msgstr "Umetnici"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatski"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Kompozitori"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanrovi"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najčešće puštano"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Muzički meni"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Nedavno dodato"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Godina"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Ton zvona"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Kreiraj listu za reprodukciju"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Ukloni"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ton zvona pozivaoca"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Umetnici"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanrovi"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Godine"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Sve"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Podeli"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Dodaj u listu za repr."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Liste za reprod."
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Nedavno puštano"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Dodaj"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normalan"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rok"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Džez"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dens"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasika"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Uživo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Konfiguracioni čarobnjak za muziku"
+
+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_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_CONCERT_HALL"
+msgstr "Koncertna dvorana"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Prilagođeno"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dens"
+
+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_JAZZ"
+msgstr "Džez"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Uživo"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Razgovetnost muzike"
+
+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_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_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_EDIT_TITLE"
+msgstr "Izmeni naslov"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Istorija"
+
+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_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_CONDUCTORS"
+msgstr "Dirigenti"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podkasti"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "Haus"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Postavi kao"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Muzički kvadrat"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Otv. listu"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Nema dovoljno muzičkih datoteka za reprodukciju u muzičkom kvadratu. Potrebno je najmanje %d muzičkih datoteka"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Strast"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Strastvena"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamičan"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Miran/na"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Radost"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Ažuriranje biblioteke"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Ažuriraj biblioteku?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Promeni osu"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Sve pesme"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Izabrana lista je prazna"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Kompoz."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Dodaj na početnu"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Informacije o mediju"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Raspoloženja"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Godine"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Stara"
+
diff --git a/po/sv.po b/po/sv.po
new file mode 100644 (file)
index 0000000..ed59c29
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mappar"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoriter"
+
+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_BODY_ARTISTS"
+msgstr "Artister"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Kompositörer"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Mest spelade"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musikmeny"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Senast tillagda"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Ringsignal för samtal"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Skapa spellista"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Ta bort"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ringsignal till Foto-ID"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artister"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "År"
+
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Alla"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Radera"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Dela"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Lägg till i spellista"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Spellistor"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Senast spelade"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Lägg till"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dans"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassisk"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Inställningsguide för musik"
+
+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_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_CONCERT_HALL"
+msgstr "Konserthus"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Egen"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dans"
+
+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_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Klarhet"
+
+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_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_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_EDIT_TITLE"
+msgstr "Redigera rubrik"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Tidigare"
+
+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_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_CONDUCTORS"
+msgstr "Dirigenter"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podsändn"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Ange som"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Musik-väljare"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Spellista"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Det finns inte tillräckligt med musikfiler att spela med musikväljaren. Det krävs minst %d musikfiler"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Passionerad"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Passionerad"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dynamisk"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Lugn"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Glad"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Biblioteksuppdatering"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Uppdatera bibliotek?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Ändra axel"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Alla låtar"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Den valda listan är tom"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Komp."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Lägg till start"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Mediainfo"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Stämningar"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Tidigare"
+
diff --git a/po/tr_TR.po b/po/tr_TR.po
new file mode 100644 (file)
index 0000000..6e0c982
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Klasörler"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albümler"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favorilerim"
+
+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_BODY_ARTISTS"
+msgstr "Sanatçılar"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Otomatik"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Bestekarlar"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Tarzlar"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "En sık çalınanlar"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Müzik menüsü"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Son eklenenler"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Yıl"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Arayan zil sesi"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Çalma listesi oluştur"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Kaldır"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Arayan zil sesi tonu"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Sanatçılar"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Tarzlar"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Yıl"
+
+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_POP_ITEM_NOT_REMOVE"
+msgstr "Öğe kaldırılamıyor"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr " %d müzik dosyasından fazlası eklenemiyor"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Görüşme sırasında çalınamaz"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albüm"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Yazar"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Telif hakkı"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Çalma listesi oluştur"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Açıklama"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Biçim"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "İmkansız"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Konum"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Çalma listesi yok"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Parça numarası"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tür"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Bilinmeyen"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Sil"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Eklendi"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Sil?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s kaldırıldı"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Kaldırıldı"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Kaldır?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Parça listesi yeniden adlandırılamıyor"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Zil sesi olarak ayarlanamadı"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM dosyası paylaşılamıyor"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albümler"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Tümü"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Sil"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Parça listesine ekle"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Parça listeleri"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Son çalınanlar"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Ekle"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albümler"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Dans"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klasik"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Canlı"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Müzik kurulum sihirbazı"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biyografi"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Krediler"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Medya bilgisi"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografi"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lirik"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Ad çok uzun"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Ebeveyn sıralaması"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Mümkün"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "İzleme"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Parça listesi"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Zaten eklenmiş"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanal"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Çalma listesine ekle"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Sanatçı"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Mevcut kullanımlar"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bas iyileştirme"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Koro"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasik"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Bestekar"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Konser salonu"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Özel"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dans"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekolayzer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Dışsallaştırma"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "İletme"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Tarz"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Canlı"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Müzik netliği"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Müzik ayarları"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albüm kapağı"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Parça listeleri"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Son çalınanlar"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Parça uzunluğu"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Titreklik"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Geçerlilik"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Geniş"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Kapalı"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Hiç şarkı yok"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Şarkılar"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Parça listesi ekle"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Başlığı düzenle"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Geçmiş"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Yeniden adlandır"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Yeniden düzenle"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Parça listesi olarak kaydet"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarm sesi"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "%s öğesine eklendi"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth bağlantısı kesildi"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maksimum seçilen öğe sayısı (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Bir şey seçilmedi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Silinemiyor. Seçilen müzik çalıyor"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Çalınamıyor. Hata meydana geldi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Çalınamıyor. Desteklenmeyen dosya türü"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Ekle"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Paylaş"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Hepsi"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Kondüktor"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Pod cast’ler"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "House"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Ayarla"
+
+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"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Müzik meydanı"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Yür lst aç"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Müzik meydanında çalmak için yeterli müzik dosyası yok. En az %d müzik dosyası gerekli"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Tutku"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Tutkulu"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Sakin"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Eğlence"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Kütüphane güncellemesi"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Kütüphane güncellensin mi?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Ekseni değiştir"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Tüm şarkılar"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Seçilen liste boş"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Besteci"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Ana sayfaya ekle"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Medya bilgisi"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Ruh halleri"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Yıl"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Eski"
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100644 (file)
index 0000000..eef0c45
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Папки"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Альбоми"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Обране"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Тривале прослуховування за високого рівня гучності може призвести до погіршення слуху"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Виконавці"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Композитори"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Жанри"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Найчастіше відтворювані"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Музичне меню"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Останні додані"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Роки"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Звук дзвінка"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Створити список відтворення"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Видалити"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Звук дзвінка абонента"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Виконавці"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Жанри"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "Усі"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "Видал."
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Сп.д."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Дод. до сп. відтв."
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Сп. відтв."
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Останні відтворені"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Додати"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Альбоми"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Звичайний"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Поп-музика"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Рок"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Танцювальний"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Класика"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Пряма трансляція"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Майстер інсталяції музики"
+
+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_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_CONCERT_HALL"
+msgstr "Концертний зал"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Особливий"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Пряма трансляція"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "Редагувати назву"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "Дириг."
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "Хауз"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Встано-/nвити як"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Цей звуковий ефект працює лише в режимах навушників і гарнітури Bluetooth"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Музичний квадрат"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "В.сп"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Недостатньо музичних файлів для відтворення в Музичному квадраті. Мінімальна кількість музичних файлів: %d"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Пристрасть"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Пристрасна"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Динамічна"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Врівноважений"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Радість"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Оновлення бібліотеки"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Оновити бібліотеку?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Змінити вісь"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Всі композиції"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Вибраний список пустий"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Композ."
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Додати на головний екран"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Інформація про медіадані"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Настрої"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Роки"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Старе"
+
diff --git a/po/uz.po b/po/uz.po
new file mode 100644 (file)
index 0000000..3f54a25
--- /dev/null
+++ b/po/uz.po
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Jildlar"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albomlar"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Tanlanganlar"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Musiqani baland ovozda uzoq vaqt davomida tinglash eshitish a’zolaringizga zarar yetkazishi mumkin"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Ijrochilar"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Avtomatik"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Bastakor"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Janrlar"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Eng ko‘p o‘ynalgan"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musiqa menyusi"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Oxirgi qo‘shilgan"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Yillar"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Qo‘ng‘iroq ringtoni"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Mus. ro‘yxatini yaratish"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Olib tashlash"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Qo‘ng‘iroq qiluvchi ringtoni"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Ijrochilar"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Janrlar"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Yillar"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Qo‘shib bo‘lmaydi"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Matnsiz"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "5.1 kanal ishlatilayotganda, ovoz effektlarini o‘zgartirib bo‘lmaydi"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Teg topish"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 kanal ovozi effekti faqat quloq karnaylari rejimida ishlaydi"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 kanalini ovoz effektlari o‘chirilgandagina faollashtirish mumkin"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Musiqalar ro‘yxatini yaratib bo‘lmaydi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Tegni olib bo‘lmadi"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Elementni olib tashlab bo‘lmaydi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "%ddan ko‘p musiqiy fayllarni qo‘shib bo‘lmaydi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Qo‘ng‘iroq mobaynida o‘ynatib bo‘lmaydi"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albom"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Muallif"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Mualliflik huquqi"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Mus. ro‘yxatini yaratish"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Tavsif"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Imkonsiz"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Joylashuv"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Musiqalar ro‘yxati yo‘q"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Trek raqami"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tur"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Noma’lum"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "O'chirish"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Qo‘shilgan"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "O'chirilsinmi?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s olib tashlandi"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Olib tashlandi"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Olib tashlansinmi?"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Musiqalar ro‘yxati nomini o‘zgartirib bo‘lmaydi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Rington sifatida o‘rnatib bo‘lmaydi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM faylni ulashib bo‘lmaydi"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albomlar"
+
+msgid "IDS_MUSIC_ITAB4_ALL"
+msgstr "Barcha"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "O'chirish"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "Ulash."
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "Qo‘shiq ro‘y-ga qo‘shish"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "Musiqa ro‘yx."
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "Oxirgi o‘ynatilgan"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "Qo‘shish"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "Albomlar"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "Pop janri"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "Rok"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "Jaz"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "Raqs"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "Klassik"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "Jonli"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "Musiqa o‘rnatish ustasi"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Tarjimai hol"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Kreditlar"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Media ma’lumoti"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografiya"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lirik asar"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nom juda uzun"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Qo'shimcha baholash"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Taxminiy"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Ko‘rib chiqish"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Treklar ro‘yxati"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Avvaldan qo‘shilgan"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanal"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Qo‘shiqlar ro‘yxatiga qo‘shish"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Ijrochi"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Mavjud foydalanishlar"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bass ko‘tarilishi"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Xor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassik"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Muallifi"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Konsert zali"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Maxsus"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Raqs"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvalayzer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Tashqariga chiqarish"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Boshqaga yo‘naltirish"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Janri"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jaz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Jonli"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musiqa aniqligi"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Musiqa parametrlari"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albom dizayni"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Musiqa ro‘yxatlari"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop janri"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Oxirgi o‘ynatilgan"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rok"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Trek uzunligi"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Amal qilish"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Ha-ha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Keng"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "O‘ch."
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Qo‘shiqlar yo‘q"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Qo‘shiqlar"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Qo‘shiqlar ro‘yxati qo‘shish"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Sarlavhani tahrirlash"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Jurnal"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Nom o‘zgartirish"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Qayta saralash"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Musiqa sifatida saqlash"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Budilnik ohangi"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "%sga qo‘shildi"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth uzildi"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Elementlarning maksimal miqdori (%d) tanlangan"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Hech narsa tanlanmagan"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "O'chirib bo‘lmaydi. Tanlangan musiqa o‘ynamoqda"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "O‘ynatib bo‘lmaydi. Xato yuz berdi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "O‘ynatib bo‘lmaydi. Qo‘llab-quvvatlanmaydigan fayl turi"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Qo‘shish"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Um. foyd."
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Barcha"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Konduktorlar"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podkastlar"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Qurilma tanlang"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Boshqa ko‘rsatilmasin"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "AllShare yordamida musiqangizni qurilmalaringizga uzatishingiz mumkin"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Ko‘rish:"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Foydalanuvchi"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Quyi chastota"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Yuqori chastota"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 k"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 daqi-dan so‘ng"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 daqiqadan keyin"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 soatdan keyin"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1 soat 30 daqiqadan so‘ng"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 soatdan keyin"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Musiqani avt. o‘chirish"
+
+msgid "IDS_MUSIC_BODY_HOUSE_M_GENRE"
+msgstr "Uy"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "Quyidagidek o‘r."
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Ushbu effekt faqatgina quloqliklar va Bluetooth karnaylari rejimida ishlaydi"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "Musiqa kvadrati"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "Mus/ro‘y. och"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "Musiqa kvadratida o‘ynatish uchun musiqa fayllari yetarli emas. Kamida %d musiqa fayli talab etiladi"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "Ehtiros"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "Ehtirosli"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "Osuda"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "Xursandchilik"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "Kutubxonani yangilash"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "Kutubxona yangilansinmi?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "Koordinata chizig‘ini o‘zgartirish"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "Barcha qo‘shiqlar"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "Tanlangan ro‘yxat bo‘sh"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "Bastakor"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "Asosiyga qo‘shish"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "Media ma’lumoti"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "Kayfiyatlar"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "Yillar"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "Eski"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644 (file)
index 0000000..2805586
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "文件夹"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "专辑"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "我的收藏"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "如果长时间用高音量收听,可能会损坏听力"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "艺术家"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "自动"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "作曲家"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "流派"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "多次播放的"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "音乐菜单"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "最近添加的"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "年"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "手机铃声"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "新建播放列表"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "移除"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "来电铃声"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "艺术家"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "流派"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "全部"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "删除"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "共享"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "添加到播放列表"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "播放列表"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "最近播放的"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "添加"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "专辑"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "流行"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "摇滚"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "爵士"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "舞曲"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "古典"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "直播"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "音乐设定向导"
+
+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_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_CONCERT_HALL"
+msgstr "音乐厅"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "自定义"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "爵士"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "直播"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "编辑标题"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "乐队指挥"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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_BODY_HOUSE_M_GENRE"
+msgstr "居家音乐"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "设定为"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "此声音效果仅在耳机和蓝牙耳机模式下有效"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "音乐广场"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "打开播放列表"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "音乐文件不足以在音乐广场中播放。需要至少 %d 个音乐文件"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "激情"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "充满激情的"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "动态"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "平静的"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "欢乐"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "音乐库更新"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "更新库"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "更改轴线"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "全部音乐"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "选择的列表为空"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "作曲家"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "添加到主页"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "媒体信息"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "基调"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "年"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "旧的"
+
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100644 (file)
index 0000000..720f067
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "資料夾"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "專輯"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "我的最愛"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "長期聆聽高音量會損害您的聽力"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "演出者"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "作曲家"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "類型"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "最常播放"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "音樂目錄"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "最近加入"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "年份"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "來電鈴聲"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "建立播放清單"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "移除"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "聯絡人來電鈴聲"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "演出者"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "類型"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "全部"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "刪除"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "共享"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "加到播放清單"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "播放列表"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "最近播放"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "加入"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "專輯"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "流行"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "搖滾"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "爵士"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "跳舞"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "古典"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "現場"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "音樂設定精靈"
+
+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_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_CONCERT_HALL"
+msgstr "演奏廳"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "自訂"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "爵士"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "現場"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "編輯標題"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "指揮者"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "家居音樂"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "設定為"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "此音效只在耳筒及藍牙耳機模式中有效"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "音樂廣場"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "開啟播放清單"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "音樂廣場中要播放的音樂檔案不足。至少需要 %d 首音樂檔案"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "熱情"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "熱情"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "動態"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "平靜"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "喜悅"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "資料庫更新"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "更新資料庫?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "變更軸"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "所有歌曲"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "選擇的清單為空"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "作曲家"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "加到首頁"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "媒體資料"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "基調"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "年份"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "舊的"
+
diff --git a/po/zh_SG.po b/po/zh_SG.po
new file mode 100644 (file)
index 0000000..c6294b0
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "文件夹"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "唱片"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "收藏夹"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "如果长时间用高音量收听,可能会损坏听力"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "艺术家"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "自动"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "作曲家"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "流派"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "多次播放的"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "音乐菜单"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "最近添加的"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "年"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "来电铃声"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "新建播放列表"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "移除"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "来电人铃声"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "艺术家"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "流派"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "全部"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "删除"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "共享"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "添加到播放列表"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "播放列表"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "最近播放的"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "添加"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "音乐库"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "流行"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "摇滚"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "爵士"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "舞曲"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "古典"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "直播"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "音乐设定向导"
+
+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 "Parent rating"
+
+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_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_CONCERT_HALL"
+msgstr "音乐厅"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "自定义"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "爵士"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "直播"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "编辑标题"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_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_CONDUCTORS"
+msgstr "乐队指挥"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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 "咖啡馆"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "居家音乐"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "设定为"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "仅声音效果仅在耳机和蓝牙耳机模式下有效"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "音乐广场"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "打开播放列表"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "音乐文件不足以在音乐广场中播放。需要至少 %d 个音乐文件"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "激情"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "充满激情的"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "动态"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "平静"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "欢乐"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "音乐库更新"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "更新库"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "更改轴线"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "全部音乐"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "选择的列表空"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "作曲家"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "添加到主页"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "媒体信息"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "喜怒無常"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "年"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "旧的"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644 (file)
index 0000000..067788b
--- /dev/null
@@ -0,0 +1,516 @@
+msgid "IDS_MUSIC_OPT_SOUNDALIVE"
+msgstr "SoundAlive"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "資料夾"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "專輯"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "我的最愛"
+
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "長期聆聽過大音量會損害您的聽力"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "演出者"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "作曲者"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "類型"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "最常播放"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "音樂選單"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "最近加入"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "年"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "來電鈴聲"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "建立播放清單"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "移除"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "來電者鈴聲"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "演出者"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "類型"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+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_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_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_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_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_ITAB4_ALL"
+msgstr "全部"
+
+msgid "IDS_MUSIC_SK3_DELETE"
+msgstr "刪除"
+
+msgid "IDS_MUSIC_BUTTON_SHARE"
+msgstr "分享"
+
+msgid "IDS_MUSIC_BUTTON2_ADD_TO_PLAYLIST"
+msgstr "加入到播放清單"
+
+msgid "IDS_MUSIC_TAB4_PLAYLISTS"
+msgstr "播放清單"
+
+msgid "IDS_MUSIC_BODY_PLAYLIST_RECENTLY_PLAYED"
+msgstr "最近播放"
+
+msgid "IDS_MUSIC_OPT_ADD"
+msgstr "新增"
+
+msgid "IDS_MUSIC_ITAB4_ALBUMS"
+msgstr "專輯"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSETTINGS_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_POP"
+msgstr "流行音樂"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_ROCK"
+msgstr "搖滾"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_JAZZ"
+msgstr "爵士樂"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_DANCE"
+msgstr "舞曲"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_CLASSIC"
+msgstr "古典"
+
+msgid "IDS_MUSIC_BODY_PLAYINGSOUNDEFFECT_LIVE"
+msgstr "現場"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETUP_WIZARD"
+msgstr "音樂設定精靈"
+
+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_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_CONCERT_HALL"
+msgstr "演奏廳"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "自訂"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+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_JAZZ"
+msgstr "爵士樂"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "現場"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+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_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_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_EDIT_TITLE"
+msgstr "編輯標題"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+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_POP_ADDED_TO_PS"
+msgstr "已加到 %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "藍牙已中斷"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "達到最大選擇數量(%)"
+
+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_CONDUCTORS"
+msgstr "導體"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+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 聲道"
+
+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_BODY_HOUSE_M_GENRE"
+msgstr "浩室"
+
+msgid "IDS_MUSIC_SK3_SET_AS"
+msgstr "設定為"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "音效只適用耳機或是藍牙耳機模式"
+
+msgid "IDS_MUSIC_TAB4_MUSIC_SQUARE"
+msgstr "音樂廣場"
+
+msgid "IDS_MUSIC_SK_OPEN_PLAYLIST_ABB"
+msgstr "開啟播放清單"
+
+msgid "IDS_MUSIC_POP_NOT_ENOUGH_MUSIC_FILES_TO_PLAY_IN_MUSIC_SQUARE_AT_LEAST_PD_MUSIC_FILES_REQUIRED"
+msgstr "音樂廣場中要播放的音樂檔案不足。至少需要 %d 首音樂"
+
+msgid "IDS_MUSIC_BODY_PASSION_M_MOOD"
+msgstr "熱情"
+
+msgid "IDS_MUSIC_BODY_PASSIONATE_M_ADJECTIVE"
+msgstr "熱情"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC_T_MUSIC"
+msgstr "動態"
+
+msgid "IDS_MUSIC_BODY_CALM_M_ADJECTIVE"
+msgstr "冷靜"
+
+msgid "IDS_MUSIC_BODY_JOY_M_MOOD"
+msgstr "喜悅"
+
+msgid "IDS_MUSIC_BODY_LIBRARY_UPDATE"
+msgstr "媒體庫更新"
+
+msgid "IDS_MUSIC_POP_UPDATE_LIBRARY_Q"
+msgstr "更新資料庫?"
+
+msgid "IDS_MUSIC_BODY_CHANGE_AXIS"
+msgstr "變更軸"
+
+msgid "IDS_MUSIC_BODY_ALL_SONGS"
+msgstr "所有歌曲"
+
+msgid "IDS_MUSIC_POP_SELECTED_LIST_EMPTY"
+msgstr "所選擇的清單是空的"
+
+msgid "IDS_MUSIC_BUTTON_COMPOSERS"
+msgstr "作曲家"
+
+msgid "IDS_MUSIC_SK2_ADD_TO_HOME"
+msgstr "新增至首頁"
+
+msgid "IDS_MUSIC_BODY_MEDIA_INFO"
+msgstr "媒體資訊"
+
+msgid "IDS_MUSIC_BODY_MOODS"
+msgstr "基調"
+
+msgid "IDS_MUSIC_BUTTON_YEARS"
+msgstr "年份"
+
+msgid "IDS_MUSIC_BODY_OLD"
+msgstr "舊"
+
diff --git a/sound-player/CMakeLists.txt b/sound-player/CMakeLists.txt
new file mode 100644 (file)
index 0000000..61103f8
--- /dev/null
@@ -0,0 +1,130 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(PROJECT_NAME sound-player)
+PROJECT(${PROJECT_NAME} C CXX)
+
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "${SP_PKG_NAME}")
+SET(PREFIX "${INSTALL_DIR}/${PKGNAME}")
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "${SP_DATA_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-media-key
+       capi-content-media-content
+       minicontrol-provider
+       capi-network-bluetooth
+       capi-system-system-settings
+       utilX
+       status
+
+)
+
+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-playlist-mgr.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-streaming-mgr.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-lyric-mgr.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-http-mgr.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-avrcp.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-volume.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/view/mp-lyric-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-volume-widget.c
+       ${CMAKE_SOURCE_DIR}/src/widget/mp-ctxpopup.c
+
+       ${CMAKE_SOURCE_DIR}/src/core/mp-language-mgr.c
+       ${CMAKE_CURRENT_SOURCE_DIR}/src/sp-view-manager.c
+
+)
+
+
+FOREACH(flag ${sp_pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag} -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64")
+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}\"")
+
+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(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.png DESTINATION ${CMAKE_DESKTOP_ICON_DIR})
+
diff --git a/sound-player/org.tizen.sound-player.desktop.in b/sound-player/org.tizen.sound-player.desktop.in
new file mode 100644 (file)
index 0000000..659df46
--- /dev/null
@@ -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/appcontrol/operation/view|NULL|audio/*;http://tizen.org/appcontrol/operation/view|http|audio/*;http://tizen.org/appcontrol/operation/view|https|audio/*;http://tizen.org/appcontrol/operation/view|NULL|text/x-iMelody;http://tizen.org/appcontrol/operation/view|NULL|application/x-smaf;http://tizen.org/appcontrol/operation/view|http|text/x-iMelody;http://tizen.org/appcontrol/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 (executable)
index 0000000..d961a4c
Binary files /dev/null and b/sound-player/org.tizen.sound-player.png differ
diff --git a/sound-player/src/include/sp-view-manager.h b/sound-player/src/include/sp-view-manager.h
new file mode 100644 (file)
index 0000000..96799ff
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * 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://floralicense.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 <Elementary.h>
+
+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_title_visible(Sp_View_Manager *view_mgr, bool flag);
+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 100644 (file)
index 0000000..cf90de8
--- /dev/null
@@ -0,0 +1,241 @@
+/*
+ * 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://floralicense.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);
+
+       const char *item_style = NULL;
+       Eina_Bool title_visible = EINA_TRUE;
+       if (type == SP_VIEW_TYPE_PLAY) {
+               item_style = "1line/music";
+               title_visible = EINA_FALSE;
+       }
+
+       view_data->navi_item = elm_naviframe_item_push(view_mgr->navi, NULL, NULL, NULL, content,  item_style);
+       elm_naviframe_item_title_visible_set(view_data->navi_item, title_visible);
+       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;
+       }
+
+       MP_CHECK(view_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_title_visible(Sp_View_Manager *view_mgr, bool flag)
+{
+       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_naviframe_item_title_visible_set(navi_item, flag);
+}
+
+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
new file mode 100644 (file)
index 0000000..81a11a4
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * 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://floralicense.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_APP_H__
+#define __MP_APP_H__
+
+#include <sys/inotify.h>
+#include <app.h>
+
+typedef enum _mp_inotify_event
+{
+       MP_INOTI_NONE = 0,
+       MP_INOTI_CREATE,        // IN_CREATE
+       MP_INOTI_DELETE,        // IN_DELETE
+       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;
+
+typedef void (*mp_inotify_cb) (mp_inotify_event event, char *name, void *data);
+
+void mp_app_exit(void *data);
+bool mp_app_noti_init(void *data);
+bool mp_app_noti_ignore(void);
+
+#ifdef MP_ENABLE_INOTIFY
+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);
+#endif
+
+Eina_Bool mp_app_key_down_cb(void *data, int type, void *event);
+Eina_Bool mp_app_key_up_cb(void *data, int type, void *event);
+Eina_Bool mp_app_mouse_event_cb(void *data, int type, void *event);
+bool mp_app_grab_mm_keys(struct appdata *ad);
+void mp_app_ungrab_mm_keys(struct appdata *ad);
+void mp_app_live_box_init(struct appdata *ad);
+void mp_app_live_box_deinit(struct appdata *ad);
+
+#ifdef MP_FEATURE_AUTO_OFF
+Eina_Bool mp_app_auto_off_timer_expired_cb(void *data);
+void mp_app_auto_off_changed_cb(int min, void *data);
+#endif
+#ifdef MP_FEATURE_PLAY_SPEED
+void mp_app_play_speed_changed_cb(double speed, void *data);
+#endif
+
+#endif // __MP_APP_H__
diff --git a/src/common/include/mp-common.h b/src/common/include/mp-common.h
new file mode 100644 (file)
index 0000000..8aa36b2
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * 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://floralicense.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_common_H__
+#define __mp_common_H__
+
+#include <Elementary.h>
+#include "music.h"
+#include "mp-view-layout.h"
+
+struct text_part
+{
+       char *part;
+       char *msgid;
+};
+
+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_db_initializing(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);
+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_toolbar_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);
+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
new file mode 100644 (file)
index 0000000..38daa98
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * 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://floralicense.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_ITEM_H_
+#define __MP_ITEM_H_
+
+#include <Elementary.h>
+#include <mp-define.h>
+bool mp_item_update_db(char *fid);
+
+int mp_item_share_by_bt(const char *formed_path, int file_cnt);
+
+
+//===========for ALL share DNLA======================//
+#define AS_IPC_NAME "org.tizen.allshare"
+#define AS_IPC_REQUEST_OBJ "/com/samsumg/allshare"
+#define AS_IPC_INTERFACE "org.tizen.allshare"
+
+#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 100644 (file)
index 0000000..931a17a
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * 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://floralicense.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__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdbool.h>
+
+#define MAX_FILTER_LEN 4096
+
+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_NONE,
+       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_BY_SQUARE,
+       MP_GROUP_BY_ALLSHARE,
+}mp_group_type_e;
+
+typedef enum{
+       MP_SYS_PLST_NONE = -4,
+       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_added_time(mp_media_info_h media, time_t *time);
+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_update_db(mp_media_info_h playlist);
+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);
+
+//db sync
+int mp_media_info_delete_from_db(const char *path);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/src/common/include/mp-menu.h b/src/common/include/mp-menu.h
new file mode 100644 (file)
index 0000000..758db2e
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * 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://floralicense.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_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);
+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
+
+#define ADD_TO_HOME         ("IDS_MUSIC_SK2_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
new file mode 100644 (file)
index 0000000..d9d1f2e
--- /dev/null
@@ -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://floralicense.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_PLAY_H_
+#define __MP_PLAY_H_
+
+#include <Elementary.h>
+#include "mp-define.h"
+bool mp_play_item_play(void *data, char *fid);
+bool mp_play_current_file(void *data);
+bool mp_play_new_file(void *data, bool check_drm);
+bool mp_play_new_file_real(void *data, bool check_drm);
+void mp_play_prev_file(void *data);
+void mp_play_next_file(void *data, bool forced);
+void mp_play_start(void *data);
+void mp_play_pause(void *data);
+void mp_play_stop(void *data);
+void mp_play_resume(void *data);
+bool mp_play_destory(void *data);
+#endif /*__DEF_music_player_contro_H_*/
diff --git a/src/common/include/mp-ta.h b/src/common/include/mp-ta.h
new file mode 100644 (file)
index 0000000..e021394
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * 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://floralicense.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);
+bool mp_ta_is_init(void);
+
+
+/////////////////////////////
+// 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)  )
+*/
+
+#define TA_S(level, name)\
+do{\
+       if(!mp_ta_is_init())\
+               break;\
+       char buf[128] = {0,};\
+       int i = 0, pos = 0;\
+       while(i < level){pos += snprintf(buf+pos, 128-pos, "    "); i++;}\
+       snprintf(buf+pos, 128-pos, "%s", name);\
+       mp_ta_accum_item_begin(buf,0,__FILE__,__LINE__);\
+}while(0)
+
+#define TA_E(level, name)\
+do{\
+       if(!mp_ta_is_init())\
+               break;\
+       char buf[128] = {0,};\
+       int i = 0, pos = 0;\
+       while(i < level){pos += snprintf(buf+pos, 128-pos, "    "); i++;}\
+       snprintf(&buf[pos], 128-pos, "%s", name);\
+       mp_ta_accum_item_end(buf,0,__FILE__,__LINE__);\
+}while(0)
+
+#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...)
+*/
+#define TA_S(level, name)
+#define TA_E(level, name)
+#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 100644 (file)
index 0000000..de92311
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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://floralicense.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);
+int mp_ug_show_info(struct appdata *ad);
+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);
+
+bool mp_send_via_appcontrol(struct appdata *ad, mp_send_type_e send_type, const char *files);
+
+#endif // __MP_ug_launch_H_
diff --git a/src/common/include/mp-util.h b/src/common/include/mp-util.h
new file mode 100644 (file)
index 0000000..3266483
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * 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://floralicense.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_UTIL_H_
+#define __MP_UTIL_H_
+
+#include "music.h"
+#include "mp-view-layout.h"
+
+typedef enum
+{
+       MP_FILE_DELETE_ERR_USING = -2,
+       MP_FILE_DELETE_ERR_REMOVE_FAIL = -1,
+       MP_FILE_DELETE_ERR_INVALID_FID = 0,
+       MP_FILE_DELETE_ERR_NONE,
+}mp_file_delete_err_t;
+
+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(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);
+Evas_Object *                  mp_util_create_selectioninfo_with_count(Evas_Object *parent, int count);
+void mp_util_post_status_message(struct appdata *ad, const char *text);
+
+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);
+
+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_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, 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);
+
+
+#define mp_object_free(obj)    \
+do {                                           \
+       if(obj != NULL) {               \
+               g_free(obj);            \
+               obj = NULL;                     \
+       }                                               \
+}while(0)
+
+#define MMC_PATH       MP_MMC_ROOT_PATH
+
+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_get_title_from_path (const char *path);
+bool   mp_util_is_playlist_name_valid(char *name);
+bool   mp_util_get_playlist_data(mp_layout_data_t *layout_data, int *index, const char *playlist_name);
+void mp_util_set_library_controlbar_items(void *data);
+
+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);
+
+#ifndef MP_SOUND_PLAYER
+void mp_util_unset_rename(mp_layout_data_t * layout_data);
+#endif
+bool mp_util_is_db_updating(void);
+bool mp_util_is_bt_connected(void);
+bool mp_util_is_earjack_inserted(void);
+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);
+
+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_is_nfc_feature_on(void);
+
+void mp_util_strncpy_safe(char *x_dst, const char *x_src, int max_len);
+bool mp_util_edit_image(Evas *evas, Evas_Object *src_image, const char *path, mp_playing_view_bg_capture_mode mode);
+
+void mp_util_free_track_info(mp_track_info_t *track_info);
+void mp_util_load_track_info(struct appdata *ad, mp_plst_item *cur_item, mp_track_info_t **info);
+void mp_util_append_media_list_item_to_playlist(mp_plst_mgr *playlist_mgr, mp_media_list_h media_list, int count, int current_index, const char *uri);
+char* mp_util_get_fid_by_full_path(const char *full_path);
+
+#endif //__MP_UTIL_H_
+
diff --git a/src/common/include/mp-view-manager.h b/src/common/include/mp-view-manager.h
new file mode 100644 (file)
index 0000000..2409987
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * 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://floralicense.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_VIEW_MANAGER_H_
+#define __MP_VIEW_MANAGER_H_
+
+#include "music.h"
+#include "mp-view-layout.h"
+
+typedef enum
+{
+       MP_VIEW_CONTENT_LIST,
+       MP_VIEW_CONTENT_EDIT,
+       MP_VIEW_CONTENT_PLAY,
+       MP_VIEW_CONTENT_NEW_PLAYLIST,
+       MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP,
+       MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT,
+       MP_VIEW_CONTENT_INFO,
+       MP_VIEW_CONTENT_SEARCH,
+       MP_VIEW_CONTENT_MAX,
+} mp_view_content_t;
+
+typedef enum
+{
+       MP_NAVI_CONTROL_BUTTON_EDIT,
+       MP_NAVI_CONTROL_BUTTON_SHARE,
+       MP_NAVI_CONTROL_BUTTON_SEARCH,
+       MP_NAVI_CONTROL_BUTTON_CREATE_PLAYLIST,
+       MP_NAVI_CONTROL_BUTTON_ADD_TO_PLAYLIST,
+       MP_NAVI_CONTROL_BUTTON_DELETE,
+       MP_NAVI_CONTROL_BUTTON_REFRESH,
+       MP_NAVI_CONTROL_BUTTON_DOWNLOAD,
+       MP_NAVI_CONTROL_BUTTON_UPDATE_LIBRARY,
+       MP_NAVI_CONTROL_BUTTON_OPEN_PLAYLIST,
+       MP_NAVI_CONTROL_BUTTON_MAX,
+} mp_navi_control_button_type;
+
+Elm_Object_Item * mp_view_manager_push_view_content(view_data_t * view_data, Evas_Object * content, mp_view_content_t type);
+void mp_view_manager_pop_view_content(view_data_t * view_data, bool pop_to_first, bool pop_content);
+Evas_Object *mp_view_manager_get_last_view_layout(struct appdata *ad);
+Evas_Object *mp_view_manager_get_first_view_layout(struct appdata *ad);
+Evas_Object *mp_view_manager_get_edit_view_layout(struct appdata *ad);
+Evas_Object *mp_view_manager_get_view_layout(struct appdata *ad, mp_view_content_t type);
+
+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 *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);
+void mp_view_manager_thaw_progress_timer(struct appdata *ad);
+
+void mp_view_manager_update_first_controlbar_item(void *data);
+Elm_Object_Item *mp_view_manager_get_navi_item(struct appdata * ad);
+Evas_Object *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);
+
+void mp_view_manager_pop_info_view(struct appdata *ad);
+void mp_view_manager_pop_play_view(struct appdata *ad);
+
+void mp_view_manager_unswallow_info_ug_layout(struct appdata *ad);
+
+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);
+
+void mp_view_manager_set_back_button(Evas_Object * parent, Elm_Object_Item* navi_item, Evas_Smart_Cb cb, void *data);
+
+#endif //__MP_VIEW_MANAGER_H_
diff --git a/src/common/include/mp-widget.h b/src/common/include/mp-widget.h
new file mode 100644 (file)
index 0000000..e913e98
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * 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://floralicense.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_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 sweep_flag);
+bool mp_widget_check_lowbattery(void *data, Evas_Object * parent);
+Evas_Object *mp_widget_text_popup(void *data, const char *message);
+Evas_Object *mp_widget_create_icon(Evas_Object * obj, const char *path, int w, int h);
+Evas_Object *mp_widget_create_bgimg(Evas_Object * parent);
+Evas_Object *mp_widget_create_button(Evas_Object * parent, char *style, char *caption, Evas_Object * icon,
+                                    void (*func) (void *, Evas_Object *, void *), void *data);
+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_common_create_naviframe_title_button(Evas_Object *parent, const char * text_id, void *save_cb, void *user_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);
+
+#define MP_TOOLBAR_BTN_DEFULTL "naviframe/toolbar/default"
+#define MP_TOOLBAR_BTN_LEFT    "naviframe/toolbar/left"
+#define MP_TOOLBAR_BTN_RIGHT   "naviframe/toolbar/right"
+#define MP_TOOLBAR_BTN_MORE    "naviframe/more/default"
+Evas_Object *mp_widget_create_toolbar_btn(Evas_Object *parent, const char *style, const char *text, Evas_Smart_Cb func, void *data);
+
+#endif
diff --git a/src/common/mp-app.c b/src/common/mp-app.c
new file mode 100755 (executable)
index 0000000..15a640b
--- /dev/null
@@ -0,0 +1,1173 @@
+/*
+ * 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://floralicense.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-ta.h"
+#include "music.h"
+#include "mp-setting-ctrl.h"
+#include "mp-item.h"
+#include "mp-player-control.h"
+#include "mp-play-view.h"
+#include "mp-playlist-mgr.h"
+
+#include <signal.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "mp-player-mgr.h"
+#include "mp-player-debug.h"
+#include <syspopup_caller.h>
+#include <pthread.h>
+#include <media_key.h>
+#include <utilX.h>
+#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"
+#include "mp-volume.h"
+
+#ifndef MP_SOUND_PLAYER
+#include "mp-library.h"
+#include "mp-common.h"
+#include "mp-group-view.h"
+#endif
+
+
+
+#ifdef MP_FEATURE_AVRCP_13
+#include "mp-avrcp.h"
+#endif
+
+static Ecore_Pipe *gNotiPipe;
+typedef enum {
+       MP_APP_PIPE_CB_AVAILABLE_ROUTE_CHANGED,
+       MP_APP_PIPE_CB_ACTIVE_DEVICE_CHANGED,
+} mp_app_pipe_cb_type_e;
+
+typedef struct {
+       mp_app_pipe_cb_type_e type;
+       void *user_data;
+       sound_device_out_e out;
+} mp_app_pipe_data_s;
+
+#ifdef MP_ENABLE_INOTIFY
+static void _mp_add_inofity_refresh_watch(struct appdata *ad);
+#endif
+
+static Eina_Bool
+_mp_app_ear_key_timer_cb(void *data)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = (struct appdata *)data;
+       if (ad->ear_key_press_cnt == 1)
+       {
+               DEBUG_TRACE("play/pause ctrl");
+               if (ad->player_state == PLAY_STATE_PLAYING)
+               {
+                       ad->paused_by_user = TRUE;
+                       mp_player_mgr_pause(ad);
+               }
+               else if (ad->player_state == PLAY_STATE_PAUSED)
+               {
+                       ad->paused_by_user = FALSE;
+                       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)
+               {
+                       ad->paused_by_user = FALSE;
+                       mp_play_current_file(ad);
+               }
+               else
+               {
+                       ad->paused_by_user = FALSE;
+                       mp_play_new_file(ad, TRUE);
+               }
+       }
+       else if (ad->ear_key_press_cnt == 2)
+       {
+               DEBUG_TRACE("next ctrl");
+               mp_play_next_file(data, TRUE);
+       }
+       else
+       {
+               DEBUG_TRACE("prev ctrl");
+               mp_play_prev_file(data);
+       }
+
+       ad->ear_key_press_cnt = 0;
+       ecore_timer_del(ad->ear_key_timer);
+       ad->ear_key_timer = NULL;
+       return EINA_FALSE;
+}
+
+void
+_mp_app_noti_changed_cb(keynode_t * node, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       char *keyname = vconf_keynode_get_name(node);
+
+       DEBUG_TRACE("key changed: %s", keyname);
+
+       if (strcmp(keyname, VCONFKEY_FILEMANAGER_DB_STATUS) == 0)
+       {
+               int db_state = vconf_keynode_get_int(node);
+               if(db_state == VCONFKEY_FILEMANAGER_DB_UPDATED)
+               {
+                       if (mp_playlist_mgr_get_current(ad->playlist_mgr)
+                           && !ecore_file_exists(mp_playlist_mgr_get_current(ad->playlist_mgr)->uri))
+                               mp_play_stop_and_updateview(ad, TRUE);
+#ifndef MP_SOUND_PLAYER
+                       else
+                               mp_library_update_view(ad);
+#endif
+
+#ifdef MP_ENABLE_INOTIFY
+                       _mp_add_inofity_refresh_watch(ad);
+#endif
+               }
+       }
+       else if (strcmp(keyname, VCONFKEY_SETAPPL_SOUND_STATUS_BOOL) == 0)
+       {
+               bool profile = vconf_keynode_get_bool(node);
+               DEBUG_TRACE("profile changed: %d", profile);
+               if (profile == false) {
+                       mp_player_mgr_pause(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_pause(ad, false);
+                       }
+
+                       //mp_minicontroller_destroy(ad);
+               }
+       }
+}
+
+static void
+_mp_add_available_route_changed_cb(sound_route_e route, bool available, void *user_data)
+{
+       DEBUG_TRACE("route: %d, available: %d", route, available);
+       MP_CHECK(gNotiPipe);
+
+       mp_app_pipe_data_s pipe_data;
+       memset(&pipe_data, 0, sizeof(mp_app_pipe_data_s));
+       pipe_data.type = MP_APP_PIPE_CB_AVAILABLE_ROUTE_CHANGED;
+       pipe_data.user_data = user_data;
+
+       ecore_pipe_write(gNotiPipe, &pipe_data, sizeof(mp_app_pipe_data_s));
+}
+
+static void
+_mp_app_active_device_chaged_cb(sound_device_in_e in, sound_device_out_e out, void *user_data)
+{
+       DEBUG_TRACE("input=[%d], output=[%d]", in, out);
+       MP_CHECK(gNotiPipe);
+
+       mp_app_pipe_data_s pipe_data;
+       memset(&pipe_data, 0, sizeof(mp_app_pipe_data_s));
+       pipe_data.type = MP_APP_PIPE_CB_ACTIVE_DEVICE_CHANGED;
+       pipe_data.out = out;
+       pipe_data.user_data = user_data;
+
+       ecore_pipe_write(gNotiPipe, &pipe_data, sizeof(mp_app_pipe_data_s));
+}
+
+#ifdef MP_FEATURE_AVRCP_13
+static void
+_mp_app_set_avrcp_mode(struct appdata *ad)
+{
+       if(mp_playlist_mgr_is_shuffle(ad->playlist_mgr))
+               mp_avrcp_noti_shuffle_mode(MP_AVRCP_SHUFFLE_ON);
+       else
+               mp_avrcp_noti_shuffle_mode(MP_AVRCP_SHUFFLE_OFF);
+
+       int repeat = mp_playlist_mgr_get_repeat(ad->playlist_mgr);
+       if(repeat == MP_PLST_REPEAT_ALL)
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_ALL);
+       else    if(repeat == MP_PLST_REPEAT_ONE)
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_ONE);
+       else
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_OFF);
+
+       {
+               mp_avrcp_noti_eq_state(MP_AVRCP_EQ_OFF);
+       }
+}
+
+static void
+_mp_avrcp_connection_state_changed_cb(bool connected, const char *remote_address, void *user_data)
+{
+       DEBUG_TRACE("connected: %d, remote_addr: %s", connected, remote_address);
+       struct appdata *ad = user_data;
+       MP_CHECK(ad);
+
+       if(ad->current_track_info)
+       {
+               mp_track_info_t *info = ad->current_track_info;
+               mp_avrcp_noti_track(info->title, info->artist, info->album, info->genre, info->duration);
+       }
+       else
+               mp_avrcp_noti_track(NULL, NULL, NULL, NULL, 0);
+
+       if(ad->player_state == PLAY_STATE_PLAYING)
+               mp_avrcp_noti_player_state(MP_AVRCP_STATE_PLAYING);
+       else if(ad->player_state == PLAY_STATE_PAUSED)
+               mp_avrcp_noti_player_state(MP_AVRCP_STATE_PAUSED);
+       else
+               mp_avrcp_noti_player_state(MP_AVRCP_STATE_STOPPED);
+
+       _mp_app_set_avrcp_mode(ad);
+
+}
+
+static void _mp_app_avrcp_shuffle_changed_cb(mp_avrcp_shuffle_mode_e mode, void *user_data)
+{
+       startfunc;
+       struct appdata *ad = user_data;
+       MP_CHECK(ad);
+
+       if(mode == MP_AVRCP_SHUFFLE_OFF)
+       {
+               if (!mp_setting_set_shuffle_state(FALSE))
+               {
+                       mp_play_control_shuffle_set(ad, FALSE);
+               }
+               mp_playlist_mgr_set_shuffle(ad->playlist_mgr, FALSE);
+               mp_avrcp_noti_shuffle_mode(MP_AVRCP_SHUFFLE_OFF);
+       }
+       else
+       {
+               if (!mp_setting_set_shuffle_state(TRUE))
+               {
+                       mp_play_control_shuffle_set(ad, TRUE);
+               }
+               mp_playlist_mgr_set_shuffle(ad->playlist_mgr, TRUE);
+               mp_avrcp_noti_shuffle_mode(MP_AVRCP_SHUFFLE_ON);
+       }
+}
+static void _mp_app_repeat_changed_cb(mp_avrcp_repeat_mode_e mode, void *user_data)
+{
+       startfunc;
+       struct appdata *ad = user_data;
+       MP_CHECK(ad);
+
+       if(mode == MP_AVRCP_REPEAT_ONE)
+       {
+               if (!mp_setting_set_repeat_state(MP_SETTING_REP_1))
+                       mp_play_control_repeat_set(ad, MP_SETTING_REP_1);
+
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_ONE);
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_ONE);
+       }
+       else if(mode == MP_AVRCP_REPEAT_OFF)
+       {
+               if (!mp_setting_set_repeat_state(MP_SETTING_REP_NON))
+                       mp_play_control_repeat_set(ad, MP_SETTING_REP_NON);
+
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_NONE);
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_OFF);
+       }
+       else
+       {
+               if (!mp_setting_set_repeat_state(MP_SETTING_REP_ALL))
+                       mp_play_control_repeat_set(ad, MP_SETTING_REP_ALL);
+
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_ALL);
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_ALL);
+       }
+
+}
+static void _mp_app_avrcp_eq_changed_cb(mp_avrcp_eq_state_e state, void *user_data)
+{
+       startfunc;
+       struct appdata *ad = user_data;
+       MP_CHECK(ad);
+
+       if(state == MP_AVRCP_EQ_ON)
+       {
+               if (vconf_set_int(VCONFKEY_MUSIC_SOUND_ALIVE_VAL, VCONFKEY_MUSIC_SOUND_ALIVE_AUTO))
+               {
+                       WARN_TRACE("Fail to set VCONFKEY_MUSIC_SOUND_ALIVE_VAL");
+               }
+       }
+       else
+       {
+               if (vconf_set_int(VCONFKEY_MUSIC_SOUND_ALIVE_VAL, VCONFKEY_MUSIC_SOUND_ALIVE_NORMAL))
+               {
+                       WARN_TRACE("Fail to set VCONFKEY_MUSIC_SOUND_ALIVE_VAL");
+               }
+       }
+
+       if (vconf_set_bool(VCONFKEY_MUSIC_SE_CHANGE, true))
+       {
+               WARN_TRACE("Fail to set VCONFKEY_MUSIC_SE_CHANGE");
+       }
+}
+
+#endif
+
+static void
+_mp_app_noti_pipe_handler(void *data, void *buffer, unsigned int nbyte)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       mp_app_pipe_data_s *pipe_data = buffer;
+       MP_CHECK(pipe_data);
+
+       switch (pipe_data->type) {
+       case MP_APP_PIPE_CB_AVAILABLE_ROUTE_CHANGED:
+               if(ad->playing_view)
+                       mp_play_view_update_snd_path(ad);
+               break;
+
+       case MP_APP_PIPE_CB_ACTIVE_DEVICE_CHANGED:
+               mp_setting_update_active_device();
+               break;
+
+       default:
+               WARN_TRACE("Not defined.. [%d]", pipe_data->type);
+       }
+
+}
+
+bool
+mp_app_noti_init(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       bool res = TRUE;
+       if (vconf_notify_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS, _mp_app_noti_changed_cb, ad) < 0)
+       {
+               ERROR_TRACE("Error when register callback\n");
+               res = FALSE;
+       }
+       if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, _mp_app_noti_changed_cb, ad) < 0)
+       {
+               ERROR_TRACE("Fail to register VCONFKEY_MUSIC_MENU_CHANGE 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;
+       }
+
+       gNotiPipe = ecore_pipe_add(_mp_app_noti_pipe_handler, ad);
+#ifdef MP_FEATURE_AVRCP_13
+       if(!mp_avrcp_target_initialize(_mp_avrcp_connection_state_changed_cb, ad))
+       {
+               _mp_app_set_avrcp_mode(ad);
+               if(ad->current_track_info)
+               {
+                       mp_track_info_t *info = ad->current_track_info;
+                       mp_avrcp_noti_track(info->title, info->artist, info->album, info->genre, info->duration);
+               }
+       }
+
+       mp_avrcp_set_mode_change_cb(_mp_app_avrcp_shuffle_changed_cb,
+               _mp_app_repeat_changed_cb, _mp_app_avrcp_eq_changed_cb, ad);
+#endif
+
+       DEBUG_TRACE("Enter sound_manager_set_available_route_changed_cb");
+       int ret = sound_manager_set_available_route_changed_cb(_mp_add_available_route_changed_cb, ad);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               ERROR_TRACE("sound_manager_set_available_route_changed_cb().. [0x%x]", ret);
+               res = FALSE;
+       }
+       DEBUG_TRACE("Leave sound_manager_set_available_route_changed_cb");
+
+       DEBUG_TRACE("Enter sound_manager_set_active_device_changed_cb");
+       ret = sound_manager_set_active_device_changed_cb(_mp_app_active_device_chaged_cb, ad);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               ERROR_TRACE("sound_manager_set_active_device_changed_cb().. [0x%x]", ret);
+               res = FALSE;
+       }
+       DEBUG_TRACE("Leave sound_manager_set_active_device_changed_cb");
+
+       return res;
+}
+
+bool
+mp_app_noti_ignore(void)
+{
+       sound_manager_unset_available_route_changed_cb();
+       sound_manager_unset_active_device_changed_cb();
+
+       if (vconf_ignore_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS, _mp_app_noti_changed_cb) < 0)
+       {
+               ERROR_TRACE("Error when ignore callback\n");
+               return FALSE;
+       }
+       if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, _mp_app_noti_changed_cb) < 0)
+       {
+               ERROR_TRACE("Error when ignore callback\n");
+               return FALSE;
+       }
+
+       if (vconf_ignore_key_changed(VCONFKEY_SYSMAN_EARJACKKEY, _mp_app_noti_changed_cb) < 0)
+       {
+               ERROR_TRACE("Error when ignore callback\n");
+               return FALSE;
+       }
+
+       if (vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, _mp_app_noti_changed_cb) < 0)
+       {
+               ERROR_TRACE("Error when ignore callback\n");
+               return FALSE;
+       }
+
+       if (vconf_ignore_key_changed(MP_VCONFKEY_PLAYING_PID, _mp_app_noti_changed_cb) < 0)
+       {
+               ERROR_TRACE("Error when ignore callback\n");
+               return FALSE;
+       }
+
+#ifdef MP_FEATURE_AVRCP_13
+       mp_avrcp_target_finalize();
+#endif
+
+       if(gNotiPipe)
+       {
+               ecore_pipe_del(gNotiPipe);
+               gNotiPipe = NULL;
+       }
+       return TRUE;
+}
+
+#ifdef MP_ENABLE_INOTIFY
+//#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
+{
+       int fd;
+       GList *wd_list;
+       unsigned int prev_event;
+       pthread_t monitor;
+       mp_inotify_cb callback;
+       void *u_data;
+} mp_inotify_t;
+
+static pthread_mutex_t mp_noti_lock;
+static mp_inotify_t *g_handle;
+
+static void
+_mp_app_inotify_handle_free(void)
+{
+       pthread_mutex_destroy(&mp_noti_lock);
+
+       if (g_handle)
+       {
+               if (g_handle->fd >= 0)
+               {
+                       close(g_handle->fd);
+                       g_handle->fd = -1;
+               }
+               g_free(g_handle);
+               g_handle = NULL;
+       }
+
+       return;
+}
+
+static mp_inotify_t *
+_mp_app_inotify_handle_init(void)
+{
+       _mp_app_inotify_handle_free();
+       g_handle = g_new0(mp_inotify_t, 1);
+
+       if (g_handle)
+       {
+               g_handle->fd = -1;
+               pthread_mutex_init(&mp_noti_lock, NULL);
+       }
+
+       return g_handle;
+}
+
+static void
+_mp_app_inotify_thread_clean_up(void *data)
+{
+       pthread_mutex_t *lock = (pthread_mutex_t *) data;
+       DEBUG_TRACE("Thread cancel Clean_up function");
+       if (lock)
+       {
+               pthread_mutex_unlock(lock);
+       }
+       return;
+}
+
+
+static gpointer
+_mp_app_inotify_watch_thread(gpointer user_data)
+{
+       mp_inotify_t *handle = (mp_inotify_t *) user_data;
+       int oldtype = 0;
+
+       mp_retvm_if(handle == NULL, NULL, "handle is NULL");
+       DEBUG_TRACE("Create _mp_app_inotify_watch_thread!!! ");
+
+       pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
+
+       while (1)
+       {
+               ssize_t len = 0;
+               ssize_t i = 0;
+               char event_buff[MP_EVENT_BUF_LEN] = { 0, };
+
+               if (handle->fd < 0)
+               {
+                       ERROR_TRACE("fd is not a vaild one");
+                       pthread_exit(NULL);
+               }
+
+               len = read(handle->fd, event_buff, sizeof(event_buff) - 1);
+               if (len <= 0 || len > sizeof(event_buff) - 1)
+               {
+
+               }
+
+               while (i < len)
+               {
+                       struct inotify_event *pevent = (struct inotify_event *)&event_buff[i];
+                       mp_inotify_event s_event = MP_INOTI_NONE;
+
+                       if (pevent->len && strncmp(pevent->name, ".", 1) == 0)
+                       {
+                               s_event = MP_INOTI_NONE;
+                       }
+                       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    //file
+                       {
+                               if (pevent->mask & IN_CREATE)
+                               {
+                                       s_event = MP_INOTI_NONE;
+                                       handle->prev_event = IN_CREATE;
+                               }
+
+                               if (pevent->mask & IN_CLOSE_WRITE)
+                               {
+                                       if (handle->prev_event == IN_CREATE)
+                                       {
+                                               s_event = MP_INOTI_CREATE;
+                                       }
+                                       handle->prev_event = MP_INOTI_NONE;
+                               }
+
+                               if (pevent->mask & IN_DELETE)
+                                       s_event = MP_INOTI_DELETE;
+
+                               if (pevent->mask & IN_MODIFY)
+                               {
+                                       s_event = MP_INOTI_MODIFY;
+                               }
+
+                               if (pevent->mask & IN_MOVED_TO)
+                               {
+                                       s_event = MP_INOTI_MOVE_OUT;
+                               }
+                       }
+
+                       if (s_event != MP_INOTI_NONE)
+                       {
+                               pthread_cleanup_push(_mp_app_inotify_thread_clean_up, (void *)&mp_noti_lock);
+                               pthread_mutex_lock(&mp_noti_lock);
+                               if (handle->callback)
+                               {
+                                       handle->callback(s_event, (pevent->len) ? pevent->name : NULL, handle->u_data);
+                               }
+                               pthread_mutex_unlock(&mp_noti_lock);
+                               pthread_cleanup_pop(0);
+                       }
+
+                       i += sizeof(struct inotify_event) + pevent->len;
+
+                       if (i >= MP_EVENT_BUF_LEN)
+                               break;
+               }
+       }
+
+       DEBUG_TRACE("end _mp_app_inotify_watch_thread!!! ");
+
+       return NULL;
+}
+
+Ecore_Timer *_g_inotyfy_timer = NULL;
+
+static Eina_Bool
+_mp_app_inotify_timer_cb(void *data)
+{
+       bool b_invalid_playing_file = false;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       if (ad->edit_in_progress)
+       {
+               DEBUG_TRACE("editing in progress. not refresh list...");
+               return false;
+       }
+
+       DEBUG_TRACE("update view");
+
+       mp_plst_item * current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+
+       if (current_item)
+       {
+               if (mp_util_check_uri_available(current_item->uri))
+               {
+                       mp_debug("http uri path");
+               }
+               else    if (!g_file_test(current_item->uri, G_FILE_TEST_EXISTS))
+               {
+                       mp_play_stop_and_updateview(ad, FALSE);
+                       b_invalid_playing_file = true;
+               }
+       }
+
+
+#ifndef MP_SOUND_PLAYER
+       mp_library_update_view(ad);
+#endif
+       _g_inotyfy_timer = NULL;
+       return EINA_FALSE;
+}
+
+static void
+_mp_app_inotify_cb(mp_inotify_event event, char *path, void *data)
+{
+       DEBUG_TRACE("file operation occured...");
+
+       struct appdata *ad = (struct appdata *)data;
+
+       MP_CHECK(path);
+
+       ecore_pipe_write(ad->inotify_pipe, path, strlen(path));
+}
+
+void
+_mp_app_inotify_add_recursive_watch(const char *path, void *ad)
+{
+
+       DIR *dp = NULL;
+       struct dirent *entry = NULL;
+       char *sub_path = NULL;
+       sub_path = strdup(path);
+       if (mp_app_inotify_add_watch(sub_path, _mp_app_inotify_cb, ad) < 0)
+       {
+               IF_FREE(sub_path);
+               return;
+       }
+
+       dp = opendir(sub_path);
+       if (dp == NULL)
+               return;
+
+       while ((entry = (struct dirent *)readdir(dp)) != NULL)
+       {
+               if (entry->d_name[0] == '.')
+                       continue;
+
+               IF_FREE(sub_path);
+               sub_path = g_strdup_printf("%s/%s", path, entry->d_name);
+               if (entry->d_type == DT_DIR)
+                       _mp_app_inotify_add_recursive_watch(sub_path, ad);
+       }
+       IF_FREE(sub_path);
+
+       closedir(dp);
+
+}
+
+static void
+_mp_app_pipe_cb(void *data, void *path, unsigned int nbyte)
+{
+       struct appdata *ad = (struct appdata *)data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("%s modified..", path);
+       mp_retm_if(ad->app_is_foreground, "Do not refresh list");
+
+       if (_g_inotyfy_timer)
+               ecore_timer_del(_g_inotyfy_timer);
+       _g_inotyfy_timer = ecore_timer_add(0.5, _mp_app_inotify_timer_cb, data);
+
+
+}
+
+static void
+_mp_add_inofity_refresh_watch(struct appdata *ad)
+{
+       mp_inotify_t *handle = NULL;
+       handle = g_handle;
+
+       MP_CHECK(handle);
+
+       GList *wd_list = handle->wd_list;
+       while(wd_list)
+       {
+               if(wd_list->data >=0)
+                       mp_app_inotify_rm_watch((int)wd_list->data);
+               wd_list = g_list_delete_link(wd_list, wd_list);
+       }
+
+       _mp_app_inotify_add_recursive_watch(MP_MMC_ROOT_PATH, ad);
+       _mp_app_inotify_add_recursive_watch(MP_PHONE_ROOT_PATH, ad);
+
+}
+
+int
+mp_app_inotify_init(void *data)
+{
+
+       struct appdata *ad = data;
+
+       mp_inotify_t *handle = NULL;
+       handle = _mp_app_inotify_handle_init();
+       mp_retvm_if(handle == NULL, -1, "fail to _mp_app_inotify_handle_init()");
+
+       handle->fd = inotify_init();
+
+       if (handle->fd < 0)
+       {
+               switch (errno)
+               {
+               case EMFILE:
+                       ERROR_TRACE("The user limit on the total number of inotify instances has been reached.\n");
+                       break;
+               case ENFILE:
+                       ERROR_TRACE("The system limit on the total number of file descriptors has been reached.\n");
+                       break;
+               case ENOMEM:
+                       ERROR_TRACE("Insufficient kernel memory is available.\n");
+                       break;
+               default:
+                       ERROR_TRACE("Fail to inotify_init(), Unknown error.\n");
+                       break;
+               }
+               return -1;
+       }
+       pthread_create(&handle->monitor, NULL, _mp_app_inotify_watch_thread, handle);
+
+       _mp_app_inotify_add_recursive_watch(MP_MMC_ROOT_PATH, ad);
+       _mp_app_inotify_add_recursive_watch(MP_PHONE_ROOT_PATH, ad);
+
+       ad->inotify_pipe = ecore_pipe_add(_mp_app_pipe_cb, (const void *)ad);
+
+       return 0;
+}
+
+int
+mp_app_inotify_add_watch(const char *path, mp_inotify_cb callback, void *user_data)
+{
+       mp_inotify_t *handle = NULL;
+       GList *wd_list;
+       int wd;
+
+       handle = g_handle;
+       MP_CHECK_VAL(handle, -1);
+
+       pthread_mutex_lock(&mp_noti_lock);
+
+       wd_list = handle->wd_list;
+       wd = inotify_add_watch(handle->fd, path, MP_WATCH_FLAGS);
+       if (wd < 0)
+       {
+               switch (errno)
+               {
+               case EACCES:
+                       ERROR_TRACE("Read access to the given file is not permitted.\n");
+                       break;
+               case EBADF:
+                       ERROR_TRACE("The given file descriptor is not valid.\n");
+                       handle->fd = -1;
+                       break;
+               case EFAULT:
+                       ERROR_TRACE("pathname points outside of the process's accessible address space.\n");
+                       break;
+               case EINVAL:
+                       ERROR_TRACE
+                               ("The given event mask contains no legal events; or fd is not an inotify file descriptor.\n");
+                       break;
+               case ENOMEM:
+                       ERROR_TRACE("Insufficient kernel memory is available.\n");
+                       break;
+               case ENOSPC:
+                       ERROR_TRACE
+                               ("The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource.\n");
+                       break;
+               default:
+                       ERROR_TRACE("Fail to mp_inotify_add_watch(), Unknown error.\n");
+                       break;
+               }
+               pthread_mutex_unlock(&mp_noti_lock);
+               return -1;
+       }
+
+       wd_list = g_list_append(wd_list, (gpointer)wd);
+       if(!wd_list) {
+               DEBUG_TRACE("g_list_append failed");
+               pthread_mutex_unlock(&mp_noti_lock);
+               return -1;
+       }
+
+       handle->callback = callback;
+       handle->u_data = user_data;
+       pthread_mutex_unlock(&mp_noti_lock);
+
+       return 0;
+}
+
+int
+mp_app_inotify_rm_watch(int wd)
+{
+       int ret = -1;
+       mp_inotify_t *handle = NULL;
+
+       handle = g_handle;
+       mp_retvm_if(handle == NULL, -1, "handle is NULL");
+
+       if (handle->fd < 0 || wd < 0)
+       {
+               WARN_TRACE
+                       ("inotify is not initialized or has no watching dir - fd [%d] wd [%d]",
+                        handle->fd, wd);
+               return 0;
+       }
+
+       pthread_mutex_lock(&mp_noti_lock);
+
+       ret = inotify_rm_watch(handle->fd, wd);
+       if (ret < 0)
+       {
+               switch (errno)
+               {
+               case EBADF:
+                       ERROR_TRACE("fd is not a valid file descriptor\n");
+                       handle->fd = -1;
+                       break;
+               case EINVAL:
+                       ERROR_TRACE("The watch descriptor wd is not valid; or fd is not an inotify file descriptor.\n");
+                       break;
+               default:
+                       ERROR_TRACE("Fail to mp_inotify_add_watch(), Unknown error.\n");
+                       break;
+               }
+               pthread_mutex_unlock(&mp_noti_lock);
+               return -1;
+       }
+       pthread_mutex_unlock(&mp_noti_lock);
+
+       return 0;
+}
+
+static void
+_mp_app_inotify_wd_list_destroy(gpointer data)
+{
+       mp_app_inotify_rm_watch((int)data);
+}
+
+void
+mp_app_inotify_finalize(struct appdata *ad)
+{
+       mp_inotify_t *handle = NULL;
+       handle = g_handle;
+
+       mp_retm_if(handle == NULL, "handle is NULL");
+
+       if (ad->inotify_pipe)
+       {
+               ecore_pipe_del(ad->inotify_pipe);
+               ad->inotify_pipe = NULL;
+       }
+
+       g_list_free_full(handle->wd_list, _mp_app_inotify_wd_list_destroy);
+       handle->wd_list = NULL;
+
+       pthread_cancel(handle->monitor);
+       pthread_join(handle->monitor, NULL);
+
+       _mp_app_inotify_handle_free();
+
+       return;
+}
+#endif
+
+
+Eina_Bool
+mp_app_key_down_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = data;
+       MP_CHECK_VAL(ad, ECORE_CALLBACK_PASS_ON);
+
+       Ecore_Event_Key *key = event;
+       MP_CHECK_VAL(key, ECORE_CALLBACK_PASS_ON);
+
+       if (!g_strcmp0(key->keyname, KEY_VOLUMEUP)) {
+               mp_volume_key_event_send(MP_VOLUME_KEY_UP, false);
+       }
+       else if (!g_strcmp0(key->keyname, KEY_VOLUMEDOWN)) {
+               mp_volume_key_event_send(MP_VOLUME_KEY_DOWN, false);
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+Eina_Bool
+mp_app_key_up_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = data;
+       MP_CHECK_VAL(ad, ECORE_CALLBACK_PASS_ON);
+
+       Ecore_Event_Key *key = event;
+       MP_CHECK_VAL(key, ECORE_CALLBACK_PASS_ON);
+
+       if (!g_strcmp0(key->keyname, KEY_VOLUMEUP)) {
+               mp_volume_key_event_send(MP_VOLUME_KEY_UP, true);
+       }
+       else if (!g_strcmp0(key->keyname, KEY_VOLUMEDOWN)) {
+               mp_volume_key_event_send(MP_VOLUME_KEY_DOWN, true);
+       }
+       else if (!g_strcmp0(key->keyname, KEY_MEDIA)) {
+               DEBUG_TRACE("Key pressed");
+               if (ad->ear_key_press_cnt > 3)
+               {
+                       DEBUG_TRACE("pressed more than 3times");
+                       return ECORE_CALLBACK_PASS_ON;
+               }
+               if (ad->ear_key_timer)
+               {
+                       ecore_timer_del(ad->ear_key_timer);
+                       ad->ear_key_timer = NULL;
+               }
+               ad->ear_key_timer = ecore_timer_add(0.5, _mp_app_ear_key_timer_cb, ad);
+               ad->ear_key_press_cnt++;
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+
+Eina_Bool
+mp_app_mouse_event_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = data;
+
+       static unsigned int buttons = 0;
+
+       if (type == ECORE_EVENT_MOUSE_BUTTON_DOWN) {
+               Ecore_Event_Mouse_Button *ev = event;
+               if (!ad->mouse.downed) {
+                       ad->mouse.downed = TRUE;
+                       ad->mouse.sx = ev->root.x;
+                       ad->mouse.sy = ev->root.y;
+                       buttons = ev->buttons;
+               }
+       }
+       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 ECORE_CALLBACK_PASS_ON;
+}
+
+void
+mp_app_exit(void *data)
+{
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("player_state [%d]\n", ad->player_state);
+
+       elm_exit();
+}
+
+#define CTR_EDJ_SIG_SRC "ctrl_edj"
+
+void
+_mp_app_media_key_event_cb(media_key_e key, media_key_event_e event, void *user_data)
+{
+       struct appdata *ad = (struct appdata *)user_data;
+       MP_CHECK(ad);
+
+       mp_debug("key [%d], event [%d]", key, event);
+       bool released = false;
+       if (event == MEDIA_KEY_STATUS_RELEASED)
+               released = true;
+
+       if (event == MEDIA_KEY_STATUS_UNKNOWN) {
+               mp_debug("unknown key status");
+               return;
+       }
+
+       const char *signal = NULL;
+
+       switch (key) {
+       case MEDIA_KEY_PLAY:
+               if (released) {
+                       if (ad->player_state != PLAY_STATE_PLAYING)
+                               mp_play_control_play_pause(ad, true);
+                       else
+                               DEBUG_TRACE("Already playing state. skip event");
+               }
+               break;
+       case MEDIA_KEY_PAUSE:
+               if (released) {
+                       if (ad->player_state == PLAY_STATE_PLAYING)
+                               mp_play_control_play_pause(ad, false);
+                       else
+                               DEBUG_TRACE("Already pause state. skip event");
+               }
+               break;
+       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;
+
+       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;
+
+       case MEDIA_KEY_STOP:
+               mp_player_control_stop(ad);
+               break;
+       default:
+               mp_debug("Undefined key");
+               break;
+       }
+}
+
+bool
+mp_app_grab_mm_keys(struct appdata *ad)
+{
+       utilx_grab_key(ecore_x_display_get(), ad->xwin, KEY_MEDIA, OR_EXCLUSIVE_GRAB);
+       int err = media_key_reserve(_mp_app_media_key_event_cb, ad);
+       if (err != MEDIA_KEY_ERROR_NONE) {
+               mp_error("media_key_reserve().. [0x%x]", err);
+               return false;
+       }
+
+       return true;
+}
+
+void
+mp_app_ungrab_mm_keys(struct appdata *ad)
+{
+       media_key_release();
+       utilx_ungrab_key(ecore_x_display_get(), ad->xwin, KEY_MEDIA);
+}
+
+
+#ifdef MP_FEATURE_AUTO_OFF
+Eina_Bool
+mp_app_auto_off_timer_expired_cb(void *data)
+{
+       struct appdata *ad = data;
+       MP_CHECK_VAL(ad, ECORE_CALLBACK_CANCEL);
+
+       mp_debug("#### auto off ####");
+
+       ad->auto_off_timer = NULL;
+       mp_setting_reset_auto_off_time();
+
+       mp_app_exit(ad);
+
+       return ECORE_CALLBACK_DONE;
+}
+
+void
+mp_app_auto_off_changed_cb(int min, void *data)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       mp_ecore_timer_del(ad->auto_off_timer);
+       mp_debug("auto off time set [%d]", min);
+
+       if (min <= 0) {
+               mp_debug("disable auto off");
+               return;
+       }
+
+       double timeout = min * 60;
+       ad->auto_off_timer = ecore_timer_add(timeout, mp_app_auto_off_timer_expired_cb, ad);
+}
+#endif
+
+#ifdef MP_FEATURE_PLAY_SPEED
+void
+mp_app_play_speed_changed_cb(double speed, void *data)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       DEBUG_TRACE("playspeed: %f", speed);
+       mp_player_mgr_set_play_speed(speed);
+}
+#endif
+
+
diff --git a/src/common/mp-common.c b/src/common/mp-common.c
new file mode 100755 (executable)
index 0000000..c811440
--- /dev/null
@@ -0,0 +1,697 @@
+/*
+ * 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://floralicense.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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <Ecore_X.h>
+#include <vconf.h>
+
+#include "mp-common.h"
+#include "mp-player-debug.h"
+
+#include "mp-media-info.h"
+#include "mp-view-layout.h"
+#include "mp-util.h"
+#include "mp-menu.h"
+#include "mp-play-view.h"
+#include "mp-playlist-view.h"
+#include "mp-edit-view.h"
+#include "mp-search.h"
+#include "mp-view-manager.h"
+#include "mp-widget.h"
+#include "mp-library.h"
+#include "mp-volume.h"
+
+
+
+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);
+       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 (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;
+
+               mp_media_info_get_title(track,  &title);
+
+               mp_retv_if(!title, NULL);
+               if(layout_data->filter_str)
+               {
+                       char *markup_name;
+                       bool res = false;
+                       markup_name = (char *)mp_util_search_markup_keyword(title, layout_data->filter_str, &res);
+                       if(res)
+                               return strdup(markup_name);
+               }
+               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") && layout_data->track_type != MP_TRACK_BY_FOLDER)
+       {
+               char *artist = NULL;
+                       mp_media_info_get_artist(track, &artist);
+               mp_retv_if(!artist, NULL);
+               return g_strdup(artist);
+       }
+       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] = "";
+                       mp_media_info_get_duration(track, &duration);
+
+               mp_util_format_duration(time, duration);
+               time[15] = '\0';
+               return g_strdup(time);
+       }
+       return NULL;
+}
+
+void
+mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       Elm_Object_Item *gli = (Elm_Object_Item *) event_info;
+       Elm_Object_Item *gli2 = NULL;
+       elm_genlist_item_selected_set(gli, FALSE);
+
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       mp_retm_if(!layout_data, "layout_data is NULL !!!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       MP_CHECK(layout_data->ad);
+
+       mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       if(layout_data->rename_git)
+       {
+               mp_playlist_view_rename_done_cb(layout_data, NULL, NULL);
+               return;
+       }
+
+       mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) elm_object_item_data_get(gli);
+       MP_CHECK(item);
+
+       if (layout_data->ad->b_add_tracks)
+       {
+               item->checked = !item->checked;
+
+               if (item->checked)
+                       layout_data->checked_count++;
+               else
+                       layout_data->checked_count--;
+
+               if (layout_data->select_all_layout)
+               {
+                       if (layout_data->item_count == layout_data->checked_count)
+                               layout_data->select_all_checked = EINA_TRUE;
+                       else
+                               layout_data->select_all_checked = EINA_FALSE;
+
+                       elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked);
+               }
+
+               elm_genlist_item_fields_update(item->it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+               mp_util_create_selectioninfo_with_count(layout_data->layout, layout_data->checked_count);
+               mp_common_set_toolbar_button_sensitivity(layout_data, layout_data->checked_count);
+
+               return;
+       }
+
+       if (layout_data->edit_mode)
+       {
+               mp_edit_view_genlist_sel_cb(data, obj, event_info);
+               return;
+       }
+       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_plst_item *plst_item = NULL;
+       mp_plst_item *current_item = NULL;
+       char *prev_item_uid = NULL;
+       plst_item = mp_playlist_mgr_get_current(layout_data->ad->playlist_mgr);
+       if(plst_item)
+               prev_item_uid = g_strdup(plst_item->uid);
+
+       mp_playlist_mgr_clear(layout_data->ad->playlist_mgr);
+       gli2 = elm_genlist_first_item_get(layout_data->genlist);
+       while(gli2)
+       {
+               if(elm_genlist_item_select_mode_get(gli2)  != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+               {
+                       mp_genlist_item_data_t *item_data = elm_object_item_data_get(gli2);
+                       if (item_data && item_data->item_type == MP_GENLIST_ITEM_TYPE_NORMAL)
+                       {
+                               if(item_data->group_type == MP_GROUP_NONE || item_data->group_type == MP_GROUP_BY_ALLSHARE)
+                               {
+                                       char *uri = NULL;
+                                       char *uid = NULL;
+
+                                       mp_track_type track_type = MP_TRACK_URI;
+                                               mp_media_info_get_media_id(item_data->handle, &uid);
+                                               mp_media_info_get_file_path(item_data->handle, &uri);
+                                       plst_item = mp_playlist_mgr_item_append(layout_data->ad->playlist_mgr, uri, uid, track_type);
+                                       if(gli2 == gli && plst_item)
+                                               current_item = plst_item;
+                               }
+                       }
+               }
+               gli2 = elm_genlist_item_next_get(gli2);
+       }
+
+       mp_playlist_mgr_set_current(layout_data->ad->playlist_mgr, current_item);
+
+       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, true);
+       if(!mp_play_view_load_and_play(layout_data->ad, prev_item_uid, FALSE)) {
+               mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
+               mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, false);
+       }
+
+       IF_FREE(prev_item_uid);
+
+       return;
+}
+
+Evas_Object *
+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);
+       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!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       if (!strcmp(part, "elm.icon"))
+       {
+               char *thumbpath = NULL;
+               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_MEMORY;
+                       else
+                               icon_path = MP_ICON_STORAGE_EXTERNAL;
+
+                       Evas_Object *icon = elm_icon_add(obj);
+                       MP_CHECK_NULL(icon);
+                       elm_image_file_set(icon, IMAGE_EDJ_NAME, icon_path);
+                       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);
+                       return check;
+               }
+       }
+
+       return NULL;
+}
+
+static Evas_Object *
+_mp_common_gl_icon_get(void *data, Evas_Object * obj, const char *part)
+{
+       Evas_Object *editfield = NULL;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_NULL(ad);
+       MP_CHECK_NULL(obj);
+
+       if (!strcmp(part, "elm.icon"))
+       {
+               ad->editfiled_new_playlist = editfield =
+                       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;
+       }
+       return NULL;
+}
+
+
+Evas_Object *
+mp_common_create_editfield_layout(Evas_Object * parent, struct appdata * ad, char *text)
+{
+       startfunc;
+       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.version = ELM_GENGRID_ITEM_CLASS_VERSION;
+       itc.refcount = 0;
+       itc.delete_me = EINA_FALSE;
+       itc.item_style = "dialogue/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(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);
+
+       elm_object_part_content_set(layout, "elm.swallow.content", genlist);
+       evas_object_show(layout);
+
+       return layout;
+}
+
+void
+mp_common_hide_search_ise_context(view_data_t * view_data)
+{
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       mp_layout_data_t *layout_data = NULL;
+
+       Evas_Object *last_view_content = mp_view_manager_get_last_view_layout(view_data->ad);
+       MP_CHECK(last_view_content);
+
+       layout_data = (mp_layout_data_t *) evas_object_data_get(last_view_content, "layout_data");
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       mp_search_hide_imf_pannel(layout_data->search_bar);
+}
+
+static void
+_mp_common_search_layout_del_cb(void *data, Evas * e, Evas_Object * eo, void *event_info)
+{
+       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;
+}
+
+
+void
+mp_common_search_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       MP_CHECK(view_data->ad);
+
+       mp_retm_if(view_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       Evas_Object *layout = mp_view_layout_create(view_data->navibar, view_data, MP_VIEW_MODE_SEARCH);
+
+       Evas_Object *top_view = mp_view_manager_get_last_view_layout(view_data->ad);
+       MP_CHECK(top_view);
+       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, "IDS_COM_SK_SEARCH", mp_util_get_layout_data(layout));
+
+}
+
+void
+mp_common_edit_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       mp_retm_if(view_data->ad->b_add_tracks, "add track mode..");
+       mp_retm_if(view_data->ad->navi_effect_in_progress, "navi effect in progress");
+       mp_retm_if(mp_view_manager_get_edit_view_layout(view_data->ad), "edit view already created...");
+
+       Evas_Object *layout = mp_view_manager_get_last_view_layout(view_data->ad);
+       mp_layout_data_t *layout_data = evas_object_data_get(layout, "layout_data");
+       MP_CHECK(layout_data);
+
+       if (layout_data->item_count < 1)
+       {
+               mp_widget_text_popup(layout_data->ad, GET_SYS_STR("IDS_COM_BODY_NO_ITEMS"));
+               return;
+       }
+       mp_edit_view_create(view_data);
+}
+
+void
+mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       view_data_t *view_data = (view_data_t *) data;
+       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");
+
+
+       mp_layout_data_t* layout_data = mp_util_get_layout_data(mp_view_manager_get_last_view_layout(ad));
+       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);
+               /* 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");
+               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);
+
+       if(mp_util_is_db_updating())
+       {
+               Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad);
+               mp_view_layout_update(top_view);
+       }
+       else if (layout_data != NULL && layout_data->view_data != NULL)
+       {
+               if (layout_data->category == MP_LAYOUT_TRACK_LIST && layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
+               {
+                       Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad);
+                       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
+mp_common_item_check_changed_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       mp_genlist_item_data_t *item_data = (mp_genlist_item_data_t *) data;
+       MP_CHECK(item_data);
+       mp_layout_data_t *layout_data =
+               (mp_layout_data_t *) evas_object_data_get(elm_object_item_widget_get(item_data->it), "layout_data");
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       if(layout_data->rename_git)
+       {
+               mp_playlist_view_rename_done_cb(layout_data, NULL, NULL);
+               item_data->checked = !item_data->checked;
+               DEBUG_TRACE("item_data->checked: %d", item_data->checked);
+               elm_check_state_pointer_set(obj, &item_data->checked);
+               return;
+       }
+
+       if (item_data->checked)
+               layout_data->checked_count++;
+       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)
+                       layout_data->select_all_checked = EINA_TRUE;
+               else
+                       layout_data->select_all_checked = EINA_FALSE;
+
+               elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked);
+       }
+
+       mp_util_create_selectioninfo_with_count(layout_data->layout, layout_data->checked_count);
+       mp_common_set_toolbar_button_sensitivity(layout_data, layout_data->checked_count);
+}
+
+
+void
+mp_common_set_toolbar_button_sensitivity(mp_layout_data_t * layout_data, int selected_count)
+{
+
+       int i;
+       int all_track_count = 0;
+       Evas_Object *item;
+       bool disable = true;
+
+       MP_CHECK(layout_data);
+
+       DEBUG_TRACE("rename_mode=%d, edit_mode=%d, selected_count=%d\n item_count: %d",
+                   layout_data->rename_mode, layout_data->edit_mode, selected_count, layout_data->item_count);
+
+       if (layout_data->rename_mode)
+       {
+               for (i = 0; i < MP_NAVI_CONTROL_BUTTON_MAX; i++) /* Don't disable the cancel button in rename mode */
+               {
+                       item = mp_view_manager_get_controlbar_item(layout_data->ad, i);
+                       elm_object_disabled_set(item, disable);
+               }
+       }
+       else if (layout_data->edit_mode)
+       {
+               if(selected_count > 0)
+                       disable = 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);
+                       elm_object_disabled_set(item, disable);
+               }
+       }
+       else if (layout_data->ad->b_add_tracks)
+       {
+               item = mp_view_manager_get_controlbar_item(layout_data->ad, MP_NAVI_CONTROL_BUTTON_ADD_TO_PLAYLIST);
+               MP_CHECK(item);
+               if(selected_count > 0)
+                       elm_object_disabled_set(item, false);
+               else
+                       elm_object_disabled_set(item, true);
+       }
+       else
+       {
+               if(layout_data->item_count > 0)
+                       disable = false;
+
+               if(layout_data->category != MP_LAYOUT_PLAYLIST_LIST)
+               {
+                       item = mp_view_manager_get_controlbar_item(layout_data->ad, MP_NAVI_CONTROL_BUTTON_EDIT);
+                       if (item)
+                               elm_object_disabled_set(item, disable);
+
+                       item = mp_view_manager_get_controlbar_item(layout_data->ad, MP_NAVI_CONTROL_BUTTON_SEARCH);
+                       if (item)
+                               elm_object_disabled_set(item, disable);
+
+               }
+               else
+               {
+                       bool disable_search = true;
+                       mp_media_info_list_count(MP_TRACK_ALL, NULL, NULL, NULL, 0, &all_track_count);
+                       if(all_track_count > 0)
+                               disable_search = false;
+                       item = mp_view_manager_get_controlbar_item(layout_data->ad, MP_NAVI_CONTROL_BUTTON_EDIT);
+                       if(item)
+                               elm_object_disabled_set(item, disable);
+
+                       item = mp_view_manager_get_controlbar_item(layout_data->ad, MP_NAVI_CONTROL_BUTTON_SEARCH);
+                       if(item)
+                               elm_object_disabled_set(item, disable_search);
+               }
+       }
+
+}
+
+void
+mp_common_navigationbar_finish_effect(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("finish effect");
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       ad->navi_effect_in_progress = FALSE;
+
+       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_layout_data_t * layout_data = mp_util_get_layout_data(mp_view_manager_get_last_view_layout(ad));
+       MP_CHECK(layout_data);
+       if(layout_data->search_bar)
+       {
+               Evas_Object *ed = mp_search_entry_get(layout_data->search_bar);
+               elm_object_focus_set(ed, EINA_TRUE);
+       }
+}
+
+static void _show_title_toolbar(void *data, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+       elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
+}
+
+static void _hide_title_toolbar(void *data, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+       elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
+}
+
+static void
+_mp_common_layout_del_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       MP_CHECK(data);
+       evas_object_smart_callback_del(data, "virtualkeypad,state,on", _show_title_toolbar);
+       evas_object_smart_callback_del(data, "virtualkeypad,state,off", _hide_title_toolbar);
+}
+
+void
+mp_common_add_keypad_state_callback(Evas_Object *conformant, Evas_Object *view_layout, Elm_Object_Item *navi_item)
+{
+       startfunc;
+       MP_CHECK(conformant);
+       MP_CHECK(view_layout);
+
+       evas_object_smart_callback_add(conformant, "virtualkeypad,state,on", _show_title_toolbar, navi_item);
+       evas_object_smart_callback_add(conformant, "virtualkeypad,state,off", _hide_title_toolbar, navi_item);
+
+       evas_object_event_callback_add(view_layout, EVAS_CALLBACK_DEL, _mp_common_layout_del_cb,
+                                      conformant);
+}
+
diff --git a/src/common/mp-item.c b/src/common/mp-item.c
new file mode 100644 (file)
index 0000000..3d2a7d6
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * 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://floralicense.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 <sys/time.h>
+#include <vconf.h>
+#include <glib.h>
+#include <fcntl.h>
+
+#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(char *fid)
+{
+
+       mp_media_info_h media;
+       int count = 0;
+       bool ret = FALSE;
+
+       ret = mp_media_info_create(&media, fid);
+       if (ret != 0)
+       {
+               mp_media_info_destroy(media);
+               return false;
+       }
+
+       mp_media_info_get_played_count(media, &count);
+
+       mp_media_info_set_played_count(media, ++count);
+       mp_media_info_set_played_time(media, time(NULL));
+
+       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 (executable)
index 0000000..d2e01ad
--- /dev/null
@@ -0,0 +1,1922 @@
+/*
+ * 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://floralicense.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 <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <media_content.h>
+#include <sqlite3.h>
+
+#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 void _mp_media_info_sql_strncat(char *buf, const char *query, int size)
+{
+       char *sql = sqlite3_mprintf("%q", query);
+       DEBUG_TRACE("sql: %s", sql);
+       strncat(buf, sql, size);
+       sqlite3_free(sql);
+}
+
+static int _mp_media_info_compare_cb(void *a , void *b)
+{
+       mp_media_info_h media_info_a = a;
+       mp_media_info_h media_info_b = b;
+       char *s_a = NULL, *s_b = NULL;
+       int n_a = 0, n_b = 0, res = 0;
+
+       mp_media_info_get_track_num(media_info_a, &s_a);
+       mp_media_info_get_track_num(media_info_b, &s_b);
+       if (s_a == NULL && s_b == NULL) {
+               return 0;
+       } else if (s_a == NULL) {
+               return 1;
+       } else if (s_b == NULL) {
+               return -1;
+       }
+
+       n_a = atoi(s_a);
+       n_b = atoi(s_b);
+
+       if(n_a < n_b)   res =  1;
+       else if (n_a > n_b)     res =  -1;
+
+       DEBUG_TRACE("a: %d, b: %d, res: %d", n_a, n_b, res);
+
+       return res;
+}
+
+static bool __mp_media_info_of_album_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));
+       if (!media_info) {
+               media_info_destroy(m);
+               return false;
+       }
+
+       media_info->i.minfo = calloc(1, sizeof(struct mp_minfo_s));
+       if (!media_info->i.minfo) {
+               media_info_destroy(m);
+               IF_FREE (media_info);
+               return false;
+       }
+
+       res = media_info_get_audio(m, &media_info->s.meta);
+       if (res != MEDIA_CONTENT_ERROR_NONE) {
+               media_info_destroy(m);
+               mp_media_info_destroy(media_info);
+               return true;
+       }
+
+       media_info->h.media = m;
+       media_list->list = g_list_insert_sorted(media_list->list, media_info, _mp_media_info_compare_cb);
+
+       return true;
+}
+
+
+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));
+       if (!media_info->i.minfo) {
+               free(media_info);
+               return false;
+       }
+
+       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));
+       if (!media_info) {
+               media_info_destroy(m);
+               return false;
+       }
+
+       media_info->i.minfo = calloc(1, sizeof(struct mp_minfo_s));
+       if (!media_info->i.minfo) {
+               media_info_destroy(m);
+               SAFE_FREE(media_info);
+               return false;
+       }
+       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));
+       if (!media_info->i.ginfo) {
+               SAFE_FREE(media_info);
+               return false;
+       }
+
+       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));
+       if (!media_info->i.ginfo) {
+               SAFE_FREE(media_info);
+               return false;
+       }
+
+       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));
+       if (!media_info->i.ginfo) {
+               SAFE_FREE(media_info);
+               return false;
+       }
+
+       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));
+       if (!media_info->i.ginfo) {
+               SAFE_FREE(media_info);
+               return false;
+       }
+
+       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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%' AND ", STRNCAT_LEN(cond));
+               }
+               strncat(cond, " AND MEDIA_ARTIST = '", STRNCAT_LEN(cond));
+               _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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_TRACK_NUM, MEDIA_CONTENT_COLLATE_NOCASE);
+               if(type_string)
+               {
+                       strncat(cond, " AND MEDIA_ALBUM='", STRNCAT_LEN(cond));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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_TRACK_NUM, MEDIA_CONTENT_COLLATE_NOCASE);
+               if(type_string)
+               {
+                       strncat(cond, " AND MEDIA_ALBUM='", STRNCAT_LEN(cond));
+                       _mp_media_info_sql_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));
+                       _mp_media_info_sql_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));
+               _mp_media_info_sql_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 if(track_type == MP_TRACK_BY_ALBUM || track_type ==MP_TRACK_BY_ARTIST_ALBUM)
+       {
+               res = media_info_foreach_media_from_db(filter, __mp_media_info_of_album_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);
+       if(!(*media_info)->i.minfo) {
+               SAFE_FREE(*media_info);
+               return -1;
+       }
+
+       res = media_info_get_media_from_db(media_id, &(*media_info)->h.media);
+       if(res != MEDIA_CONTENT_ERROR_NONE) {
+               SAFE_FREE((*media_info)->i.minfo);
+               SAFE_FREE(*media_info);
+               return res;
+       }
+
+       res = media_info_get_audio((*media_info)->h.media, &(*media_info)->s.meta);
+       if(res != MEDIA_CONTENT_ERROR_NONE) {
+               SAFE_FREE((*media_info)->i.minfo);
+               SAFE_FREE(*media_info);
+               return 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 sql[MAX_NAM_LEN] = {0,};
+       char *cond = NULL;
+       mp_media_list_h list = NULL;
+
+       res = media_filter_create(&filter);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+       _mp_media_info_sql_strncat(sql, file_path, STRNCAT_LEN(sql));
+       cond = g_strdup_printf("MEDIA_PATH = '%s'", sql);
+
+       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_year(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("%dbps %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_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_get_added_time(media->h.media, time);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+       {
+               ERROR_TRACE("Error code 0x%x", res);
+               return 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);
+       if (res != MEDIA_CONTENT_ERROR_NONE) {
+               media_filter_destroy(filter);
+               return 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_PLAYED, STR_MP_RECENTLY_ADDED, 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));
+                       if(!media_info->i.ginfo) {
+                               SAFE_FREE(media_info);
+                               return FALSE;
+                       }
+
+                       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);
+
+                       res = media_filter_create(&filter);
+                       if (res != MEDIA_CONTENT_ERROR_NONE) {
+                               mp_error("media_filter_create:error=%d", res);
+                               return res;
+                       }
+
+                       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 && type_string){
+                               strncat(cond, " AND MEDIA_ARTIST='", STRNCAT_LEN(cond));
+                               _mp_media_info_sql_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 && type_string){
+                               strncat(cond, " AND MEDIA_GENRE='", STRNCAT_LEN(cond));
+                               _mp_media_info_sql_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 && type_string){
+                               strncat(cond, " AND MEDIA_YEAR='", STRNCAT_LEN(cond));
+                               _mp_media_info_sql_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 && type_string){
+                               strncat(cond, " AND MEDIA_COMPOSER='", STRNCAT_LEN(cond));
+                               _mp_media_info_sql_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);
+                               if (!minfo) {
+                                       media_filter_destroy(filter);
+                                       return -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;
+       char sql[MAX_FILTER_LEN] = {0,};
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       res = mp_media_filter_create(&filter);
+       MP_CHECK_VAL(res == 0, res);
+
+       res = media_filter_create(&filter);
+       if (res != MEDIA_CONTENT_ERROR_NONE) {
+               if (filter)
+               media_filter_destroy(filter);
+               return res;
+       }
+
+       _mp_media_info_sql_strncat(sql, playlist_name, STRNCAT_LEN(sql));
+       cond = g_strdup_printf("PLAYLIST_NAME = '%s'", sql);
+       if(!cond) {
+               media_filter_destroy(filter);
+               return -1;
+       }
+       res = mp_media_filter_set_condition(filter, cond, MP_MEDIA_CONTENT_COLLATE_DEFAULT);
+       free(cond);
+       if(res != 0) {
+               media_filter_destroy(filter);
+               return res;
+       }
+       res = mp_media_filter_set_offset(filter, 0, 1);
+       if(res != 0) {
+               media_filter_destroy(filter);
+               return 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);
+       if(!media) {
+               mp_media_info_group_list_destroy(list);
+               return -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);
+       if(res != 0) {
+               media_playlist_destroy(playlist);
+               return res;
+       }
+
+       res =  media_playlist_add_media(playlist, media_id);
+       if(res != 0) {
+               media_playlist_destroy(playlist);
+               return res;
+       }
+
+       res = media_playlist_update_to_db(playlist);
+       if(res != 0) {
+               media_playlist_destroy(playlist);
+               return 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);
+       media_playlist_update_to_db(playlist->h.group);
+
+       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;
+       res = media_filter_create(&filter);
+       MP_CHECK_VAL(res == 0, res);
+       strncat(cond, "((MEDIA_TYPE=3 and MEDIA_COUNT>0) or MEDIA_COUNT=0) and PLAYLIST_NAME = '", STRNCAT_LEN(cond));
+       _mp_media_info_sql_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);
+
+       return res;
+}
+
+int mp_media_info_playlist_update_db(mp_media_info_h playlist)
+{
+       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_update_to_db(playlist->h.group);
+       MP_CHECK_VAL(res == 0, res);
+
+       return res;
+}
+
+int
+mp_media_info_delete_from_db(const char *path)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       res = media_content_scan_file(path);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+       return res;
+}
+
+
diff --git a/src/common/mp-menu.c b/src/common/mp-menu.c
new file mode 100755 (executable)
index 0000000..f427794
--- /dev/null
@@ -0,0 +1,1137 @@
+/*
+ * 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://floralicense.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 "music.h"
+#include <stdio.h>
+#include <glib.h>
+#include <system_settings.h>
+
+#include "mp-player-debug.h"
+#include "mp-menu.h"
+#include "mp-util.h"
+#include "mp-popup.h"
+#include "mp-playlist-mgr.h"
+#include "mp-ug-launch.h"
+#include "mp-item.h"
+#include "mp-player-drm.h"
+#include "mp-widget.h"
+#include "mp-ctxpopup.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"
+#endif
+
+
+#define MP_MENU_FID "mp_menu_fid"
+#define MP_MENU_PLAY_LIST_FID "mp_menu_playlist_id"
+#define MP_MENU_POPUP_PLAY_LIST_HANDLER                "mp_menu_popup_handler"
+#define MP_MENU_GROUP_ITEM_HANDLER     "mp_menu_group_item_handler"
+
+typedef enum
+{
+       MP_MENU_FUNC_ADD_TO_LIST = 0,
+       MP_MENU_FUNC_DELETE,
+} mp_menu_func_type;
+
+
+mp_track_type_e
+mp_menu_get_track_type_by_group(mp_group_type_e group_type)
+{
+       mp_track_type_e item_type = MP_TRACK_ALL;
+
+       if (group_type == MP_GROUP_BY_ALBUM)
+       {
+               item_type = MP_TRACK_BY_ALBUM;
+       }
+       else if (group_type == MP_GROUP_BY_ARTIST)
+       {
+               item_type = MP_TRACK_BY_ARTIST;
+       }
+       else if (group_type == MP_GROUP_BY_ARTIST_ALBUM)
+       {
+               item_type = MP_TRACK_BY_ALBUM;
+       }
+       else if (group_type == MP_GROUP_BY_GENRE)
+       {
+               item_type = MP_TRACK_BY_GENRE;
+       }
+       else if (group_type == MP_GROUP_BY_YEAR)
+       {
+               item_type = MP_TRACK_BY_YEAR;
+       }
+       else if (group_type == MP_GROUP_BY_COMPOSER)
+       {
+               item_type = MP_TRACK_BY_COMPOSER;
+       }
+       else if (group_type == MP_GROUP_BY_FOLDER)
+       {
+               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, mp_media_info_h svc_handle,
+                             mp_menu_func_type menu_func)
+{
+       startfunc;
+
+       MP_CHECK_FALSE(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       struct appdata *ad = layout_data->ad;
+       MP_CHECK_FALSE(ad);
+
+       int err = -1;
+       int count = 0;
+       int index = 0;
+       int ret = 0;
+       int playlist_item_count = 0;
+
+       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;
+
+       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 != 0, FALSE, "Fail to get value");
+       mp_retvm_if(name == NULL, FALSE, "Fail to get value");
+       mp_debug("%s", name);
+
+       ret = mp_media_info_list_count(item_type, name, NULL, NULL, 0, &count);
+       MP_CHECK_EXCEP(ret == 0);
+
+       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)
+       {
+               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;
+               char *path = NULL;
+               mp_media_info_h item;
+
+               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);
+
+               if (menu_func == MP_MENU_FUNC_ADD_TO_LIST)
+               {
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
+                       if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
+                       {
+                               goto mp_exception;
+                       }
+#endif
+                       err = mp_media_info_playlist_add_media(plst_id, fid);
+                       MP_CHECK_EXCEP(err == 0);
+                       playlist_item_count++;
+               }
+               else
+               {
+                       MP_CHECK_EXCEP(path);
+                       err = remove(path);
+                       MP_CHECK_EXCEP(err == 0);
+               }
+       }
+       mp_media_info_list_destroy(tracks);
+
+       return true;
+
+      mp_exception:
+       mp_media_info_list_destroy(tracks);
+       return false;
+}
+
+void
+mp_menu_add_to_play_list_cancel_create_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");
+
+       Evas_Object *current_navi_bar = NULL;
+       current_navi_bar = ad->naviframe;
+       MP_CHECK(current_navi_bar);
+
+       view_data_t *view_data = evas_object_data_get(current_navi_bar, "view_data");
+       mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
+       return;
+}
+
+void
+mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
+
+       Evas_Object *current_navi_bar = NULL;
+       current_navi_bar = ad->naviframe;
+       MP_CHECK(current_navi_bar);
+
+       int plst_uid = -1;
+
+       char *converted_name = NULL;
+       Evas_Object *entry = mp_widget_editfield_entry_get(ad->editfiled_new_playlist);
+       const char *name = elm_entry_entry_get(entry);
+
+       if (name == NULL || strlen(name) == 0)
+       {
+               name = elm_object_part_text_get(ad->editfiled_new_playlist, "elm.guidetext");
+       }
+       converted_name = elm_entry_markup_to_utf8(name);
+
+       plst_uid = mp_util_create_playlist(ad, converted_name, NULL);
+       IF_FREE(converted_name);
+       if (plst_uid < 0)
+               return;
+
+       view_data_t *view_data = evas_object_data_get(current_navi_bar, "view_data");
+       mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
+
+       if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
+               mp_view_manager_update_list_contents(view_data, FALSE);
+
+       mp_layout_data_t *layout_data = ad->layout_data;
+       mp_list_category_t category = MP_LAYOUT_TRACK_LIST;
+
+       if (layout_data)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               category = layout_data->category;
+       }
+
+       bool result = false;
+
+       if (category == MP_LAYOUT_TRACK_LIST)
+       {
+               result = mp_util_add_to_playlist_by_key(plst_uid, ad->fid);
+       }
+       else if (category == MP_LAYOUT_GROUP_LIST)
+       {
+               MP_CHECK(ad->group_item_handler);
+
+               result = _mp_menu_func_by_group_handle(plst_uid, layout_data,
+                                                      ad->group_item_handler, MP_MENU_FUNC_ADD_TO_LIST);
+       }
+
+       if (result)
+       {
+               mp_debug("sucess add to play list");
+               mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_ADDED"));
+       }
+       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_post_status_message(ad, noti_str);
+               IF_FREE(noti_str);
+#else
+               mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
+#endif
+       }
+
+       return;
+}
+
+static void
+_mp_menu_add_playlist_create_select_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+
+       MP_CHECK(data);
+
+       struct appdata *ad = data;
+       Evas_Object *current_navi_bar = NULL;
+       view_data_t *view_data = NULL;
+       char *new_playlist_name = NULL;
+
+       MP_CHECK(ad);
+       MP_CHECK(ad->library);
+
+       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();
+       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");
+
+       Elm_Object_Item *it = mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP);
+       elm_object_item_text_set(it, GET_STR("IDS_MUSIC_BODY_CREATE_PLAYLIST"));
+       mp_language_mgr_register_object_item(it, "IDS_MUSIC_BODY_CREATE_PLAYLIST");
+
+       Evas_Object *btn = mp_widget_create_button(create_plst_layout, "naviframe/toolbar/default", GET_SYS_STR("IDS_COM_OPT_SAVE"), NULL, mp_menu_add_to_play_list_done_create_cb, ad);
+       elm_object_item_part_content_set(it, "title_toolbar_button1", btn);
+       btn = mp_widget_create_button(create_plst_layout, "naviframe/back_btn/default", NULL, NULL, mp_playlist_view_create_new_cancel_cb, view_data);
+       elm_object_item_part_content_set(it, "title_prev_btn", btn);
+
+       mp_common_add_keypad_state_callback(ad->conformant, create_plst_layout, it);
+
+       mp_view_manager_set_back_button(create_plst_layout, it, mp_playlist_view_create_new_cancel_cb, view_data);
+
+       evas_object_show(create_plst_layout);
+
+       ad->layout_data = evas_object_data_get(obj, "layout_data");
+       mp_layout_data_t *layout_data = ad->layout_data;
+
+       if(layout_data)
+       {
+               if (layout_data->category == MP_LAYOUT_TRACK_LIST)
+               {
+                       IF_FREE(ad->fid);
+                       ad->fid = (char *)evas_object_data_get(obj, MP_MENU_FID);
+               }
+               else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+               {
+                       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);
+       }
+       else
+               ad->fid = (char *)evas_object_data_get(obj, MP_MENU_FID);
+
+       mp_popup_destroy(ad);
+
+       endfunc;
+}
+
+
+static void
+_mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       struct appdata *ad = NULL;
+       int ret = 0;
+       int playlist_id = -1;
+
+       MP_CHECK(data);
+
+       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;
+
+       if (layout_data)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               ad = layout_data->ad;
+               category = layout_data->category;
+
+       }
+       else
+       {
+               ad = evas_object_data_get(obj, "ad");
+       }
+       MP_CHECK(ad);
+
+       char *playlist_name = NULL;
+       int item_count = 0;
+       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");
+               char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
+               mp_util_post_status_message(ad, noti_str);
+               IF_FREE(noti_str);
+               goto END;
+       }
+#endif
+
+       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(playlist_id, fid);
+               IF_FREE(fid);
+       }
+       else if (category == MP_LAYOUT_GROUP_LIST)
+       {
+               mp_media_info_h group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER);
+
+               MP_CHECK(group_item_handler);
+
+               result = _mp_menu_func_by_group_handle(playlist_id, layout_data,
+                                                      group_item_handler, MP_MENU_FUNC_ADD_TO_LIST);
+       }
+
+       if (result)
+       {
+               mp_debug("sucess add to play list");
+
+               if(layout_data && layout_data->track_type == MP_TRACK_BY_PLAYLIST && layout_data->category == MP_LAYOUT_TRACK_LIST)
+                       mp_view_layout_update(obj);
+
+               if (playlist_name)
+               {
+                       mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_ADDED"));
+               }
+       }
+       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_post_status_message(ad, noti_str);
+               IF_FREE(noti_str);
+#else
+               mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
+#endif
+       }
+
+       mp_media_list_h playlists = NULL;
+
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
+      END:
+#endif
+       playlists = evas_object_data_get(obj, MP_MENU_POPUP_PLAY_LIST_HANDLER);
+       mp_media_info_group_list_destroy(playlists);
+
+       mp_popup_destroy(ad);
+       return;
+
+}
+
+static void
+_mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+
+       mp_media_info_h handle = data;
+       MP_CHECK(handle);
+
+       struct appdata *ad = NULL;
+       char *fid = NULL;
+       int ret = 0;
+
+       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;
+
+       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)
+               {
+                       if (layout_data->track_type == MP_TRACK_BY_PLAYLIST)
+                       {
+                               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 == MP_TRACK_BY_ADDED_TIME)
+                       {
+                               ret = mp_media_info_set_added_time(handle, 0);
+                       }
+                       else if (layout_data->track_type == MP_TRACK_BY_FAVORITE)
+                       {
+                               ret = mp_media_info_set_favorite(handle, false);
+                       }
+                       else if (layout_data->track_type == MP_TRACK_BY_PLAYED_TIME)
+                       {
+                               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
+                       {
+                               char *path = NULL;
+                               fid = mp_util_get_fid_by_handle(layout_data, handle);
+                               mp_media_info_get_file_path(handle, &path);
+                               if (MP_FILE_DELETE_ERR_NONE != mp_util_delete_track(ad, fid, path, FALSE))
+                                       ret = -1;
+                       }
+                       if (ret != 0)
+                               result = false;
+                       else
+                               result = true;
+               }
+               else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+               {
+                       result = _mp_menu_func_by_group_handle(0, layout_data, handle, MP_MENU_FUNC_DELETE);
+               }
+               else if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
+               {
+                       int plst_id = 0;
+                       ret = mp_media_info_group_get_playlist_id(handle, &plst_id);
+                       mp_retm_if(ret != 0, "Fail to get value");
+
+                       ret = mp_media_info_playlist_delete_from_db(plst_id);
+                       mp_retm_if(ret != 0, "Fail to delete playlist");
+               }
+
+               if (result)
+               {
+                       Elm_Object_Item *it =
+                               (Elm_Object_Item *)elm_genlist_decorated_item_get((const Evas_Object *)layout_data->genlist);
+
+                       if(!it && layout_data->category == MP_LAYOUT_PLAYLIST_LIST) {
+                               Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
+                               for(; item != NULL; item = elm_genlist_item_next_get(item)) {
+                                       mp_genlist_item_data_t *item_data = NULL;
+                                       item_data = (mp_genlist_item_data_t *)elm_object_item_data_get(item);
+                                       if(item_data && item_data->handle == handle) {
+                                               it = item;
+                                               break;
+                                       }
+                               }
+                       }
+
+                       if(it)
+                       {
+                               layout_data->item_count--;
+
+                               /* update last view when change album track view or artist track view */
+                               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;
+                               }
+
+                               //update view in case there is no content. otherwise juse call elm_object_item_del()
+                               if(layout_data->item_count < 1) {
+                                       mp_view_layout_update(layout_data->layout);
+                                       /* update the first controlba item */
+                                       mp_view_manager_update_first_controlbar_item(layout_data);
+                               } else {
+                                       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));
+                                               }
+                                               else
+                                               {
+                                                       elm_genlist_item_update(elm_genlist_item_parent_get(it));
+                                               }
+                                       } else if (MP_TRACK_BY_ALBUM == layout_data->track_type) {
+                                               /* update group title */
+                                               elm_genlist_item_update(layout_data->album_group);
+                                       }
+
+                                       elm_object_item_del(it);
+                               }
+                       }
+                       MP_CHECK(layout_data->view_data);
+                       mp_util_post_status_message(layout_data->ad, GET_SYS_STR("IDS_COM_POP_DELETED"));
+               }
+               else
+                       mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_FAILED"));
+
+       }
+}
+
+#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_CHECK(data);
+       CtxPopup_Data *popup_data = data;
+       void *user_data = popup_data->user_data;
+       MP_CHECK(user_data);
+       const char *label = popup_data->label;
+
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) user_data;
+
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       if (label)
+       {
+               GString *path = NULL;
+               char *path_name = NULL;
+               char *fmt = NULL;
+
+               if (g_strcmp0(label, BLUETOOTH_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_ctxpopup_destroy(popup_data->popup);
+}
+
+void
+mp_menu_share_select_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       char *path = NULL;      //do not free
+       struct appdata *ad = NULL;
+       mp_plst_item *item = NULL;
+
+       MP_CHECK(data);
+       CtxPopup_Data *popup_data = data;
+       void *user_data = popup_data->user_data;
+       MP_CHECK(user_data);
+       const char *label = popup_data->label;
+
+       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 = user_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 = user_data;
+               MP_CHECK(ad);
+
+               item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+               MP_CHECK(item);
+
+               path = item->uri;
+       }
+
+       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_ctxpopup_destroy(popup_data->popup);
+}
+
+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 = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, path);
+       if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
+               mp_error("system_settings_set_value_string()... [0x%x]", ret);
+               return -1;
+       }
+
+       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;
+       mp_plst_item *item = NULL;
+
+       MP_CHECK(data);
+       CtxPopup_Data *popup_data = data;
+       void *user_data = popup_data->user_data;
+       MP_CHECK(user_data);
+       const char *label = popup_data->label;
+
+       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 = user_data;
+               ad = layout_data->ad;
+               path = mp_util_get_path_by_handle(layout_data, handle);
+       }
+       else
+       {
+               ad = user_data;
+               MP_CHECK(ad);
+
+               item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+               MP_CHECK(item);
+
+               path = item->uri;
+       }
+
+       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_SYS_STR("IDS_COM_POP_SUCCESS");
+                       else
+                               popup_txt = GET_SYS_STR("IDS_COM_POP_FAILED");
+
+                       mp_widget_text_popup(ad, popup_txt);
+
+               }
+       }
+
+       mp_ctxpopup_destroy(popup_data->popup);
+
+       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;
+
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+
+       char *file_name = NULL;
+       Evas_Object *genlist = 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_ctxpopup_create(obj, MP_CTXPOPUP_PV_SHARE, data, ad);
+               MP_CHECK(share_popup);
+               evas_object_data_set(share_popup, "layout_data", layout_data);
+
+       }
+       else
+       {
+               ad = data;
+               mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
+               mp_plst_item *item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+
+               MP_CHECK(item);
+
+               mp_debug("excuete by list view %s", item->uri);
+
+               if (mp_drm_check_foward_lock(item->uri))
+               {
+                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"));
+                       return;
+               }
+
+               share_popup = mp_ctxpopup_create(obj, MP_POPUP_PV_SHARE, data, ad);
+               MP_CHECK(share_popup);
+       }
+
+       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_ctxpopup_create(obj, MP_CTXPOPUP_PV_SET_AS, data, ad);
+       else
+               popup = mp_ctxpopup_create(obj, MP_CTXPOPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME, data, ad);
+
+       if (layout_data)
+       {
+               evas_object_data_set(popup, "layout_data", layout_data);
+       }
+
+       return;
+
+}
+
+#ifndef MP_SOUND_PLAYER
+void
+mp_menu_delete_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);
+       mp_media_info_h handle = NULL;
+       handle = data;
+
+       ad = layout_data->ad;
+
+       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);
+
+       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);
+}
+
+void
+mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+
+       int ret = 0;
+
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       mp_plst_item *item = NULL;
+
+       char *fid = NULL;
+
+       struct appdata *ad = NULL;
+
+       mp_media_info_h handle = NULL;
+
+       Evas_Object *popup = NULL;
+
+       if (layout_data)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               ad = layout_data->ad;
+       }
+       else
+               ad = data;
+
+       MP_CHECK_EXCEP(ad);
+
+       popup = mp_genlist_popup_create(obj, MP_POPUP_ADD_TO_PLST, ad, ad);
+       MP_CHECK(popup);
+
+       Evas_Object *genlist = evas_object_data_get(popup, "genlist");
+       MP_CHECK(genlist);
+
+       if (layout_data)
+       {
+               evas_object_data_set(genlist, "layout_data", layout_data);
+
+               handle = data;
+
+               if (layout_data->category == MP_LAYOUT_TRACK_LIST)
+               {
+                       fid = g_strdup(mp_util_get_fid_by_handle(layout_data, handle));
+                       evas_object_data_set(genlist, MP_MENU_FID, (void *)fid);        //set request fid
+               }
+               else
+               {
+                       evas_object_data_set(genlist, MP_MENU_GROUP_ITEM_HANDLER, handle);      //set group item handler
+               }
+       }
+       else
+       {
+               item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+               MP_CHECK_EXCEP(item);
+               fid = g_strdup(item->uid);
+               evas_object_data_set(genlist, MP_MENU_FID, (void *)fid);        //set request fid
+               evas_object_data_set(genlist, "ad", ad);
+       }
+
+       int i = 0, count = -1, err = -1;
+
+       mp_genlist_popup_item_append(popup, GET_STR("IDS_MUSIC_OPT_CREATE_PLAYLIST"), NULL,
+                                    _mp_menu_add_playlist_create_select_cb, ad);
+
+       err = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
+
+       if ((err != 0) || (count < 0))
+       {
+               ERROR_TRACE("Error in mp_media_info_group_list_count (%d)\n", err);
+               return;
+       }
+
+       if (count)
+       {
+               mp_media_list_h playlists = NULL;       //must be free
+
+               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 */
+                       mp_media_info_h plst = NULL;
+                       char *name = NULL;
+                       plst = mp_media_info_group_list_nth_item(playlists, i);
+                       mp_retm_if(!plst, "Fail to get item");
+
+                       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);
+               }
+
+       }
+
+       evas_object_show(popup);
+
+       return;
+
+      mp_exception:
+       mp_evas_object_del(popup);
+       return;
+}
+#endif
+
diff --git a/src/common/mp-play.c b/src/common/mp-play.c
new file mode 100644 (file)
index 0000000..6e7cd22
--- /dev/null
@@ -0,0 +1,555 @@
+/*
+ * 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://floralicense.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 <syspopup_caller.h>
+#include <sound_manager.h>
+
+#include "music.h"
+#include "mp-ta.h"
+#include "mp-player-control.h"
+#include "mp-player-mgr.h"
+#include "mp-player-drm.h"
+#include "mp-play-view.h"
+#include "mp-item.h"
+#include "mp-playlist-mgr.h"
+#include "mp-widget.h"
+#include "mp-app.h"
+#include "mp-streaming-mgr.h"
+#include "mp-util.h"
+#include "mp-player-debug.h"
+#include "mp-minicontroller.h"
+#include "mp-play.h"
+#include "mp-setting-ctrl.h"
+#ifdef MP_FEATURE_AVRCP_13
+#include "mp-avrcp.h"
+#endif
+
+#define PAUSE_OFF_TIMEOUT                      (2 * 60)        // sec
+
+
+
+#ifndef MP_SOUND_PLAYER
+#include "mp-common.h"
+#include "mp-library.h"
+#endif
+
+
+
+
+
+
+//this function should be called in player ready state.
+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);
+
+       mp_play_view_update_progressbar(ad);
+
+       mp_plst_item * current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK_FALSE(current_item);
+
+       if(!ad->paused_by_user)
+       {
+               if (!mp_player_mgr_play(ad))
+               {
+                       mp_play_destory(ad);
+                       return FALSE;
+               }
+       }
+       else
+       {
+               DEBUG_TRACE("stay in pause state..");
+               return 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);
+
+
+       mp_track_info_t *track_info = ad->current_track_info;
+       if(track_info)
+       {
+               mp_setting_set_albumart_path(track_info->thumbnail_path);
+       }
+
+       if (current_item->track_type ==  MP_TRACK_URI && current_item->uid)
+       {
+               if (!mp_item_update_db(current_item->uid))
+               {
+                       WARN_TRACE("Error when update db");
+               }
+       }
+
+#ifndef MP_SOUND_PLAYER
+       mp_library_now_playing_set(ad);
+       mp_setting_save_now_playing(ad);
+#endif
+
+       IF_FREE(ad->latest_playing_key_id);
+       ad->latest_playing_key_id = g_strdup(current_item->uid);
+
+       vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid());
+
+
+       return TRUE;
+}
+
+bool
+mp_play_new_file(void *data, bool check_drm)
+{
+       startfunc;
+       struct appdata *ad = data;
+       mp_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       mp_plst_item * current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK_FALSE(current_item);
+
+       if (mp_util_check_uri_available(current_item->uri))
+               return mp_streaming_mgr_play_new_streaming(ad);
+       else
+               return mp_play_new_file_real(ad, check_drm);
+}
+
+bool
+mp_play_new_file_real(void *data, bool check_drm)
+{
+       startfunc;
+       struct appdata *ad = data;
+       mp_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       if (!mp_player_control_ready_new_file(ad, check_drm))
+       {
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool
+mp_play_item_play(void *data, char *fid)
+{
+       startfunc;
+
+       MP_CHECK_FALSE(data);
+       MP_CHECK_FALSE(fid);
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       if (mp_playlist_mgr_get_current(ad->playlist_mgr))
+       {
+               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);
+                       mp_play_destory(ad);
+
+                       if (!mp_play_new_file(ad, TRUE))
+                       {
+                               ERROR_TRACE("Fail to play new file");
+                               return FALSE;
+                       }
+               }
+               else
+               {
+                       mp_debug("playing the same file");
+               }
+       }
+       else
+       {
+               if (!mp_play_new_file(ad, TRUE))
+               {
+                       ERROR_TRACE("Fail to play new file");
+                       return FALSE;
+               }
+       }
+
+
+       endfunc;
+
+       return TRUE;
+}
+
+
+void
+mp_play_prev_file(void *data)
+{
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       mp_plst_item *item = mp_playlist_mgr_get_prev(ad->playlist_mgr);
+       if (item)
+       {
+               if (ad->playing_view)
+                       ad->playing_view->flick_direction = 2;
+               ad->freeze_indicator_icon = TRUE;
+
+               mp_playlist_mgr_set_current(ad->playlist_mgr, item);
+
+               if (ad->playing_view)
+                       mp_play_view_play_item(data, item, true, false);
+               else
+                       mp_play_item_play(ad, item->uid);
+       }
+       else
+       {
+               mp_error("mp_play_list_get_prev_item return false");
+#ifdef MP_SOUND_PLAYER
+               if (ad->is_focus_out)
+                       mp_app_exit(ad);
+               else
+#endif
+               {
+                       mp_widget_text_popup(data, GET_SYS_STR("IDS_COM_POP_FILE_NOT_FOUND"));
+                       mp_play_stop_and_updateview(data, FALSE);
+               }
+       }
+}
+
+void
+mp_play_next_file(void *data, bool forced)
+{
+       struct appdata *ad = data;
+       mp_plst_item *item = NULL;
+
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       MP_CHECK(ad->playlist_mgr);
+
+       int repeat = mp_playlist_mgr_get_repeat(ad->playlist_mgr);
+
+       if(!forced)
+       {
+               if(repeat == MP_PLST_REPEAT_ONE
+                       ||(repeat == MP_PLST_REPEAT_ALL && mp_playlist_mgr_count(ad->playlist_mgr) == 1))
+               {
+                       DEBUG_TRACE("play same track");
+                       ad->freeze_indicator_icon = true;
+                       mp_player_mgr_stop(ad);
+                       mp_player_mgr_play(ad);
+                       return;
+               }
+       }
+       IF_FREE(ad->latest_playing_key_id);
+
+       item = mp_playlist_mgr_get_next(ad->playlist_mgr, forced);
+       if (item)
+       {
+               mp_playlist_mgr_set_current(ad->playlist_mgr, item);
+
+               if (ad->playing_view)
+                       ad->playing_view->flick_direction = 1;
+               ad->freeze_indicator_icon = TRUE;
+               if (ad->playing_view)
+                       mp_play_view_play_item(data, item, true, true);
+               else
+                       mp_play_item_play(ad, item->uid);
+       }
+       else
+       {
+               WARN_TRACE("mp_play_list_get_next_item return false");
+               mp_player_mgr_stop(ad);
+               mp_player_mgr_destroy(ad);
+               ad->music_pos = 0;
+               mp_play_view_update_progressbar(ad);
+
+#ifdef MP_SOUND_PLAYER
+               if (ad->is_focus_out)
+                       mp_app_exit(ad);
+               else
+#endif
+               {
+                       DEBUG_TRACE("End of playlist");
+#ifdef MP_FEATURE_AUTO_OFF
+                       if (mp_playlist_mgr_get_repeat(ad->playlist_mgr)== MP_PLST_REPEAT_NONE
+                               && ad->auto_off_timer)
+                       {
+                               mp_ecore_timer_del(ad->auto_off_timer);
+                               mp_setting_reset_auto_off_time();
+                               mp_app_exit(ad);
+                       }
+#endif
+               }
+       }
+
+}
+
+void
+mp_play_start(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->playing_view)
+       {
+               ad->playing_view->flick_direction = 0;  //reset flick_direction
+       }
+
+       mp_plst_item * item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK(item);
+
+       ad->player_state = PLAY_STATE_PLAYING;
+
+       vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PLAY);
+
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+       mp_drm_start_consumption(item->uri);
+#endif
+       mp_util_sleep_lock_set(TRUE);
+
+       mp_play_control_play_pause_icon_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_app_grab_mm_keys(ad);
+
+
+#ifdef MP_FEATURE_AVRCP_13
+       mp_avrcp_noti_player_state(MP_AVRCP_STATE_PLAYING);
+#endif
+
+
+       endfunc;
+}
+
+#ifdef MP_FEATURE_AUTO_OFF
+static Eina_Bool
+_mp_play_control_paused_off_timer_cb(void *data)
+{
+       struct appdata *ad = data;
+       MP_CHECK_VAL(ad, ECORE_CALLBACK_CANCEL);
+       ad->pause_off_timer = NULL;
+
+       if (ad->auto_off_timer && ad->player_state == PLAY_STATE_PAUSED)
+               mp_app_auto_off_timer_expired_cb(ad);
+
+       return ECORE_CALLBACK_DONE;
+}
+#endif
+
+void
+mp_play_pause(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+
+       ad->player_state = PLAY_STATE_PAUSED;
+
+       if (!ad->paused_by_other_player)
+               vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PAUSE);
+
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+       mp_drm_pause_consumption();
+#endif
+       mp_util_sleep_lock_set(FALSE);
+
+       mp_play_control_play_pause_icon_set(ad, TRUE);
+       if (ad->b_minicontroller_show)
+               mp_minicontroller_update_control(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
+
+
+       ad->player_state = PLAY_STATE_PAUSED;
+       ad->paused_by_other_player = FALSE;
+
+#ifdef MP_FEATURE_AUTO_OFF
+       mp_ecore_timer_del(ad->pause_off_timer);
+       if (ad->auto_off_timer)
+       {
+               mp_debug("auto off set");
+               ad->pause_off_timer = ecore_timer_add(PAUSE_OFF_TIMEOUT, _mp_play_control_paused_off_timer_cb, ad);
+       }
+#endif
+
+#ifdef MP_FEATURE_AVRCP_13
+       mp_avrcp_noti_player_state(MP_AVRCP_STATE_PAUSED);
+#endif
+
+       endfunc;
+}
+
+void
+mp_play_stop(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+
+       ad->player_state = PLAY_STATE_READY;
+       if (!ad->freeze_indicator_icon)
+       {
+               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_control(ad);
+       }
+
+
+
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+       mp_drm_stop_consumption();
+       mp_drm_set_consumption(FALSE);
+#endif
+       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;
+               mp_play_view_update_progressbar(ad);
+       }
+       else
+               mp_view_manager_freeze_progress_timer(ad);
+#endif
+
+       mp_play_control_play_pause_icon_set(ad, TRUE);
+
+       mp_lyric_view_destroy(ad);
+       mp_lyric_mgr_destory(ad);
+
+
+#ifdef MP_FEATURE_AVRCP_13
+       mp_avrcp_noti_player_state(MP_AVRCP_STATE_STOPPED);
+#endif
+
+
+       endfunc;
+}
+
+void
+mp_play_resume(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+
+       ad->player_state = PLAY_STATE_PLAYING;
+
+       vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PLAY);
+
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+       mp_drm_resume_consumption();
+#endif
+       mp_util_sleep_lock_set(TRUE);
+
+       mp_play_control_play_pause_icon_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_control(ad);
+
+
+#ifdef MP_SOUND_PLAYER
+       mp_play_view_progress_timer_thaw(ad);
+#else
+       mp_view_manager_thaw_progress_timer(ad);
+#endif
+       mp_app_grab_mm_keys(ad);
+
+
+#ifdef MP_FEATURE_AVRCP_13
+       mp_avrcp_noti_player_state(MP_AVRCP_STATE_PLAYING);
+#endif
+
+       endfunc;
+}
+
+bool
+mp_play_destory(void *data)
+{
+       struct appdata *ad = data;
+       mp_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+
+       mp_player_mgr_stop(ad);
+       mp_player_mgr_unrealize(ad);
+       mp_player_mgr_destroy(ad);
+
+       return TRUE;
+}
+
+void
+mp_play_stop_and_updateview(void *data, bool mmc_removed)
+{
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->player_state != PLAY_STATE_NONE)
+       {
+               DEBUG_TRACE("mp_play_stop_and_updateview\n");
+               mp_play_destory(ad);
+       }
+
+       if (ad->playing_view && ad->playing_view->layout)
+       {
+               mp_play_view_pop(ad);
+       }
+
+
+#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 100644 (file)
index 0000000..3c3caf5
--- /dev/null
@@ -0,0 +1,595 @@
+/*
+ * 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://floralicense.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 <stdio.h>
+#include <malloc.h>
+#include <string.h>
+#include <assert.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/utsname.h>
+#include <sys/resource.h>
+#include <unistd.h>
+#include <stdarg.h>
+
+#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);
+}
+
+bool mp_ta_is_init(void)
+{
+       return (bool)mm_g_accums;
+}
+
+#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 (executable)
index 0000000..8286d52
--- /dev/null
@@ -0,0 +1,757 @@
+/*
+ * 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://floralicense.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 <stdio.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <ui-gadget.h>
+
+#include <sys/time.h>
+#include <vconf.h>
+#include <glib.h>
+#include <fcntl.h>
+#include <app.h>
+
+#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"
+#include "mp-volume.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;
+       }
+
+       struct appdata *ad = priv;
+       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, false);
+
+       endfunc;
+}
+
+static void
+_mp_ug_info_destroy_cb(ui_gadget_h ug, void *priv)
+{
+       startfunc;
+       if (!ug || !priv)
+               return;
+
+       struct appdata *ad = priv;
+       ad->info_ug = NULL;
+       if (ad->playing_view)
+               mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, true);
+       return;
+}
+
+static void
+_mp_ug_info_base_del_cb(void *data, Evas * e, Evas_Object * eo, void *event_info)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       ad->info_ug_base = NULL;
+       ad->info_back_play_view_flag = FALSE;
+}
+
+static void
+_mp_ug_info_layout_resize_cb(void *data, Evas * e, Evas_Object * eo, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       int x, y, w, h;
+       static int b_x, b_y, b_w, b_h;
+       evas_object_geometry_get(eo, &x, &y, &w, &h);
+       DEBUG_TRACE("x: %d, y: %d, w: %d, h: %d", x, y, w, h);
+       if(eo == ad->info_ug_base && y > 0)
+       {
+               DEBUG_TRACE("info_ug_base");
+               b_x = x;
+               b_y = y;
+               b_w = w;
+               b_h = h;
+               return;
+       }
+       if( y == 0 && ad->info_ug_base)
+       {
+               DEBUG_TRACE("move layout...");
+               evas_object_move(eo, b_x, b_y);
+               evas_object_resize(eo, b_w, b_h);
+       }
+}
+
+static void
+_mp_ug_info_push_layout(struct appdata *ad , ui_gadget_h ug)
+{
+       startfunc;
+
+       Evas_Object *parent = NULL;
+#ifdef MP_SOUND_PLAYER
+       parent = sp_view_mgr_get_naviframe(ad->view_mgr);
+#else
+       MP_CHECK(ad->library);
+       parent = ad->naviframe;
+#endif
+
+       ad->info_ug_base = mp_common_load_edj(parent, PLAY_VIEW_EDJ_NAME, "richinfo/base");
+       MP_CHECK(ad->info_ug_base);
+
+       edje_object_part_swallow(_EDJ(ad->info_ug_base), "swallow", ad->info_ug_layout);
+       evas_object_event_callback_add(ad->info_ug_base, EVAS_CALLBACK_RESIZE, _mp_ug_info_layout_resize_cb, ad);
+#ifdef MP_SOUND_PLAYER
+       sp_view_mgr_push_view_content(ad->view_mgr, ad->info_ug_base, SP_VIEW_TYPE_INFO);
+       sp_view_mgr_set_title_label(ad->view_mgr, GET_STR("IDS_MUSIC_BODY_MEDIA_INFO"));
+       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, ad->info_ug_base, MP_VIEW_CONTENT_INFO);
+       mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_BODY_MEDIA_INFO", ad);
+#endif
+       evas_object_event_callback_add(ad->info_ug_base, EVAS_CALLBACK_DEL, _mp_ug_info_base_del_cb, ad);
+
+       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, false);
+}
+
+static void
+_mp_ug_info_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       startfunc;
+       Evas_Object *base, *win;
+
+       MP_CHECK(ug);
+       MP_CHECK(priv);
+
+       struct appdata *ad = (struct appdata *)priv;
+
+       base = ug_get_layout(ug);
+       MP_CHECK(base);
+       ad->info_ug_layout = base;
+       evas_object_event_callback_add(ad->info_ug_layout, EVAS_CALLBACK_RESIZE, _mp_ug_info_layout_resize_cb, ad);
+
+       win = ug_get_window();
+       MP_CHECK(win);
+
+       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);
+               ug_disable_effect(ug);
+               evas_object_show(base);
+               break;
+       default:
+               break;
+       }
+
+       _mp_ug_info_push_layout(ad, ug);
+       endfunc;
+}
+
+void _mp_ug_info_result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)priv;
+       if(!result)
+               _mp_ug_info_push_layout(ad, ug);
+       else
+       {
+               if(service_remove_extra_data(result, MP_UG_INFO_ALBUMART_CLICKED) == SERVICE_ERROR_NONE)
+                       mp_play_view_info_back_cb(ad, NULL, NULL);
+       }
+       endfunc;
+
+}
+
+static ui_gadget_h
+_mp_ug_create_ug_layout_only(struct appdata *ad, ui_gadget_h parent, const char *name, enum ug_mode mode, service_h  service,
+                struct ug_cbs *cbs)
+{
+       startfunc;
+       ui_gadget_h ug = NULL;
+
+       ug = ug_create(parent, name, mode, service, cbs);
+       if (!ug)
+       {
+               ERROR_TRACE("unable to create ug %s", name);
+       }
+       endfunc;
+       return ug;
+}
+
+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);
+
+       if (ad->playing_view) {
+               mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, true);
+       }
+
+       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)
+{
+#if 1
+       bool ret = mp_send_via_appcontrol(user_data, MP_SEND_TYPE_EMAIL, filepath);
+       return (ret) ? 0 : -1;
+#else
+       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;
+#endif
+}
+
+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;
+}
+
+int
+mp_ug_show_info(struct appdata *ad)
+{
+       startfunc;
+       service_h service = NULL;
+       struct ug_cbs cbs = { 0, };
+       int option = 0;
+
+       MP_CHECK_VAL(ad, -1);
+       if (ad->info_ug)
+       {
+               DEBUG_TRACE("info UG already created");
+               mp_ug_send_message(ad, MP_UG_MESSAGE_LOAD);
+               return 0;
+       }
+
+       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;
+       }
+       MP_CHECK_EXCEP(service);
+
+       mp_plst_item *item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK_EXCEP(item);
+
+       mp_media_info_h media = NULL;
+       char *val = NULL;
+       mp_media_info_create_by_path(&media, item->uri);
+
+       service_add_extra_data(service, MP_UG_INFO_PATH, item->uri);
+       if(!mp_media_info_get_thumbnail_path(media, &val))
+               service_add_extra_data(service, MP_UG_INFO_ALBUMART, val);
+       if(!mp_media_info_get_artist(media, &val))
+               service_add_extra_data(service, MP_UG_INFO_ARTIST, val);
+       service_add_extra_data(service, MP_UG_INFO_ID, item->uid);
+
+       mp_media_info_destroy(media);
+
+       cbs.priv = ad;
+       cbs.layout_cb = _mp_ug_info_layout_cb;
+       cbs.result_cb = _mp_ug_info_result_cb;
+       cbs.destroy_cb = _mp_ug_info_destroy_cb;
+
+       //ad->info_ug = _mp_ug_create_ug_layout_only(ad, NULL, UG_MUSIC_INFO, UG_MODE_FULLVIEW, service, &cbs);
+       ad->info_ug = _mp_ug_create_ug_layout_only(ad, NULL, UG_MUSIC_INFO, UG_MODE_FRAMEVIEW, service, &cbs);
+
+       service_destroy(service);
+       service = NULL;
+
+       MP_CHECK_EXCEP(ad->info_ug);
+
+       return 0;
+
+       mp_exception:
+       if(service)
+               service_destroy(service);
+       return -1;
+
+}
+
+void
+mp_ug_send_message(struct appdata *ad, mp_ug_message_t message)
+{
+       startfunc;
+       ui_gadget_h ug = 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);
+               mp_plst_item *item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+               MP_CHECK_EXCEP(item);
+
+               mp_media_info_h media = NULL;
+               char *val = NULL;
+               mp_media_info_create_by_path(&media, item->uri);
+
+               service_add_extra_data(service, MP_UG_INFO_PATH, item->uri);
+               if(!mp_media_info_get_thumbnail_path(media, &val))
+                       service_add_extra_data(service, MP_UG_INFO_ALBUMART, val);
+               if(!mp_media_info_get_artist(media, &val))
+                       service_add_extra_data(service, MP_UG_INFO_ARTIST, val);
+               service_add_extra_data(service, MP_UG_INFO_ID, item->uid);
+
+               mp_media_info_destroy(media);
+               break;
+       }
+       default:
+               service_destroy(service);
+               return;
+       }
+       ug_send_message(ug, service);
+
+       mp_exception:
+       if(service)
+               service_destroy(service);
+}
+
+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;
+       }
+}
+
+
+bool
+mp_send_via_appcontrol(struct appdata *ad, mp_send_type_e send_type, const char *files)
+{
+       startfunc;
+       MP_CHECK_FALSE(ad);
+
+       bool result = false;
+       const char *ug_name = NULL;
+
+       service_h service = NULL;
+       int ret = service_create(&service);
+       if (ret != SERVICE_ERROR_NONE) {
+               mp_error("service_create()... [0x%x]", ret);
+               goto END;
+       }
+
+       ret = service_set_operation(service, SERVICE_OPERATION_SEND);
+       if (ret != SERVICE_ERROR_NONE) {
+               mp_error("service_set_operation()... [0x%x]", ret);
+               goto END;
+       }
+
+       ret = service_set_uri(service, files);
+       if (ret != SERVICE_ERROR_NONE) {
+               mp_error("service_set_uri()... [0x%x]", ret);
+               goto END;
+       }
+
+       switch (send_type) {
+       case MP_SEND_TYPE_EMAIL:
+               ug_name = UG_EMAIL_NAME;
+               ret = service_add_extra_data(service, "RUN_TYPE", "5");
+               if (ret != SERVICE_ERROR_NONE) {
+                       mp_error("service_add_extra_data()... [0x%x]", ret);
+                       goto END;
+               }
+               break;
+
+       default:
+               WARN_TRACE("Not supported type.. [%d]", send_type);
+               goto END;
+       }
+
+       /* appcontrol name */
+       ret = service_set_app_id(service, ug_name);
+       if (ret != SERVICE_ERROR_NONE) {
+               mp_error("service_set_app_id()... [0x%x]", ret);
+               goto END;
+       }
+
+       /* set window */
+       ret = service_set_window(service, ad->xwin);
+       if (ret != SERVICE_ERROR_NONE) {
+               mp_error("service_set_window()... [0x%x]", ret);
+               goto END;
+       }
+
+       ret = service_send_launch_request(service, NULL, NULL);
+       if (ret != SERVICE_ERROR_NONE) {
+               mp_error("service_send_launch_request()... [0x%x]", ret);
+               goto END;
+       }
+
+       result = true;
+
+END:
+       if (service) {
+               service_destroy(service);
+               service = NULL;
+       }
+
+       return result;
+}
+
diff --git a/src/common/mp-util.c b/src/common/mp-util.c
new file mode 100755 (executable)
index 0000000..e910e79
--- /dev/null
@@ -0,0 +1,1846 @@
+/*
+ * 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://floralicense.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 "music.h"
+#include "mp-util.h"
+#include "mp-file-tag-info.h"
+#include "mp-playlist-mgr.h"
+#include "mp-ug-launch.h"
+#include "mp-widget.h"
+#include <app.h>
+#include <sound_manager.h>
+#include <player.h>
+#include <power.h>
+#include <status.h>
+#ifdef MP_SOUND_PLAYER
+#include "sp-view-manager.h"
+#include "mp-library.h"
+#else
+#include "mp-common.h"
+#include "mp-library.h"
+#endif
+
+#define MP_UTIL_FILE_PREFIX             "file://"
+
+#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)
+{
+       int sec = (ms + 500) / 1000;
+       int min = sec / 60;
+
+       if(min >= 60)
+       {
+               int hour = min / 60;
+               snprintf(time, TIME_FORMAT_LEN, "%02u:%02u:%02u", hour, min % 60, sec % 60);
+       }
+       else
+               snprintf(time, TIME_FORMAT_LEN, "%02u:%02u", min, sec % 60);
+}
+
+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)
+{
+       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 = mp_media_info_playlist_add_media(playlist_id, key_id);
+               if (err != 0)
+               {
+                       ERROR_TRACE("Error in mp_media_info_playlist_add_media (%d)\n", err);
+                       return FALSE;
+               }
+       }
+       return TRUE;
+}
+
+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);
+
+       Evas *evas = evas_object_evas_get(obj);
+       MP_CHECK_NULL(evas);
+       if (mp_util_is_image_valid(evas, path))
+       {
+               elm_bg_file_set(thumbnail, path, NULL);
+       }
+       else
+       {
+               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;
+}
+
+static void
+_mp_util_notify_del_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       Evas_Object *parent = data;
+       MP_CHECK(parent);
+
+       evas_object_data_set(parent, "selectioninfo", NULL);
+       elm_object_signal_emit(parent, "hide,selection,info", "elm");
+}
+
+static void
+_mp_util_notify_parent_del_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       Ecore_Timer *timer = NULL;
+       timer = evas_object_data_get(obj, "selectioninfo_timer");
+       if(timer)
+               ecore_timer_del(timer);
+}
+
+static Evas_Object *
+_mp_util_create_selection_info(Evas_Object *parent, const char *text)
+{
+       Evas_Object *notify_layout = elm_layout_add(parent);;
+
+       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_layout_theme_set(notify_layout, "standard", "selectioninfo", "center_text");
+       elm_object_part_text_set(notify_layout, "elm.text", text);
+       elm_object_part_content_set(parent,
+                                           "elm.swallow.content.selectioninfo",
+                                           notify_layout);
+
+       elm_object_signal_emit(parent, "show,selection,info", "elm");
+
+       evas_object_show(notify_layout);
+
+       return notify_layout;
+}
+
+Evas_Object *
+mp_util_create_selectioninfo_with_count(Evas_Object *parent, int count)
+{
+       MP_CHECK_NULL(parent);
+       Evas_Object *notify = NULL;
+       notify = evas_object_data_get(parent, "selectioninfo");
+
+       if(count)
+       {
+               char text[128];
+               snprintf(text, 128, "%s (%d)", GET_SYS_STR("IDS_COM_POP_SELECTED"), count);
+
+               if(!notify)
+               {
+                       notify = _mp_util_create_selection_info(parent, text);
+                       evas_object_data_set(parent, "selectioninfo", notify);
+                       evas_object_event_callback_add(notify, EVAS_CALLBACK_DEL, _mp_util_notify_del_cb, parent);
+               }
+               else
+                       elm_object_part_text_set(notify, "elm.text", text);
+       }
+       else
+               evas_object_del(notify);
+
+       return notify;
+
+}
+
+static Eina_Bool
+_mp_util_selectioninfo_timer_cb(void *user_data)
+{
+       Evas_Object *obj = user_data;
+       Evas_Object *si = NULL;
+       evas_object_data_set(obj, "selectioninfo_timer", NULL);
+
+       si = evas_object_data_get(obj, "selectioninfo");
+       evas_object_del(si);
+
+       evas_object_event_callback_del(obj, EVAS_CALLBACK_DEL, _mp_util_notify_parent_del_cb);
+
+       return FALSE;
+}
+
+void
+mp_util_post_status_message(struct appdata *ad, const char *text)
+{
+       MP_CHECK(ad);
+        int ret = status_message_post(text);
+        if (ret != 0) {
+                ERROR_TRACE("status_message_post()... [0x%x]", ret);
+        }
+}
+
+int
+mp_util_share_via_email(const char *formed_path, void *data)
+{
+       if (mp_ug_email_attatch_file(formed_path, data))
+               return -1;
+
+       return 0;
+}
+
+char *
+mp_util_get_new_playlist_name(void)
+{
+       char unique_name[MP_PLAYLIST_NAME_SIZE] = "\0";
+       int ret = 0;
+       ret = mp_media_info_playlist_unique_name("My playlist", unique_name, MP_PLAYLIST_NAME_SIZE);
+       if (ret == 0)
+       {
+               if (strlen(unique_name) <= 0)
+               {
+                       ERROR_TRACE("playlist name is NULL");
+                       return NULL;
+               }
+               else
+               {
+                       return g_strdup(unique_name);
+               }
+       }
+       else
+       {
+               ERROR_TRACE("fail to mp_media_info_playlist_unique_name() : error code [%x] ", ret);
+               return NULL;
+       }
+
+       return NULL;
+}
+
+char *
+mp_util_get_fid_by_handle(mp_layout_data_t * layout_data, mp_media_info_h record)
+{
+       MP_CHECK_FALSE(record);
+
+       int ret = 0;
+       char *fid = NULL;
+
+       ret = mp_media_info_get_media_id(record, &fid);
+
+       return fid;
+}
+
+char *
+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 ret = 0;
+
+               ret = mp_media_info_get_file_path(record, &path);
+
+       return path;
+}
+
+
+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 = 0;
+       mp_media_info_h item = NULL;
+
+       DEBUG_TRACE("music id = %s, path: %s", fid, file_path);
+       MP_CHECK_VAL(fid, MP_FILE_DELETE_ERR_INVALID_FID);
+
+       char *path = NULL;
+       if (!file_path)
+       {
+               mp_media_info_create(&item, fid);
+               mp_media_info_get_file_path(item, &path);
+       }
+       else
+               path = file_path;
+
+       if (!path) {
+               if (item)
+                       mp_media_info_destroy(item);
+               return MP_FILE_DELETE_ERR_INVALID_FID;
+       }
+
+       DEBUG_TRACE("path: %s", path);
+       ret = remove(path);
+       media_info_delete_from_db(fid);
+
+       if(item) {
+               mp_media_info_destroy(item);
+               item = NULL;
+       }
+
+       if (ret < 0)
+       {
+               ERROR_TRACE("fail to unlink file, ret: %d", ret);
+               if (show_popup)
+                       mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_FAILED"));
+               return MP_FILE_DELETE_ERR_REMOVE_FAIL;
+       }
+
+       return MP_FILE_DELETE_ERR_NONE;
+}
+
+int
+mp_util_file_is_in_phone_memory(const char *path)
+{
+       MP_CHECK_VAL(path, 0);
+       if (!strncmp(MP_PHONE_ROOT_PATH, path, strlen(MP_PHONE_ROOT_PATH)))
+               return 1;
+       else
+               return 0;
+}
+
+// return value must be freed.
+char *
+mp_util_isf_get_edited_str(Evas_Object * isf_entry, bool permit_first_blank)
+{
+
+       const char *buf = NULL;
+       char *strip_msg = NULL;
+       int strip_len = 0;
+
+       if (!isf_entry)
+               return strdup("");
+       buf = elm_entry_entry_get(isf_entry);
+       if (!buf)
+               return strdup("");
+
+       strip_msg = elm_entry_markup_to_utf8(buf);
+
+       if (strip_msg != NULL)
+       {
+               strip_len = strlen(strip_msg);
+
+               if (strip_len > 0)
+               {
+                       if (strip_msg[0] == ' ' && !permit_first_blank) //start with space
+                       {
+                               DEBUG_TRACE("Filename should not be started with 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';
+                       }
+                       DEBUG_TRACE("=====  The new edited str = %s", strip_msg);
+                       return strip_msg;
+               }
+               else
+               {
+                       DEBUG_TRACE(" strip_msg length is [%d], strip_msg [%s]", strip_len, strip_msg);
+                       return strip_msg;
+               }
+       }
+       else
+       {
+               DEBUG_TRACE("strip_msg is NULL");
+               return strdup("");
+       }
+}
+
+bool
+mp_util_set_screen_mode(void *data, int mode)
+{
+       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
+mp_util_check_uri_available(const char *uri)
+{
+       if (uri == NULL || strlen(uri) == 0)
+       {
+               return FALSE;
+       }
+
+       if (uri == strstr(uri, "http://") || uri == strstr(uri, "https://")
+                       || uri == strstr(uri, "rtp://") || uri == strstr(uri, "rtsp://")) {
+               DEBUG_TRACE("Streaming URI... OK");
+               return TRUE;
+       }
+       else
+       {
+               DEBUG_TRACE("uri check failed : [%s]", uri);
+               return FALSE;
+       }
+}
+
+bool
+mp_check_file_exist(const char *path)
+{
+       if (path == NULL || strlen(path) == 0)
+       {
+               return FALSE;
+       }
+
+       if(strstr(path,MP_UTIL_FILE_PREFIX))
+    {
+               if (!g_file_test(path+strlen(MP_UTIL_FILE_PREFIX), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
+               {
+                       return FALSE;
+               }
+               return TRUE;
+       }
+       else
+       {
+               if(!g_file_test(path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR))
+               {
+                       return FALSE;
+               }
+               return TRUE;
+       }
+       DEBUG_TRACE("file check okay : [%s]", path);
+       return TRUE;
+}
+
+bool
+mp_util_launch_browser(const char *url, struct appdata * ad)
+{
+       DEBUG_TRACE("url: %s", 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);
+
+       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;
+}
+
+
+//korean initial consonant
+//returns mallocated memory, have to free it after use
+gchar *
+mp_util_get_utf8_initial(const char *name)
+{
+       gunichar first;
+       char *next = NULL;
+       if (name == NULL)
+               return NULL;
+
+       if (g_utf8_strlen(name, -1) <= 0)
+       {
+               return strdup("");
+       }
+
+       first = g_utf8_get_char_validated(name, -1);
+       if (first == (gunichar) - 1 || first == (gunichar) - 2) {
+               DEBUG_TRACE ("failed to convert a sequence of bytes encoded as UTF-8 to a Unicode character.");
+               return strdup("");
+       }
+
+       next = (char *)name;
+
+       while (!g_unichar_isgraph(first))
+       {
+               next = g_utf8_next_char(next);
+               first = g_utf8_get_char_validated(next, -1);
+               if (first == (gunichar) - 1 || first == (gunichar) - 2) {
+                       DEBUG_TRACE ("failed to convert a sequence of bytes encoded as UTF-8 to a Unicode character.");
+                       return strdup("");
+               }
+       }
+
+       if (first >= 0xAC00 && first <= 0xD7A3)
+       {                       //korean
+               int index = 0;
+               index = ((((first - 0xAC00) - ((first - 0xAC00) % 28)) / 28) / 21);
+               if (index < 20 && index >= 0)
+               {
+                       const gunichar chosung[20] = { 0x3131, 0x3132, 0x3134, 0x3137, 0x3138,
+                               0x3139, 0x3141, 0x3142, 0x3143, 0x3145,
+                               0x3146, 0x3147, 0x3148, 0x3149, 0x314a,
+                               0x314b, 0x314c, 0x314d, 0x314e, 0
+                       };
+
+                       gchar result[10] = { 0, };
+                       int len = 0;
+                       len = g_unichar_to_utf8(chosung[index], result);
+                       return strndup(result, len + 1);
+               }
+       }
+       else
+       {
+               gchar result[10] = { 0, };
+               int len = 0;
+               len = g_unichar_to_utf8(first, result);
+               return strndup(result, len + 1);
+       }
+       return NULL;
+}
+
+
+char *
+mp_util_get_title_from_path(const char *path)
+{
+       gchar *file_ext = NULL, *file_name = NULL, *title = NULL;
+
+       if (path == NULL || strlen(path) == 0)
+       {
+               return NULL;
+       }
+
+       file_name = g_path_get_basename(path);
+       if (file_name)
+       {
+               file_ext = g_strrstr(file_name, ".");
+               if (file_ext)
+               {
+                       title = g_strndup(file_name, strlen(file_name) - strlen(file_ext));
+               }
+               free(file_name);
+       }
+       DEBUG_TRACE("title = %s\n", title);
+       return title;
+}
+
+bool
+mp_util_is_playlist_name_valid(char *name)
+{
+       MP_CHECK_NULL(name);
+
+       char *test_space = strdup(name);
+       if (strlen(g_strchug(test_space)) == 0)
+       {
+               IF_FREE(test_space);
+               return FALSE;
+       }
+       IF_FREE(test_space);
+       return TRUE;
+}
+
+int
+mp_util_create_playlist(struct appdata *ad, char *name, mp_playlist_h *playlist_handle)
+{
+       MP_CHECK_VAL(ad, -1);
+       MP_CHECK_VAL(name, -1);
+
+       int plst_uid = -1;
+
+       if (!mp_util_is_playlist_name_valid(name))
+       {
+               mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"));
+               return -1;
+       }
+
+       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)
+       {
+               char buf[256] = { 0, };
+
+               snprintf(buf, sizeof(buf), "Playlist name %s is exist", name);
+               mp_widget_text_popup(ad, buf);
+               return -1;
+       }
+
+       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"));
+               *playlist_handle = NULL;
+               return -1;
+       }
+
+       return plst_uid;
+}
+
+bool
+mp_util_get_playlist_data(mp_layout_data_t * layout_data, int *index, const char *playlist_name)
+{
+       MP_CHECK_FALSE(layout_data);
+       struct appdata *ad = layout_data->ad;
+       MP_CHECK_FALSE(ad);
+
+       int ret = 0;
+       int playlist_id = 0;
+
+       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 = 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)
+       {
+               WARN_TRACE("fail to mp_media_info_list_create: %d", ret);
+               return false;
+       }
+       return true;
+}
+
+#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;
+       }
+       else if(!(*item) && enabled)
+       {
+               *after = *item =
+                       elm_toolbar_item_insert_after(control_bar, *after, icon, label, mp_library_view_change_cb, data);
+       }
+       else if(*item && enabled)
+       {
+               *after = *item;
+       }
+       DEBUG_TRACE("after: 0x%x, item: 0x%x, enabled: %d ", *after ,*item, enabled);
+}
+
+void
+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->tabbar, &(ad->library->ctltab_album), &after,
+                                               true, MP_CTRBAR_ICON_ALBUM, GET_STR(STR_MP_ALBUMS), ad);
+
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_artist), &after,
+                                               true, MP_CTRBAR_ICON_ARTIST, GET_STR(STR_MP_ARTISTS), ad);
+
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_genres), &after,
+                                               true, MP_CTRBAR_ICON_GENRE, GET_STR(STR_MP_GENRES), ad);
+
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_composer), &after,
+                                               true, MP_CTRBAR_ICON_COMPOSER, GET_STR(STR_MP_COMPOSERS), ad);
+
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_year), &after,
+                                               true, MP_CTRBAR_ICON_YEAR, GET_STR(STR_MP_YEARS), ad);
+
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_folder), &after,
+                                               true, 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(service_h service, struct appdata *ad, char **path)
+{
+       char *uri = NULL;
+       char *operation = NULL;
+       char *mime = NULL;
+
+       MP_CHECK_FALSE(service);
+
+       service_get_operation(service, &operation);
+       DEBUG_TRACE("operation: %s", operation);
+
+       if(!operation)
+       {
+               return FALSE;
+       }
+
+       if(!strcmp(SERVICE_OPERATION_VIEW , operation))
+       {
+               service_get_uri(service, &uri);
+               if (uri && strlen(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;
+}
+
+void
+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) {
+               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->naviframe);
+
+       return evas_object_data_get(ad->naviframe, "view_data");
+}
+
+mp_layout_data_t*
+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)
+{
+       MP_CHECK_FALSE(path);
+       MP_CHECK_FALSE(evas);
+
+       if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
+               mp_error("file not exitst");
+               return false;
+       }
+
+       Evas_Object *image = NULL;
+       int width = 0;
+       int height = 0;
+
+       image = evas_object_image_add(evas);
+       MP_CHECK_FALSE(image);
+       evas_object_image_file_set(image, path, NULL);
+       evas_object_image_size_get(image, &width, &height);
+       evas_object_del(image);
+
+       if (width <= 0 || height <= 0) {
+               mp_debug("Cannot load file : %s", path);
+               return false;
+       }
+
+       return true;
+}
+
+#define MP_PATH_INFO_MAX_LENGTH                30
+#define MP_PATH_INFO_TRANS_OMIT                ".."
+#define MP_PATH_INFO_LEVEL_BOUNDARY            3
+#define MP_PATH_INFO_LEN_THRESHOLD     3
+#define MP_PATH_INFO_SEP               "/"
+#define MP_PATH_INFO_RETRENCH          128
+
+bool
+mp_util_is_string_elipsized(char *path)
+{
+       MP_CHECK_FALSE(path);
+       if(strlen(path) < MP_PATH_INFO_MAX_LENGTH)
+       {
+               return false;
+       }
+       else
+               return true;
+}
+
+char *mp_util_path_info_retrench(const char *string)
+{
+       mp_retvm_if(string == NULL, g_strdup(MP_PATH_INFO_TRANS_OMIT), "input path is NULL");
+       char *retrench = NULL;
+       if (strlen (string) > MP_PATH_INFO_LEN_THRESHOLD) {
+               char *utf8_string = elm_entry_utf8_to_markup(string);
+               MP_CHECK_NULL(utf8_string);
+               if (g_utf8_strlen(utf8_string, -1) > 2) {
+                       retrench = calloc(1, MP_PATH_INFO_RETRENCH);
+                       if (retrench) {
+                               g_utf8_strncpy(retrench, utf8_string, 2);
+                               char *temp = retrench;
+                               retrench = g_strconcat(retrench, MP_PATH_INFO_TRANS_OMIT, NULL);
+                               free(utf8_string);
+                               free(temp);
+                       }
+
+               } else {
+                       retrench = utf8_string;
+               }
+       } else {
+               retrench = elm_entry_utf8_to_markup(string);
+       }
+       return retrench;
+}
+
+char *
+mp_util_shorten_path(char *path_info)
+{
+       int start = 0;
+       gchar **params = NULL;
+       int count = 0;
+       int len;
+       int i = 0;
+       int j = 0;
+       char *output = NULL;
+       char *temp = NULL;
+       char *base = NULL;
+       bool exception = true;
+
+       MP_CHECK_EXCEP(path_info);
+
+       if (!mp_util_is_string_elipsized(path_info))
+               return g_strdup(path_info);
+
+       params = g_strsplit(path_info, "/", 0);
+       MP_CHECK_EXCEP(params);
+
+       count = g_strv_length(params);
+
+       if (count > MP_PATH_INFO_LEVEL_BOUNDARY)
+       {
+               start = count - MP_PATH_INFO_LEVEL_BOUNDARY;
+               output = g_strdup("..");
+       }
+       else
+       {
+               output = g_strdup("");
+       }
+       MP_CHECK_EXCEP(output);
+
+       for(i=start ; i < count; i++)
+       {
+               base = g_strdup(output);
+               MP_CHECK_EXCEP(base);
+               for(j=i ; j < count; j++)
+               {
+                       temp = g_strconcat(base, MP_PATH_INFO_SEP, params[j], NULL);
+                       IF_FREE(base);
+                       base = temp;
+                       temp = NULL;
+               }
+
+               if(i == (count-1) || !mp_util_is_string_elipsized(base))
+               {
+                       IF_FREE(output);
+                       output = base;
+                       base = NULL;
+                       break;
+               }
+               else
+               {
+                       char *retrench = mp_util_path_info_retrench(params[i]);
+                       MP_CHECK_EXCEP(retrench);
+                       len = strlen(params[i]);
+                       IF_FREE(base);
+                       base = g_strconcat(output, MP_PATH_INFO_SEP, retrench, NULL);
+                       IF_FREE(output);
+                       free(retrench);
+                       output = base;
+                       base = NULL;
+               }
+       }
+
+       exception = false;
+
+       mp_exception:
+
+
+       if(params)
+               g_strfreev(params);
+
+       if(exception)
+       {
+               IF_FREE(output);
+               IF_FREE(base);
+               return g_strdup(GET_SYS_STR("IDS_COM_BODY_UNKNOWN"));
+       }
+       else
+               return output;
+}
+
+#ifndef MP_SOUND_PLAYER
+void
+mp_util_unset_rename(mp_layout_data_t * layout_data)
+{
+       DEBUG_TRACE("");
+       MP_CHECK(layout_data);
+
+       if (layout_data->rename_git)
+       {
+               DEBUG_TRACE("");
+               if (elm_genlist_item_flip_get(layout_data->rename_git))
+               {
+                       elm_genlist_item_flip_set(layout_data->rename_git, EINA_FALSE);
+                       elm_genlist_item_select_mode_set(layout_data->rename_git, ELM_OBJECT_SELECT_MODE_DEFAULT);
+               }
+               layout_data->rename_git = NULL;
+               layout_data->rename_mode = false;
+
+               //set title button sensitivity
+               mp_common_set_toolbar_button_sensitivity(layout_data, layout_data->checked_count);
+       }
+}
+#endif
+
+bool
+mp_util_is_db_updating(void)
+{
+       int db_status = VCONFKEY_FILEMANAGER_DB_UPDATED;
+       vconf_get_int(VCONFKEY_FILEMANAGER_DB_STATUS, &db_status);
+       if(db_status == VCONFKEY_FILEMANAGER_DB_UPDATED)
+               return false;
+       else
+               return true;
+}
+
+bool
+mp_util_is_bt_connected(void)
+{
+       int ret = 0;
+       bool connected = 0;
+       bool ret_val = FALSE;
+       char *bt_name = NULL;
+
+       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) {
+                       ret_val = TRUE;
+               } else {
+                       DEBUG_TRACE("no bluetooth");
+               }
+       } else {
+               DEBUG_TRACE("Is Bluetooth A2DP On Error : [%d]", ret);
+       }
+
+       if (bt_name)
+               free(bt_name);
+
+       return ret_val;
+}
+
+bool
+mp_util_is_earjack_inserted(void)
+{
+       int value = 0;
+
+       vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &value);
+
+       if (value == VCONFKEY_SYSMAN_EARJACK_REMOVED) {
+               DEBUG_TRACE("no earjack..");
+               return false;
+       } else {
+               DEBUG_TRACE("earjack inserted.. (type[%d])", value);
+               return true;
+       }
+}
+
+void
+mp_util_get_sound_path(mp_snd_path *snd_path)
+{
+       sound_device_in_e in;
+       sound_device_out_e out;
+
+       sound_manager_get_active_device(&in, &out);
+       switch(out) {
+       case SOUND_DEVICE_OUT_SPEAKER:
+               DEBUG_TRACE("SOUND_DEVICE_OUT_SPEAKER");
+               *snd_path = MP_SND_PATH_SPEAKER;
+               break;
+
+       case SOUND_DEVICE_OUT_WIRED_ACCESSORY:
+               DEBUG_TRACE("SOUND_DEVICE_OUT_WIRED_ACCESSORY");
+               *snd_path = MP_SND_PATH_EARPHONE;
+               break;
+
+       case SOUND_DEVICE_OUT_BT_A2DP:
+               DEBUG_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;
+       }
+}
+
+#define DEF_BUF_LEN            (512)
+const char *
+mp_util_search_markup_keyword(const char *string, char *searchword, bool *result)
+{
+       char pstr[DEF_BUF_LEN + 1] = {0,};
+       static char return_string[DEF_BUF_LEN + 1] = { 0, };
+       int word_len = 0;
+       int search_len = 0;
+       int i = 0;
+       bool found = false;
+       gchar* markup_text_start = NULL;
+       gchar* markup_text_end= NULL;
+       gchar* markup_text= NULL;
+
+       MP_CHECK_NULL(string);
+       MP_CHECK_NULL(searchword);
+       MP_CHECK_NULL(result);
+
+       //2 temporary disable until costomize genlist item style
+       *result = true;
+       return string;
+
+       if(g_utf8_validate(string,-1,NULL)) {
+
+               strncpy(pstr, string, DEF_BUF_LEN);
+
+               word_len = strlen(pstr);
+               search_len = strlen(searchword);
+
+               for (i = 0; i < word_len; i++) {
+                       if (!strncasecmp(searchword, &pstr[i], search_len)) {
+                               found = true;
+                               break;
+                       }
+               }
+
+               *result = found;
+               memset(return_string, 0x00, DEF_BUF_LEN+1);
+
+               if (found) {
+                       if (i == 0) {
+                               markup_text = g_markup_escape_text(&pstr[0], search_len);
+                               markup_text_end = g_markup_escape_text(&pstr[search_len], word_len-search_len);
+                               MP_CHECK_NULL(markup_text && markup_text_end);
+                               snprintf(return_string,
+                                                       DEF_BUF_LEN,
+                                                       "<match>%s</match>%s",
+                                                       markup_text,
+                                                       (char*)markup_text_end);
+                               IF_FREE(markup_text);
+                               IF_FREE(markup_text_end);
+                       } else {
+                               markup_text_start = g_markup_escape_text(&pstr[0], i);
+                               markup_text = g_markup_escape_text(&pstr[i], search_len);
+                               markup_text_end =  g_markup_escape_text(&pstr[i+search_len], word_len-(i+search_len));
+                               MP_CHECK_NULL(markup_text_start &&markup_text && markup_text_end);
+                               snprintf(return_string,
+                                                       DEF_BUF_LEN,
+                                                       "%s<match>%s</match>%s",
+                                                       (char*)markup_text_start,
+                                                       markup_text,
+                                                       (char*)markup_text_end);
+                               IF_FREE(markup_text);
+                               IF_FREE(markup_text_start);
+                               IF_FREE(markup_text_end);
+                       }
+               } else {
+                       snprintf(return_string, DEF_BUF_LEN, "%s", pstr);
+               }
+       }
+
+       return return_string;
+}
+
+bool
+mp_util_is_other_player_playing()
+{
+       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;
+}
+
+
+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)
+{
+       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
+mp_util_is_nfc_feature_on(void)
+{
+       bool ret = FALSE;
+
+       int state = 0;
+       if (!vconf_get_bool(VCONFKEY_NFC_FEATURE, &state)) {
+               mp_debug("NFC state = %d", state);
+               if (state == VCONFKEY_NFC_FEATURE_ON)
+                       ret = TRUE;
+       } else {
+               mp_debug("vcont_get_bool() fail.. %s", VCONFKEY_NFC_FEATURE);
+       }
+
+       return ret;
+}
+
+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';
+}
+
+static const double gaussian_template[7][7] =
+{
+       {0.00000067, 0.00002292, 0.00019117, 0.00038771, 0.00019117, 0.00002292, 0.00000067},
+       {0.00002292, 0.00078633, 0.00655965, 0.01330373, 0.00655965, 0.00078633, 0.00002292},
+       {0.00019117, 0.00655965, 0.05472157, 0.11098164, 0.05472157, 0.00655965, 0.00019117},
+       {0.00038771, 0.01330373, 0.11098164, 0.22508352, 0.11098164, 0.01330373, 0.00038771},
+       {0.00019117, 0.00655965, 0.05472157, 0.11098164, 0.05472157, 0.00655965, 0.00019117},
+       {0.00002292, 0.00078633, 0.00655965, 0.01330373, 0.00655965, 0.00078633, 0.00002292},
+       {0.00000067, 0.00002292, 0.00019117, 0.00038771, 0.00019117, 0.00002292, 0.00000067}
+};
+
+#define DARK_SCALE 0.6
+
+static void __mp_util_gaussian_blur(unsigned char *src, unsigned char *dest, int w, int h)
+{
+         MP_CHECK(src);
+         MP_CHECK(dest);
+
+         int x, y, i, j, idx, idx2, xx, yy;
+         for (y = 0; y < h; y++) {
+                   for (x = 0; x < w; x++) {
+                  idx = (y*w+x)*4;
+                   double v1 = 0, v2 = 0, v3 = 0;
+
+                   for (i = 0; i < 7; i++) {
+                            for (j = 0; j < 7; j++) {
+                                     yy = y + j;
+                                     xx = x + i;
+                                     if (xx >= w)
+                                               xx = w - 1;
+                                     if (yy >= h)
+                                               yy = h - 1;
+                                     idx2 = (yy*w+xx)*4;
+                                     v1 += (*(src+idx2))*gaussian_template[i][j];
+                                     v2 += (*(src+idx2+1))*gaussian_template[i][j];
+                                     v3 += (*(src+idx2+2))*gaussian_template[i][j];
+                            }
+                   }
+                   *(dest+idx) = v1 * DARK_SCALE;
+                   *(dest+idx+1) = v2 * DARK_SCALE;
+                   *(dest+idx+2) = v3 * DARK_SCALE;
+                   *(dest+idx+3) = (*(src+idx+3));
+                   }
+         }
+}
+
+
+bool mp_util_edit_image(Evas *evas, Evas_Object *src_image, const char *path, mp_playing_view_bg_capture_mode mode)
+{
+       startfunc;
+       MP_CHECK_FALSE(evas);
+       MP_CHECK_FALSE(src_image);
+       MP_CHECK_FALSE(path);
+       MP_CHECK_FALSE(mode >= MP_PLAYING_VIEW_TOP_LEFT);
+       MP_CHECK_FALSE(mode <= MP_PLAYING_VIEW_BOTTOM_RIGHT);
+
+       float rate_w = 720.0/1500.0;
+       float rate_h = 1280.0/1500.0;
+
+       DEBUG_TRACE("rate_w=%f, rate_h=%f", rate_w, rate_h);
+
+       Evas_Object *image = evas_object_image_add(evas);
+       evas_object_image_file_set(image, path, NULL);
+
+       int w, h, dest_w, dest_h, x, y;
+       evas_object_image_size_get(image, &w, &h);
+       unsigned char *src = NULL;
+       src = (unsigned char *)evas_object_image_data_get(image, EINA_FALSE);
+
+       MP_CHECK_FALSE(src);
+       DEBUG_TRACE("path=%s, w=%d, h=%d", path, w, h);
+       dest_w = (int)(rate_w * w);
+       dest_h = (int)(rate_h * h);
+       DEBUG_TRACE("rate_w=%f, rate_h=%f, dest_w=%d, dest_h=%d", rate_w, rate_h, dest_w, dest_h);
+
+       int start_x, start_y, end_x, end_y;
+
+       switch (mode) {
+       case MP_PLAYING_VIEW_TOP_LEFT:
+               start_x = 0;
+               start_y = 0;
+               break;
+
+       case MP_PLAYING_VIEW_TOP_CENTER:
+               start_x = (w - dest_w)/2;
+               start_y = 0;
+               break;
+
+       case MP_PLAYING_VIEW_TOP_RIGHT:
+               start_x = w - dest_w;
+               start_y = 0;
+               break;
+
+       case MP_PLAYING_VIEW_BOTTOM_LEFT:
+               start_x = 0;
+               start_y = h - dest_h;
+               break;
+
+       case MP_PLAYING_VIEW_BOTTOM_CENTER:
+               start_x = (w - dest_w)/2;
+               start_y = h - dest_h;
+               break;
+
+       case MP_PLAYING_VIEW_BOTTOM_RIGHT:
+               start_x = w - dest_w;
+               start_y = h - dest_h;
+               break;
+
+       default:
+               return false;
+       }
+
+       unsigned char *dest = NULL;
+       dest = (unsigned char *)malloc(dest_w * dest_h * 4);
+       MP_CHECK_EXCEP(dest);
+       memset(dest, 0, dest_w * dest_h * 4);
+
+       end_x = start_x + dest_w;
+       end_y = start_y + dest_h;
+       DEBUG_TRACE("(%d, %d), (%d, %d)", start_x, start_y, end_x, end_y);
+
+       int dest_idx = 0;
+       int src_idx = 0;
+       unsigned char gray = 0;
+       for (y = start_y; y < end_y; y++) {
+               for (x = start_x; x < end_x; x++) {
+                       dest_idx = ((y-start_y)*dest_w+(x-start_x))*4;
+                       src_idx = (y*w+x)*4;
+
+                       gray = (*(src+src_idx))*0.3+(*(src+src_idx+1))*0.59+(*(src+src_idx+2))*0.11;
+                       *(dest+dest_idx) = gray;
+                       *(dest+dest_idx+1) = gray;
+                       *(dest+dest_idx+2) = gray;
+                       *(dest+dest_idx+3) = 0;
+                       //*(dest+dest_idx+3) = (*(src+src_idx+3));
+               }
+       }
+
+       unsigned char *dest_data = NULL;
+       dest_data = (unsigned char *)malloc(dest_w * dest_h * 4);
+       MP_CHECK_EXCEP(dest_data);
+       memset(dest_data, 0, dest_w * dest_h * 4);
+       __mp_util_gaussian_blur(dest, dest_data, dest_w, dest_h);
+       IF_FREE(dest);
+
+       evas_object_image_data_set(src_image, NULL);
+       evas_object_image_size_set(src_image, dest_w, dest_h);
+       evas_object_image_smooth_scale_set(src_image, EINA_TRUE);
+       evas_object_image_data_copy_set(src_image, dest_data);
+       evas_object_image_data_update_add(src_image, 0, 0, dest_w, dest_h);
+       IF_FREE(dest_data);
+
+       mp_evas_object_del(image);
+
+       endfunc;
+       return true;
+
+       mp_exception:
+       mp_evas_object_del(image);
+       IF_FREE(dest);
+       IF_FREE(dest_data);
+       return false;
+}
+
+void
+mp_util_free_track_info(mp_track_info_t *track_info)
+{
+       MP_CHECK(track_info);
+
+       IF_FREE(track_info->uri);
+       IF_FREE(track_info->title);
+       IF_FREE(track_info->artist);
+       IF_FREE(track_info->album);
+       IF_FREE(track_info->genre);
+       IF_FREE(track_info->location);
+       IF_FREE(track_info->format);
+
+       IF_FREE(track_info->thumbnail_path);
+       IF_FREE(track_info->copyright);
+
+       IF_FREE(track_info->author);
+       IF_FREE(track_info->track_num);
+
+       free(track_info);
+}
+
+void
+mp_util_load_track_info(struct appdata *ad, mp_plst_item *cur_item, mp_track_info_t **info)
+{
+       MP_CHECK(ad);
+       MP_CHECK(cur_item);
+       MP_CHECK(info);
+
+       int ret = 0;
+       mp_media_info_h svc_audio_item = NULL;
+       mp_track_info_t *track_info = NULL;
+
+       *info = track_info = calloc(1, sizeof(mp_track_info_t));
+       MP_CHECK(track_info);
+
+       track_info->uri = g_strdup(cur_item->uri);
+
+       if(cur_item->uid)
+       {
+               {
+                       ret = mp_media_info_create(&svc_audio_item, cur_item->uid);
+
+                       mp_media_info_get_title(svc_audio_item, &track_info->title);
+                       mp_media_info_get_album(svc_audio_item, &track_info->album);
+                       mp_media_info_get_artist(svc_audio_item, &track_info->artist);
+                       mp_media_info_get_thumbnail_path(svc_audio_item, &track_info->thumbnail_path);
+                       mp_media_info_get_genre(svc_audio_item, &track_info->genre);
+                       mp_media_info_get_copyright(svc_audio_item, &track_info->copyright);
+                       mp_media_info_get_composer(svc_audio_item, &track_info->author);
+                       mp_media_info_get_duration(svc_audio_item, &track_info->duration);
+                       mp_media_info_get_track_num(svc_audio_item, &track_info->track_num);
+                       mp_media_info_get_format(svc_audio_item, &track_info->format);
+                       mp_media_info_get_favorite(svc_audio_item, &track_info->favorite);
+               }
+
+               track_info->title = g_strdup(track_info->title);
+               track_info->album = g_strdup(track_info->album);
+               track_info->artist = g_strdup(track_info->artist);
+               track_info->thumbnail_path = g_strdup(track_info->thumbnail_path);
+               track_info->genre = g_strdup(track_info->genre);
+               track_info->copyright = g_strdup(track_info->copyright);
+               track_info->author = g_strdup(track_info->author);
+               track_info->track_num = g_strdup(track_info->track_num);
+               track_info->format = g_strdup(track_info->format);
+               track_info->location = g_strdup(track_info->location);
+
+               if(svc_audio_item)
+               {
+                               mp_media_info_destroy(svc_audio_item);
+               }
+
+
+       }
+       else
+       {
+               mp_tag_info_t tag_info;
+               mp_file_tag_info_get_all_tag(cur_item->uri, &tag_info);
+
+
+               track_info->title = g_strdup(tag_info.title);
+               track_info->album = g_strdup(tag_info.album);
+               track_info->artist = g_strdup(tag_info.artist);
+               track_info->thumbnail_path = g_strdup(tag_info.albumart_path);
+               track_info->genre = g_strdup(tag_info.genre);
+               track_info->copyright = g_strdup(tag_info.copyright);
+               track_info->author = g_strdup(tag_info.author);
+               track_info->track_num = g_strdup(tag_info.track);
+
+               track_info->duration = tag_info.duration;
+
+               GString *format = g_string_new("");
+               if (format)
+               {
+                       if (tag_info.audio_bitrate > 0)
+                               g_string_append_printf(format, "%dbps ", tag_info.audio_bitrate);
+
+                       if (tag_info.audio_samplerate > 0)
+                               g_string_append_printf(format, "%.1fHz ", (double)tag_info.audio_samplerate);
+
+                       if (tag_info.audio_channel > 0)
+                               g_string_append_printf(format, "%dch", tag_info.audio_channel);
+
+                       track_info->format = g_strdup(format->str);
+                       g_string_free(format, TRUE);
+               }
+
+               mp_file_tag_free(&tag_info);
+       }
+
+}
+
+void
+mp_util_append_media_list_item_to_playlist(mp_plst_mgr *playlist_mgr, mp_media_list_h media_list, int count, int current_index, const char *path)
+{
+       int i;
+       char *uid;
+       char *uri;
+       mp_plst_item *cur_item = NULL;
+
+       for(i = 0; i < count; i++)
+       {
+               mp_plst_item *plst_item;
+               mp_media_info_h item = mp_media_info_list_nth_item(media_list, i);
+               mp_media_info_get_media_id(item, &uid);
+               mp_media_info_get_file_path(item, &uri);
+               plst_item = mp_playlist_mgr_item_append(playlist_mgr, uri, uid, MP_TRACK_URI);
+               if(i == current_index || !g_strcmp0(uri, path))
+                       cur_item = plst_item;
+       }
+       mp_playlist_mgr_set_current(playlist_mgr, cur_item);
+
+}
+
+char* mp_util_get_fid_by_full_path(const char *full_path)
+{
+       startfunc;
+
+       char *uid = 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, &uid);
+                       uid = g_strdup(uid);
+                       mp_media_info_destroy(record);
+               }
+       }
+       return uid;
+}
diff --git a/src/common/mp-view-manager.c b/src/common/mp-view-manager.c
new file mode 100755 (executable)
index 0000000..508dd08
--- /dev/null
@@ -0,0 +1,1009 @@
+/*
+ * 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://floralicense.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-view-manager.h"
+#include "mp-edit-view.h"
+#include "mp-playlist-view.h"
+#include "mp-track-view.h"
+#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"
+
+
+
+typedef struct
+{
+       mp_view_content_t content_type;
+       int view_index;
+       Evas_Object *view_layout;
+       Evas_Object *controlbar;
+       Evas_Object *control_buttons[MP_NAVI_CONTROL_BUTTON_MAX];
+
+       Elm_Object_Item *navi_item;
+} mp_view_histroy_t;
+
+void
+mp_view_manager_set_back_button(Evas_Object * parent, Elm_Object_Item* navi_item, Evas_Smart_Cb cb, void *data)
+{
+       MP_CHECK(navi_item);
+       MP_CHECK(parent);
+
+       Evas_Object *button = NULL;
+       if(cb)
+       {
+               button = mp_widget_create_button(parent,  "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);
+       }
+}
+
+Elm_Object_Item *
+mp_view_manager_push_view_content(view_data_t * view_data, Evas_Object * content, mp_view_content_t type)
+{
+       int view_idx = -1;
+       mp_view_histroy_t *last_history;
+       Evas_Object *top_view = NULL;
+
+       startfunc;
+
+       MP_CHECK_NULL(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       MP_CHECK_NULL(content);
+       MP_CHECK_NULL(view_data->navibar);
+
+       struct appdata *ad = view_data->ad;
+       MP_CHECK_NULL(ad);
+
+       Elm_Object_Item *navi_item = elm_naviframe_top_item_get(view_data->navibar);
+       if (navi_item)
+       {
+               top_view = elm_object_item_content_get(navi_item);
+               MP_CHECK_NULL(top_view);
+
+               mp_view_layout_progress_timer_freeze(top_view);
+       }
+
+       view_idx = mp_view_manager_count_view_content(view_data);
+       DEBUG_TRACE("view_idx: %d", view_idx);
+       last_history = calloc(sizeof(mp_view_histroy_t), 1);
+
+       last_history->content_type = type;
+       last_history->view_index = view_idx;
+       last_history->view_layout = content;
+
+       if(view_idx == 0)
+       {
+               last_history->navi_item =
+                       elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content,  "tabbar");
+               elm_naviframe_item_title_visible_set(last_history->navi_item, EINA_FALSE);
+       }
+       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,  NULL);
+       }
+
+       mp_language_mgr_register_object_item(last_history->navi_item, NULL);
+
+       if(MP_VIEW_CONTENT_PLAY == type)
+                       elm_naviframe_item_title_visible_set(last_history->navi_item, false);
+
+       evas_object_data_set(content, "navi_item", last_history->navi_item);
+
+       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);
+
+       endfunc;
+
+       return last_history->navi_item;
+
+}
+
+/* Musc call this api befor del navigationbar. it prevent destroying info ug layout*/
+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
+mp_view_manager_pop_view_content(view_data_t * view_data, bool pop_to_first, bool pop_content)
+{
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       struct appdata *ad = view_data->ad;
+       MP_CHECK(ad);
+
+       GList *view_item = g_list_last(ad->view_history);
+       MP_CHECK(view_item);
+       MP_CHECK(view_data->navibar);
+
+       mp_view_histroy_t *last_history = view_item->data;
+
+       mp_view_manager_unswallow_info_ug_layout(ad);
+
+       if (!pop_to_first)
+       {
+               elm_naviframe_item_pop(view_data->navibar);
+               ad->navi_effect_in_progress = 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);
+               last_history = view_item->data;
+       }
+       else
+       {
+               if (last_history->view_index == 0)
+               {
+                       DEBUG_TRACE("");
+                       return;
+               }
+               elm_naviframe_item_pop_to(elm_naviframe_bottom_item_get(view_data->navibar));
+               while (last_history->view_index > 0)
+               {
+                       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;
+               }
+       }
+
+       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);
+       MP_CHECK(top_view);
+
+       mp_view_layout_progress_timer_thaw(top_view);
+
+}
+
+void
+mp_view_manager_pop_to_view_content(view_data_t * view_data, mp_view_content_t type)
+{
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       struct appdata *ad = view_data->ad;
+       MP_CHECK(ad);
+
+       GList *view_item = g_list_last(ad->view_history);
+       MP_CHECK(view_item);
+       MP_CHECK(view_data->navibar);
+
+       mp_view_histroy_t *last_history = view_item->data;
+       bool find_view = false;
+
+       mp_view_manager_unswallow_info_ug_layout(ad);
+
+       while (last_history->view_index > 0)
+       {
+               DEBUG_TRACE("Content type: %d", last_history->content_type);
+               if (last_history->content_type == type)
+               {
+                       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;
+               }
+       }
+
+       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);
+       MP_CHECK(top_view);
+
+       mp_view_layout_progress_timer_thaw(top_view);
+
+}
+
+int
+mp_view_manager_count_view_content(view_data_t * view_data)
+{
+       MP_CHECK_VAL(view_data, -1);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       GList *histroy = view_data->ad->view_history;
+       mp_retvm_if(!histroy, 0, "last_item not exist");
+
+       return g_list_length(histroy);
+}
+
+Evas_Object *
+mp_view_manager_get_last_view_layout(struct appdata * ad)
+{
+       MP_CHECK_NULL(ad);
+       MP_CHECK_NULL(ad->naviframe);
+
+       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);
+       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->view_layout;
+}
+
+Elm_Object_Item *
+mp_view_manager_get_play_view_navi_item(struct appdata *ad)
+{
+       startfunc;
+       MP_CHECK_NULL(ad);
+       MP_CHECK_NULL(ad->naviframe);
+
+       mp_view_histroy_t *history;
+       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);
+       MP_CHECK_VIEW_DATA(cur_view_data);
+
+       GList *item = g_list_last(ad->view_history);
+       MP_CHECK_NULL(item);
+
+       do
+       {
+               history = item->data;
+               if (history->content_type == MP_VIEW_CONTENT_PLAY)
+               {
+                       return history->navi_item;
+               }
+               item = g_list_previous(item);
+       }
+       while (item);
+
+       return NULL;
+}
+
+void
+mp_view_manager_play_view_title_label_set(struct appdata *ad, const char *title)
+{
+       startfunc;
+       Elm_Object_Item *navi_item;
+       MP_CHECK(ad);
+
+       navi_item = mp_view_manager_get_play_view_navi_item(ad);
+       if(navi_item) {
+               elm_object_item_text_set(navi_item, title);
+       }
+
+}
+
+Evas_Object *
+mp_view_manager_get_first_view_layout(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 *first_item = g_list_first(ad->view_history);
+       MP_CHECK_NULL(first_item);
+
+       mp_view_histroy_t *last_history = first_item->data;
+       MP_CHECK_NULL(last_history);
+
+       return last_history->view_layout;
+}
+
+Evas_Object *
+mp_view_manager_get_edit_view_layout(struct appdata * ad)
+{
+       mp_view_histroy_t *history = NULL;
+
+       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 *item = g_list_last(ad->view_history);
+       MP_CHECK_FALSE(item);
+
+       do
+       {
+               history = item->data;
+               if (history->content_type == MP_VIEW_CONTENT_EDIT)
+               {
+                       return history->view_layout;
+               }
+               item = g_list_previous(item);
+       }
+       while (item);
+
+       return NULL;
+}
+
+
+bool
+mp_view_manager_is_play_view(struct appdata * ad)
+{
+       MP_CHECK_FALSE(ad);
+
+       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");
+       MP_CHECK_FALSE(cur_view_data);
+       MP_CHECK_VIEW_DATA(cur_view_data);
+
+       GList *last_item = g_list_last(ad->view_history);
+       MP_CHECK_FALSE(last_item);
+
+       mp_view_histroy_t *last_history = last_item->data;
+       MP_CHECK_FALSE(last_history);
+
+       if (last_history->content_type == MP_VIEW_CONTENT_PLAY)
+               return TRUE;
+       else
+               return FALSE;
+
+}
+
+Evas_Object *
+mp_view_manager_get_view_layout(struct appdata * ad, mp_view_content_t type)
+{
+       mp_view_histroy_t *history = NULL;
+
+       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 *item = g_list_last(ad->view_history);
+       MP_CHECK_FALSE(item);
+
+       do
+       {
+               history = item->data;
+               if (history->content_type == type)
+               {
+                       return history->view_layout;
+               }
+               item = g_list_previous(item);
+       }
+       while (item);
+
+       return NULL;
+}
+
+
+void
+mp_view_manager_update_list_contents(view_data_t * view_data, bool update_edit_list)
+{
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       mp_view_histroy_t *history = NULL;
+       struct appdata *ad = view_data->ad;
+       MP_CHECK(ad);
+
+       GList *item = g_list_last(ad->view_history);
+       MP_CHECK(item);
+       do
+       {
+               history = item->data;
+               if (history->content_type == MP_VIEW_CONTENT_LIST)
+               {
+                       mp_layout_data_t *layout_data = evas_object_data_get(history->view_layout, "layout_data");
+                       if(layout_data)
+                       {
+                               if(layout_data->edit_mode && !update_edit_list)
+                               {
+                                       DEBUG_TRACE("skip update edit view");
+                                       item = g_list_previous(item);
+                                       continue;
+                               }
+                               if(layout_data->album_delete_flag)
+                               {
+                                       DEBUG_TRACE("skip update album view or artist view");
+                                       item = g_list_previous(item);
+                                       continue;
+                               }
+                       }
+                       mp_view_layout_update(history->view_layout);
+               }
+               item = g_list_previous(item);
+       }
+       while (item);
+
+}
+
+static void _mp_view_manager_more_btn_move_ctxpopup(Evas_Object *ctxpopup, Evas_Object *btn)
+{
+       startfunc;
+
+       MP_CHECK(ctxpopup);
+       MP_CHECK(btn);
+
+       Evas_Coord x, y, w , h;
+       evas_object_geometry_get(btn, &x, &y, &w, &h);
+    evas_object_move(ctxpopup, x + w/2, y);
+}
+
+static void _mp_view_manager_more_btn_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       mp_evas_object_del(ad->more_btn_popup);
+}
+
+static void _mp_view_manager_more_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       void *cb_data = NULL;
+
+       struct appdata *ad = view_data->ad;
+       MP_CHECK(ad);
+
+       cb_data = evas_object_data_get(obj, "cb_data");
+
+       mp_evas_object_del(ad->more_btn_popup);
+
+       ad->more_btn_popup = elm_ctxpopup_add(ad->naviframe);
+       evas_object_smart_callback_add(ad->more_btn_popup, "dismissed", _mp_view_manager_more_btn_dismissed_cb, ad);
+
+       mp_more_button_type_e btn_type = (int)evas_object_data_get(obj, "more_btn_type");
+       if (btn_type == MP_MORE_BUTTON_TYPE_TRACK_LIST)
+               elm_ctxpopup_item_append(ad->more_btn_popup,
+                                                               GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"),
+                                                               NULL, mp_edit_view_add_to_plst_cb, cb_data);
+       else
+       {
+               elm_ctxpopup_item_append(ad->more_btn_popup,
+                                                               GET_STR("IDS_MUSIC_BODY_CREATE_PLAYLIST"),
+                                                               NULL, mp_playlist_view_create_playlist_button_cb, cb_data);
+       }
+
+       elm_object_scroll_freeze_push(ad->more_btn_popup);
+       _mp_view_manager_more_btn_move_ctxpopup(ad->more_btn_popup, obj);
+
+       evas_object_show(ad->more_btn_popup);
+}
+
+void
+mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *text_ID, void *data)
+{
+       startfunc;
+       struct appdata *ad = NULL;
+       GList *last_node = NULL;
+       mp_view_histroy_t *last_history = NULL;
+       Evas_Object *navibar = NULL;
+       Elm_Object_Item *navi_it = NULL;
+       Evas_Object *layout = NULL, *btn = NULL;
+       char *title = NULL;
+       int i = 0;
+
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       ad = view_data->ad;
+       MP_CHECK(ad);
+
+       last_node = g_list_last(ad->view_history);
+       MP_CHECK(last_node);
+
+       last_history = last_node->data;
+       MP_CHECK(last_history);
+
+       navibar = ad->naviframe;
+       MP_CHECK(navibar);
+
+       navi_it = last_history->navi_item;
+       MP_CHECK(navi_it);
+
+       layout = last_history->view_layout;
+       MP_CHECK(layout);
+
+       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);
+               elm_object_item_text_set(navi_it, title);
+               mp_language_mgr_object_item_text_ID_set(navi_it, text_ID);
+       }
+
+       //delete all buttons...
+       for (i = 0; i < MP_NAVI_CONTROL_BUTTON_MAX; i++)
+       {
+               if (last_history->control_buttons[i])
+               {
+                       evas_object_del(last_history->control_buttons[i]);
+                       last_history->control_buttons[i] = NULL;
+               }
+       }
+       elm_object_item_part_content_set(navi_it, "toolbar_button1", NULL);
+       elm_object_item_part_content_set(navi_it, "toolbar_button2", NULL);
+
+       //destroy back button
+       mp_view_manager_set_back_button(last_history->view_layout, navi_it, NULL, NULL);
+       elm_object_item_part_content_set(navi_it, "toolbar_more_btn", NULL);
+
+       if (last_history->content_type == MP_VIEW_CONTENT_LIST)
+       {
+               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 ",
+                           layout_data->category, layout_data->rename_mode, layout_data->ad->b_add_tracks);
+               DEBUG_TRACE("layout_data->playlist_id: %d", layout_data->playlist_id);
+
+               if (layout_data->edit_mode)
+               {
+                       if (layout_data->ad->b_add_tracks)
+                       {
+                               DEBUG_TRACE("");
+
+                               btn = mp_widget_create_toolbar_btn(layout,
+                                       MP_TOOLBAR_BTN_DEFULTL, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), mp_track_view_add_to_playlist_cancel_cb, data);
+                               elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                               last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_ADD_TO_PLAYLIST] = btn;
+
+                               mp_view_manager_set_back_button(layout, navi_it, mp_track_view_add_to_playlist_cancel_cb, data);
+
+                       }
+                       else
+                       {
+                               if (layout_data->category == MP_LAYOUT_TRACK_LIST)
+                               {
+                                       DEBUG_TRACE("");
+
+                                       btn = mp_widget_create_toolbar_btn(layout,
+                                               MP_TOOLBAR_BTN_LEFT, GET_STR("IDS_MUSIC_OPT_DELETE"), mp_edit_view_delete_cb, data);
+                                       elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_DELETE] = btn;
+
+                                       btn = mp_widget_create_toolbar_btn(layout,
+                                               MP_TOOLBAR_BTN_RIGHT, GET_STR("IDS_MUSIC_SK_SHARE"), mp_edit_view_share_cb, data);
+                                       elm_object_item_part_content_set(navi_it, "toolbar_button2", btn);
+                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_SHARE] = btn;
+
+                                       btn = mp_widget_create_toolbar_btn(layout, MP_TOOLBAR_BTN_MORE, NULL, _mp_view_manager_more_btn_cb, view_data);
+                                       evas_object_data_set(btn, "more_btn_type", (void *)MP_MORE_BUTTON_TYPE_TRACK_LIST);
+                                       elm_object_item_part_content_set(navi_it, "toolbar_more_btn", btn);
+                                       evas_object_data_set(btn, "cb_data", data);
+
+                                       mp_view_manager_set_back_button(layout, navi_it, mp_edit_view_cencel_cb, data);
+
+                               }
+                               else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+                               {
+                                       DEBUG_TRACE("");
+                                       btn = mp_widget_create_toolbar_btn(layout,
+                                               MP_TOOLBAR_BTN_DEFULTL, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), mp_edit_view_add_to_plst_cb, data);
+                                       elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_ADD_TO_PLAYLIST] = btn;
+
+                                       mp_view_manager_set_back_button(layout, navi_it, mp_edit_view_cencel_cb, data);
+
+
+                               }
+                               else
+                               {
+                                       DEBUG_TRACE("");
+                                       btn = mp_widget_create_toolbar_btn(layout,
+                                               MP_TOOLBAR_BTN_DEFULTL, GET_STR("IDS_MUSIC_OPT_DELETE"), mp_edit_view_delete_cb, data);
+                                       elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_DELETE] = btn;
+
+                                       mp_view_manager_set_back_button(layout, navi_it, mp_edit_view_cencel_cb, data);
+                               }
+                       }
+
+               }
+               else
+               {
+                       if(!layout_data->ad->b_add_tracks)
+                       {
+                                       mp_view_manager_set_back_button(last_history->view_layout, last_history->navi_item, mp_common_back_button_cb, view_data);
+                       }
+
+                       if (title)
+                               layout_data->navibar_title = g_strdup(title);
+
+                       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;
+                       if (layout_data->category != MP_LAYOUT_PLAYLIST_LIST)
+                       {
+                               if (layout_data->ad->b_add_tracks)
+                               {
+                                       DEBUG_TRACE("");
+                                       btn = mp_widget_create_toolbar_btn(layout,
+                                               MP_TOOLBAR_BTN_DEFULTL, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), mp_track_view_add_to_playlist_done_cb, data);
+                                       elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_ADD_TO_PLAYLIST] = btn;
+
+
+                                       mp_view_manager_set_back_button(layout, navi_it, mp_track_view_add_to_playlist_cancel_cb, data);
+
+                               }
+                               else if (layout_data->track_type == MP_TRACK_BY_PLAYLIST)
+                               {
+                                       if (!mp_view_manager_get_view_layout(ad, MP_VIEW_CONTENT_SEARCH))
+                                       {
+                                               DEBUG_TRACE("");
+                                               btn = mp_widget_create_toolbar_btn(layout,
+                                                       MP_TOOLBAR_BTN_LEFT, GET_SYS_STR("IDS_COM_SK_EDIT"), mp_common_edit_button_cb, data);
+                                               elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                               last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_EDIT] = btn;
+
+                                               if (layout_data->playlist_id > 0)
+                                               {
+                                                       btn = mp_widget_create_toolbar_btn(layout,
+                                                               MP_TOOLBAR_BTN_RIGHT, GET_SYS_STR("IDS_COM_SK_ADD"), mp_playlist_view_add_button_cb, data);
+                                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_CREATE_PLAYLIST] = btn;
+                                               }
+                                               else
+                                               {
+                                                       btn = mp_widget_create_toolbar_btn(layout,
+                                                               MP_TOOLBAR_BTN_RIGHT, GET_SYS_STR("IDS_COM_SK_SEARCH"), mp_common_search_button_cb, data);
+                                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_SEARCH] = btn;
+                                               }
+                                               elm_object_item_part_content_set(navi_it, "toolbar_button2", btn);
+                                       }
+                                       else
+                                       {
+                                               DEBUG_TRACE("");
+                                               btn = mp_widget_create_toolbar_btn(layout,
+                                                       MP_TOOLBAR_BTN_DEFULTL, GET_SYS_STR("IDS_COM_SK_EDIT"), mp_common_edit_button_cb, data);
+                                               elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                               last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_EDIT] = btn;
+
+                                       }
+                               }
+                               else
+                               {
+                                       if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+                                       {
+                                               if (!mp_view_manager_get_view_layout(ad, MP_VIEW_CONTENT_SEARCH))
+                                               {
+                                                       DEBUG_TRACE("");
+                                                       btn = mp_widget_create_toolbar_btn(layout,
+                                                               MP_TOOLBAR_BTN_LEFT, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), mp_common_edit_button_cb, data);
+                                                       elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_ADD_TO_PLAYLIST] = btn;
+
+                                                       btn = mp_widget_create_toolbar_btn(layout,
+                                                               MP_TOOLBAR_BTN_RIGHT, GET_SYS_STR("IDS_COM_SK_SEARCH"), mp_common_search_button_cb, data);
+                                                       elm_object_item_part_content_set(navi_it, "toolbar_button2", btn);
+                                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_SEARCH] = btn;
+
+                                               }
+                                               else
+                                               {
+                                                       DEBUG_TRACE("");
+                                                       btn = mp_widget_create_toolbar_btn(layout,
+                                                               MP_TOOLBAR_BTN_DEFULTL, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), mp_common_edit_button_cb, data);
+                                                       elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_ADD_TO_PLAYLIST] = btn;
+                                               }
+                                       }
+                                       else
+                                       {
+                                               if (!mp_view_manager_get_view_layout(ad, MP_VIEW_CONTENT_SEARCH))
+                                               {
+                                                       DEBUG_TRACE("");
+                                                       btn = mp_widget_create_toolbar_btn(layout,
+                                                               MP_TOOLBAR_BTN_LEFT, GET_SYS_STR("IDS_COM_SK_EDIT"), mp_common_edit_button_cb, data);
+                                                       elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_EDIT] = btn;
+
+                                                       btn = mp_widget_create_toolbar_btn(layout,
+                                                               MP_TOOLBAR_BTN_RIGHT, GET_SYS_STR("IDS_COM_SK_SEARCH"), mp_common_search_button_cb, data);
+                                                       elm_object_item_part_content_set(navi_it, "toolbar_button2", btn);
+                                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_SEARCH] = btn;
+                                               }
+                                               else
+                                               {
+                                                       DEBUG_TRACE("");
+                                                       btn = mp_widget_create_toolbar_btn(layout,
+                                                               MP_TOOLBAR_BTN_DEFULTL, GET_SYS_STR("IDS_COM_SK_EDIT"), mp_common_edit_button_cb, data);
+                                                       elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                                                       last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_EDIT] = btn;
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               DEBUG_TRACE("layout_data->item_count=%d", layout_data->item_count);
+                               btn = mp_widget_create_toolbar_btn(layout,
+                                       MP_TOOLBAR_BTN_LEFT, GET_SYS_STR("IDS_COM_SK_EDIT"), mp_common_edit_button_cb, data);
+                               elm_object_item_part_content_set(navi_it, "toolbar_button1", btn);
+                               last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_EDIT] = btn;
+
+                               btn = mp_widget_create_toolbar_btn(layout,
+                                       MP_TOOLBAR_BTN_RIGHT, GET_SYS_STR("IDS_COM_SK_SEARCH"), mp_common_search_button_cb, data);
+                               elm_object_item_part_content_set(navi_it, "toolbar_button2", btn);
+                               last_history->control_buttons[MP_NAVI_CONTROL_BUTTON_SEARCH] = btn;
+
+                               btn = mp_widget_create_toolbar_btn(layout, MP_TOOLBAR_BTN_MORE, NULL, _mp_view_manager_more_btn_cb, view_data);
+                               evas_object_data_set(btn, "more_btn_type", (void *)MP_MORE_BUTTON_TYPE_DEFAULT);
+                               evas_object_data_set(btn, "cb_data", data);
+                               elm_object_item_part_content_set(navi_it, "toolbar_more_btn", btn);
+                       }
+
+                       /* update the first controlba item */
+                       mp_view_manager_update_first_controlbar_item(layout_data);
+               }
+
+       }
+       else if (last_history->content_type == MP_VIEW_CONTENT_SEARCH)
+       {
+               DEBUG_TRACE("MP_VIEW_CONTENT_SEARCH. ");
+               mp_view_manager_set_back_button(last_history->view_layout, last_history->navi_item, mp_common_back_button_cb, view_data);
+       }
+       else if (last_history->content_type == MP_VIEW_CONTENT_PLAY)
+       {
+               DEBUG_TRACE("MP_VIEW_CONTENT_PLAY. ");
+               mp_play_view_set_snd_path_sensitivity(ad);
+       }
+       else if (last_history->content_type == MP_VIEW_CONTENT_INFO)
+       {
+               DEBUG_TRACE("MP_VIEW_CONTENT_INFO. ");
+               mp_view_manager_set_back_button(last_history->view_layout, last_history->navi_item, mp_play_view_info_back_cb, ad);
+       }
+       else
+       {
+               WARN_TRACE("unexpected value: %d", last_history->content_type);
+       }
+
+}
+
+void
+mp_view_manager_set_now_playing(view_data_t * view_data, bool show)
+{
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       mp_view_histroy_t *history = NULL;
+       struct appdata *ad = view_data->ad;
+       MP_CHECK(ad);
+
+       GList *item = g_list_last(ad->view_history);
+       GList *last_item = item;
+       MP_CHECK(item);
+       do
+       {
+               history = item->data;
+               if (history->content_type == MP_VIEW_CONTENT_LIST)
+               {
+                       if (show)
+                       {
+                               mp_view_layout_show_now_playing(history->view_layout);
+                               if(item != last_item) //freeze timer not to update every view. update top view.
+                                       mp_view_layout_progress_timer_freeze(history->view_layout);
+                       }
+                       else
+                               mp_view_layout_hide_now_playing(history->view_layout);
+
+                       mp_view_layout_set_now_playing_info(history->view_layout);
+               }
+               item = g_list_previous(item);
+       }
+       while (item);
+
+}
+
+void
+mp_view_manager_freeze_progress_timer(struct appdata *ad)
+{
+       Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad);
+       if (top_view)
+               mp_view_layout_progress_timer_freeze(top_view);
+
+       mp_play_view_progress_timer_freeze(ad);
+}
+
+void
+mp_view_manager_thaw_progress_timer(struct appdata *ad)
+{
+       mp_retm_if(ad->is_lcd_off, "LCD off. not thaw progress timer.. ");
+
+       Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad);
+       if (top_view)
+               mp_view_layout_progress_timer_thaw(top_view);
+
+       mp_play_view_progress_timer_thaw(ad);
+}
+
+void mp_view_manager_update_first_controlbar_item(void *data)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *)data;
+       MP_CHECK(layout_data);
+       Evas_Object *edit_item = mp_view_manager_get_controlbar_item(layout_data->ad, MP_NAVI_CONTROL_BUTTON_EDIT);
+       if(edit_item)
+       {
+               if (layout_data->item_count < 1) {
+                       elm_object_disabled_set(edit_item, true);
+               } else {
+                       elm_object_disabled_set(edit_item, false);
+               }
+       }
+}
+
+Evas_Object *
+mp_view_manager_get_controlbar_item(struct appdata * ad, mp_navi_control_button_type type)
+{
+       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->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->naviframe);
+
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
+       MP_CHECK(view_data);
+
+       if(ad->info_ug_base)
+               mp_view_manager_pop_to_view_content(view_data, MP_VIEW_CONTENT_PLAY);
+
+       MP_CHECK(ad->playing_view);
+       evas_object_show(ad->playing_view->layout);
+}
+
+void
+mp_view_manager_pop_play_view(struct appdata *ad)
+{
+       MP_CHECK(ad);
+       MP_CHECK(ad->naviframe);
+
+       view_data_t *view_data;
+
+       view_data = evas_object_data_get(ad->naviframe, "view_data");
+       MP_CHECK(view_data);
+
+       if (ad->playing_view)
+               mp_view_manager_pop_to_view_content(view_data, MP_VIEW_CONTENT_PLAY);
+}
+
+void
+mp_view_manager_clear(struct appdata *ad)
+{
+       MP_CHECK(ad);
+
+       GList *view_item = ad->view_history;
+       while (view_item)
+       {
+               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_controlbar_visible(Elm_Object_Item *navi_item, bool visible)
+{
+       startfunc;
+       MP_CHECK(navi_item);
+
+       DEBUG_TRACE("visible: %d", visible);
+       if(visible) {
+               elm_object_item_signal_emit(navi_item, "elm,state,toolbar,open", "");
+       } else {
+               elm_object_item_signal_emit(navi_item, "elm,state,toolbar,close", "");
+       }
+}
+
+
diff --git a/src/common/mp-widget.c b/src/common/mp-widget.c
new file mode 100755 (executable)
index 0000000..475f1f1
--- /dev/null
@@ -0,0 +1,519 @@
+/*
+ * 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://floralicense.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-widget.h"
+#include "mp-player-debug.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 void
+_mp_widget_genlist_flick_left_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_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)
+{
+       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)
+{
+       Evas_Object *navi_bar;
+       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 */
+       Elm_Object_Item *it = (Elm_Object_Item *)elm_genlist_decorated_item_get(obj);
+       if (it && (it != event_info)) {
+               elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       // 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, bool sweep_flag)
+{
+       Evas_Object *list = NULL;
+
+       list = elm_genlist_add(parent);
+       CHECK(list);
+       evas_object_data_set(list, "ap", ad);
+       evas_object_show(list);
+       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);
+
+       if (sweep_flag) {
+               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;
+}
+
+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_NORMAL] = NULL;
+}
+
+static void
+_mp_widget_lowbattery_res_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       mp_evas_object_del(obj);
+}
+
+bool
+mp_widget_check_lowbattery(void *data, Evas_Object * parent)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       if (mp_check_battery_available())
+       {
+               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);
+
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static void
+_mp_widget_text_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+       void (*cb)(void *data) = evas_object_data_get(obj, "timeout_callback");
+       mp_evas_object_del(obj);
+
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+       ad->notify_delete = NULL;
+
+       if(cb)
+               cb(ad);
+}
+
+Evas_Object *
+mp_widget_text_popup(void *data, const char *message)
+{
+       struct appdata *ad = data;
+       Evas_Object *popup = NULL;
+       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);
+       elm_object_text_set(popup, message);
+       mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT);
+       evas_object_show(popup);
+       return popup;
+}
+
+int
+mp_widget_text_popup_with_cb(void *data, const char *message, void (*timeout_cb)(void *data))
+{
+       Evas_Object *popup = NULL;
+       popup = mp_widget_text_popup(data, message);
+       evas_object_data_set(popup, "timeout_callback", timeout_cb);
+       return 0;
+}
+
+Evas_Object *
+mp_widget_create_icon(Evas_Object * obj, const char *path, int w, int h)
+{
+       Evas_Object *thumbnail = elm_bg_add(obj);
+       elm_bg_load_size_set(thumbnail, w, h);
+
+       Evas *evas = evas_object_evas_get(obj);
+       MP_CHECK_NULL(evas);
+       if (mp_util_is_image_valid(evas, path))
+       {
+               elm_bg_file_set(thumbnail, path, NULL);
+       }
+       else
+       {
+               elm_bg_file_set(thumbnail, DEFAULT_THUMBNAIL, NULL);
+       }
+
+       evas_object_size_hint_aspect_set(thumbnail, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+       return thumbnail;
+}
+
+Evas_Object *
+mp_widget_create_bgimg(Evas_Object * parent)
+{
+       Evas_Object *bg;
+
+       mp_retvm_if(parent == NULL, NULL, "parent is NULL");
+
+       DEBUG_TRACE_FUNC();
+
+       bg = evas_object_rectangle_add(evas_object_evas_get(parent));
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, bg);
+       evas_object_show(bg);
+
+       return bg;
+}
+
+
+Evas_Object *
+mp_widget_create_button(Evas_Object * parent, char *style, char *caption, Evas_Object * icon,
+                       void (*func) (void *, Evas_Object *, void *), void *data)
+{
+       if (!parent)
+               return NULL;
+
+       Evas_Object *btn;
+
+       btn = elm_button_add(parent);
+
+       if (style)
+               elm_object_style_set(btn, style);
+
+       if (caption)
+               elm_object_text_set(btn, caption);
+
+       if (icon)
+               elm_object_content_set(btn, icon);
+
+       elm_object_focus_allow_set(btn, EINA_FALSE);
+       evas_object_propagate_events_set(btn, EINA_FALSE);
+
+       evas_object_smart_callback_add(btn, "clicked", func, (void *)data);
+
+       return btn;
+}
+
+static void
+_mp_widget_entry_maxlength_reached_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+       mp_popup_tickernoti_show(GET_SYS_STR("IDS_COM_POP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED"), false, false);
+}
+
+static void
+_mp_widget_entry_changed_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       Evas_Object *editfield = data;
+       MP_CHECK(editfield);
+
+       Evas_Object *entry = obj;
+       MP_CHECK(entry);
+
+       Eina_Bool entry_empty = elm_entry_is_empty(entry);
+       const char *eraser_signal = NULL;
+       const char *guidetext_signal = NULL;
+       if (entry_empty) {
+               eraser_signal = "elm,state,eraser,hide";
+               guidetext_signal = "elm,state,guidetext,show";
+       } else {
+               eraser_signal = "elm,state,eraser,show";
+               guidetext_signal = "elm,state,guidetext,hide";
+       }
+       elm_object_signal_emit(editfield, eraser_signal, "elm");
+       elm_object_signal_emit(editfield, guidetext_signal, "elm");
+}
+
+static void
+_mp_widget_entry_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) // When X marked button is clicked, empty entry's contents.
+{
+       Evas_Object *entry = data;
+       MP_CHECK(entry);
+
+       elm_entry_entry_set(entry, "");
+}
+
+
+Evas_Object *
+mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt, struct appdata *ad)
+{
+       startfunc;
+       Evas_Object *editfield = NULL;
+       Evas_Object *entry = NULL;
+       editfield = elm_layout_add(parent);
+       elm_layout_theme_set(editfield, "layout", "editfield", "default");
+       MP_CHECK_NULL(editfield);
+       evas_object_size_hint_weight_set(editfield, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(editfield, EVAS_HINT_FILL,
+                                       EVAS_HINT_FILL);
+
+       entry = elm_entry_add(editfield);
+       MP_CHECK_NULL(entry);
+       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);
+       elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+
+       evas_object_data_set(editfield, "entry", entry);
+       elm_object_part_content_set(editfield, "elm.swallow.content", entry);
+
+       evas_object_smart_callback_add(entry, "changed", _mp_widget_entry_changed_cb, editfield);
+       elm_object_signal_callback_add(editfield, "elm,eraser,clicked", "elm", _mp_widget_entry_eraser_clicked_cb, entry);
+
+       if(limit_size > 0)
+       {
+               static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+               limit_filter_data.max_char_count = 0;
+               limit_filter_data.max_byte_count = limit_size;
+               elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
+               evas_object_smart_callback_add(entry, "maxlength,reached", _mp_widget_entry_maxlength_reached_cb,
+                                              ad);
+       }
+
+       if(guide_txt)
+               elm_object_part_text_set(editfield, "elm.guidetext", guide_txt);
+
+       return editfield;
+
+}
+
+Evas_Object *
+mp_widget_editfield_entry_get(Evas_Object *editfield)
+{
+       MP_CHECK_NULL(editfield);
+
+       Evas_Object *entry = evas_object_data_get(editfield, "entry");
+
+       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)
+       {
+               icon = elm_icon_add(btn);
+               MP_CHECK_NULL(icon);
+               elm_image_file_set(icon, IMAGE_EDJ_NAME, icon_path);
+               elm_object_content_set(btn, icon);
+               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);
+       layout = elm_layout_add(parent);
+       mp_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
+
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       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;
+
+       TA_S(2, "elm_win_add");
+       eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+       TA_E(2, "elm_win_add");
+       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);
+               TA_S(2, "elm_win_conformant_set");
+               elm_win_conformant_set(eo, EINA_TRUE);
+               TA_E(2, "elm_win_conformant_set");
+       }
+       return eo;
+}
+
+Evas_Object *
+mp_common_create_naviframe_title_button(Evas_Object *parent, const char * text_id, void *save_cb, void *user_data)
+{
+       Evas_Object *btn_save = NULL;
+       btn_save = elm_button_add(parent);
+       elm_object_style_set(btn_save, "naviframe/title1/default");
+        evas_object_size_hint_align_set(btn_save, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+        evas_object_smart_callback_add(btn_save, "clicked", save_cb, user_data);
+
+        elm_object_text_set(btn_save, GET_SYS_STR(text_id));
+       mp_language_mgr_register_object(btn_save, OBJ_TYPE_ELM_OBJECT, NULL, text_id);
+        evas_object_show(btn_save);
+
+        return btn_save;
+
+}
+
+
+/*type
+*      "naviframe/toolbar/default"
+*      "naviframe/more/default"
+*/
+
+Evas_Object *mp_widget_create_toolbar_btn(Evas_Object *parent, const char *style, const char *text, Evas_Smart_Cb func, void *data)
+{
+       Evas_Object *btn = elm_button_add(parent);
+       MP_CHECK_NULL(btn);
+
+       elm_object_style_set(btn, style);
+       elm_object_text_set(btn, text);
+       evas_object_smart_callback_add(btn, "clicked", func, data);
+       return btn;
+}
+
+
diff --git a/src/core/include/mp-avrcp.h b/src/core/include/mp-avrcp.h
new file mode 100644 (file)
index 0000000..089f143
--- /dev/null
@@ -0,0 +1,51 @@
+
+#ifndef __MP_AVRCP_H__
+#define __MP_AVRCP_H__
+
+#include <stdbool.h>
+
+typedef enum{
+       MP_AVRCP_STATE_STOPPED,
+       MP_AVRCP_STATE_PLAYING,
+       MP_AVRCP_STATE_PAUSED,
+       MP_AVRCP_STATE_FF,
+       MP_AVRCP_STATE_REW,
+}mp_avrcp_player_state_e;
+
+typedef enum{
+       MP_AVRCP_REPEAT_OFF,
+       MP_AVRCP_REPEAT_ONE,
+       MP_AVRCP_REPEAT_ALL,
+}mp_avrcp_repeat_mode_e;
+
+typedef enum{
+       MP_AVRCP_SHUFFLE_OFF,
+       MP_AVRCP_SHUFFLE_ON,
+}mp_avrcp_shuffle_mode_e;
+
+typedef enum{
+       MP_AVRCP_EQ_OFF,
+       MP_AVRCP_EQ_ON,
+}mp_avrcp_eq_state_e;
+
+typedef void (*mp_avrcp_connection_state_changed_cb) (bool connected, const char *remote_address, void *user_data);
+typedef void (*mp_avrcp_shuffle_changed_cb)(mp_avrcp_shuffle_mode_e mode, void *user_data);
+typedef void (*mp_avrcp_repeat_changed_cb)(mp_avrcp_repeat_mode_e mode, void *user_data);
+typedef void (*mp_avrcp_eq_changed_cb)(mp_avrcp_eq_state_e state, void *user_data);
+
+int mp_avrcp_target_initialize(mp_avrcp_connection_state_changed_cb callback, void *userdata);
+int mp_avrcp_target_finalize(void);
+
+int mp_avrcp_add_mode_change_cb(mp_avrcp_shuffle_changed_cb s_cb, mp_avrcp_repeat_changed_cb r_cb, mp_avrcp_eq_changed_cb e_cb, void *user_data);
+
+int mp_avrcp_noti_player_state(mp_avrcp_player_state_e state);
+int mp_avrcp_noti_eq_state(mp_avrcp_eq_state_e eq);
+int mp_avrcp_noti_repeat_mode(mp_avrcp_repeat_mode_e repeat);
+int mp_avrcp_noti_shuffle_mode(mp_avrcp_shuffle_mode_e shuffle);
+int mp_avrcp_noti_track(const char *title, const char *artist, const char *album, const char *genre, unsigned int duration);
+
+int mp_avrcp_set_mode_change_cb(mp_avrcp_shuffle_changed_cb s_cb,
+       mp_avrcp_repeat_changed_cb r_cb, mp_avrcp_eq_changed_cb e_cb, void *user_data);
+
+#endif
+
diff --git a/src/core/include/mp-file-tag-info.h b/src/core/include/mp-file-tag-info.h
new file mode 100644 (file)
index 0000000..38ae7f4
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * 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://floralicense.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_file_tag_info_H__
+#define __mp_file_tag_info_H__
+
+typedef struct _tag_info_t
+{
+       char *album;
+       char *genre;
+       char *author;
+       char *artist;
+       char *title;
+       char *copyright;
+       char *date;
+       char *desc;
+       char *albumart_path;
+       char *track;
+       char *rating;
+       int duration;
+       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);
+
+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
new file mode 100644 (file)
index 0000000..33ebd52
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * 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://floralicense.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_HTTP_MGR_H__
+#define __MP_HTTP_MGR_H__
+
+#include "mp-define.h"
+
+#define HTTP_ADDR_LEN_MAX              64
+typedef enum
+{
+       MP_HTTP_SVC_DEFAULT,
+       MP_HTTP_SVC_SHAZAM,
+       MP_HTTP_SVC_STREAMING,
+       MP_HTTP_SVC_MAX,
+} mp_http_svc_type;
+
+typedef enum
+{
+       MP_HTTP_RESPONSE_NORMAL,
+       MP_HTTP_RESPONSE_DISCONNECT,
+} mp_http_response_type;
+
+typedef enum
+{
+       MP_HTTP_RESP_FAIL,
+       MP_HTTP_RESP_SUCCESS,
+} 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);
+
+typedef enum
+{
+       MP_HTTP_STATE_NONE = 0,
+       MP_HTTP_STATE_OFF = 0,
+       MP_HTTP_STATE_CELLULAR,
+       MP_HTTP_STATE_WIFI,
+} MpHttpState_t;
+
+typedef struct mp_http_mgr_t
+{
+       struct appdata *ad;
+       MpHttpState_t http_state;               //the state of the http
+       char ip[HTTP_ADDR_LEN_MAX];
+       char proxy[HTTP_ADDR_LEN_MAX];
+
+       bool svc_state[MP_HTTP_SVC_MAX];
+       void *cb_data[MP_HTTP_SVC_MAX];
+       MpHttpOpenExcuteCb http_open_cb[MP_HTTP_SVC_MAX];
+       MpHttpRespExcuteCb http_resp_cb[MP_HTTP_SVC_MAX];
+} mp_http_mgr_t;
+
+typedef struct mp_http_data_t
+{
+       struct appdata *ad;
+       int req_type;
+       char *req_id;
+       MpHttpRespCb user_callback;
+       int view_id;
+       void *user_data;
+} 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);
+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);
+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 100644 (file)
index 0000000..2609eb7
--- /dev/null
@@ -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://floralicense.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 <Elementary.h>
+
+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-lyric-mgr.h b/src/core/include/mp-lyric-mgr.h
new file mode 100644 (file)
index 0000000..b616bf7
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * 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://floralicense.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_LYRIC_MGR_H__
+#define __MP_LYRIC_MGR_H__
+
+#include "mp-define.h"
+
+#define MP_LRC_LINE_BUF_LEN (int)255 /* The max length of one line string buffer */
+
+
+typedef enum
+{
+       MP_LYRIC_SOURCE_BUFFER=0,
+       MP_LYRIC_SOURCE_LIST,
+       MP_LYRIC_SOURCE_FILE,
+}mp_lyric_source_type;
+
+typedef struct
+{
+       long time;
+       char *lyric;
+}mp_lrc_node_t;
+
+typedef struct
+{
+       char *title;
+       char *artist;
+       char *album;
+       long offset; /* The offset of all time tags */
+       Eina_List *synclrc_list;
+       Eina_List *unsynclrc_list;
+       mp_lyric_source_type source_type;
+}mp_lyric_mgr_t;
+
+bool mp_lyric_mgr_create(void *data, void *lrcData, mp_lyric_source_type source_type);
+bool mp_lyric_mgr_destory(void *data);
+
+mp_lyric_mgr_t* mp_lyric_mgr_parse_file(const char *lrcPath);
+mp_lyric_mgr_t* mp_lyric_mgr_parse_buffer(const char *lrcBuffer);
+void mp_lyric_mgr_data_free(mp_lyric_mgr_t **data);
+
+#endif /* __MP_LYRIC_MGR_H__ */
diff --git a/src/core/include/mp-player-control.h b/src/core/include/mp-player-control.h
new file mode 100644 (file)
index 0000000..c012e6c
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * 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://floralicense.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 __DEF_music_player_contro_H_
+#define __DEF_music_player_contro_H_
+
+#include <Elementary.h>
+#include "music.h"
+
+void mp_play_control_play_pause(struct appdata *ad, bool play);
+void mp_player_control_stop(struct appdata *ad);
+void mp_play_control_ff_cb(void *data, Evas_Object * o, const char *emission, const char *source);
+void mp_play_control_rew_cb(void *data, Evas_Object * o, const char *emission, const char *source);
+void mp_play_control_volume_down_cb(void *data, Evas_Object * o, const char *emission, const char *source);
+void mp_play_control_volume_up_cb(void *data, Evas_Object * o, const char *emission, const char *source);
+void mp_play_control_volume_cb(void *data, Evas_Object * o, const char *emission, const char *source);
+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_play_pause_icon_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
new file mode 100644 (file)
index 0000000..7590b8e
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * 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://floralicense.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_PLAYER_DRM_H_
+#define __MP_PLAYER_DRM_H_
+
+typedef struct
+{
+       bool forward;
+       int version;
+       int constraint_type;
+       char validity[256];
+       char description[256];
+} mp_drm;
+
+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);
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+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);
+#endif
+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
new file mode 100644 (file)
index 0000000..5b3254a
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * 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://floralicense.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_player_mgr_H_
+#define __MP_player_mgr_H_
+
+#include <sound_manager.h>
+#include <player.h>
+#include <vconf.h>
+
+
+typedef enum {
+       MP_PLAYER_TYPE_MMFW,
+} mp_player_type_e;
+
+typedef void (*Seek_Done_Cb)(void *data);
+typedef void (*mp_player_started_cb)(void *user_data);
+typedef void (*mp_player_paused_cb)(void *user_data);
+
+bool mp_player_mgr_is_active(void);
+void mp_player_mgr_set_started_db(mp_player_started_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_set_prepare_cb(player_prepared_cb callback, void *user_data);
+void mp_player_mgr_set_paused_cb(mp_player_paused_cb callback, void *user_data);
+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, mp_player_type_e type, void *extra_data);
+bool mp_player_mgr_destroy(void *data);
+bool mp_player_mgr_realize(void *data);
+bool mp_player_mgr_unrealize(void *data);
+bool mp_player_mgr_play(void *data);
+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, Seek_Done_Cb done_cb, void *data);
+bool mp_player_mgr_set_play_speed(double speed);
+int mp_player_mgr_get_position(void);
+int mp_player_mgr_get_duration(void);
+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);
+
+player_state_e mp_player_mgr_get_state(void);
+bool mp_player_mgr_change_player(mp_player_type_e player_type);
+
+#endif //__MP_player_mgr_H_
diff --git a/src/core/include/mp-playlist-mgr.h b/src/core/include/mp-playlist-mgr.h
new file mode 100644 (file)
index 0000000..a5be4f3
--- /dev/null
@@ -0,0 +1,88 @@
+
+#ifndef __MP_PLAY_LIST_H_
+#define __MP_PLAY_LIST_H_
+
+#include <glib.h>
+#include <Eina.h>
+#include "mp-define.h"
+
+typedef enum{
+       MP_TRACK_URI,
+}mp_track_type;
+
+typedef enum _mp_plst_repeat_state
+{
+       MP_PLST_REPEAT_ALL,
+       MP_PLST_REPEAT_NONE,
+       MP_PLST_REPEAT_ONE,
+}mp_plst_repeat_state;
+
+typedef enum{
+       MP_PLAYLIST_QUEUE_ADDED,
+       MP_PLSYLIST_QUEUE_REMOVED,
+       MP_PLSYLIST_QUEUE_MOVED,
+}mp_playlist_queue_cmd_type;
+
+typedef void (*mp_queue_item_removed_cb)(mp_playlist_queue_cmd_type cmd_type, int index,void *userdata);
+
+typedef struct _mp_list_item
+{
+       mp_track_type track_type;
+       Eina_Bool is_queue;
+       char *uri;              //local track uri..
+       char *uid;      //unique id (media_id or allshare item id)
+}mp_plst_item;
+
+typedef void (*mp_playlist_item_change_callback)(mp_plst_item *item, void *userdata);
+
+typedef struct _mp_plst_mgr
+{
+       int current_index;
+       Eina_Bool shuffle_state;        //shuffle on/off
+       mp_plst_repeat_state repeat_state; //off:0/one:1/all:2
+       GList *list;            //normal list do not free, just refer normal_list or shuffle_list
+       GList *normal_list;
+       GList *shuffle_list;
+       GList *queue_list;
+
+       void *userdata;
+       void(*queue_item_cb)(mp_playlist_queue_cmd_type cmd_type, int index,void *userdata);
+
+       void *item_change_userdata;
+       mp_playlist_item_change_callback item_change_cb;
+
+
+} mp_plst_mgr;
+
+
+mp_plst_mgr *mp_playlist_mgr_create(void);
+void mp_playlist_mgr_destroy(mp_plst_mgr *playlist_mgr);
+
+mp_plst_item * mp_playlist_mgr_item_append(mp_plst_mgr *playlist_mgr, const char *uri, const char *uid, mp_track_type type);
+mp_plst_item * mp_playlist_mgr_item_queue(mp_plst_mgr *playlist_mgr, const char *uri, const char *uid, mp_track_type type);
+
+void mp_playlist_mgr_item_remove_item(mp_plst_mgr *playlist_mgr, mp_plst_item *item);
+void mp_playlist_mgr_item_remove_nth(mp_plst_mgr *playlist_mgr, int index);
+void mp_playlist_mgr_clear(mp_plst_mgr *playlist_mgr);
+
+int mp_playlist_mgr_count(mp_plst_mgr *playlist_mgr);
+mp_plst_item *mp_playlist_mgr_get_current(mp_plst_mgr *playlist_mgr);
+mp_plst_item *mp_playlist_mgr_get_next(mp_plst_mgr *playlist_mgr, Eina_Bool force);
+mp_plst_item *mp_playlist_mgr_get_prev(mp_plst_mgr *playlist_mgr);
+mp_plst_item *mp_playlist_mgr_get_nth(mp_plst_mgr *playlist_mgr, int index);
+
+void mp_playlist_mgr_set_current(mp_plst_mgr *playlist_mgr, mp_plst_item *cur);
+int mp_playlist_mgr_get_current_index(mp_plst_mgr *playlist_mgr);
+
+void mp_playlist_mgr_set_shuffle(mp_plst_mgr *playlist_mgr, Eina_Bool shuffle);
+Eina_Bool mp_playlist_mgr_is_shuffle(mp_plst_mgr *playlist_mgr);
+void mp_playlist_mgr_set_repeat(mp_plst_mgr *playlist_mgr, mp_plst_repeat_state repeat);
+int mp_playlist_mgr_get_repeat(mp_plst_mgr *playlist_mgr);
+Eina_Bool mp_playlist_mgr_set_queue_cb(mp_plst_mgr* playlist_mgr, mp_queue_item_removed_cb queue_item_removed, void *userdata);
+int mp_playlist_mgr_set_item_change_callback(mp_plst_mgr *playlist_mgr, mp_playlist_item_change_callback cb, void *userdata);
+
+#endif
+
+
+
+
diff --git a/src/core/include/mp-setting-ctrl.h b/src/core/include/mp-setting-ctrl.h
new file mode 100644 (file)
index 0000000..04451da
--- /dev/null
@@ -0,0 +1,60 @@
+ /*
+  * 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://floralicense.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 <vconf-keys.h>
+#ifndef MP_SOUND_PLAYER
+#include "mp-view-layout.h"
+#endif
+
+typedef void (*MpSettingPlaylist_Cb) (int state, void *data);
+typedef void (*MpSettingSaChange_Cb) (int state, void *data);
+typedef void (*MpSettingAutoOff_Cb)(int min, void *data);
+typedef void (*MpSettingPlaySpeed_Cb)(double speed, void *data);
+
+int mp_setting_init(struct appdata *ad);
+int mp_setting_deinit(struct appdata *ad);
+int mp_setting_set_shuffle_state(int b_val);
+int mp_setting_get_shuffle_state(int *b_val);
+int mp_setting_set_repeat_state(int val);
+int mp_setting_get_repeat_state(int *val);
+void mp_setting_set_albumart_path(const char *path);
+
+
+int mp_setting_playlist_get_state(int *state);
+int mp_setting_playlist_set_callback(MpSettingPlaylist_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);
+
+#ifdef MP_FEATURE_AUTO_OFF
+int mp_setting_auto_off_set_callback(MpSettingAutoOff_Cb func, void *data);
+void mp_setting_reset_auto_off_time();
+int mp_setting_get_auto_off_time();
+#endif
+
+#ifdef MP_FEATURE_PLAY_SPEED
+int mp_setting_set_play_speed_change_callback(MpSettingPlaySpeed_Cb func, void *data);
+int mp_setting_reset_play_speed();
+double mp_setting_get_play_speed();
+#endif
+
+void mp_setting_update_active_device();
+
+#endif // __MP_SETTING_CTRL_H_
diff --git a/src/core/include/mp-streaming-mgr.h b/src/core/include/mp-streaming-mgr.h
new file mode 100644 (file)
index 0000000..8f11477
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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://floralicense.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_STREAMING_MGR_H__
+#define __MP_STREAMING_MGR_H__
+
+#include <player.h>
+
+inline void mp_streaming_mgr_buffering_popup_control(struct appdata *ad, bool is_show);
+
+bool mp_streaming_mgr_check_streaming(struct appdata *ad, const char *path);
+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/include/mp-volume.h b/src/core/include/mp-volume.h
new file mode 100755 (executable)
index 0000000..ad13c66
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef __MP_VOLMUE_H__
+#define __MP_VOLMUE_H__
+
+#include <stdbool.h>
+#include <Ecore_X.h>
+
+typedef enum {
+       MP_VOLUME_KEY_DOWN,
+       MP_VOLUME_KEY_UP,
+} mp_volume_key_e;
+
+typedef enum {
+       MP_VOLUME_KEY_GRAB_COND_WINDOW_FOCUS,
+       MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE,
+       MP_VOLUME_KEY_GRAB_COND_MAX,
+} mp_volume_key_grab_condition_e;
+
+
+typedef void (*Mp_Volume_Key_Event_Cb)(void *user_data, mp_volume_key_e key, bool released);
+typedef void (*Mp_Volume_Change_Cb)(int volume, void *user_data);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void mp_volume_key_grab_set_window(Ecore_X_Window xwin);
+void mp_volume_key_grab_condition_set(mp_volume_key_grab_condition_e condition, bool enabled);
+bool mp_volume_key_grab_start();
+void mp_volume_key_grab_end();
+void mp_volume_key_event_send(mp_volume_key_e type, bool released);
+void mp_volume_key_event_callback_add(Mp_Volume_Key_Event_Cb event_cb, void *user_data);
+void mp_volume_key_event_callback_del();
+int mp_volume_get_max();
+int mp_volume_get_current();
+bool mp_volume_set(int volume);
+bool mp_volume_up();
+bool mp_volume_down();
+void mp_volume_add_change_cb(Mp_Volume_Change_Cb cb, void *user_data);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __MP_VOLMUE_H__ */
+
diff --git a/src/core/mp-avrcp.c b/src/core/mp-avrcp.c
new file mode 100644 (file)
index 0000000..bfbe9ea
--- /dev/null
@@ -0,0 +1,204 @@
+#include "mp-avrcp.h"
+#include "mp-player-debug.h"
+#include <bluetooth.h>
+#include "mp-define.h"
+
+typedef struct{
+       mp_avrcp_shuffle_changed_cb s_cb;
+       mp_avrcp_repeat_changed_cb r_cb;
+       mp_avrcp_eq_changed_cb e_cb;
+}MpAvrcpCb_t;
+
+static MpAvrcpCb_t *gMpAvrcpCb;
+
+static void _mp_avrcp_equalizer_state_changed_cb (bt_avrcp_equalizer_state_e equalizer, void *user_data)
+{
+       MP_CHECK(gMpAvrcpCb);
+       mp_avrcp_eq_state_e mode ;
+       if(equalizer == BT_AVRCP_EQUALIZER_STATE_OFF)
+       {
+               DEBUG_TRACE("eq off");
+               mode =  MP_AVRCP_EQ_OFF;
+       }
+       else
+       {
+               DEBUG_TRACE("eq on");
+               mode =  MP_AVRCP_EQ_ON;
+       }
+       if(gMpAvrcpCb->e_cb)
+               gMpAvrcpCb->e_cb(mode, user_data);
+}
+
+static void _mp_avrcp_shuffle_mode_changed_cb (bt_avrcp_shuffle_mode_e shuffle, void *user_data)
+{
+       MP_CHECK(gMpAvrcpCb);
+       mp_avrcp_shuffle_mode_e mode ;
+       if(shuffle == BT_AVRCP_SHUFFLE_MODE_OFF)
+       {
+               DEBUG_TRACE("shuffle off");
+               mode =  MP_AVRCP_SHUFFLE_OFF;
+       }
+       else
+       {
+               DEBUG_TRACE("shuffle on");
+               mode =  MP_AVRCP_SHUFFLE_ON;
+       }
+
+       if(gMpAvrcpCb->s_cb)
+               gMpAvrcpCb->s_cb(mode, user_data);
+}
+
+static void _mp_avrcp_repeat_mode_changed_cb (bt_avrcp_repeat_mode_e repeat, void *user_data)
+{
+       MP_CHECK(gMpAvrcpCb);
+       mp_avrcp_repeat_mode_e mode ;
+       if(repeat == BT_AVRCP_REPEAT_MODE_OFF)
+       {
+               DEBUG_TRACE("shuffle off");
+               mode =  MP_AVRCP_REPEAT_OFF;
+       }
+       else if(repeat == BT_AVRCP_REPEAT_MODE_SINGLE_TRACK)
+       {
+               DEBUG_TRACE("shuffle off");
+               mode =  MP_AVRCP_REPEAT_ONE;
+       }
+       else
+       {
+               DEBUG_TRACE("shuffle on");
+               mode =  MP_AVRCP_REPEAT_ALL;
+       }
+
+       if(gMpAvrcpCb->r_cb)
+               gMpAvrcpCb->r_cb(mode, user_data);
+}
+
+int mp_avrcp_target_initialize(mp_avrcp_connection_state_changed_cb callback, void *user_data)
+{
+       startfunc;
+       int res = BT_ERROR_NONE;
+       res = bt_initialize();
+       MP_CHECK_VAL(res == BT_ERROR_NONE, res);
+
+       res = bt_avrcp_target_initialize(callback, user_data);
+       MP_CHECK_VAL(res == BT_ERROR_NONE, res);
+
+       gMpAvrcpCb = calloc(1, sizeof(MpAvrcpCb_t));
+       return res;
+}
+
+int mp_avrcp_target_finalize(void)
+{
+       startfunc;
+       int res = BT_ERROR_NONE;
+
+       res = bt_avrcp_target_deinitialize();
+       MP_CHECK_VAL(res == BT_ERROR_NONE, res);
+
+       res = bt_deinitialize();
+       MP_CHECK_VAL(res == BT_ERROR_NONE, res);
+
+       bt_avrcp_unset_shuffle_mode_changed_cb();
+       bt_avrcp_unset_equalizer_state_changed_cb();
+       bt_avrcp_unset_repeat_mode_changed_cb();
+
+       IF_FREE(gMpAvrcpCb);
+       return res;
+}
+
+int mp_avrcp_set_mode_change_cb(mp_avrcp_shuffle_changed_cb s_cb,
+       mp_avrcp_repeat_changed_cb r_cb, mp_avrcp_eq_changed_cb e_cb, void *user_data)
+{
+       startfunc;
+       gMpAvrcpCb->s_cb = s_cb;
+       gMpAvrcpCb->r_cb = r_cb;
+       gMpAvrcpCb->e_cb = e_cb;
+
+       bt_avrcp_set_equalizer_state_changed_cb(_mp_avrcp_equalizer_state_changed_cb, user_data);
+       bt_avrcp_set_shuffle_mode_changed_cb( _mp_avrcp_shuffle_mode_changed_cb, user_data);
+       bt_avrcp_set_repeat_mode_changed_cb( _mp_avrcp_repeat_mode_changed_cb, user_data);
+
+       return 0;
+}
+
+int mp_avrcp_noti_player_state(mp_avrcp_player_state_e state)
+{
+       DEBUG_TRACE("state: %d", state);
+       bt_avrcp_player_state_e player_state = BT_AVRCP_PLAYER_STATE_STOPPED;
+       switch(state)
+       {
+       case MP_AVRCP_STATE_STOPPED:
+               player_state = BT_AVRCP_PLAYER_STATE_STOPPED;
+               break;
+       case MP_AVRCP_STATE_PLAYING:
+               player_state = BT_AVRCP_PLAYER_STATE_PLAYING;
+               break;
+       case MP_AVRCP_STATE_PAUSED:
+               player_state = BT_AVRCP_PLAYER_STATE_PAUSED;
+               break;
+       case MP_AVRCP_STATE_REW:
+               player_state = BT_AVRCP_PLAYER_STATE_REWIND_SEEK;
+               break;
+       case MP_AVRCP_STATE_FF:
+               player_state = BT_AVRCP_PLAYER_STATE_FORWARD_SEEK;
+               break;
+       default:
+               break;
+       }
+       return bt_avrcp_target_notify_player_state(player_state);
+}
+int mp_avrcp_noti_eq_state(mp_avrcp_eq_state_e eq)
+{
+       DEBUG_TRACE("state: %d", eq);
+       bt_avrcp_equalizer_state_e state = BT_AVRCP_EQUALIZER_STATE_OFF;
+       if(eq == MP_AVRCP_EQ_ON)
+               state = BT_AVRCP_EQUALIZER_STATE_ON;
+
+       return bt_avrcp_target_notify_equalizer_state(state);
+}
+
+int mp_avrcp_noti_repeat_mode(mp_avrcp_repeat_mode_e repeat)
+{
+       DEBUG_TRACE("mode: %d", repeat);
+       bt_avrcp_repeat_mode_e state = BT_AVRCP_REPEAT_MODE_OFF;
+       switch(repeat)
+       {
+       case MP_AVRCP_REPEAT_OFF:
+               state = BT_AVRCP_REPEAT_MODE_OFF;
+               break;
+       case MP_AVRCP_REPEAT_ONE:
+               state = BT_AVRCP_REPEAT_MODE_SINGLE_TRACK;
+               break;
+       case MP_AVRCP_REPEAT_ALL:
+               state = BT_AVRCP_REPEAT_MODE_ALL_TRACK;
+               break;
+       default:
+               break;
+       }
+       return bt_avrcp_target_notify_repeat_mode(state);
+}
+
+int mp_avrcp_noti_shuffle_mode(mp_avrcp_shuffle_mode_e shuffle)
+{
+       DEBUG_TRACE("mode: %d", shuffle);
+       bt_avrcp_shuffle_mode_e state = BT_AVRCP_SHUFFLE_MODE_OFF;
+       switch(shuffle)
+       {
+       case MP_AVRCP_SHUFFLE_OFF:
+               state = BT_AVRCP_SHUFFLE_MODE_OFF;
+               break;
+       case MP_AVRCP_SHUFFLE_ON:
+               state = BT_AVRCP_SHUFFLE_MODE_ALL_TRACK;
+               break;
+       default:
+               break;
+       }
+       return bt_avrcp_target_notify_shuffle_mode(state);
+
+}
+
+int mp_avrcp_noti_track(const char *title, const char *artist, const char *album, const char *genre, unsigned int duration)
+{
+       DEBUG_TRACE("title: %s", title);
+       return bt_avrcp_target_notify_track(title, artist, album, genre, 0, 0, duration);
+}
+
diff --git a/src/core/mp-file-tag-info.c b/src/core/mp-file-tag-info.c
new file mode 100755 (executable)
index 0000000..04683d4
--- /dev/null
@@ -0,0 +1,292 @@
+/*
+ * 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://floralicense.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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <glib.h>
+#include <metadata_extractor.h>
+#include <mm_file.h>
+#include <mm_error.h>
+#include <Ecore_File.h>
+#include "mp-file-tag-info.h"
+#include "mp-player-debug.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)
+{
+       int ret = 0;
+
+       if (!filename || !tag_info)
+       {
+               goto CATCH_ERROR;
+       }
+
+       memset(tag_info, 0x00, sizeof(mp_tag_info_t));
+
+       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 *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);
+
+       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);
+
+       if (!tag_info->title) {
+               const char *name = ecore_file_file_get(filename);
+               tag_info->title = ecore_file_strip_ext(name);
+       }
+
+       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);
+                               }
+                       }
+               }
+               tag_info->albumart_path = path;
+       }
+       SAFE_FREE(albumart);
+       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 (handle)
+               metadata_extractor_destroy(handle);
+
+       return 0;
+
+      CATCH_ERROR:
+       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)
+{
+       if (tag_info == NULL)
+               return;
+
+       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);
+       SAFE_FREE(albumart);
+
+       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
new file mode 100644 (file)
index 0000000..1687afa
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+ * 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://floralicense.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-player-debug.h"
+#include "music.h"
+#include "mp-http-mgr.h"
+
+#define USER_AGENT_KEY         VCONFKEY_ADMIN_UAGENT
+
+static MpHttpState_t   _mp_http_mgr_get_network_status();
+static void _mp_http_mgr_refresh_network_info(mp_http_mgr_t *http_mgr);
+static bool _mp_http_mgr_register_vconf_change_cb(mp_http_mgr_t *http_mgr);
+static void _mp_http_mgr_ignore_vconf_change_cb();
+static void _mp_http_mgr_network_config_changed_cb(keynode_t *node, void *user_data);
+static void _mp_http_mgr_network_disconnect_cb(mp_http_mgr_t *http_mgr);
+
+
+bool mp_http_mgr_create(void *data)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = (struct appdata *)data;
+
+       MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE((!ad->http_mgr));
+
+       ad->http_mgr = calloc(1, sizeof(mp_http_mgr_t));
+       MP_CHECK_FALSE(ad->http_mgr);
+       ad->http_mgr->ad = ad;
+
+       if (!_mp_http_mgr_register_vconf_change_cb(ad->http_mgr))
+               goto mp_exception;
+
+       _mp_http_mgr_refresh_network_info(ad->http_mgr);
+
+       return true;
+
+      mp_exception:
+       mp_http_mgr_destory(ad);
+       return false;
+}
+
+bool mp_http_mgr_destory(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE(ad->http_mgr);
+
+       _mp_http_mgr_ignore_vconf_change_cb();
+       _mp_http_mgr_network_disconnect_cb(ad->http_mgr);
+
+       IF_FREE(ad->http_mgr);
+
+       return TRUE;
+}
+
+const char* mp_http_mgr_get_ip(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_NULL(ad);
+       MP_CHECK_NULL(ad->http_mgr);
+
+       if (strlen(ad->http_mgr->ip) > 0)
+               return (const char *)ad->http_mgr->ip;
+       else
+               return NULL;
+}
+
+const char* mp_http_mgr_get_proxy(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_NULL(ad);
+       MP_CHECK_NULL(ad->http_mgr);
+
+       if (strlen(ad->http_mgr->proxy) > 0)
+               return (const char *)ad->http_mgr->proxy;
+       else
+               return NULL;
+}
+
+bool mp_http_mgr_get_svc_state(void *data, mp_http_svc_type svc_type)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE(ad->http_mgr);
+
+       mp_debug("[%d]svc state is [%d]", svc_type, ad->http_mgr->svc_state[svc_type]);
+       return ad->http_mgr->svc_state[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)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE(ad->http_mgr);
+
+       if (!open_cb && !rsp_cb) {
+               mp_error("no callback");
+               return FALSE;
+       }
+
+       /* excute open callback */
+       if (open_cb) {
+               if (!open_cb(cb_data)) {
+                       mp_error("[%d] svc fail to start", svc_type);
+                       return FALSE;
+               }
+       }
+
+       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;
+}
+
+bool mp_http_mgr_stop_svc(void *data, mp_http_svc_type svc_type, mp_http_response_type response_type)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE(ad->http_mgr);
+
+       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);
+
+       return TRUE;
+}
+
+static MpHttpState_t _mp_http_mgr_get_network_status()
+{
+       MpHttpState_t state = MP_HTTP_STATE_OFF;
+
+       int status = 0;
+       if (vconf_get_int(VCONFKEY_NETWORK_STATUS, &status) == 0) {
+               mp_debug("Network status = [%d]", status);
+       } else {
+               mp_error("vconf_get_int() fail!!");
+               status = 0;
+       }
+
+       if (status == VCONFKEY_NETWORK_CELLULAR)
+               state = MP_HTTP_STATE_CELLULAR;
+       else if (status == VCONFKEY_NETWORK_WIFI)
+               state = MP_HTTP_STATE_WIFI;
+       else
+               state = MP_HTTP_STATE_OFF;
+
+       return status;
+}
+
+static bool _mp_http_mgr_register_vconf_change_cb(mp_http_mgr_t *http_mgr)
+{
+       startfunc;
+       MP_CHECK_FALSE(http_mgr);
+
+       if (vconf_notify_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND,
+                               _mp_http_mgr_network_config_changed_cb, http_mgr) != 0) {
+               mp_error("vconf_notify_key_changed() fail");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static void _mp_http_mgr_ignore_vconf_change_cb()
+{
+       startfunc;
+       if (vconf_ignore_key_changed(VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND,
+                               _mp_http_mgr_network_config_changed_cb) !=0) {
+               mp_error("vconf_ignore_key_changed() fail");
+       }
+}
+
+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);
+                       free(ip);
+                       ip = NULL;
+                       mp_debug("IP [%s]", http_mgr->ip);
+               }
+
+               char *proxy = vconf_get_str(VCONFKEY_NETWORK_PROXY);
+               if (proxy) {
+                       strncpy(http_mgr->proxy, proxy, sizeof(http_mgr->proxy)-1);
+                       free(proxy);
+                       proxy = NULL;
+                       mp_debug("PROXY [%s]", http_mgr->proxy);
+               }
+       }
+}
+
+static void _mp_http_mgr_network_config_changed_cb(keynode_t *node, void *user_data)
+{
+       startfunc;
+       mp_http_mgr_t *http_mgr = (mp_http_mgr_t *)user_data;
+       MP_CHECK(http_mgr);
+
+       if (http_mgr->http_state != MP_HTTP_STATE_OFF) {
+               _mp_http_mgr_network_disconnect_cb(http_mgr);
+       }
+
+       _mp_http_mgr_refresh_network_info(http_mgr);
+}
+
+static void _mp_http_mgr_network_disconnect_cb(mp_http_mgr_t *http_mgr)
+{
+       MP_CHECK(http_mgr);
+
+       mp_debug("!! disconnect old connections !!");
+       int i;
+       for (i = 0 ; i < MP_HTTP_SVC_MAX; i++) {
+               if (http_mgr->svc_state[i])
+                       mp_http_mgr_stop_svc(http_mgr->ad, i , MP_HTTP_RESPONSE_DISCONNECT);
+       }
+}
+
+MpHttpState_t
+mp_http_mgr_get_state(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       MP_CHECK_FALSE(ad);
+       if (!ad->http_mgr)
+       {
+               return MP_HTTP_STATE_NONE;
+       }
+
+       mp_http_mgr_t *http_mgr = ad->http_mgr;
+       mp_debug("http_state = [%d]", http_mgr->http_state);
+
+       return http_mgr->http_state;
+}
+
+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 100644 (file)
index 0000000..b51cd87
--- /dev/null
@@ -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://floralicense.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 <libintl.h>
+
+#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 && 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-lyric-mgr.c b/src/core/mp-lyric-mgr.c
new file mode 100644 (file)
index 0000000..73b1916
--- /dev/null
@@ -0,0 +1,548 @@
+/*
+ * 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://floralicense.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-lyric-mgr.h"
+#include "regex.h"
+#include "mp-player-debug.h"
+#include "music.h"
+
+#define MP_LRC_LINE_COUNT_MAX (int)100 /* The max count of line */
+#define MP_LRC_LINE_COUNT_INC (int)50 /* The size increased when exceed the max count */
+#define MP_LRC_SUBS_COUNT_MAX (int)10 /* The max count of sub string */
+#define MP_LRC_ERROR_BUF_LEN (int)128 /* The max length of error buffer */
+
+#define MP_LYRIC_PARSE_TIME_PATTERN "\\[[0-9]{2}:[0-9]{2}((\\.|:)[0-9]{2})?\\]"
+#define MP_LYRIC_PARSE_ITEM_TITLE "[ti:"
+#define MP_LYRIC_PARSE_ITEM_ARTIST "[ar:"
+#define MP_LYRIC_PARSE_ITEM_ALBUM "[al:"
+#define MP_LYRIC_PARSE_ITEM_OFFSET "[offset:"
+#define MP_LYRIC_PARSE_START_INDEX "["
+#define MP_LYRIC_PARSE_END_INDEX "]"
+#define MP_LYRIC_PARSE_START_CHAR '['
+#define MP_LYRIC_PARSE_END_CHAR ']'
+
+static long _mp_lyric_mgr_str2time(const char *text);
+static mp_lyric_mgr_t* _mp_lyric_mgr_data_malloc(size_t size);
+static void _mp_lyric_mgr_data_free(mp_lyric_mgr_t **data);
+static void _mp_lyric_mgr_parse_line(mp_lyric_mgr_t **data, const char *line);
+static char* _mp_lyric_mgr_extract_lyric(const char *line);
+static mp_lrc_node_t* _mp_lyric_mgr_node_new();
+
+static int _mp_lyric_mgr_node_sort(const void *data1, const void *data2)
+{
+       MP_CHECK_VAL(data1, 0);
+       MP_CHECK_VAL(data2, 0);
+
+       return (((mp_lrc_node_t*)data1)->time > ((mp_lrc_node_t*)data2)->time) ? 1 : -1;
+}
+
+static long
+_mp_lyric_mgr_str2time(const char *text)
+{
+       startfunc;
+
+       MP_CHECK_VAL(text,0);
+
+       int len = strlen(text);
+       long time = 0;
+       char buf[10] = {'0'};
+
+       memcpy(buf, text, 2);
+       buf[2] = '\0';
+       time = atoi(buf) * 60 * 1000;
+
+       if (len == 5)
+       {
+               memcpy(buf, &text[3], 2);
+               buf[2] = '\0';
+               time += atoi(buf) * 1000;
+       }
+       else if (len == 8)
+       {
+               if (text[5] == ':')
+               {
+                       memcpy(buf, &text[3], 2);
+                       buf[2] = '\0';
+                       time += atoi(buf) * 1000;
+
+                       memcpy(buf, &text[6], 2);
+                       buf[2] = '\0';
+                       time += atoi(buf) * 10;
+               }
+               else if (text[5] == '.')
+               {
+                       memcpy(buf, &text[3], 5);
+                       buf[5] = '\0';
+                       time += atof(buf) * 1000;
+               }
+       }
+
+       endfunc;
+
+       return time;
+}
+
+
+static mp_lyric_mgr_t*
+_mp_lyric_mgr_data_malloc(size_t size)
+{
+       startfunc;
+
+       mp_lyric_mgr_t *lrc_data = NULL;
+
+       lrc_data = (mp_lyric_mgr_t*)malloc(sizeof(mp_lyric_mgr_t));
+       if (lrc_data != NULL)
+       {
+               memset(lrc_data, 0, sizeof(mp_lyric_mgr_t));
+       }
+
+       endfunc;
+
+       return lrc_data;
+}
+
+static void
+_mp_lryic_mgr_list_free(Eina_List **list)
+{
+       mp_lrc_node_t *node = NULL;
+       Eina_List *next = NULL;
+       EINA_LIST_FOREACH(*list, next, node)
+       {
+               if (node)
+               {
+                       if (node->lyric != NULL)
+                               free(node->lyric);
+                       free(node);
+               }
+       }
+
+       eina_list_free(*list);
+       *list = NULL;
+}
+
+static void
+_mp_lyric_mgr_data_free(mp_lyric_mgr_t **data)
+{
+       startfunc;
+
+       MP_CHECK(data);
+
+       mp_lyric_mgr_t **lrc_data = data;
+       if (*lrc_data != NULL)
+       {
+               if ((*lrc_data)->title != NULL)
+                       free((*lrc_data)->title);
+
+               if ((*lrc_data)->artist != NULL)
+                       free((*lrc_data)->artist);
+
+               if ((*lrc_data)->album != NULL)
+                       free((*lrc_data)->album);
+
+               if ((*lrc_data)->synclrc_list != NULL)
+                       _mp_lryic_mgr_list_free(&(*lrc_data)->synclrc_list);
+
+               if ((*lrc_data)->unsynclrc_list != NULL)
+                       _mp_lryic_mgr_list_free(&(*lrc_data)->unsynclrc_list);
+
+               free(*lrc_data);
+               *lrc_data = NULL;
+       }
+
+       endfunc;
+}
+
+static char*
+_mp_lyric_mgr_extract_lyric(const char *line)
+{
+       startfunc;
+
+       MP_CHECK_NULL(line);
+
+       char *lyric = (char*)malloc(sizeof(char)*strlen(line));
+       MP_CHECK_NULL(line);
+       memset(lyric, 0, sizeof(char)*strlen(line));
+
+       int i = 0;
+       const char *p = line;
+       bool bTag = false;
+       while((*p != '\0') && (*p != '\n'))
+       {
+               if (bTag)
+               {
+                       if(*p == MP_LYRIC_PARSE_END_CHAR)
+                       {
+                               bTag = false;
+                       }
+               }
+               else
+               {
+                       if(*p == MP_LYRIC_PARSE_START_CHAR)
+                       {
+                               bTag = true;
+                       }
+                       else
+                       {
+                               lyric[i++] = *p;
+                       }
+               }
+
+               p++;
+       }
+
+       endfunc;
+
+       return lyric;
+}
+
+static void
+_mp_lyric_mgr_parse_line(mp_lyric_mgr_t **data, const char *line)
+{
+       startfunc;
+
+       MP_CHECK(data);
+       MP_CHECK(line);
+       DEBUG_TRACE("line=%s\n", line);
+
+       mp_lyric_mgr_t **lrc_data = data;
+       MP_CHECK(*lrc_data);
+
+       regex_t regex;
+       regmatch_t subs[MP_LRC_SUBS_COUNT_MAX];
+       const size_t nmatch = MP_LRC_SUBS_COUNT_MAX;
+       char errbuf[MP_LRC_ERROR_BUF_LEN];
+       const char *start = NULL, *end = NULL, *head = NULL;
+       char* pattern_lyric = MP_LYRIC_PARSE_TIME_PATTERN; //[mm:ss.ff],[mm:ss:ff],[mm:ss]
+       char* lyric = NULL;
+
+       /* Get title */
+       head = line;
+       start = strstr(head, MP_LYRIC_PARSE_ITEM_TITLE);
+       int ti_len = strlen(MP_LYRIC_PARSE_ITEM_TITLE);
+       if (start != NULL)
+       {
+               end = strstr(start, MP_LYRIC_PARSE_END_INDEX);
+               if (end != NULL)
+               {
+                       (*lrc_data)->title = malloc(sizeof(char)*(end-start-ti_len+1));
+                       mp_assert((*lrc_data)->title);
+                       strncpy((*lrc_data)->title, start+ti_len, end-start-ti_len);
+                       (*lrc_data)->title[end-start-ti_len] = '\0';
+                       DEBUG_TRACE("title: %s\n", (*lrc_data)->title);
+               }
+       }
+
+       /* Get artist */
+       start = strstr(head, MP_LYRIC_PARSE_ITEM_ARTIST);
+       int ar_len = strlen(MP_LYRIC_PARSE_ITEM_ARTIST);
+       if (start != NULL)
+       {
+               end = strstr(start, MP_LYRIC_PARSE_END_INDEX);
+               if (end != NULL)
+               {
+                       (*lrc_data)->artist = malloc(sizeof(char)*(end-start-ar_len+1));
+                       mp_assert((*lrc_data)->artist);
+                       strncpy((*lrc_data)->artist, start+ar_len, end-start-ar_len);
+                       (*lrc_data)->artist[end-start-ar_len] = '\0';
+                       DEBUG_TRACE("title: %s\n", (*lrc_data)->artist);
+               }
+       }
+
+       /* Get album */
+       start = strstr(head, MP_LYRIC_PARSE_ITEM_ALBUM);
+       int al_len = strlen(MP_LYRIC_PARSE_ITEM_ALBUM);
+       if (start != NULL)
+       {
+               end = strstr(start, MP_LYRIC_PARSE_END_INDEX);
+               if (end != NULL)
+               {
+                       (*lrc_data)->album = malloc(sizeof(char)*(end-start-al_len+1));
+                       mp_assert((*lrc_data)->album);
+                       strncpy((*lrc_data)->album, start+al_len, end-start-al_len);
+                       (*lrc_data)->album[end-start-al_len] = '\0';
+                       DEBUG_TRACE("title: %s\n", (*lrc_data)->album);
+               }
+       }
+
+       /* Get offset */
+       start = strstr(head, MP_LYRIC_PARSE_ITEM_OFFSET);
+       int offset_len = strlen(MP_LYRIC_PARSE_ITEM_OFFSET);
+       if (start != NULL)
+       {
+               end = strstr(start, MP_LYRIC_PARSE_END_INDEX);
+               if (end != NULL)
+               {
+                       char buf[MP_LRC_LINE_BUF_LEN] = {'0'};
+                       memcpy(buf, start+offset_len, end-start-offset_len);
+                       buf[end-start-offset_len] = '\0';
+                       (*lrc_data)->offset = atoi(buf);
+                       DEBUG_TRACE("offset: %d\n", (*lrc_data)->offset);
+               }
+       }
+
+       /* Get lyric */
+       size_t len;
+       int err;
+
+       err = regcomp(&regex, pattern_lyric, REG_EXTENDED);
+       if (err != 0)
+       {
+               len = regerror(err, &regex, errbuf, sizeof(errbuf));
+               DEBUG_TRACE("errinfo: regcomp: %s\n", errbuf);
+               goto FAIL_GET_PARSE_LINE;
+       }
+
+       DEBUG_TRACE("Total has subexpression: %d\n", regex.re_nsub);
+
+       lyric = _mp_lyric_mgr_extract_lyric(head);
+
+       while( !(err = regexec(&regex, head, nmatch, subs, 0)))
+       {
+               DEBUG_TRACE("\nOK, has matched ...\n\n");
+
+               len = subs[0].rm_eo - subs[0].rm_so - 2;
+
+               DEBUG_TRACE("begin: %d, len = %d ", subs[0].rm_so, len);
+
+               char buf[MP_LRC_LINE_BUF_LEN] = {'0'};
+               memcpy(buf, head+subs[0].rm_so+1, len);
+               buf[len] = '\0';
+
+               long time = _mp_lyric_mgr_str2time(buf);
+               /* Add the new node */
+               if (lyric != NULL)
+               {
+                       mp_lrc_node_t *new_node = _mp_lyric_mgr_node_new();
+                       new_node->time = time;
+                       new_node->lyric = strdup(lyric);
+                       (*lrc_data)->synclrc_list = eina_list_append((*lrc_data)->synclrc_list, (gpointer)new_node);
+
+                       DEBUG_TRACE("time%d: %d\n", eina_list_count((*lrc_data)->synclrc_list), new_node->time);
+                       DEBUG_TRACE("lyric%d: %s\n", eina_list_count((*lrc_data)->synclrc_list), new_node->lyric);
+               }
+               else
+                       goto FAIL_GET_PARSE_LINE;
+
+               head += subs[0].rm_eo;
+       }
+
+       if (head != NULL)
+       {
+               len = regerror(err, &regex, errbuf, sizeof(errbuf));
+               DEBUG_TRACE("error: regexec: %s\n", errbuf);
+       }
+
+       regfree(&regex);
+       IF_FREE(lyric);
+
+       endfunc;
+
+       return;
+
+FAIL_GET_PARSE_LINE:
+
+       regfree(&regex);
+       IF_FREE(lyric);
+
+       endfunc;
+
+       return;
+}
+
+static int
+_mp_lyric_mgr_get_line(const char *buffer, char **line)
+{
+       startfunc;
+
+       MP_CHECK_VAL(buffer, -1);
+       MP_CHECK_VAL(line, -1);
+
+       int i = 0;
+       const char *p = buffer;
+
+       while ((*p != '\0') && (*p != '\n'))
+       {
+               i++;
+               p++;
+       }
+
+       i++;
+
+       *line = malloc(sizeof(char)*i);
+       MP_CHECK_VAL(line, -1);
+       memset(*line, 0, sizeof(char)*i);
+       strncpy(*line, buffer, i-1);
+
+       DEBUG_TRACE("line=%s\n",*line);
+       DEBUG_TRACE("i=%d\n",i);
+
+       return i;
+
+       endfunc;
+}
+
+static mp_lrc_node_t*
+_mp_lyric_mgr_node_new()
+{
+       startfunc;
+
+       mp_lrc_node_t *lrc_node = NULL;
+
+       lrc_node = (mp_lrc_node_t*)malloc(sizeof(mp_lrc_node_t));
+       if (lrc_node != NULL)
+       {
+               memset(lrc_node, 0, sizeof(mp_lrc_node_t));
+       }
+
+       endfunc;
+
+       return lrc_node;
+}
+
+mp_lyric_mgr_t*
+mp_lyric_mgr_parse_buffer(const char *lrcBuffer)
+{
+       startfunc;
+
+       MP_CHECK_NULL(lrcBuffer);
+
+       mp_lyric_mgr_t *lrc_data = _mp_lyric_mgr_data_malloc(1);
+       MP_CHECK_NULL(lrc_data);
+
+       /* Parse lyric data line by line */
+       char *line = NULL;
+       const char *p = lrcBuffer;
+       int len = strlen(p);
+       int pos = 0;
+
+       do
+       {
+               pos += _mp_lyric_mgr_get_line(&p[pos], &line);
+
+               /* Save the lyric */
+               mp_lrc_node_t *new_node = _mp_lyric_mgr_node_new();
+               new_node->time = 0;
+               new_node->lyric = line;
+
+               lrc_data->unsynclrc_list = eina_list_append(lrc_data->unsynclrc_list, (gpointer)new_node);
+
+               /* Parse and sort the lyric by time tag */
+               _mp_lyric_mgr_parse_line(&lrc_data, line);
+       } while (pos <= len);
+
+       DEBUG_TRACE("sync count=%d\n", eina_list_count(lrc_data->synclrc_list));
+       DEBUG_TRACE("unsync count=%d\n", eina_list_count(lrc_data->unsynclrc_list));
+
+       endfunc;
+
+       return lrc_data;
+}
+
+mp_lyric_mgr_t*
+mp_lyric_mgr_parse_file(const char *lrcPath)
+{
+       startfunc;
+
+       MP_CHECK_NULL(lrcPath);
+
+       mp_lyric_mgr_t *lrc_data = NULL;
+
+       /* Parse lyric file line by line */
+       FILE *file = fopen(lrcPath,"r");
+       if (file != NULL)
+       {
+               lrc_data = _mp_lyric_mgr_data_malloc(1);
+               if (lrc_data == NULL)
+               {
+                       fclose(file);
+                       file = NULL;
+                       return NULL;
+               }
+
+               char line[MP_LRC_LINE_BUF_LEN];
+               while( fgets(line, sizeof(line), file) )
+               {
+                       /* Save the lyric */
+                       mp_lrc_node_t *new_node = _mp_lyric_mgr_node_new();
+                       new_node->time = 0;
+                       new_node->lyric = strdup(line);
+                       lrc_data->unsynclrc_list = eina_list_append(lrc_data->unsynclrc_list, (gpointer)new_node);
+
+                       /* Parse and sort the lyric by time tag */
+                       _mp_lyric_mgr_parse_line(&lrc_data, line);
+               }
+
+               fclose(file);
+               file = NULL;
+       }
+
+       endfunc;
+
+       return lrc_data;
+}
+
+bool
+mp_lyric_mgr_create(void *data, void *lrcData, mp_lyric_source_type source_type)
+{
+       struct appdata *ad = data;
+
+       MP_CHECK_FALSE(ad);
+
+       if(ad->lyric_mgr)
+               _mp_lyric_mgr_data_free(&ad->lyric_mgr);
+
+       if(source_type == MP_LYRIC_SOURCE_BUFFER)
+               ad->lyric_mgr = mp_lyric_mgr_parse_buffer(lrcData);
+       else if(source_type == MP_LYRIC_SOURCE_FILE)
+               ad->lyric_mgr = mp_lyric_mgr_parse_file(lrcData);
+       else if (source_type == MP_LYRIC_SOURCE_LIST)
+       {
+               ad->lyric_mgr = _mp_lyric_mgr_data_malloc(1);
+               ad->lyric_mgr->synclrc_list = lrcData;
+       }
+
+       ad->lyric_mgr->source_type = source_type;
+
+       /* Sort lyric line */
+       Eina_List *list = ad->lyric_mgr->synclrc_list;
+       int count = eina_list_count(list);
+
+       if (count <= 0)
+       {
+               list = ad->lyric_mgr->unsynclrc_list;
+               count = eina_list_count(list);
+       }
+
+       list = eina_list_sort(list, count, _mp_lyric_mgr_node_sort);
+       MP_CHECK_FALSE(list);
+
+       return true;
+}
+
+
+bool
+mp_lyric_mgr_destory(void *data)
+{
+       struct appdata *ad = data;
+
+       MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE(ad->lyric_mgr);
+
+       _mp_lyric_mgr_data_free(&ad->lyric_mgr);
+
+       return true;
+}
diff --git a/src/core/mp-player-control.c b/src/core/mp-player-control.c
new file mode 100755 (executable)
index 0000000..2fa7f07
--- /dev/null
@@ -0,0 +1,857 @@
+/*
+ * 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://floralicense.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 <syspopup_caller.h>
+#include <sound_manager.h>
+#include <player.h>
+
+#include "music.h"
+#include "mp-ta.h"
+#include "mp-player-control.h"
+#include "mp-player-mgr.h"
+#include "mp-player-drm.h"
+#include "mp-play-view.h"
+#include "mp-item.h"
+#include "mp-playlist-mgr.h"
+#include "mp-play.h"
+#include "mp-util.h"
+#include "mp-setting-ctrl.h"
+#include "mp-player-mgr.h"
+#include "mp-app.h"
+#include "mp-player-debug.h"
+#include "mp-minicontroller.h"
+#include "mp-widget.h"
+#include "mp-streaming-mgr.h"
+#include "mp-ug-launch.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
+
+#ifdef MP_FEATURE_AVRCP_13
+#include "mp-avrcp.h"
+#endif
+
+
+#define CTR_EDJ_SIG_SRC "ctrl_edj"
+#define CTR_PROG_SIG_SRC "ctrl_prog"
+
+#define LONG_PRESS_INTERVAL             1.0    //sec
+#define FF_REW_INTERVAL             0.5                //sec
+#define LONG_PRESS_TIME_INCREASE       1.0     //sec
+
+static Eina_Bool _mp_play_mute_popup_cb(void *data);
+
+static void
+_mp_play_control_error_timeout(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+       mp_plst_item *next = mp_playlist_mgr_get_next(ad->playlist_mgr, false);
+       mp_plst_item *current = mp_playlist_mgr_get_current(ad->playlist_mgr);
+
+       if(next == current)
+       {
+               WARN_TRACE("There is no playable track.. ");
+               return;
+       }
+
+       mp_playlist_mgr_item_remove_item(ad->playlist_mgr, current);
+       if(next)
+       {
+               mp_playlist_mgr_set_current(ad->playlist_mgr, next);
+               mp_play_new_file(ad, true);
+       }
+       else
+               mp_playlist_mgr_set_current(ad->playlist_mgr, mp_playlist_mgr_get_nth(ad->playlist_mgr, 0));
+
+       if(ad->playing_view)
+               mp_play_view_refresh(ad);
+
+}
+
+static void
+_mp_play_error_handler(struct appdata *ad, const char *msg)
+{
+       startfunc;
+       mp_play_destory(ad);
+
+       if(ad->app_is_foreground && ad->playing_view)
+               mp_widget_text_popup_with_cb(ad, msg,
+                       _mp_play_control_error_timeout);
+       else
+               _mp_play_control_error_timeout(ad);
+}
+
+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)
+{
+       startfunc;
+
+       struct appdata *ad = data;
+       mp_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       double pos = 0, duration = 0, new_pos = 0;
+
+       if (ad->is_ff)
+       {
+               ad->ff_rew += LONG_PRESS_TIME_INCREASE;
+#ifdef MP_FEATURE_AVRCP_13
+               if(!ad->is_Longpress)
+                       mp_avrcp_noti_player_state(MP_AVRCP_STATE_FF);
+#endif
+       }
+       else
+       {
+               ad->ff_rew -= LONG_PRESS_TIME_INCREASE;
+#ifdef MP_FEATURE_AVRCP_13
+               if(!ad->is_Longpress)
+                       mp_avrcp_noti_player_state(MP_AVRCP_STATE_FF);
+#endif
+       }
+
+       ad->is_Longpress = true;
+
+       duration = mp_player_mgr_get_duration();
+       pos = mp_player_mgr_get_position();
+
+       ad->music_length = duration / 1000;
+       ad->music_pos = pos / 1000;
+
+       new_pos = ad->music_pos + ad->ff_rew;
+
+       mp_debug("new pos=%f", new_pos);
+
+       int req_seek_pos = 0;
+       if (new_pos < 0.)
+       {
+               ad->music_pos = 0;
+               req_seek_pos = 0;
+       }
+       else if (new_pos > ad->music_length)
+       {
+               ad->music_pos = ad->music_length;
+               req_seek_pos = duration;
+       }
+       else
+       {
+               ad->music_pos = new_pos;
+               req_seek_pos = new_pos * 1000;
+       }
+
+       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);
+       }
+
+       ecore_timer_interval_set(ad->longpress_timer, FF_REW_INTERVAL);
+
+       endfunc;
+
+       return ECORE_CALLBACK_RENEW;
+
+}
+
+static void
+_mp_play_control_add_longpressed_timer(void *data)
+{
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       MP_CHECK(!ad->longpress_timer);
+
+       ad->longpress_timer =
+               ecore_timer_add(LONG_PRESS_INTERVAL, _mp_play_control_long_pressed_cb, ad);
+}
+
+void
+_mp_play_control_del_longpressed_timer(void *data)
+{
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       ad->ff_rew = 0;
+       mp_ecore_timer_del(ad->longpress_timer);
+}
+
+static void
+_mp_play_control_completed_cb(void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(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);
+
+       switch(code)
+       {
+       case PLAYER_INTERRUPTED_BY_MEDIA:
+               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");
+               /* ready to resume */
+               if (ad->player_state == PLAY_STATE_PAUSED)
+                       mp_play_control_play_pause(ad, true);
+               return;
+               break;
+       default:
+               DEBUG_TRACE("Unhandled code: %d", code);
+               break;
+       }
+
+       mp_play_pause(ad);
+}
+
+static void
+_mp_play_control_error_cb(int error_code, void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       ERROR_TRACE("\n\nError from player");
+
+       switch (error_code)
+       {
+       case PLAYER_ERROR_OUT_OF_MEMORY:
+               ERROR_TRACE("PLAYER_ERROR_OUT_OF_MEMORY");
+               break;
+       case PLAYER_ERROR_INVALID_PARAMETER:
+               ERROR_TRACE("PLAYER_ERROR_INVALID_PARAMETER");
+               break;
+       case PLAYER_ERROR_NOT_SUPPORTED_FILE:   //can receive error msg while playing.
+               ERROR_TRACE("receive MM_ERROR_PLAYER_CODEC_NOT_FOUND");
+               _mp_play_error_handler(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"));
+               break;
+       case PLAYER_ERROR_CONNECTION_FAILED:
+               ERROR_TRACE("MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL");
+               mp_streaming_mgr_buffering_popup_control(ad, FALSE);
+               _mp_play_error_handler(ad, GET_SYS_STR("IDS_COM_POP_CONNECTION_FAILED"));
+               break;
+       default:
+               ERROR_TRACE("error_code: %d", error_code);
+               _mp_play_error_handler(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"));
+       }
+}
+
+static void
+_mp_play_control_buffering_cb(int percent, void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       mp_debug("Buffering : %d%% \n", percent);
+
+       bool is_show_buffering = true;
+       if (percent >= 100)
+               is_show_buffering = false;
+
+       mp_streaming_mgr_buffering_popup_control(ad, is_show_buffering);
+}
+
+static void
+_mp_play_control_prepare_cb(void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+#ifdef MP_FEATURE_PLAY_SPEED
+       mp_player_mgr_set_play_speed(mp_setting_get_play_speed());
+#endif
+
+       mp_play_current_file(ad);
+}
+
+bool
+mp_player_control_ready_new_file(void *data, bool check_drm)
+{
+       startfunc;
+
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad);
+
+       mp_plst_item *item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK_FALSE(item);
+
+       bool is_drm = FALSE;
+
+       //mp_play_control_play_pause_icon_set(ad, TRUE);
+       DEBUG_TRACE("current item pathname : [%s]", item->uri);
+       if (mp_util_check_uri_available(item->uri))
+       {
+               mp_debug("http uri path");
+       }
+       else    if (!mp_check_file_exist(item->uri))
+       {
+               ERROR_TRACE("There is no such file\n");
+               _mp_play_error_handler(ad, GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST"));
+               return FALSE;
+       }
+
+       //DRM File Check
+       if (check_drm)
+       {
+               if (mp_drm_file_right(item->uri))
+               {
+                       DEBUG_TRACE("This is DRM Contents\n");
+                       is_drm = TRUE;
+
+                       if (!mp_drm_check_left_ro(ad, item->uri))       //drm pop-up  raised.
+                               return FALSE;
+
+                       if (!mp_drm_check_forward(ad, item->uri))
+                               return FALSE;
+               }
+       }
+       else
+               is_drm = TRUE;
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+       if (is_drm)
+               mp_drm_set_consumption(TRUE);
+#endif
+
+       ad->player_state = PLAY_STATE_NONE;
+
+       mp_player_type_e player_type = MP_PLAYER_TYPE_MMFW;
+       void *extra_data = NULL;
+
+       if (!mp_player_mgr_create(ad, item->uri, player_type, extra_data))
+       {
+               _mp_play_error_handler(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
+               return FALSE;
+       }
+
+       mp_player_mgr_set_started_db(mp_play_start, 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);
+       mp_player_mgr_set_prepare_cb(_mp_play_control_prepare_cb, ad);
+       mp_player_mgr_set_paused_cb(mp_play_pause, ad);
+
+
+       if (!mp_player_mgr_realize(ad))
+       {
+               _mp_play_error_handler(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+void
+mp_play_control_play_pause(struct appdata *ad, bool play)
+{
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("play [%d], ad->player_state: %d", play, ad->player_state);
+
+       if (play)
+       {
+               ad->paused_by_user = FALSE;
+
+               if (ad->player_state == PLAY_STATE_PAUSED)
+               {
+                       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)
+               {
+                       mp_play_current_file(ad);
+               }
+               else if (ad->player_state == PLAY_STATE_PLAYING)
+               {
+                       DEBUG_TRACE("player_state is already playing. Skip event");
+               }
+               else if (ad->player_state == PLAY_STATE_PREPARING)
+               {
+                       WARN_TRACE("player_state is preparing. Skip event");
+               }
+               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);
+               }
+
+#ifdef MP_FEATURE_AUTO_OFF
+               mp_ecore_timer_del(ad->pause_off_timer);
+#endif
+       }
+       else
+       {
+               if (ad->player_state == PLAY_STATE_PLAYING)
+               {
+                       if(mp_player_mgr_pause(ad))
+                       {
+                               ad->paused_by_user = TRUE;
+                       }
+               }
+               else if (ad->player_state == PLAY_STATE_PREPARING)
+               {
+                       WARN_TRACE("player_state is prepareing. set paused_by_user!!!");
+                       ad->paused_by_user = TRUE;
+               }
+       }
+
+}
+
+void mp_player_control_stop(struct appdata *ad)
+{
+       startfunc;
+       mp_player_mgr_stop(ad);
+}
+
+void
+mp_play_control_ff_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       DEBUG_TRACE("mp_play_control_ff_cb [%s]\n", emission);
+
+       ad->is_ff = TRUE;
+
+       if (!strcmp(emission, "ff_btn_down") && !strcmp(source, CTR_EDJ_SIG_SRC))
+       {
+               if(!ad->seek_off)
+                       _mp_play_control_add_longpressed_timer(ad);
+       }
+       else if (!strcmp(emission, "ff_btn_up") && !strcmp(source, CTR_EDJ_SIG_SRC))
+       {
+               _mp_play_control_del_longpressed_timer(ad);
+
+               if (ad->is_Longpress)
+               {
+                       ad->is_Longpress = false;
+#ifdef MP_FEATURE_AVRCP_13
+                       if(ad->player_state == PLAY_STATE_PLAYING)
+                               mp_avrcp_noti_player_state(MP_AVRCP_STATE_PLAYING);
+                       else if(ad->player_state == PLAY_STATE_PAUSED)
+                               mp_avrcp_noti_player_state(MP_AVRCP_STATE_PAUSED);
+                       else
+                               mp_avrcp_noti_player_state(MP_AVRCP_STATE_STOPPED);
+#endif
+               }
+               else
+               {
+#ifdef ENABLE_RICHINFO
+#ifdef MP_SOUND_PLAYER
+                       if(ad->info_ug_base) {
+                               mp_play_view_unswallow_info_ug_layout(ad);
+                               sp_view_mgr_pop_view_to(ad->view_mgr, SP_VIEW_TYPE_PLAY);
+                       }
+
+                       MP_CHECK(ad->playing_view);
+                       evas_object_show(ad->playing_view->layout);
+#else
+                       mp_view_manager_pop_info_view(ad);
+#endif
+#endif
+                       if(ad->playing_view)
+                               ad->playing_view->flick_direction = 1;
+
+                       mp_play_next_file(ad, TRUE);
+               }
+       }
+
+
+}
+
+void
+mp_play_control_rew_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("mp_play_control_rew_cb [%s]\n", emission);
+
+       ad->is_ff = FALSE;
+
+       if (!strcmp(emission, "rew_btn_down"))
+       {
+               if(!ad->seek_off)
+                       _mp_play_control_add_longpressed_timer(ad);
+       }
+       else if (!strcmp(emission, "rew_btn_up"))
+       {
+               _mp_play_control_del_longpressed_timer(ad);
+
+               if (ad->is_Longpress)
+               {
+                       ad->is_Longpress = false;
+#ifdef MP_FEATURE_AVRCP_13
+                       if(ad->player_state == PLAY_STATE_PLAYING)
+                               mp_avrcp_noti_player_state(MP_AVRCP_STATE_PLAYING);
+                       else if(ad->player_state == PLAY_STATE_PAUSED)
+                               mp_avrcp_noti_player_state(MP_AVRCP_STATE_PAUSED);
+                       else
+                               mp_avrcp_noti_player_state(MP_AVRCP_STATE_STOPPED);
+#endif
+               }
+               else
+               {
+                       int pos = mp_player_mgr_get_position();
+                       if (pos > 3000 ||mp_playlist_mgr_count(ad->playlist_mgr) == 1)
+                       {
+                               mp_player_mgr_set_position(0, NULL, NULL);
+
+                               if (!ad->paused_by_user && ad->player_state == PLAY_STATE_PAUSED)
+                               {
+                                       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
+                               {
+                                       ad->music_pos = 0;
+                                       mp_play_view_update_progressbar(ad);
+                               }
+                               return;
+                       }
+
+
+#ifdef ENABLE_RICHINFO
+#ifdef MP_SOUND_PLAYER
+                       if(ad->info_ug_base) {
+                               mp_play_view_unswallow_info_ug_layout(ad);
+                               sp_view_mgr_pop_view_to(ad->view_mgr, SP_VIEW_TYPE_PLAY);
+                       }
+
+                       MP_CHECK(ad->playing_view);
+                       evas_object_show(ad->playing_view->layout);
+#else
+                       mp_view_manager_pop_info_view(ad);
+#endif
+#endif
+                       if(ad->playing_view)
+                               ad->playing_view->flick_direction = 2;
+                       mp_play_prev_file(ad);
+
+               }
+       }
+
+}
+
+#define MP_LONG_PRESS_TIMEOUT 1.0
+#define MUTE_POPUP_INTERVAL_TIME                               3.0
+
+static Eina_Bool
+_mp_play_control_volume_timer_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       ad->volume_long_pressed = true;
+       mp_ecore_timer_del(ad->volume_down_timer);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+       //previous status is mute
+       if (ad->mute_flag)
+       {
+               edje_object_signal_emit(_EDJ(playing_view->play_icon), "unmute", "volume");
+               edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
+               ad->mute_flag = false;
+       }
+       else
+       {               //previous status is unmute
+               edje_object_signal_emit(_EDJ(playing_view->play_icon), "mute", "volume");
+               edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_SHOW, "*");
+               ad->mute_flag = true;
+               mp_ecore_timer_del(ad->mute_popup_show_timer);
+               ad->mute_popup_show_timer =
+                       ecore_timer_add(MUTE_POPUP_INTERVAL_TIME, _mp_play_mute_popup_cb, (void *)ad);
+       }
+
+       return EINA_FALSE;
+}
+
+void
+mp_play_control_volume_down_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       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;
+}
+
+void
+mp_play_control_volume_up_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_ecore_timer_del(ad->volume_down_timer);
+       return;
+}
+
+static Eina_Bool
+_mp_play_mute_popup_cb(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       mp_ecore_timer_del(ad->mute_popup_show_timer);
+
+       edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
+       endfunc;
+       return EINA_FALSE;
+}
+
+void
+mp_play_control_volume_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_ecore_timer_del(ad->volume_down_timer);
+
+       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, "*");
+               mp_ecore_timer_del(ad->mute_popup_show_timer);
+               ad->mute_popup_show_timer =
+                       ecore_timer_add(MUTE_POPUP_INTERVAL_TIME, _mp_play_mute_popup_cb, (void *)ad);
+       }
+       else {
+               mp_play_view_volume_widget_show(ad, true);
+       }
+
+       return;
+}
+
+void
+mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       DEBUG_TRACE("mp_play_control_menu_cb with[%s]\n", emission);
+
+       if (!strcmp(emission, SIGNAL_INFO))
+       {
+       }
+       else if (!strcmp(emission, SIGNAL_MAINALBUM_CLICKED))
+       {
+       }
+       else if (!strcmp(emission, SIGNAL_SHUFFLE))
+       {                       // TURN OFF SHUFFLE
+               if (!mp_setting_set_shuffle_state(FALSE))
+               {
+                       mp_play_control_shuffle_set(ad, FALSE);
+               }
+               mp_playlist_mgr_set_shuffle(ad->playlist_mgr, FALSE);
+#ifdef MP_FEATURE_AVRCP_13
+               mp_avrcp_noti_shuffle_mode(MP_AVRCP_SHUFFLE_OFF);
+#endif
+       }
+       else if (!strcmp(emission, SIGNAL_SHUFNON))
+       {                       // TURN ON SHUFFE
+
+               if (!mp_setting_set_shuffle_state(TRUE))
+               {
+                       mp_play_control_shuffle_set(ad, TRUE);
+               }
+               mp_playlist_mgr_set_shuffle(ad->playlist_mgr, TRUE);
+#ifdef MP_FEATURE_AVRCP_13
+               mp_avrcp_noti_shuffle_mode(MP_AVRCP_SHUFFLE_ON);
+#endif
+       }
+       else if (!strcmp(emission, SIGNAL_REPALL))      //off -1 - all - off
+       {
+               if (!mp_setting_set_repeat_state(MP_SETTING_REP_NON))
+                       mp_play_control_repeat_set(ad, MP_SETTING_REP_NON);
+
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_NONE);
+#ifdef MP_FEATURE_AVRCP_13
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_OFF);
+#endif
+       }
+       else if (!strcmp(emission, SIGNAL_REPNON))
+       {
+               if (!mp_setting_set_repeat_state(MP_SETTING_REP_1))
+                       mp_play_control_repeat_set(ad, MP_SETTING_REP_1);
+
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_ONE);
+#ifdef MP_FEATURE_AVRCP_13
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_ONE);
+#endif
+       }
+       else if (!strcmp(emission, SIGNAL_REP1))
+       {
+               if (!mp_setting_set_repeat_state(MP_SETTING_REP_ALL))
+                       mp_play_control_repeat_set(ad, MP_SETTING_REP_ALL);
+
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_ALL);
+#ifdef MP_FEATURE_AVRCP_13
+               mp_avrcp_noti_repeat_mode(MP_AVRCP_REPEAT_ALL);
+#endif
+       }
+}
+
+
+void
+mp_play_control_end_of_stream(void *data)
+{
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       ad->music_pos = ad->music_length;
+       mp_play_view_update_progressbar(ad);
+
+       mp_play_next_file(ad, FALSE);
+}
+
+
+
+void
+mp_play_control_play_pause_icon_set(void *data, bool play_enable)
+{
+       struct appdata *ad = data;
+       Evas_Object *buttons = NULL;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       mp_retm_if(ad->playing_view == NULL, "playing_view is NULL");
+       mp_retm_if(ad->playing_view->play_control == NULL, "play_contol is NULL");
+
+       buttons = evas_object_data_get(ad->playing_view->play_control, "buttons");
+       mp_retm_if(buttons == NULL, "button is NULL");
+
+       if (play_enable)
+       {
+               edje_object_signal_emit(_EDJ(buttons), "play", CTR_PROG_SIG_SRC);
+       }
+       else
+       {
+               edje_object_signal_emit(_EDJ(buttons), "pause", CTR_PROG_SIG_SRC);
+       }
+
+}
+
+void
+mp_play_control_shuffle_set(void *data, bool shuffle_enable)
+{
+       struct appdata *ad = data;
+
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       mp_retm_if(ad->playing_view == NULL, "playing_view is NULL");
+       mp_retm_if(ad->playing_view->play_menu == NULL, "play_menu is NULL");
+
+       if (shuffle_enable)
+       {
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "shuffle_visible", "shuffle");
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "shuffle_non_invisible", "shuffle_non");
+       }
+       else
+       {
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "shuffle_invisible", "shuffle");
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "shuffle_non_visible", "shuffle_non");
+       }
+}
+
+
+void
+mp_play_control_repeat_set(void *data, int repeat_state)
+{
+       struct appdata *ad = data;
+
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       mp_retm_if(ad->playing_view == NULL, "playing_view is NULL");
+       mp_retm_if(ad->playing_view->play_menu == NULL, "play_menu is NULL");
+
+       if (repeat_state == MP_PLST_REPEAT_ALL)
+       {
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_all_visible", "rep_all");
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_1_invisible", "rep_1");
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_non_invisible", "rep_non");
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_ALL);
+       }
+       else if (repeat_state == MP_PLST_REPEAT_ONE)
+       {
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_all_invisible", "rep_all");
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_1_visible", "rep_1");
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_non_invisible", "rep_non");
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_ONE);
+       }
+       else if (repeat_state == MP_PLST_REPEAT_NONE)
+       {
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_all_invisible", "rep_all");
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_1_invisible", "rep_1");
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_menu), "rep_non_visible", "rep_non");
+               mp_playlist_mgr_set_repeat(ad->playlist_mgr, MP_PLST_REPEAT_NONE);
+       }
+       else
+               ERROR_TRACE("Error when set repeat\n");
+
+}
+
diff --git a/src/core/mp-player-drm.c b/src/core/mp-player-drm.c
new file mode 100644 (file)
index 0000000..37806ad
--- /dev/null
@@ -0,0 +1,903 @@
+/*
+ * 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://floralicense.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 "music.h"
+#include <drm_client.h>
+#include <drm_client_types.h>
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+#include <drm_trusted_client.h>
+#include <drm_trusted_client_types.h>
+#endif
+
+#include "mp-player-drm.h"
+#include "mp-item.h"
+#include "mp-player-control.h"
+#include "mp-play.h"
+#include "mp-player-debug.h"
+#include "mp-playlist-mgr.h"
+#include "mp-util.h"
+#include "mp-popup.h"
+#include "mp-widget.h"
+
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+static DRM_DECRYPT_HANDLE _g_drm_handle = NULL;
+static bool _g_drm_consumption = FALSE;
+#endif
+#define ACCUMULATED_DATE        86400  // 24*60*60
+
+static bool check_interval_constraint = false;
+
+bool
+mp_drm_get_content_info(const char *path, drm_content_info_e first_info, ...)
+{
+       /* return info shoud be freed */
+       MP_CHECK_FALSE(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;
+}
+
+
+static void
+_mp_drm_check_remain_ro(struct appdata *ad)
+{
+       MP_CHECK(ad);
+
+       char *title = NULL;
+       MP_CHECK(ad->current_track_info);
+
+       title = ad->current_track_info->title;
+
+       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, 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, 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, title);
+               }
+       }
+
+       if (message)
+       {
+               ad->can_play_drm_contents = false;      // wap launch
+               mp_drm_set_notify(ad, message);
+               SAFE_FREE(message);
+       }
+
+}
+
+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);
+
+       mp_plst_item *current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+
+       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->uri, 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_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;
+}
+
+#ifdef MP_FEATURE_DRM_CONSUMPTION
+static DRM_DECRYPT_HANDLE
+_mp_drm_create_decrypt_handle(const char *path)
+{
+       MP_CHECK_NULL(path);
+
+       drm_trusted_open_decrypt_info_s open_input_data;
+       drm_trusted_open_decrypt_resp_data_s open_output_data;
+       DRM_DECRYPT_HANDLE decrypt_handle = NULL;
+       int ret = -1;
+
+       memset(&open_input_data, 0x0, sizeof(drm_trusted_open_decrypt_info_s));
+       memset(&open_output_data, 0x0, sizeof(drm_trusted_open_decrypt_resp_data_s));
+
+       SAFE_STRCPY(open_input_data.filePath, path);
+
+       ret = drm_trusted_open_decrypt_session(&open_input_data, &open_output_data, &decrypt_handle);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               mp_error("drm_trusted_open_decrypt_session() .. [0x%x]", ret);
+               return NULL;
+       }
+
+       return decrypt_handle;
+}
+
+static void
+_mp_drm_destroy_decrpyt_handle(DRM_DECRYPT_HANDLE handle)
+{
+       MP_CHECK(handle);
+
+       int ret = drm_trusted_close_decrypt_session(&handle);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               mp_error("drm_trusted_close_decrypt_session() ... [0x%x]", ret);
+       }
+
+       handle = NULL;
+}
+
+void
+mp_drm_set_consumption(bool enabled)
+{
+       _g_drm_consumption = enabled;
+}
+
+bool
+mp_drm_get_consumption(void)
+{
+       return _g_drm_consumption;
+}
+
+void
+mp_drm_start_consumption(char *path)
+{
+       DEBUG_TRACE();
+       if (mp_drm_get_consumption())
+       {
+               if (_g_drm_handle) {
+                       drm_trusted_close_decrypt_session(&_g_drm_handle);
+                       _g_drm_handle = NULL;
+               }
+               /* handle create */
+               _g_drm_handle = _mp_drm_create_decrypt_handle(path);
+               MP_CHECK(_g_drm_handle);
+
+               drm_trusted_set_consumption_state_info_s state_input_data;
+               memset(&state_input_data, 0x0, sizeof(drm_trusted_set_consumption_state_info_s));
+               state_input_data.state = DRM_CONSUMPTION_STARTED;
+               int ret = drm_trusted_set_decrypt_state(_g_drm_handle, &state_input_data);
+               if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+                       mp_error("drm_trusted_set_decrypt_state()..[0x%x]", ret);
+               }
+       }
+}
+
+
+void
+mp_drm_pause_consumption(void)
+{
+       if (mp_drm_get_consumption() && _g_drm_handle)
+       {
+               drm_trusted_set_consumption_state_info_s state_input_data;
+               memset(&state_input_data, 0x0, sizeof(drm_trusted_set_consumption_state_info_s));
+               state_input_data.state = DRM_CONSUMPTION_PAUSED;
+               int ret = drm_trusted_set_decrypt_state(_g_drm_handle, &state_input_data);
+               if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+                       mp_error("drm_trusted_set_decrypt_state()..[0x%x]", ret);
+               }
+       }
+}
+
+void
+mp_drm_resume_consumption(void)
+{
+       if (mp_drm_get_consumption() && _g_drm_handle)
+       {
+               drm_trusted_set_consumption_state_info_s state_input_data;
+               memset(&state_input_data, 0x0, sizeof(drm_trusted_set_consumption_state_info_s));
+               state_input_data.state = DRM_CONSUMPTION_RESUMED;
+               int ret = drm_trusted_set_decrypt_state(_g_drm_handle, &state_input_data);
+               if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+                       mp_error("drm_trusted_set_decrypt_state()..[0x%x]", ret);
+               }
+       }
+}
+
+void
+mp_drm_stop_consumption(void)
+{
+       if (mp_drm_get_consumption() && _g_drm_handle)
+       {
+               /* stop */
+               drm_trusted_set_consumption_state_info_s state_input_data;
+               memset(&state_input_data, 0x0, sizeof(drm_trusted_set_consumption_state_info_s));
+               state_input_data.state = DRM_CONSUMPTION_STOPPED;
+               int ret = drm_trusted_set_decrypt_state(_g_drm_handle, &state_input_data);
+               if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+                       mp_error("drm_trusted_set_decrypt_state()..[0x%x]", ret);
+               }
+
+               /* handle destroy */
+               _mp_drm_destroy_decrpyt_handle(_g_drm_handle);
+               _g_drm_handle = NULL;
+       }
+}
+#endif
+
+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)
+{
+       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)
+{
+       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;
+       char *title = NULL;
+
+       mp_retvm_if(!ad, NULL, "ad is NULL!!!!");
+
+       if(mp_drm_check_foward_lock(path))
+       {
+               DEBUG_TRACE("Foward lock");
+               return true;
+       }
+
+       title = ad->current_track_info->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)
+{
+       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)
+{
+       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
new file mode 100644 (file)
index 0000000..2ee21b0
--- /dev/null
@@ -0,0 +1,877 @@
+/*
+ * 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://floralicense.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 <glib.h>
+#include "music.h"
+#include "mp-player-mgr.h"
+#include "mp-player-control.h"
+#include "mp-play.h"
+#include "mp-player-drm.h"
+#include <player.h>
+
+#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 mp_player_type_e _player_type = MP_PLAYER_TYPE_MMFW;
+
+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;
+
+typedef enum {
+       MP_PLAYER_CB_TYPE_STARTED,
+       MP_PLAYER_CB_TYPE_COMPLETED,
+       MP_PLAYER_CB_TYPE_INTURRUPTED,
+       MP_PLAYER_CB_TYPE_ERROR,
+       MP_PLAYER_CB_TYPE_BUFFERING,
+       MP_PLAYER_CB_TYPE_PREPARE,
+       MP_PLAYER_CB_TYPE_PAUSED,
+       MP_PLAYER_CB_TYPE_NUM,
+} mp_player_cb_type;
+
+typedef struct {
+       /* player callbacks */
+       mp_player_started_cb started_cb;
+       player_completed_cb completed_cb;
+       player_interrupted_cb interrupted_cb;
+       player_error_cb error_cb;
+       player_buffering_cb buffering_cb;
+       player_prepared_cb prepare_cb;
+       mp_player_paused_cb paused_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;
+
+typedef struct {
+       int (*create)(player_h *);
+       int (*destroy)(player_h);
+       int (*prepare)(player_h);
+       int (*prepare_async)(player_h, player_prepared_cb, void *);
+       int (*unprepare)(player_h);
+       int (*set_uri)(player_h, const char *);
+       int (*get_state)(player_h, player_state_e *);
+       int (*set_sound_type)(player_h, sound_type_e);
+       int (*set_audio_latency_mode)(player_h, audio_latency_mode_e);
+       int (*get_audio_latency_mode)(player_h, audio_latency_mode_e*);
+       int (*start)(player_h);
+       int (*pause)(player_h);
+       int (*stop)(player_h);
+       int (*set_started_cb)(player_h, mp_player_started_cb, void *);
+       int (*set_completed_cb)(player_h, player_completed_cb, void *);
+       int (*set_interrupted_cb)(player_h, player_interrupted_cb, void *);
+       int (*set_error_cb)(player_h, player_error_cb, void *);
+       int (*set_buffering_cb)(player_h, player_buffering_cb, void *);
+       int (*set_paused_cb)(player_h, mp_player_paused_cb, void *);
+       int (*set_position)(player_h, int, player_seek_completed_cb, void *);
+       int (*set_play_rate)(player_h, float);
+       int (*get_position)(player_h, int *);
+       int (*get_duration)(player_h, int *);
+       int (*set_mute)(player_h, bool);
+} mp_player_api_s;
+static mp_player_api_s g_player_apis;
+#define CHECK_MMFW_PLAYER()    ((_player_type == MP_PLAYER_TYPE_MMFW) ? true : false)
+
+static mp_player_cbs *g_player_cbs = NULL;
+
+bool
+mp_player_mgr_is_active(void)
+{
+       return _player ? TRUE : FALSE;
+}
+
+void mp_player_mgr_set_started_db(mp_player_started_cb callback, void *user_data)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       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_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_set_prepare_cb(player_prepared_cb callback, void *user_data)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->prepare_cb = callback;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PREPARE] = user_data;
+}
+
+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;
+}
+
+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;
+}
+
+void mp_player_mgr_set_paused_cb(mp_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;
+}
+
+
+player_state_e
+mp_player_mgr_get_state(void)
+{
+       int ret = -1;
+       player_state_e state_now = PLAYER_STATE_NONE;
+
+       if (!_player)
+               return state_now;
+
+       ret = g_player_apis.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_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;
+
+       case MP_PLAYER_CB_TYPE_PREPARE:
+               if (g_player_cbs->prepare_cb)
+                       g_player_cbs->prepare_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PREPARE]);
+               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;
+
+       default:
+               WARN_TRACE("Not suppoted callback type [%d]", extra_data->cb_type);
+       }
+}
+
+static void
+_mp_player_mgr_started_cb(void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       memset(&extra_data, 0, sizeof(mp_player_cb_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_completed_cb(void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       memset(&extra_data, 0, sizeof(mp_player_cb_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)
+{
+       startfunc;
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       memset(&extra_data, 0, sizeof(mp_player_cb_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;
+       memset(&extra_data, 0, sizeof(mp_player_cb_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;
+       memset(&extra_data, 0, sizeof(mp_player_cb_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));
+}
+
+static void
+_mp_player_mgr_prepare_cb(void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       struct appdata *ad = (struct appdata *)userdata;
+       MP_CHECK(ad);
+       ad->player_state = PLAY_STATE_READY;
+
+       mp_player_cb_extra_data extra_data;
+       memset(&extra_data, 0, sizeof(mp_player_cb_extra_data));
+       extra_data.cb_type = MP_PLAYER_CB_TYPE_PREPARE;
+
+       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;
+       memset(&extra_data, 0, sizeof(mp_player_cb_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_change_player(mp_player_type_e player_type)
+{
+       _player_type = player_type;
+
+       WARN_TRACE("player type = [%d]", _player_type);
+
+       memset(&g_player_apis, 0x0, sizeof(mp_player_api_s));
+
+       {       /* MP_PLAYER_TYPE_MMFW */
+               g_player_apis.create = player_create;
+               g_player_apis.destroy = player_destroy;
+               g_player_apis.prepare = player_prepare;
+               g_player_apis.prepare_async = player_prepare_async;
+               g_player_apis.unprepare = player_unprepare;
+               g_player_apis.set_uri = player_set_uri;
+               g_player_apis.get_state = player_get_state;
+               g_player_apis.set_sound_type = player_set_sound_type;
+               g_player_apis.set_audio_latency_mode = player_set_audio_latency_mode;
+               g_player_apis.get_audio_latency_mode = player_get_audio_latency_mode;
+               g_player_apis.start = player_start;
+               g_player_apis.pause = player_pause;
+               g_player_apis.stop = player_stop;
+               g_player_apis.set_started_cb = NULL;
+               g_player_apis.set_completed_cb = player_set_completed_cb;
+               g_player_apis.set_interrupted_cb = player_set_interrupted_cb;
+               g_player_apis.set_error_cb = player_set_error_cb;
+               g_player_apis.set_buffering_cb = player_set_buffering_cb;
+               g_player_apis.set_paused_cb = NULL;
+               g_player_apis.set_position = player_set_position;
+               g_player_apis.get_position = player_get_position;
+               g_player_apis.get_duration = player_get_duration;
+               g_player_apis.set_mute = player_set_mute;
+               g_player_apis.set_play_rate = player_set_playback_rate;
+       }
+}
+
+bool
+mp_player_mgr_create(void *data, const gchar * path, mp_player_type_e type, void *extra_data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       int path_len = strlen(path);
+
+       int ret = PLAYER_ERROR_NONE;
+
+       DEBUG_TRACE("mp_player_mgr_create with [%s]\n", path);
+
+       if (path_len > 0 && path_len < MAX_PATH_LEN)
+       {
+
+               if (mp_player_mgr_is_active())
+               {
+                       WARN_TRACE("Destroy previous player");
+                       mp_player_mgr_destroy(ad);
+               }
+
+               /* change player for playing in DMR */
+               _mp_player_mgr_change_player(type);
+
+               if (g_player_apis.create(&_player) != PLAYER_ERROR_NONE)
+               {
+                       ERROR_TRACE("Error when mp_player_mgr_create\n");
+                       return FALSE;
+               }
+               /*avsysaudiosink volume table setting */
+
+                       ret = g_player_apis.set_uri(_player, path);
+
+               if (ret != PLAYER_ERROR_NONE)
+               {
+                       ERROR_TRACE("fail to set uri");
+                       mp_player_mgr_destroy(data);
+                       return FALSE;
+               }
+
+               if (g_player_apis.set_sound_type)
+                       g_player_apis.set_sound_type(_player, SOUND_TYPE_MEDIA);
+
+               if (g_player_apis.set_audio_latency_mode)
+                       g_player_apis.set_audio_latency_mode(_player, AUDIO_LATENCY_MODE_HIGH);
+
+               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;
+                       }
+               }
+       }
+       else
+       {
+
+               return FALSE;
+       }
+
+       is_seeking = false;
+       g_reserved_seek_pos = -1;
+
+       if(!g_player_cbs)
+       {
+               g_player_cbs = calloc(1, sizeof(mp_player_cbs));
+               mp_assert(g_player_cbs);
+       }
+
+       if (g_player_apis.set_started_cb)
+               g_player_apis.set_started_cb(_player, _mp_player_mgr_started_cb, NULL);
+       if (g_player_apis.set_completed_cb)
+               g_player_apis.set_completed_cb(_player, _mp_player_mgr_completed_cb, NULL);
+       if (g_player_apis.set_interrupted_cb)
+               g_player_apis.set_interrupted_cb(_player, _mp_player_mgr_interrupted_cb, NULL);
+       if (g_player_apis.set_error_cb)
+               g_player_apis.set_error_cb(_player, _mp_player_mgr_error_cb, NULL);
+       if (g_player_apis.set_buffering_cb)
+               g_player_apis.set_buffering_cb(_player, _mp_player_mgr_buffering_cb, NULL);
+       if (g_player_apis.set_paused_cb)
+               g_player_apis.set_paused_cb(_player, _mp_player_mgr_paused_cb, NULL);
+
+       if(!g_player_pipe)
+               g_player_pipe = ecore_pipe_add(_mp_player_mgr_callback_pipe_handler, ad);
+
+       ad->player_state = PLAY_STATE_CREATED;
+       return TRUE;
+}
+
+
+bool
+mp_player_mgr_destroy(void *data)
+{
+       struct appdata *ad = data;
+       int res = true;
+
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       if (g_player_apis.destroy(_player) != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("Error when mp_player_mgr_destroy\n");
+               res = false;
+       }
+
+
+       _player = 0;
+       ad->player_state = PLAY_STATE_NONE;
+       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;
+
+       WARN_TRACE("player handle is destroyed..");
+       return res;
+}
+
+bool
+mp_player_mgr_realize(void *data)
+{
+       struct appdata *ad = data;
+
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       if (g_player_apis.prepare_async(_player, _mp_player_mgr_prepare_cb, ad) != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("Error when mp_player_mgr_realize\n");
+               return FALSE;
+       }
+       ad->player_state = PLAY_STATE_PREPARING;
+       return TRUE;
+}
+
+bool
+mp_player_mgr_unrealize(void *data)
+{
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       if (g_player_apis.unprepare(_player) != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("Error when mp_player_mgr_unrealize\n");
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool
+mp_player_mgr_play(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       int err = -1;
+
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       err = g_player_apis.start(_player);
+       if (err != PLAYER_ERROR_NONE)
+       {
+               if (err == PLAYER_ERROR_SOUND_POLICY)
+               {
+                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"));
+               }
+               else
+               {
+                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
+               }
+
+               ERROR_TRACE("Error when mp_player_mgr_play. err[%x]\n", err);
+               return FALSE;
+       }
+
+       is_seeking = false;
+       g_reserved_seek_pos = -1;
+
+       //mp_play_start(ad);
+       if (!g_player_apis.set_started_cb && g_player_cbs->started_cb)  /* sync */
+               g_player_cbs->started_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_STARTED]);
+
+       return TRUE;
+}
+
+
+bool
+mp_player_mgr_stop(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       if (g_player_apis.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;
+}
+
+bool
+mp_player_mgr_resume(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       int err = -1;
+
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       err = g_player_apis.start(_player);
+       if (err != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("Error when mp_player_mgr_resume. err[%x]\n", err);
+               if (err == PLAYER_ERROR_SOUND_POLICY)
+               {
+                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"));
+               }
+               else
+               {
+                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
+               }
+               return FALSE;
+       }
+
+       is_seeking = false;
+       g_reserved_seek_pos = -1;
+
+       mp_play_view_update_progressbar(data);
+       mp_play_view_progress_timer_thaw(data);
+
+       return TRUE;
+}
+
+bool
+mp_player_mgr_pause(void *data)
+{
+       startfunc;
+       int err = -1;
+
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       err = g_player_apis.pause(_player);
+       if (err != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("Error when mp_player_mgr_pause. err[%x]\n", err);
+               return FALSE;
+       }
+
+       if (!g_player_apis.set_paused_cb && g_player_cbs->paused_cb)
+               g_player_cbs->paused_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PAUSED]);
+
+       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, Seek_Done_Cb done_cb, void *data)
+{
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       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 = g_player_apis.set_position(_player, (int)pos, _mp_player_mgr_seek_done_cb, (void *)pos);
+       if (err != PLAYER_ERROR_NONE)
+       {
+               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;
+}
+
+bool
+mp_player_mgr_set_play_speed(double rate)
+{
+       int err = PLAYER_ERROR_NONE;
+       if (!mp_player_mgr_is_active())
+               return FALSE;
+
+       if(g_player_apis.set_play_rate)
+               err = g_player_apis.set_play_rate(_player, rate);
+       else
+               WARN_TRACE("Unsupported function");
+
+       if (err != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("Error [0x%x] when set_playback_rate(%f)\n", err, rate);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+int
+mp_player_mgr_get_position(void)
+{
+       int pos = 0;
+
+       if (!mp_player_mgr_is_active())
+               return 0;
+
+       if (g_player_apis.get_position(_player, &pos) != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("Error when mp_player_mgr_get_position\n");
+               return 0;
+       }
+
+       return pos;
+}
+
+int
+mp_player_mgr_get_duration(void)
+{
+       if (!mp_player_mgr_is_active())
+               return -1;
+
+       int duration = 0;
+
+       if (!mp_player_mgr_is_active())
+               return 0;
+
+       if (g_player_apis.get_duration(_player, &duration) != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("Error when mp_player_mgr_get_position\n");
+               return 0;
+       }
+
+       return duration;
+}
+
+
+int
+mp_player_mgr_vol_type_set(void)
+{
+       return sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
+}
+
+int
+mp_player_mgr_vol_type_unset(void)
+{
+       return sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE);
+}
+
+bool
+mp_player_mgr_session_init(void)
+{
+       int ret = SOUND_MANAGER_ERROR_NONE;
+
+       ret = sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
+
+       if (ret != SOUND_MANAGER_ERROR_NONE)
+               return FALSE;
+
+       return TRUE;
+}
+
+bool
+mp_player_mgr_session_finish(void)
+{
+       return TRUE;
+}
+
+void
+mp_player_mgr_set_mute(bool bMuteEnable)
+{
+
+       if (!mp_player_mgr_is_active())
+               return;
+
+       if (g_player_apis.set_mute(_player, bMuteEnable) != PLAYER_ERROR_NONE)
+       {
+               ERROR_TRACE("[ERR] mm_player_set_mute");
+       }
+}
+
+mp_player_type_e
+mp_player_mgr_get_player_type()
+{
+       return _player_type;
+}
+
diff --git a/src/core/mp-playlist-mgr.c b/src/core/mp-playlist-mgr.c
new file mode 100644 (file)
index 0000000..24b2ec6
--- /dev/null
@@ -0,0 +1,583 @@
+
+#include "mp-playlist-mgr.h"
+#include "mp-player-debug.h"
+#include "mp-define.h"
+
+void __mp_playlist_mgr_item_free(void *data)
+{
+       mp_plst_item *node = (mp_plst_item *)data;
+       MP_CHECK(node);
+       if(node->is_queue)
+       {
+               DEBUG_TRACE("queued item will be remained");
+               return;
+       }
+
+       IF_FREE(node->uri);
+       IF_FREE(node->uid);
+       IF_FREE(node);
+}
+
+mp_plst_mgr *mp_playlist_mgr_create(void)
+{
+       startfunc;
+       mp_plst_mgr *playlist_mgr = calloc(1, sizeof(mp_plst_mgr));
+       srand((unsigned int)time(NULL));
+       endfunc;
+       return playlist_mgr;
+
+}
+
+void mp_playlist_mgr_destroy(mp_plst_mgr *playlist_mgr)
+{
+       startfunc;
+       MP_CHECK(playlist_mgr);
+       mp_playlist_mgr_clear(playlist_mgr);
+       free(playlist_mgr);
+       endfunc;
+}
+
+static int __mp_playlist_mgr_rand_position(int length, int queue_lenth)
+{
+       unsigned int seed = 0;
+       unsigned int rand = 0;
+       int pos = 0;
+
+       if(length > 0)
+       {
+               rand = rand_r(&seed);
+               pos =  rand%(length-queue_lenth+1);
+       }
+
+       return pos;
+}
+
+static void __mp_playlist_mgr_select_list(mp_plst_mgr *playlist_mgr)
+{
+       startfunc;
+       if(playlist_mgr->shuffle_state)
+               playlist_mgr->list = playlist_mgr->shuffle_list;
+       else
+               playlist_mgr->list = playlist_mgr->normal_list;
+}
+
+mp_plst_item * mp_playlist_mgr_item_append(mp_plst_mgr *playlist_mgr, const char *uri, const char *uid, mp_track_type type)
+{
+       DEBUG_TRACE("uri: %s, uid:%s, type: %d", uri, uid, type);
+       MP_CHECK_VAL(playlist_mgr, NULL);
+       MP_CHECK_VAL(uri, NULL);
+
+       int pos;
+       mp_plst_item * node, *cur = NULL;
+       int queue_lenth;
+
+       /*create data*/
+       node = calloc(1, sizeof(mp_plst_item));
+       MP_CHECK_VAL(node, NULL);
+
+       node->track_type = type;
+       node->uri = g_strdup(uri);
+       node->uid = g_strdup(uid);
+
+
+       /*insert to normal list*/
+       playlist_mgr->normal_list = g_list_append(playlist_mgr->normal_list, node);
+
+       /*insert to shuffle list*/
+       queue_lenth = g_list_length(playlist_mgr->queue_list);
+       pos = __mp_playlist_mgr_rand_position(g_list_length(playlist_mgr->normal_list), queue_lenth);
+
+       int queue_start = g_list_index(playlist_mgr->shuffle_list, g_list_nth_data(playlist_mgr->queue_list, 0));
+       if(pos >= queue_start-1)
+               pos += queue_lenth;
+
+       if(playlist_mgr->shuffle_state)
+               cur = mp_playlist_mgr_get_current(playlist_mgr);
+
+       playlist_mgr->shuffle_list = g_list_insert(playlist_mgr->shuffle_list, node, pos);
+
+       if(cur)
+       {
+               int index= g_list_index(playlist_mgr->list, cur);
+               playlist_mgr->current_index = index;
+       }
+
+       /*select list*/
+       __mp_playlist_mgr_select_list(playlist_mgr);
+
+       return node;
+}
+
+static GList * __mp_playlist_mgr_delete_queue_link(GList *list)
+{
+       startfunc;
+       mp_plst_item *item;
+       GList *new_list, *remove;
+       int idx = 0;
+
+       new_list = list;
+       remove = g_list_nth(new_list, idx);
+       MP_CHECK_NULL(remove);
+
+       while(remove)
+       {
+               item = remove->data;
+
+               if(item->is_queue)
+               {
+                       DEBUG_TRACE("delete : %s", item->uid);
+                       new_list = g_list_remove_link(new_list, remove);
+                       g_list_free(remove);
+               }
+               else
+                       idx++;
+
+               remove = g_list_nth(new_list, idx);
+       }
+
+       return new_list;
+}
+
+static void __mp_playlist_mgr_index(mp_plst_mgr *playlist_mgr, int *pos, int *shuffle_pos)
+{
+       MP_CHECK(playlist_mgr);
+       int idx, s_idx;
+       if(playlist_mgr->shuffle_state)
+       {
+               s_idx = playlist_mgr->current_index;
+               idx = g_list_index(playlist_mgr->normal_list, g_list_nth_data(playlist_mgr->shuffle_list, s_idx));
+       }
+       else
+       {
+               idx = playlist_mgr->current_index;
+               s_idx = g_list_index(playlist_mgr->shuffle_list, g_list_nth_data(playlist_mgr->normal_list, idx));
+       }
+
+       *pos = idx;
+       *shuffle_pos = s_idx;
+}
+
+static void __mp_playlist_mgr_clear_queue(mp_plst_mgr *playlist_mgr)
+{
+       startfunc;
+       int idx, s_idx;
+
+       MP_CHECK(playlist_mgr);
+
+       __mp_playlist_mgr_index(playlist_mgr, &idx, &s_idx);
+       DEBUG_TRACE("idx: %d, s_idx: %d", idx, s_idx);
+
+       playlist_mgr->normal_list = __mp_playlist_mgr_delete_queue_link(playlist_mgr->normal_list);
+       playlist_mgr->shuffle_list = __mp_playlist_mgr_delete_queue_link(playlist_mgr->shuffle_list);
+
+       __mp_playlist_mgr_select_list(playlist_mgr);
+
+       endfunc;
+}
+
+static void
+__mp_playlist_mgr_insert_queue_links(mp_plst_mgr *playlist_mgr)
+{
+       GList *list;
+       int idx, s_idx;
+
+       MP_CHECK(playlist_mgr);
+
+       __mp_playlist_mgr_index(playlist_mgr, &idx, &s_idx);
+
+       list = g_list_last(playlist_mgr->queue_list);
+       MP_CHECK(list);
+
+       idx++;
+       s_idx++;
+
+       do
+       {
+               playlist_mgr->normal_list = g_list_insert(playlist_mgr->normal_list, list->data, idx);
+               playlist_mgr->shuffle_list= g_list_insert(playlist_mgr->shuffle_list, list->data, s_idx);
+               list = g_list_previous(list);
+       }while(list);
+
+       if(playlist_mgr->queue_item_cb)
+               playlist_mgr->queue_item_cb(MP_PLSYLIST_QUEUE_MOVED, playlist_mgr->shuffle_state? s_idx: idx, playlist_mgr->userdata);
+}
+
+mp_plst_item * mp_playlist_mgr_item_queue(mp_plst_mgr *playlist_mgr, const char *uri, const char *uid, mp_track_type type)
+{
+       DEBUG_TRACE("uri: %s, uid:%s", uri, uid);
+       MP_CHECK_VAL(playlist_mgr, NULL);
+
+       mp_plst_item *p_data = NULL;
+       GList *last;
+       int pos, s_pos;
+
+       if(playlist_mgr->queue_list)
+       {
+               last = g_list_last(playlist_mgr->queue_list);
+               if(last)
+                       p_data = last->data;
+       }
+       /*create data*/
+       mp_plst_item *node = calloc(1, sizeof(mp_plst_item));
+       MP_CHECK_VAL(node, NULL);
+
+       if(uri)
+       {
+               node->track_type = EINA_TRUE;
+               node->uri = g_strdup(uri);
+       }
+       node->uid = g_strdup(uid);
+       node->is_queue = EINA_TRUE;
+
+       /*append item*/
+       playlist_mgr->queue_list = g_list_append(playlist_mgr->queue_list, node);
+
+       /*insert queue items to list*/
+       if(p_data)
+       {
+               pos = g_list_index(playlist_mgr->normal_list, p_data)+1;
+               s_pos = g_list_index(playlist_mgr->shuffle_list, p_data)+1;
+       }
+       else
+       {
+               __mp_playlist_mgr_index(playlist_mgr, &pos, &s_pos);
+               pos++; s_pos++;
+       }
+       playlist_mgr->normal_list = g_list_insert( playlist_mgr->normal_list, node, pos);
+       playlist_mgr->shuffle_list= g_list_insert( playlist_mgr->shuffle_list, node, s_pos);
+
+       /*select list */
+       __mp_playlist_mgr_select_list(playlist_mgr);
+
+       if(playlist_mgr->queue_item_cb)
+               playlist_mgr->queue_item_cb(MP_PLAYLIST_QUEUE_ADDED, playlist_mgr->shuffle_state?s_pos:pos, playlist_mgr->userdata);
+
+       return node;
+}
+
+void mp_playlist_mgr_item_remove_item(mp_plst_mgr *playlist_mgr, mp_plst_item *item)
+{
+       startfunc;
+       GList *remove;
+       MP_CHECK(playlist_mgr);
+       MP_CHECK(item);
+
+       MP_CHECK(playlist_mgr->shuffle_list);
+       MP_CHECK(playlist_mgr->normal_list);
+
+       /*remove from shuffle_list*/
+       remove = g_list_find(playlist_mgr->shuffle_list, item);
+       MP_CHECK(remove);
+
+       playlist_mgr->shuffle_list = g_list_remove_link(playlist_mgr->shuffle_list, remove);
+       g_list_free(remove);
+
+       /*remove from normal_list*/
+       remove = g_list_find(playlist_mgr->normal_list, item);
+       MP_CHECK(remove);
+
+       item->is_queue = EINA_FALSE;
+
+       playlist_mgr->normal_list = g_list_remove_link(playlist_mgr->normal_list, remove);
+       g_list_free_full(remove, __mp_playlist_mgr_item_free);
+
+       /*remove from queue list*/
+       if(playlist_mgr->queue_list)
+       {
+               remove = g_list_find(playlist_mgr->queue_list, item);
+               if(remove)
+               {
+                       playlist_mgr->queue_list = g_list_remove_link(playlist_mgr->queue_list, remove);
+                       g_list_free(remove);
+               }
+       }
+
+       /*select list*/
+       __mp_playlist_mgr_select_list(playlist_mgr);
+       endfunc;
+}
+
+void mp_playlist_mgr_item_remove_nth(mp_plst_mgr *playlist_mgr, int index)
+{
+       startfunc;
+       MP_CHECK(playlist_mgr);
+       MP_CHECK(playlist_mgr->list);
+       GList *link = g_list_nth(playlist_mgr->list, index);
+       MP_CHECK(link);
+
+       mp_playlist_mgr_item_remove_item(playlist_mgr, link->data);
+       endfunc;
+}
+
+void mp_playlist_mgr_clear(mp_plst_mgr *playlist_mgr)
+{
+       startfunc;
+       MP_CHECK(playlist_mgr);
+
+       if(playlist_mgr->normal_list)
+               g_list_free_full(playlist_mgr->normal_list,  __mp_playlist_mgr_item_free);
+       if(playlist_mgr->shuffle_list)
+               g_list_free(playlist_mgr->shuffle_list);
+
+       if(playlist_mgr->queue_list)
+       {
+               playlist_mgr->normal_list = g_list_copy(playlist_mgr->queue_list);
+               playlist_mgr->shuffle_list = g_list_copy(playlist_mgr->queue_list);
+
+               __mp_playlist_mgr_select_list(playlist_mgr);
+       }
+       else
+       {
+               playlist_mgr->normal_list = NULL;
+               playlist_mgr->shuffle_list = NULL;
+               playlist_mgr->list = NULL;
+       }
+
+       playlist_mgr->current_index = 0;
+
+       if(playlist_mgr->item_change_cb)
+               playlist_mgr->item_change_cb(NULL, playlist_mgr->item_change_userdata);
+
+       endfunc;
+}
+
+int mp_playlist_mgr_count(mp_plst_mgr *playlist_mgr)
+{
+       //startfunc;
+       MP_CHECK_VAL(playlist_mgr, 0);
+       MP_CHECK_VAL(playlist_mgr->list, 0);
+       return g_list_length(playlist_mgr->list);
+}
+
+mp_plst_item *mp_playlist_mgr_get_current(mp_plst_mgr *playlist_mgr)
+{
+       MP_CHECK_VAL(playlist_mgr, 0);
+       mp_plst_item *cur = NULL;
+
+       if(playlist_mgr->list)
+               cur = g_list_nth_data(playlist_mgr->list, playlist_mgr->current_index);
+
+       return cur;
+}
+
+static void
+__mp_playlist_list_foreach(gpointer data, gpointer user_data)
+{
+       int pos;
+       mp_plst_mgr *playlist_mgr = user_data;
+       MP_CHECK(playlist_mgr);
+
+       pos = __mp_playlist_mgr_rand_position(g_list_length(playlist_mgr->shuffle_list), 0);
+
+       playlist_mgr->shuffle_list = g_list_insert(playlist_mgr->shuffle_list, data, pos);
+}
+
+static void
+__mp_playlist_mgr_shuffle(mp_plst_mgr *playlist_mgr)
+{
+       MP_CHECK(playlist_mgr);
+
+       g_list_free(playlist_mgr->shuffle_list);
+       playlist_mgr->shuffle_list = NULL;
+
+       g_list_foreach(playlist_mgr->normal_list, __mp_playlist_list_foreach, playlist_mgr);
+       playlist_mgr->list = playlist_mgr->shuffle_list;
+}
+
+mp_plst_item *mp_playlist_mgr_get_next(mp_plst_mgr *playlist_mgr, Eina_Bool force)
+{
+       startfunc;
+       MP_CHECK_VAL(playlist_mgr, NULL);
+       MP_CHECK_VAL(playlist_mgr->list, NULL);
+       int index = 0;
+       int count = 0;
+
+       count = mp_playlist_mgr_count(playlist_mgr);
+
+       if (playlist_mgr->repeat_state == MP_PLST_REPEAT_ONE && !force)
+               index = playlist_mgr->current_index;
+       else
+               index = playlist_mgr->current_index + 1;
+
+       if (count == index)
+       {
+               if (playlist_mgr->repeat_state == MP_PLST_REPEAT_ALL || force)
+               {
+                       if(playlist_mgr->shuffle_state)
+                               __mp_playlist_mgr_shuffle(playlist_mgr);
+                       index = 0;
+               }
+               else
+                       return NULL;
+       }
+
+       if(index >= count)
+       {
+               DEBUG_TRACE("End of playlist");
+               index = 0;
+       }
+
+       return (mp_plst_item *)g_list_nth_data(playlist_mgr->list, index);
+
+}
+
+mp_plst_item *mp_playlist_mgr_get_prev(mp_plst_mgr *playlist_mgr)
+{
+       startfunc;
+       MP_CHECK_VAL(playlist_mgr, NULL);
+       MP_CHECK_VAL(playlist_mgr->list, NULL);
+       int index = 0;
+
+       index = playlist_mgr->current_index;
+       index --;
+       if(index<0)
+       {
+               DEBUG_TRACE("Begin of playlist. ");
+               index = mp_playlist_mgr_count(playlist_mgr) -1;
+       }
+
+       return (mp_plst_item *)g_list_nth_data(playlist_mgr->list, index);
+}
+
+mp_plst_item *mp_playlist_mgr_get_nth(mp_plst_mgr *playlist_mgr, int index)
+{
+       startfunc;
+       MP_CHECK_VAL(playlist_mgr, NULL);
+       MP_CHECK_VAL(playlist_mgr->list, NULL);
+       return (mp_plst_item *)g_list_nth_data(playlist_mgr->list, index);
+}
+
+void mp_playlist_mgr_set_current(mp_plst_mgr *playlist_mgr, mp_plst_item *cur)
+{
+       startfunc;
+       MP_CHECK(playlist_mgr);
+       MP_CHECK(playlist_mgr->list);
+
+       int index;
+       mp_plst_item *before;
+       bool call_remove_item_callback = false;
+       int before_index = 0;
+       bool insert_queue = false;
+
+       if(!cur)
+       {
+               cur = mp_playlist_mgr_get_nth(playlist_mgr, 0);
+       }
+       MP_CHECK(cur);
+
+       /*remove queue item*/
+       before = mp_playlist_mgr_get_current(playlist_mgr);
+       if(before && before->is_queue)
+       {
+               DEBUG_TRACE("queue spent");
+               before_index = playlist_mgr->current_index;
+
+               call_remove_item_callback = true;
+
+               mp_playlist_mgr_item_remove_item(playlist_mgr, before);
+       }
+
+       /*clear queue item if needed*/
+       if(!cur->is_queue && playlist_mgr->queue_list)
+       {
+               __mp_playlist_mgr_clear_queue(playlist_mgr);
+               insert_queue = true;
+       }
+
+       /*set current*/
+       index= g_list_index(playlist_mgr->list, cur);
+       if(index < 0)
+       {
+               WARN_TRACE("No such item!! cur: %x", cur);
+               goto finish;
+       }
+       playlist_mgr->current_index = index;
+
+       /*insert queue item after cur*/
+       if(insert_queue)
+               __mp_playlist_mgr_insert_queue_links(playlist_mgr);
+
+finish:
+       if(call_remove_item_callback && playlist_mgr->queue_item_cb)
+               playlist_mgr->queue_item_cb(MP_PLSYLIST_QUEUE_REMOVED, before_index, playlist_mgr->userdata);
+
+       if(playlist_mgr->item_change_cb)
+               playlist_mgr->item_change_cb(cur, playlist_mgr->item_change_userdata);
+
+       return;
+}
+
+int mp_playlist_mgr_get_current_index(mp_plst_mgr *playlist_mgr)
+{
+       startfunc;
+       MP_CHECK_VAL(playlist_mgr, -1);
+       return playlist_mgr->current_index;
+}
+
+void mp_playlist_mgr_set_shuffle(mp_plst_mgr *playlist_mgr, Eina_Bool shuffle)
+{
+       startfunc;
+       MP_CHECK(playlist_mgr);
+
+       playlist_mgr->shuffle_state = shuffle;
+
+       if(playlist_mgr->list)
+       {
+               mp_plst_item *cur;
+               cur = mp_playlist_mgr_get_current(playlist_mgr);
+
+               __mp_playlist_mgr_select_list(playlist_mgr);
+
+               int index= g_list_index(playlist_mgr->list, cur);
+               playlist_mgr->current_index = index;
+       }
+       endfunc;
+}
+
+Eina_Bool mp_playlist_mgr_is_shuffle(mp_plst_mgr *playlist_mgr)
+{
+       //startfunc;
+       MP_CHECK_VAL(playlist_mgr, 0);
+       return playlist_mgr->shuffle_state;
+}
+
+void mp_playlist_mgr_set_repeat(mp_plst_mgr *playlist_mgr, mp_plst_repeat_state repeat)
+{
+       startfunc;
+       MP_CHECK(playlist_mgr);
+
+       playlist_mgr->repeat_state = repeat;
+       endfunc;
+}
+
+int mp_playlist_mgr_get_repeat(mp_plst_mgr *playlist_mgr)
+{
+       startfunc;
+       MP_CHECK_VAL(playlist_mgr, 0);
+
+       return playlist_mgr->repeat_state;
+       endfunc;
+}
+
+
+Eina_Bool mp_playlist_mgr_set_queue_cb(mp_plst_mgr* playlist_mgr, mp_queue_item_removed_cb cb, void *userdata)
+{
+       MP_CHECK_VAL(playlist_mgr, 0);
+
+       playlist_mgr->userdata = userdata;
+       playlist_mgr->queue_item_cb = cb;
+
+       return true;
+}
+
+int mp_playlist_mgr_set_item_change_callback(mp_plst_mgr *playlist_mgr, mp_playlist_item_change_callback cb, void *userdata)
+{
+       MP_CHECK_VAL(playlist_mgr, 0);
+
+       playlist_mgr->item_change_userdata = userdata;
+       playlist_mgr->item_change_cb = cb;
+
+       return 0;
+}
+
+
diff --git a/src/core/mp-setting-ctrl.c b/src/core/mp-setting-ctrl.c
new file mode 100755 (executable)
index 0000000..5e104d2
--- /dev/null
@@ -0,0 +1,513 @@
+/*
+ * 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://floralicense.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 <string.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include <sound_manager.h>
+#include "mp-media-info.h"
+
+#include "music.h"
+
+#include "mp-setting-ctrl.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"
+
+#ifdef MP_FEATURE_AVRCP_13
+#include "mp-avrcp.h"
+#endif
+
+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
+{
+       int menu_state;
+
+       MpSettingPlaylist_Cb playlist_cb;
+       void *playlist_udata;
+
+
+#ifdef MP_FEATURE_AUTO_OFF
+       MpSettingAutoOff_Cb auto_off_cb;
+       void *auto_off_udata;
+#endif
+#ifdef MP_FEATURE_PLAY_SPEED
+       MpSettingPlaySpeed_Cb play_speed_cb;
+       void *play_speed_udata;
+#endif
+} mp_setting_t;
+
+static mp_setting_t *g_setting = 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(VCONFKEY_MUSIC_ALBUM_ART, path);
+       else
+               vconf_set_str(VCONFKEY_MUSIC_ALBUM_ART, DEFAULT_THUMBNAIL);
+}
+
+
+static void
+_mp_setting_playlist_changed_cb(keynode_t * node, void *user_data)
+{
+       mp_setting_t *sd = NULL;
+       int state = 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;
+
+       state = vconf_keynode_get_int(node);
+
+       if (sd->playlist_cb)
+       {
+               sd->playlist_cb(state, sd->playlist_udata);
+       }
+
+       return;
+}
+
+
+#ifdef MP_FEATURE_AUTO_OFF
+static void
+_mp_setting_auto_off_changed_cb(keynode_t * node, void *user_data)
+{
+       mp_setting_t *sd = NULL;
+
+       mp_retm_if(node == NULL, "keymode is NULL");
+       mp_retm_if(user_data == NULL, "user_date is NULL");
+       sd = (mp_setting_t *) user_data;
+
+       int min = 0;
+       if (vconf_get_int(VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL, &min))
+       {
+               ERROR_TRACE("Fail to get %s", VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL);
+               return;
+       }
+
+       mp_debug("auto off time changed [%d] miniute", min);
+       if (sd->auto_off_cb)
+               sd->auto_off_cb(min, sd->auto_off_udata);
+
+       return;
+}
+#endif
+
+#ifdef MP_FEATURE_PLAY_SPEED
+static void
+_mp_setting_play_speed_changed_cb(keynode_t * node, void *user_data)
+{
+       mp_setting_t *sd = NULL;
+
+       mp_retm_if(node == NULL, "keymode is NULL");
+       mp_retm_if(user_data == NULL, "user_date is NULL");
+       sd = (mp_setting_t *) user_data;
+
+       double speed = 0;
+       if (vconf_get_dbl(VCONFKEY_MUSIC_PLAY_SPEED, &speed))
+       {
+               ERROR_TRACE("Fail to get %s", VCONFKEY_MUSIC_PLAY_SPEED);
+               return;
+       }
+
+       mp_debug("play speed changed [%d]", speed);
+       if (sd->play_speed_cb)
+               sd->play_speed_cb(speed, sd->play_speed_udata);
+
+       return;
+}
+#endif
+
+static int
+mp_setting_key_cb_init(void)
+{
+       int ret = 0;
+
+       mp_retvm_if(g_setting == NULL, -1, "setting data is not initialized, init first!!!!!");
+
+
+       if (vconf_notify_key_changed(MP_VCONFKEY_PLAYLIST_VAL_INT, _mp_setting_playlist_changed_cb, g_setting) < 0)
+       {
+               ERROR_TRACE("Fail to register MP_VCONFKEY_PLAYLIST_VAL_INT key callback");
+               ret = -1;
+       }
+
+#ifdef MP_FEATURE_AUTO_OFF
+       if (vconf_notify_key_changed(VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL, _mp_setting_auto_off_changed_cb, g_setting) < 0)
+       {
+               ERROR_TRACE("Fail to register VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL key callback");
+               ret = -1;
+       }
+#endif
+
+#ifdef MP_FEATURE_PLAY_SPEED
+       if (vconf_notify_key_changed(VCONFKEY_MUSIC_PLAY_SPEED, _mp_setting_play_speed_changed_cb, g_setting) < 0)
+       {
+               ERROR_TRACE("Fail to register VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL key callback");
+               ret = -1;
+       }
+#endif
+
+       return ret;
+}
+
+static void
+mp_setting_key_cb_deinit(void)
+{
+       vconf_ignore_key_changed(MP_VCONFKEY_PLAYLIST_VAL_INT, _mp_setting_playlist_changed_cb);
+#ifdef MP_FEATURE_AUTO_OFF
+       vconf_ignore_key_changed(VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL, _mp_setting_auto_off_changed_cb);
+#endif
+
+#ifdef MP_FEATURE_PLAY_SPEED
+       vconf_ignore_key_changed(VCONFKEY_MUSIC_PLAY_SPEED, _mp_setting_play_speed_changed_cb);
+#endif
+       return;
+}
+
+static Eina_Bool
+_mp_setting_init_idler_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       mp_setting_key_cb_init();
+       ad->setting_idler = NULL;
+
+       return EINA_FALSE;
+}
+
+int
+mp_setting_init(struct appdata *ad)
+{
+       int ret = 0;
+
+       g_setting = malloc(sizeof(mp_setting_t));
+       if (!g_setting)
+       {
+               ERROR_TRACE("Fail to alloc memory");
+               return -1;
+       }
+       memset(g_setting, 0x00, sizeof(mp_setting_t));
+
+       //menu
+       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;
+       }
+
+       if(!ad->setting_idler)
+               ad->setting_idler = ecore_idler_add(_mp_setting_init_idler_cb, ad);
+
+       int shuffle;
+       mp_setting_get_shuffle_state(&shuffle);
+       mp_playlist_mgr_set_shuffle(ad->playlist_mgr, shuffle);
+
+#ifdef MP_FEATURE_AUTO_OFF
+       /* reset auto off in music player only */
+       mp_setting_reset_auto_off_time();
+#endif
+
+       return ret;
+}
+
+
+int
+mp_setting_deinit(struct appdata *ad)
+{
+       mp_ecore_idler_del(ad->setting_idler);
+       mp_setting_key_cb_deinit();
+
+       if (g_setting)
+       {
+               free(g_setting);
+               g_setting = NULL;
+       }
+
+       return 0;
+}
+
+
+int
+mp_setting_set_shuffle_state(int b_val)
+{
+       if (vconf_set_bool(MP_VCONFKEY_MUSIC_SHUFFLE, b_val))
+       {
+               WARN_TRACE("Fail to set MP_VCONFKEY_MUSIC_SHUFFLE");
+               return -1;
+       }
+
+       return 0;
+}
+
+int
+mp_setting_get_shuffle_state(int *b_val)
+{
+       if (vconf_get_bool(MP_VCONFKEY_MUSIC_SHUFFLE, b_val))
+       {
+               WARN_TRACE("Fail to get MP_VCONFKEY_MUSIC_SHUFFLE");
+
+               if (vconf_set_bool(MP_VCONFKEY_MUSIC_SHUFFLE, FALSE))
+               {
+                       ERROR_TRACE("Fail to set MP_VCONFKEY_MUSIC_SHUFFLE");
+                       return -1;
+               }
+               *b_val = FALSE;
+       }
+       return 0;
+}
+
+int
+mp_setting_set_repeat_state(int val)
+{
+       if (vconf_set_int(MP_VCONFKEY_MUSIC_REPEAT, val))
+       {
+               ERROR_TRACE("Fail to set MP_VCONFKEY_MUSIC_REPEAT");
+               return -1;
+       }
+
+       return 0;
+}
+
+int
+mp_setting_get_repeat_state(int *val)
+{
+       if (vconf_get_int(MP_VCONFKEY_MUSIC_REPEAT, val))
+       {
+               WARN_TRACE("Fail to get MP_VCONFKEY_MUSIC_REPEAT");
+               if (vconf_set_int(MP_VCONFKEY_MUSIC_REPEAT, MP_SETTING_REP_NON))
+               {
+                       ERROR_TRACE("Fail to set MP_VCONFKEY_MUSIC_REPEAT");
+                       return -1;
+               }
+               *val = MP_SETTING_REP_NON;
+       }
+
+       return 0;
+}
+
+
+int mp_setting_playlist_get_state(int *state)
+{
+       int res = vconf_get_int(MP_VCONFKEY_PLAYLIST_VAL_INT, state);
+       return res;
+}
+
+int mp_setting_playlist_set_callback(MpSettingPlaylist_Cb func, void *data)
+{
+       mp_retvm_if(g_setting == NULL, -1, "setting data is not initialized, init first!!!!!");
+
+       g_setting->playlist_cb = func;
+       g_setting->playlist_udata= data;
+
+       return 0;
+}
+
+#ifndef MP_SOUND_PLAYER
+void
+mp_setting_save_now_playing(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       FILE *fp = NULL;
+       mp_plst_item *item = NULL;
+
+       MP_CHECK(ad);
+       MP_CHECK(ad->playlist_mgr);
+
+       item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK(item);
+       MP_CHECK(ad->current_track_info);
+
+       fp = fopen(MP_NOWPLAYING_INI_FILE_NAME, "w");   // make new file.
+
+       if (fp == NULL)
+       {
+               ERROR_TRACE("Failed to open ini files. : %s", MP_NOWPLAYING_INI_FILE_NAME);
+               return;
+       }
+
+       fprintf(fp, "%s\n", item->uid);
+       fprintf(fp, "%s\n", item->uri);
+       fprintf(fp, "%s\n", ad->current_track_info->title);
+       fprintf(fp, "%s\n", ad->current_track_info->artist);
+       fprintf(fp, "%s\n", ad->current_track_info->album);
+       fprintf(fp, "%s\n", ad->current_track_info->thumbnail_path);
+       fprintf(fp, "\n");
+
+       fclose(fp);
+
+       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;
+       int ret = 0;
+
+       if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_2))
+       {
+               ret = rename(MP_SHORTCUT_INI_FILE_NAME_2, MP_SHORTCUT_INI_FILE_NAME_3);
+               if (ret != 0) {
+                       ERROR_TRACE("Failed to rename file:error=%d",ret);
+                       return;
+               }
+       }
+       if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_1))
+       {
+               rename(MP_SHORTCUT_INI_FILE_NAME_1, MP_SHORTCUT_INI_FILE_NAME_2);
+               if (ret != 0) {
+                       ERROR_TRACE("Failed to rename file:error=%d",ret);
+                       return;
+               }
+       }
+       if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_0))
+       {
+               rename(MP_SHORTCUT_INI_FILE_NAME_0, MP_SHORTCUT_INI_FILE_NAME_1);
+               if (ret != 0) {
+                       ERROR_TRACE("Failed to rename file:error=%d",ret);
+                       return;
+               }
+       }
+
+       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;
+}
+
+#endif
+
+#ifdef MP_FEATURE_AUTO_OFF
+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_reset_auto_off_time()
+{
+       int ret = vconf_set_int(VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL, 0);
+       if (ret) {
+               mp_error("vconf_set_int().. err[%d]", ret);
+       }
+       ret = vconf_set_int(VCONFKEY_MUSIC_AUTO_OFF_TYPE_VAL, 0);
+       if (ret) {
+               mp_error("vconf_set_int().. err[%d]", ret);
+       }
+}
+
+int
+mp_setting_get_auto_off_time()
+{
+       int min = 0;
+
+       if (vconf_get_int(VCONFKEY_MUSIC_AUTO_OFF_TIME_VAL, &min)){
+               mp_error("vconf_get_int()");
+               min = 0;
+       }
+
+       return min;
+}
+#endif
+
+#ifdef MP_FEATURE_PLAY_SPEED
+int mp_setting_set_play_speed_change_callback(MpSettingPlaySpeed_Cb func, void *data)
+{
+       mp_retvm_if(g_setting == NULL, -1, "setting data is not initialized, init first!!!!!");
+
+       g_setting->play_speed_cb= func;
+       g_setting->play_speed_udata= data;
+
+       return 0;
+}
+int mp_setting_reset_play_speed(void)
+{
+       int ret = vconf_set_dbl(VCONFKEY_MUSIC_PLAY_SPEED, 1.0);
+       if (ret) {
+               mp_error("vconf_set_int().. err[%d]", ret);
+       }
+
+       return ret;
+}
+
+double mp_setting_get_play_speed(void)
+{
+       double speed = 1.0;
+       if (vconf_get_dbl(VCONFKEY_MUSIC_PLAY_SPEED, &speed)){
+               mp_error("vconf_get_int()");
+       }
+       if(speed > 2.0 || speed < 0.5)
+       {
+               ERROR_TRACE("inavlid speed: %f", speed);
+               speed = 1.0;
+       }
+       return speed;
+}
+
+#endif
+
+void
+mp_setting_update_active_device()
+{
+}
diff --git a/src/core/mp-streaming-mgr.c b/src/core/mp-streaming-mgr.c
new file mode 100644 (file)
index 0000000..0965afa
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * 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://floralicense.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 "music.h"
+#include "mp-streaming-mgr.h"
+#include "mp-http-mgr.h"
+#include "mp-player-debug.h"
+#include "mp-play.h"
+#include "mp-widget.h"
+#include "mp-player-mgr.h"
+#include "mp-util.h"
+
+static bool _mp_streaming_mgr_play_streaming_real(struct appdata *ad);
+
+static void
+_mp_streaming_mgr_utils_show_buffering_popup(void *data)
+{
+       DEBUG_TRACE("");
+       MP_CHECK(data);
+       struct appdata *ad = (struct appdata *)data;
+       if (ad->buffering_popup)
+       {
+               evas_object_del(ad->buffering_popup);
+               ad->buffering_popup = NULL;
+       }
+
+       Evas_Object *progressbar = NULL;
+       progressbar = elm_progressbar_add(ad->win_main);
+       elm_object_style_set(progressbar, "list_process");
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_show(progressbar);
+
+       if (ad->playing_view && ad->playing_view->play_view)
+               elm_object_part_content_set(ad->playing_view->play_view, "buffering_area", progressbar);
+
+       ad->buffering_popup = progressbar;
+}
+
+inline void
+mp_streaming_mgr_buffering_popup_control(struct appdata *ad, bool is_show)
+{
+       startfunc;
+
+       MP_CHECK(ad);
+
+       if (is_show)
+       {
+               mp_debug("show buffering popup");
+               /* show */
+               if (!ad->buffering_popup)
+                       _mp_streaming_mgr_utils_show_buffering_popup(ad);
+       }
+       else
+       {
+               /* hide */
+               if (ad->buffering_popup)
+               {
+                       evas_object_del(ad->buffering_popup);
+                       ad->buffering_popup = NULL;
+               }
+       }
+}
+
+bool mp_streaming_mgr_check_streaming(struct appdata *ad, const char *path)
+{
+       MP_CHECK_FALSE(path);
+
+       if (!mp_check_file_exist(path) && mp_util_check_uri_available(path)) {
+               mp_debug("streaming....");
+               return TRUE;
+       }
+
+       return FALSE;
+}
+
+bool mp_streaming_mgr_set_attribute(struct appdata *ad, player_h player)
+{
+       startfunc;
+
+       return TRUE;
+}
+
+bool mp_streaming_mgr_play_new_streaming(struct appdata *ad)
+{
+       startfunc;
+       MP_CHECK_FALSE(ad);
+
+       bool ret = FALSE;
+       MpHttpState_t state = mp_http_mgr_get_state(ad);
+       if ( state == MP_HTTP_STATE_OFF) {
+               mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_CONNECTION_FAILED"));
+               return FALSE;
+       }
+       else {  /* connected */
+               mp_streaming_mgr_buffering_popup_control(ad, TRUE);
+               ret = _mp_streaming_mgr_play_streaming_real(ad);
+       }
+
+       if (ret)
+               mp_streaming_mgr_buffering_popup_control(ad, FALSE);
+
+       return ret;
+}
+
+static bool _mp_streaming_mgr_play_streaming_real(struct appdata *ad)
+{
+       startfunc;
+       MP_CHECK_FALSE(ad);
+
+       return mp_play_new_file_real(ad, TRUE);
+}
+
diff --git a/src/core/mp-volume.c b/src/core/mp-volume.c
new file mode 100755 (executable)
index 0000000..f621f53
--- /dev/null
@@ -0,0 +1,264 @@
+#include <utilX.h>
+#include <Ecore.h>
+#include <Ecore_Evas.h>
+#include <sound_manager.h>
+#include "mp-define.h"
+#include "mp-volume.h"
+
+
+typedef struct {
+       Ecore_X_Window xwin;
+       bool condition[MP_VOLUME_KEY_GRAB_COND_MAX];
+       bool grabbed;
+
+       /* key event callback */
+       Mp_Volume_Key_Event_Cb key_event_cb;
+       void *key_event_user_data;
+
+       /* volume change callback */
+       Mp_Volume_Change_Cb volume_change_cb;
+
+       Ecore_Timer *pressed_timer;
+} MpVolumeKeyMgr_t;
+
+static MpVolumeKeyMgr_t g_volume_key_mgr;
+
+
+void
+mp_volume_key_grab_set_window(Ecore_X_Window xwin)
+{
+       g_volume_key_mgr.xwin = xwin;
+
+}
+
+static void
+_mp_volume_key_grab_check_condition()
+{
+       bool start = true;
+       int condition = 0;
+       while (condition < MP_VOLUME_KEY_GRAB_COND_MAX) {
+               if (!g_volume_key_mgr.condition[condition]) {
+                       /* do NOT start */
+                       start = false;
+                       break;
+               }
+               condition++;
+       }
+
+       /* start key grab */
+       if (start)
+               mp_volume_key_grab_start();
+       else
+               mp_volume_key_grab_end();
+}
+
+void
+mp_volume_key_grab_condition_set(mp_volume_key_grab_condition_e condition, bool enabled)
+{
+       MP_CHECK(condition < MP_VOLUME_KEY_GRAB_COND_MAX);
+
+       /* set condition */
+       g_volume_key_mgr.condition[condition] = enabled;
+       WARN_TRACE("VOL key grab condition(%d) changed => [%d]", condition, enabled);
+
+       _mp_volume_key_grab_check_condition();
+}
+
+bool
+mp_volume_key_grab_start()
+{
+       MP_CHECK_FALSE(g_volume_key_mgr.xwin);
+
+       int error = 0;
+       Ecore_X_Display* disp = ecore_x_display_get();
+
+       error = utilx_grab_key(disp, g_volume_key_mgr.xwin, KEY_VOLUMEUP, OR_EXCLUSIVE_GRAB);
+       if (error != 0) {
+               mp_error("utilx_grab_key(KEY_VOLUMEUP)... [0x%x]", error);
+               return false;
+       }
+
+       error = utilx_grab_key(disp, g_volume_key_mgr.xwin, KEY_VOLUMEDOWN, OR_EXCLUSIVE_GRAB);
+       if (error != 0) {
+               mp_error("utilx_grab_key(KEY_VOLUMEDOWN)... [0x%x]", error);
+               utilx_ungrab_key(disp, g_volume_key_mgr.xwin, KEY_VOLUMEUP);
+               return false;
+       }
+
+       error = vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 1);
+       if (error != 0) {
+               mp_error("vcont_set_int()...[0x%x]", error);
+       }
+
+       WARN_TRACE("START_volume_key_grab");
+       g_volume_key_mgr.grabbed = true;
+       return true;
+}
+
+void
+mp_volume_key_grab_end()
+{
+       Ecore_X_Display* disp = ecore_x_display_get();
+       utilx_ungrab_key(disp, g_volume_key_mgr.xwin, KEY_VOLUMEUP);
+       utilx_ungrab_key(disp, g_volume_key_mgr.xwin, KEY_VOLUMEDOWN);
+
+       if (g_volume_key_mgr.pressed_timer && g_volume_key_mgr.key_event_cb) {
+               g_volume_key_mgr.key_event_cb(g_volume_key_mgr.key_event_user_data, MP_VOLUME_KEY_DOWN, true);
+       }
+       mp_ecore_timer_del(g_volume_key_mgr.pressed_timer);
+
+       WARN_TRACE("STOP_volume_key_grab");
+       g_volume_key_mgr.grabbed = false;
+}
+
+static Eina_Bool
+_mp_volume_key_pressed_timer(void *data)
+{
+       volume_key_type_e type = (int)data;
+
+       if (g_volume_key_mgr.key_event_cb) {
+               g_volume_key_mgr.key_event_cb(g_volume_key_mgr.key_event_user_data, type, false);
+       }
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+void _mp_volume_changed_cb(sound_type_e type, unsigned int volume, void *user_data)
+{
+       if(type == SOUND_TYPE_MEDIA)
+       {
+               DEBUG_TRACE("");
+               if(g_volume_key_mgr.volume_change_cb)
+                       g_volume_key_mgr.volume_change_cb(volume, user_data);
+       }
+}
+
+
+void
+mp_volume_key_event_send(mp_volume_key_e type, bool released)
+{
+       WARN_TRACE("volume key[%d], released[%d]", type, released);
+
+       if (!g_volume_key_mgr.grabbed) {
+               WARN_TRACE("already ungrabbed.. ignore this event");
+               return;
+       }
+
+       if (!released && g_volume_key_mgr.pressed_timer) {
+               /* long press timer is working*/
+               return;
+       }
+
+       mp_ecore_timer_del(g_volume_key_mgr.pressed_timer);
+
+       if (g_volume_key_mgr.key_event_cb) {
+               /* send callback */
+               g_volume_key_mgr.key_event_cb(g_volume_key_mgr.key_event_user_data, type, released);
+       }
+
+       if (!released)
+               g_volume_key_mgr.pressed_timer = ecore_timer_add(0.2, _mp_volume_key_pressed_timer, (void *)type);
+}
+
+void
+mp_volume_key_event_callback_add(Mp_Volume_Key_Event_Cb event_cb, void *user_data)
+{
+       g_volume_key_mgr.key_event_cb = event_cb;
+       g_volume_key_mgr.key_event_user_data = user_data;
+}
+
+void
+mp_volume_key_event_callback_del()
+{
+       g_volume_key_mgr.key_event_cb = NULL;
+       g_volume_key_mgr.key_event_user_data = NULL;
+       mp_ecore_timer_del(g_volume_key_mgr.pressed_timer);
+}
+
+int
+mp_volume_get_max()
+{
+       int max_vol = 0;
+
+       int ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &max_vol);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               mp_error("sound_manager_get_max_volume().. [0x%x]", ret);
+               return -1;
+       }
+
+       return max_vol;
+}
+
+int
+mp_volume_get_current()
+{
+       int current = 0;
+
+       int ret = sound_manager_get_volume(SOUND_TYPE_MEDIA, &current);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               mp_error("sound_manager_get_max_volume().. [0x%x]", ret);
+               return -1;
+       }
+
+       return current;
+}
+
+bool
+mp_volume_set(int volume)
+{
+       int ret = sound_manager_set_volume(SOUND_TYPE_MEDIA, volume);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               mp_error("sound_manager_set_volume().. [0x%x]", ret);
+               return false;
+       }
+
+       WARN_TRACE("set volue [%d]", volume);
+       return true;
+}
+
+bool
+mp_volume_up()
+{
+       int current = mp_volume_get_current();
+       int max = mp_volume_get_max();
+
+       bool ret = true;
+       if (current < max)
+               ret = mp_volume_set(current+1);
+
+       return ret;
+}
+
+bool
+mp_volume_down()
+{
+       int current = mp_volume_get_current();
+
+       bool ret = true;
+       if (current > 0)
+               ret = mp_volume_set(current-1);
+
+       return ret;
+}
+
+void
+mp_volume_add_change_cb(Mp_Volume_Change_Cb cb, void *user_data)
+{
+       if(g_volume_key_mgr.volume_change_cb) return;
+
+       startfunc;
+       int res = SOUND_MANAGER_ERROR_NONE;
+       if(cb)
+       {
+               g_volume_key_mgr.volume_change_cb = cb;
+               res = sound_manager_set_volume_changed_cb(_mp_volume_changed_cb, user_data);
+               if(res != SOUND_MANAGER_ERROR_NONE)
+               {
+                       ERROR_TRACE("Error: sound_manager_set_volume_changed_cb");
+               }
+       }
+
+       endfunc;
+}
+
+
diff --git a/src/include/mp-define.h b/src/include/mp-define.h
new file mode 100644 (file)
index 0000000..be05239
--- /dev/null
@@ -0,0 +1,339 @@
+/*
+ * 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://floralicense.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_DEFINE_H_
+#define __MP_DEFINE_H_
+
+#include <Elementary.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <unistd.h>
+#include <glib.h>
+#include <vconf.h>
+#include "mp-media-info.h"
+#include <Ecore_IMF.h>
+#include <Ecore_X.h>
+#include <Edje.h>
+#include <errno.h>
+#include <libintl.h>
+#include <libxml/tree.h>
+#include <libxml/parser.h>
+#include <libxml/xpath.h>
+#include <libxml/xpathInternals.h>
+#include <sys/times.h>
+
+#include "mp-player-debug.h"
+#include "mp-ta.h"
+#include "mp-vconf-private-keys.h"
+#include "mp-images.h"
+#include "mp-common-defs.h"
+
+#ifndef MP_SQUARE_FEATURE
+#define MP_SQUARE_FEATURE
+#endif
+
+#ifdef MP_SOUND_PLAYER
+ #undef MP_SQUARE_FEATURE
+#endif
+
+#ifndef bool
+#define bool Eina_Bool
+#endif
+
+#define GET_SYS_STR(str) dgettext("sys_string", str)
+
+#define DOMAIN_NAME "music-player"
+#define LOCALE_DIR LOCALEDIR
+#define GET_STR(str) dgettext(DOMAIN_NAME, str)
+
+#ifdef __ARM__
+#define ENABLE_RICHINFO
+#else
+#define __I386__               //define for support i386
+#endif
+
+#ifndef PACKAGE
+#define PACKAGE "music-player"
+#endif
+
+#define DATA_DIR       DATA_PREFIX"/data"
+
+#ifndef MP_INI_DIR
+#define MP_INI_DIR DATA_DIR
+#endif
+
+#define PKGNAME_FOR_SHORTCUT   PKG_NAME
+
+#define EDJ_PATH EDJDIR
+#define EDJ_NAME EDJ_PATH"/mp-library.edj"
+#define MINICON_EDJ_NAME EDJ_PATH"/mp-minicontroller.edj"
+#define IMAGE_EDJ_NAME EDJ_PATH"/mp-images.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/usr/media"
+#define MP_MMC_ROOT_PATH               "/opt/storage/sdcard"
+
+#define MP_THUMB_DOWNLOAD_TEMP_DIR     DATA_DIR"/.allshare/thumb"
+
+#ifdef PATH_MAX
+#      define MAX_NAM_LEN   PATH_MAX
+#else
+#      define MAX_NAM_LEN   4096
+#endif
+
+
+#ifndef FALSE
+#define FALSE  0
+#endif
+#ifndef TRUE
+#define TRUE   1
+#endif
+
+#define SIGNAL_MAIN_MUTE_SHOW                                  "signal.main.mute.show"
+#define SIGNAL_MAIN_MUTE_HIDE                                  "signal.main.mute.hide"
+
+#define CHECK(x) if(!x)        ERROR_TRACE("RETURN NULL!!\n", x);
+#define SAFE_FREE(x)       if(x) {free(x); x = NULL;}
+
+#define MAX_STR_LEN                            MAX_NAM_LEN
+#define MAX_URL_LEN                            MAX_NAM_LEN
+
+#define PLAY_VIEW_EDJ_NAME                     EDJ_PATH"/music.edj"
+
+#define SIGNAL_PAUSE                                           "pause_clicked"
+#define SIGNAL_PLAY                                            "play_clicked"
+#define SIGNAL_VOLUME                                  "play_volume_clicked"
+#define SIGNAL_ALBUMART_CLICKED                        "album_art_clicked"
+#define SIGNAL_ALBUMART_UP                             "album_art_up"
+#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"
+#define SIGNAL_REPNON                                  "rep_non_clicked"
+#define SIGNAL_REP1                                            "rep_1_clicked"
+#define SIGNAL_AUTOREP                                 "auto_rep_clicked"
+#define SIGNAL_MAINALBUM_CLICKED               "main_albumart_clicked"
+#define SIGNAL_FAVORITE_CLICKED                        "favorite_clicked"
+#define SIGNAL_NOW_PLAYING_CLICKED     "now_playing_clicked"
+
+//2 EVAS_OBJECT_TYPE define
+#define MP_FAST_SCROLLER_TYPE                                  "mp_data_fast_scroller_type"
+
+//2 FEATURE define
+#define MP_FEATURE_SUPPORT_ID3_TAG
+
+#define MP_FEATURE_ADD_TO_HOME
+#define MP_FEATURE_S_BEAM
+#define MP_FEATURE_MOTION
+#define MP_FEATURE_NFC_SHARE
+#define MP_FEATURE_SVOICE
+#define MP_FEATURE_PLAY_SPEED
+#ifndef MP_SOUND_PLAYER        /* music player only*/
+#define MP_FEATURE_ASF_ALLSHARE
+#define MP_FEATURE_LIVE_BOX
+#define MP_FEATURE_SPLIT_VIEW
+#define MP_FEATURE_AUTO_OFF
+#define MP_FEATURE_CONTEXT_ENGINE
+#endif
+#ifdef MP_SOUND_PLAYER
+#undef MP_3D_FEATURE
+#define MP_FEATURE_EXIT_ON_BACK
+#endif
+#define MP_FEATURE_WIFI_SHARE
+#define MP_FEATURE_INNER_SETTINGS
+#define MP_FEATURE_SOUND_ALIVE
+//#define MP_FEATURE_DRM_CONSUMPTION
+#define MP_FEATURE_AVRCP_13
+#define MP_FEATURE_DESKTOP_MODE
+
+#define MP_FUNC_ALLSHARE_PLAYLIST                      "music-player:allshare_"
+
+#define MP_POPUP_YES   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
+#define PLAY_TIME_FORMAT "02u:%02u"
+
+#define MUSIC_TIME_ARGS(t) \
+        ((int)(t)) / (3600), \
+        (((int)(t)) / 60) % 60, \
+        ((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) { \
+               evas_object_del(object); \
+               object = NULL; \
+       } \
+} 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);\
+               timer = NULL; \
+       } \
+} while (0)
+
+#define mp_ecore_idler_del(idler) do { \
+       if(idler) { \
+               ecore_idler_del(idler);\
+               idler = NULL; \
+       } \
+} while (0)
+
+
+#define SAFE_STRCPY(dest, src) \
+       do{if(!dest||!src)break;\
+               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,
+       MP_SND_PATH_EARPHONE,
+       MP_SND_PATH_SPEAKER,
+       MP_SND_PATH_MAX,
+} mp_snd_path;
+
+typedef enum
+{
+       MP_VIEW_MODE_DEFAULT,
+       MP_VIEW_MODE_EDIT,
+       MP_VIEW_MODE_SEARCH,
+} mp_view_mode_t;
+
+typedef enum
+{
+       MP_VIEW_TYPE_SONGS,
+       MP_VIEW_TYPE_PLAYLIST,
+       MP_VIEW_TYPE_ALBUM,
+       MP_VIEW_TYPE_GENRE,
+       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;
+
+#define MP_GENLIST_CHECK_FOREACH_SAFE(first, current, next, data) \
+       for (current = first,                                      \
+               next = elm_genlist_item_next_get(current),                    \
+               data = elm_object_item_data_get(current);                  \
+               current;                                             \
+               current = next,                                    \
+               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_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 SINGLE_BYTE_MAX 0x7F
+
+typedef enum
+{
+       MP_UG_MESSAGE_BACK,
+       MP_UG_MESSAGE_DEL,
+       MP_UG_MESSAGE_LOAD,
+}mp_ug_message_t;
+
+#define MP_POPUP_GENLIST_ITEM_H 112
+#define MP_POPUP_GENLIST_ITEM_H_MAX 408
+#define MP_POPUP_GENLIST_ITEM_W 610
+
+#define ELM_NAVIFRAME_ITEM_CONTENT                             "default"
+#define ELM_NAVIFRAME_ITEM_ICON                                        "icon"
+#define ELM_NAVIFRAME_ITEM_OPTIONHEADER                        "optionheader"
+#define ELM_NAVIFRAME_ITEM_TITLE_LABEL                 "title"
+#define ELM_NAVIFRAME_ITEM_PREV_BTN                            "prev_btn"
+#define ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN              "title_left_btn"
+#define ELM_NAVIFRAME_ITEM_TITLE_RIGHT_BTN             "title_right_btn"
+#define ELM_NAVIFRAME_ITEM_TITLE_MORE_BTN              "title_more_btn"
+#define ELM_NAVIFRAME_ITEM_CONTROLBAR                  "controlbar"
+#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
new file mode 100644 (file)
index 0000000..127a62e
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * 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://floralicense.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_PLAYER_DEBUG_H_
+#define __MP_PLAYER_DEBUG_H_
+
+
+#include <stdio.h>
+#include <unistd.h>
+#include "assert.h"
+#include <linux/unistd.h>
+
+#define ENABLE_CHECK_START_END_FUNCTION        // support enter leave debug message
+
+#define ENABLE_LOG_SYSTEM
+
+#ifdef ENABLE_LOG_SYSTEM
+
+#define USE_DLOG_SYSTEM
+
+#define gettid() syscall(__NR_gettid)
+
+#ifdef USE_DLOG_SYSTEM
+#include <dlog.h>
+
+#ifdef LOG_TAG
+#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(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(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
+
+
+
+#define mp_debug(fmt, arg...) do{fprintf(stderr, "[%s : %s-%d]\t - \n", __FILE__, __func__, __LINE__);\
+           fprintf (stderr, __VA_ARGS__);}while(0)
+
+#define DEBUG_TRACE(fmt, arg...) do{fprintf(stderr, "[%s : %s-%d]\t - \n", __FILE__, __func__, __LINE__);\
+           fprintf (stderr, __VA_ARGS__);}while(0)
+#define INFO_TRACE(fmt, arg...) do{fprintf(stderr, "[%s : %s-%d]\t - \n", __FILE__, __func__, __LINE__);\
+           fprintf (stderr, __VA_ARGS__);}while(0)
+#define WARN_TRACE(fmt, arg...) do{fprintf(stderr, "[%s : %s-%d]\t - \n", __FILE__, __func__, __LINE__);\
+           fprintf (stderr, __VA_ARGS__);}while(0)
+#define ERROR_TRACE(fmt, arg...) do{fprintf(stderr, "[%s : %s-%d]\t - \n", __FILE__, __func__, __LINE__);\
+           fprintf (stderr, __VA_ARGS__);}while(0)
+#define mp_debug_temp(fmt, arg...) do{fprintf(stderr, "[%s : %s-%d]\t - \n", __FILE__, __func__, __LINE__);\
+           fprintf (stderr, __VA_ARGS__);}while(0)
+#endif //USE_DLOG_SYSTEM
+
+#define DEBUG_TRACE_FUNC() DEBUG_TRACE("")
+
+#else //ENABLE_LOG_SYSTEM
+#define mp_debug(fmt, arg...)
+#define DEBUG_TRACE(fmt, arg...)
+#define INFO_TRACE(fmt, arg...)
+#define WARN_TRACE(fmt, arg...)
+#define ERROR_TRACE(fmt, arg...)
+#define mp_debug_temp(fmt, arg...)
+#endif //ENABLE_LOG_SYSTEM
+
+#ifdef ENABLE_CHECK_START_END_FUNCTION
+#define startfunc              DEBUG_TRACE("+-  START -------------------------");
+#define endfunc                DEBUG_TRACE("+-  END  --------------------------");
+#define exceptionfunc  ERROR_TRACE("### CRITICAL ERROR   ###");
+#else
+#define startfunc
+#define endfunc
+#define exceptionfunc
+#endif
+
+#define mp_ret_if(expr) do { \
+       if(expr) { \
+               WARN_TRACE("");\
+               return; \
+       } \
+} while (0)
+#define mp_retv_if(expr, val) do { \
+       if(expr) { \
+               WARN_TRACE("");\
+               return (val); \
+       } \
+} while (0)
+
+#define mp_retm_if(expr, fmt, arg...) do { \
+       if(expr) { \
+               WARN_TRACE(fmt, ##arg); \
+               return; \
+       } \
+} while (0)
+
+#define mp_retvm_if(expr, val, fmt, arg...) do { \
+       if(expr) { \
+               WARN_TRACE(fmt, ##arg); \
+               return (val); \
+       } \
+} while (0)
+
+#define MP_CHECK_EXCEP(expr) do { \
+       if(!(expr)) { \
+               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 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")
+#define MP_CHECK(expr)                                 mp_retm_if(!(expr),"INVALID PARAM RETURN")
+
+#define mp_assert(expr) do { \
+       if(!(expr)) { \
+               ERROR_TRACE("CRITICAL ERROR ## CHECK BELOW ITEM");\
+               assert(FALSE); \
+       } \
+} while (0)
+
+
+#endif // __MP_PLAYER_DEBUG_H_
diff --git a/src/include/music.h b/src/include/music.h
new file mode 100644 (file)
index 0000000..60c722b
--- /dev/null
@@ -0,0 +1,466 @@
+/*
+ * 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://floralicense.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 __DEF_music_H_
+#define __DEF_music_H_
+
+#include <Elementary.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <unistd.h>
+#include <glib.h>
+#include <vconf.h>
+#include <Ecore_IMF.h>
+#include <Ecore_X.h>
+#include <app.h>
+#include <Edje.h>
+#include <errno.h>
+#include <libintl.h>
+#include <ui-gadget.h>
+
+#include <sys/times.h>
+
+#include "mp-define.h"
+#include "mp-player-debug.h"
+#include "mp-player-drm.h"
+
+#include "mp-define.h"
+#include "mp-playlist-mgr.h"
+
+#include "mp-http-mgr.h"
+#include "mp-ta.h"
+#include "mp-language-mgr.h"
+#include "mp-media-info.h"
+
+#include "mp-lyric-view.h"
+#include "mp-lyric-mgr.h"
+#include "mp-play-view.h"
+
+
+#ifdef MP_SOUND_PLAYER
+#include "sp-view-manager.h"
+#endif
+
+E_DBus_Connection *EDBusHandle;
+
+typedef struct
+{
+
+       /* controlbar tab item */
+       Elm_Object_Item *ctltab_songs;
+       Elm_Object_Item *ctltab_plist;
+       Elm_Object_Item *ctltab_album;
+       Elm_Object_Item *ctltab_artist;
+       Elm_Object_Item *ctltab_genres;
+       Elm_Object_Item *ctltab_year;
+       Elm_Object_Item *ctltab_composer;
+       Elm_Object_Item *ctltab_folder;
+
+
+
+       bool allshare;
+
+       bool first_append;
+} mp_library;
+
+
+#define MP_VIEW_DATA_MAGIC     0x801211aa
+#define MP_SET_VIEW_DATA_MAGIC(view_data)      ((view_data_t *)view_data)->magic = MP_VIEW_DATA_MAGIC
+#define MP_CHECK_VIEW_DATA(view_data)  \
+do {                                                  \
+       if (((view_data_t *)view_data)->magic != MP_VIEW_DATA_MAGIC) {        \
+               ERROR_TRACE("\n###########      ERROR   CHECK  #############\nPARAM is not view_data\n###########      ERROR   CHECK  #############\n"); \
+               mp_assert(FALSE);}            \
+} while (0)
+
+
+typedef struct
+{
+       Evas_Object *layout;
+       void *EvasPlugin;
+       Evas_Object *box;
+       Evas_Object *dali_obj;
+
+       Ecore_Timer *mouse_up_timer;
+       Ecore_Timer *now_playing_timer;
+
+       Evas_Object *track_list;
+       Evas_Object *track_genlist;
+       bool show_track_list;
+
+       int        track_count;
+
+       Evas_Object *now_playing;
+       Evas_Object *now_playing_icon;
+       Evas_Object *all_tracks;
+       bool all_tracks_click;
+       Evas_Object* ctxpopup;
+       int all_tracks_type;
+
+       Evas_Object *back_button;
+
+       int now_playing_album_seq;
+
+       char *cur_artist;
+       char *cur_album;
+
+       Ecore_Job *refresh_job;
+
+       struct appdata *ad;
+} mp_coverflow_view;
+
+typedef struct
+{
+       char *uri;
+       char *title;
+       char *artist;
+       char *album;
+       char *genre;
+       char *location;
+       char *format;
+
+       int duration;
+
+       char *thumbnail_path;
+       char *copyright;
+
+       char *author;
+       char *track_num;
+       bool favorite;
+}mp_track_info_t;
+
+enum
+{
+       MP_CREATE_PLAYLIST_MODE_NONE,
+       MP_CREATE_PLAYLIST_MODE_NEW,
+       MP_CREATE_PLAYLIST_MODE_WITHMUSICS,
+       MP_CREATE_PLAYLIST_MODE_SAVEAS,
+       MP_CREATE_PLAYLIST_MODE_SWEEP
+};
+
+typedef enum
+{
+       MP_LAUNCH_DEFAULT = 0,  //normal case
+       MP_LAUNCH_BY_PATH,              //ug case
+       MP_LAUNCH_ADD_TO_HOME,  //add to home
+       MP_LAUNCH_PLAY_RECENT,
+       MP_LAUNCH_LIVE_BOX,
+
+
+} mp_launch_type;
+
+typedef enum
+{
+       LOAD_DEFAULT,
+       LOAD_TRACK,             //load by path
+       LOAD_GROUP,             //load by shortcut
+       LOAD_PLAYLIST,          //load by shortcut
+       LOAD_MM_KEY,
+
+} mp_load_type;
+
+typedef enum
+{
+       MP_SPLIT_VIEW_TYPE_NORMAL = 0,
+       MP_SPLIT_VIEW_TYPE_FULL,
+} mp_split_view_type;
+
+typedef struct mp_split_view
+{
+       Evas_Object *layout;
+       Evas_Object *left_layout;
+       Evas_Object *right_layout;
+       Evas_Object *list;
+       Evas_Object *fast_index;
+       mp_split_view_type current_split_view_type;
+       Ecore_Timer *idle_timer;
+       Ecore_Idler *idle_idler;
+} mp_split_view;
+
+
+typedef enum
+{
+       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;
+
+typedef enum
+{
+       PLAY_STATE_NONE,
+       PLAY_STATE_CREATED,
+       PLAY_STATE_PREPARING,
+       PLAY_STATE_READY,
+       PLAY_STATE_PLAYING,
+       PLAY_STATE_PAUSED,
+} mp_player_state;
+
+typedef enum {
+       MP_SEND_TYPE_MESSAGE,
+       MP_SEND_TYPE_EMAIL,
+       MP_SEND_TYPE_BLUETOOTH,
+       MP_SEND_TYPE_WIFI,
+       MP_SEND_TYPE_NFC,
+       MP_SEND_TYPE_NUM,
+} mp_send_type_e;
+
+typedef enum {
+       MP_MORE_BUTTON_TYPE_DEFAULT,
+       MP_MORE_BUTTON_TYPE_TRACK_LIST,
+       MP_MORE_BUTTON_TYPE_MAX,
+} mp_more_button_type_e;
+
+struct appdata
+{
+
+       Evas *evas;
+       Evas_Object *win_main;
+       Evas_Object *bg;
+       Evas_Object *popup[MP_POPUP_MAX];
+       Ecore_Idler *popup_del_idler;
+       int win_angle;
+
+       Ecore_X_Window xwin;
+
+#ifdef MP_FEATURE_EXIT_ON_BACK
+       Ecore_Event_Handler *callerWinEventHandler;
+       unsigned int caller_win_id;
+#endif
+       /* Layout for each view */
+       Evas_Object *conformant;
+       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;
+
+
+       // for Plalying Control
+       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_plst_mgr *playlist_mgr;
+
+       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;
+       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.
+       bool update_default_view;
+
+       Ecore_IMF_Context *imf_context;
+#ifdef MP_SOUND_PLAYER
+       Sp_View_Manager *view_mgr;
+#else
+       mp_library *library;
+       GList *view_history;
+#endif
+       Evas_Object *tabbar;
+       Evas_Object *genlist_edit;
+
+       Evas_Object *editfiled_new_playlist;
+       Evas_Object *editfiled_entry;
+       char *new_playlist_name;
+
+       bool b_add_tracks;
+
+       int new_playlist_id;
+
+       struct {
+               bool  downed;
+               bool  moving;
+               Evas_Coord sx;
+               Evas_Coord sy;
+       } mouse;
+
+       Evas_Object *radio_group;
+
+       Evas_Object *popup_delete;
+       Evas_Object *notify_delete;
+
+       bool b_search_mode;
+       Evas_Object *isf_entry;
+       Evas_Object *editfield;
+
+       bool freeze_indicator_icon;     //set it true to prevent flickering play icon of indicator.
+
+       int ear_key_press_cnt;
+       Ecore_Timer *ear_key_timer;
+
+       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.
+       mp_split_view *split_view;
+       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;
+
+       Ecore_Pipe *inotify_pipe;
+
+       // for add to playlist
+       void *layout_data;
+       mp_media_info_h group_item_handler;
+       char *fid;
+
+       bool paused_by_user;
+
+       mp_http_mgr_t *http_mgr;
+
+       bool navi_effect_in_progress;   // Use this not to excute button callbacks while transition effect
+
+       bool app_is_foreground; // relaunch only available when music is in pause state
+       bool is_lcd_off;
+
+       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 *key_up;
+       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;
+       Ecore_Event_Handler *property;
+
+       int motion_handle;
+
+       Evas_Object *buffering_popup;
+
+       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
+
+       bool music_setting_change_flag; //true for change music setting data, false for not
+
+       bool load_play_view; /*set it true if play view must be displayed directly when app is launching*/
+
+       bool is_Longpress;
+       bool is_ff;
+
+       Ecore_Idler *mss_startup_idler;
+       Ecore_Idler *bt_pause_idler;
+       Ecore_Idler *setting_idler;
+       Ecore_Idler *app_init_idler;
+       Ecore_Idler *playview_show_idler;
+
+       Ecore_Timer *longpress_timer;
+       bool seek_off;
+
+       mp_lyric_mgr_t *lyric_mgr;
+       mp_lyric_view_t *lyric_view;
+       bool b_show_lyric;
+       bool vertical_scroll;
+
+       char *shortcut_descrition;
+
+       Ecore_Animator *minfo_ani;
+       GList *minfo_list;
+       Evas_Object *minfo_genlist;
+
+       bool direct_win_minimize;
+
+       int album_image_w;
+       int album_image_h;
+
+       bool paused_by_other_player;
+
+       mp_track_info_t *current_track_info;
+
+
+
+
+#ifdef MP_FEATURE_AUTO_OFF
+       Ecore_Timer *auto_off_timer;
+       Ecore_Timer *pause_off_timer;
+#endif
+
+
+       Evas_Object *more_btn_popup;
+       mp_more_button_type_e more_btn_type;
+
+};
+
+
+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
new file mode 100755 (executable)
index 0000000..5aefe08
--- /dev/null
@@ -0,0 +1,1055 @@
+/*
+ * 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://floralicense.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-ta.h"
+#include "music.h"
+#include "mp-widget.h"
+#include "mp-util.h"
+#include "mp-setting-ctrl.h"
+#include "mp-item.h"
+#include "mp-player-control.h"
+#include "mp-play-view.h"
+#include "mp-http-mgr.h"
+#include "mp-playlist-mgr.h"
+#include "mp-ug-launch.h"
+#include "mp-popup.h"
+
+#include <signal.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "mp-player-mgr.h"
+#include "mp-player-debug.h"
+#include <syspopup_caller.h>
+#include <power.h>
+#include "mp-minicontroller.h"
+#include "mp-app.h"
+#include "mp-play.h"
+#include "mp-volume.h"
+#include "mp-common-defs.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
+
+
+
+
+#ifdef MP_FEATURE_AVRCP_13
+#include "mp-avrcp.h"
+#endif
+
+
+
+
+#ifdef MP_FEATURE_EXIT_ON_BACK
+#define MP_EXIT_ON_BACK "ExitOnBack"
+#endif
+
+
+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);
+static Eina_Bool _mp_main_win_focus_out_cb(void *data, int type, void *event);
+static Eina_Bool _mp_main_app_init_idler_cb(void *data);
+
+static void
+_mp_main_exit_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       mp_evas_object_del(obj);
+
+       mp_app_exit(data);
+}
+
+static void
+_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);
+
+}
+
+static bool
+_mp_main_init(struct appdata *ad)
+{
+       EDBusHandle = NULL;
+       ad->request_play_id = MP_SYS_PLST_NONE;
+       ad->music_setting_change_flag = false;
+
+       mp_media_info_connect();
+
+       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->app_init_idler = ecore_idler_add(_mp_main_app_init_idler_cb, ad);
+
+       return TRUE;
+}
+
+static bool
+_mp_main_set_current_playing_item(struct appdata *ad, const char *current_player_path)
+{
+       startfunc;
+       ad->loadtype = LOAD_TRACK;
+
+       mp_playlist_mgr_clear(ad->playlist_mgr);
+       mp_plst_item *item = mp_playlist_mgr_item_append(ad->playlist_mgr, current_player_path, NULL, MP_TRACK_URI);
+       mp_playlist_mgr_set_current(ad->playlist_mgr, item);
+
+       ad->launch_type = MP_LAUNCH_BY_PATH;
+
+       return true;
+
+}
+
+static bool
+_mp_main_is_launching_available(struct appdata *ad)
+{
+       TA_S(2, "mp_check_battery_available");
+       if (mp_check_battery_available())
+       {
+               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;
+       }
+       TA_E(2,"mp_check_battery_available");
+
+       TA_S(2, "mp_check_mass_storage_mode");
+       if (mp_check_mass_storage_mode())
+       {
+               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;
+       }
+       TA_E(2,"mp_check_mass_storage_mode");
+       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;
+       mp_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is null");
+
+       Ecore_X_Event_Window_Visibility_Change* ev = (Ecore_X_Event_Window_Visibility_Change *)event;
+       mp_debug("## Type=[%d], win=[%d], fully_obscured=[%d] ##", type, ev->win, ev->fully_obscured);
+
+       if (ev->win == ad->xwin) {
+               /* main window */
+               if (ev->fully_obscured == 1) {
+                       mp_debug("hide main window");
+                       mp_player_mgr_vol_type_unset();
+
+                       ad->app_is_foreground = false;
+               } else {
+                       mp_debug("show main window");
+                       mp_player_mgr_vol_type_set();
+                       ad->app_is_foreground = true;
+               }
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool _mp_main_win_focus_in_cb(void *data, int type, void *event)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       mp_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is null");
+
+
+       Ecore_X_Event_Window_Focus_In *ev = (Ecore_X_Event_Window_Focus_In *)event;
+       if (ev->win != ad->xwin)
+               return ECORE_CALLBACK_PASS_ON;
+
+       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)
+       {
+               DEBUG_TRACE("update list");
+               mp_view_manager_update_list_contents(mp_util_get_view_data(ad), true);
+       }
+#endif
+
+       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_WINDOW_FOCUS, true);
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static void _show_minicontroller(struct appdata *ad)
+{
+       ad->is_focus_out = true;
+       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);
+       }
+}
+
+static Eina_Bool _mp_main_win_focus_out_cb(void *data, int type, void *event)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       mp_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is null");
+
+
+       Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)event;
+       if (ev->win != ad->xwin)
+               return ECORE_CALLBACK_PASS_ON;
+
+               /* 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. */
+       _show_minicontroller(ad);
+
+       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_WINDOW_FOCUS, false);
+
+       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);
+
+       if(state == POWER_STATE_SCREEN_OFF){
+               ad->is_lcd_off = true;
+#ifdef MP_SOUND_PLAYER
+               mp_play_view_progress_timer_freeze(ad);
+#else
+               mp_view_manager_freeze_progress_timer(ad);
+#endif
+       }else if(state == POWER_STATE_NORMAL){
+               ad->is_lcd_off = false;
+               /* 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
+       }
+}
+
+
+Eina_Bool __mp_main_app_prop_change(void *data, int ev_type, void *ev)
+{
+       startfunc;
+       Ecore_X_Event_Window_Property *event = ev;
+
+       if (event->win != ecore_x_window_root_first_get())
+               return ECORE_CALLBACK_PASS_ON;
+
+       if (event->atom != ecore_x_atom_get("FONT_TYPE_change"))
+               return ECORE_CALLBACK_PASS_ON;
+
+       DEBUG_TRACE("Font is changed!(FONT_TYPE_change)\n");
+
+       //We have a config(font) changed property. Here you can apply to new fonts
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_mp_main_app_init_idler_cb(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad);
+
+       if (!mp_app_noti_init(ad))
+       {
+               ERROR_TRACE("Error when noti init");
+       }
+
+       ad->key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, mp_app_key_down_cb, ad);
+       ad->key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, mp_app_key_up_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->client_msg = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _mp_main_client_message_cb, ad);
+       ad->property = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, __mp_main_app_prop_change, ad);
+
+#ifdef MP_ENABLE_INOTIFY
+       mp_app_inotify_init(ad);
+#endif
+
+       ad->app_init_idler = NULL;
+
+
+#ifdef MP_FEATURE_AUTO_OFF
+       mp_setting_auto_off_set_callback(mp_app_auto_off_changed_cb, ad);
+#endif
+
+#ifdef MP_FEATURE_PLAY_SPEED
+       mp_setting_reset_play_speed();
+       mp_setting_set_play_speed_change_callback(mp_app_play_speed_changed_cb, ad);
+#endif
+
+       power_set_changed_cb(__mp_main_lcd_state_changed_cb, ad);
+
+
+
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static bool __mp_main_service_extra_data_cb(service_h service, const char *key, void *user_data)
+{
+       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);
+
+       return true;
+}
+
+
+#ifdef MP_FEATURE_EXIT_ON_BACK
+static Eina_Bool
+_mp_main_caller_win_destroy_cb(void *data, int type, void *event)
+{
+       startfunc;
+       Ecore_X_Event_Window_Hide *ev;
+       struct appdata *ad = data;
+       MP_CHECK_VAL(ad, ECORE_CALLBACK_RENEW);
+
+        ev = event;
+       if (ev == NULL) {
+               DEBUG_TRACE("ev is NULL");
+               return ECORE_CALLBACK_RENEW;
+       }
+       //DEBUG_TRACE("win: %d, caller_win: %d", ev->win ,ad->caller_win_id);
+        if(ev->win == ad->caller_win_id) {
+               elm_exit();
+        }
+
+        return ECORE_CALLBACK_RENEW;
+}
+#endif
+
+
+static int
+_mp_main_parse_service(struct appdata *ad, service_h service, char **request_title, char **path, int *lunching_by_menu_icon, bool *activate_window)
+{
+       int ret = 0;
+       MP_CHECK_VAL(service, -1);
+
+       service_foreach_extra_data(service, __mp_main_service_extra_data_cb, NULL);
+       char *value = NULL;
+#ifdef MP_SOUND_PLAYER
+       if (!service_get_extra_data(service, MP_REQ_TYPE, &value))
+       {
+               DEBUG_TRACE("launch by S Voice app. req tyep: %s", value);
+       }
+       else if(mp_util_get_uri_from_app_svc(service, ad, path))
+       {
+               DEBUG_TRACE("uri: %s", *path);
+       }
+       else
+               ERROR_TRACE("No uri...");
+
+#ifdef MP_FEATURE_EXIT_ON_BACK
+       if(ad->caller_win_id)
+       {
+               DEBUG_TRACE("unset transient for win: 0x%x", ad->caller_win_id);
+               ecore_x_icccm_transient_for_unset(elm_win_xwindow_get(ad->win_main));
+               ecore_event_handler_del(ad->callerWinEventHandler);
+               ad->caller_win_id = 0;
+               ad->callerWinEventHandler = NULL;
+       }
+
+       unsigned int id = 0;
+       service_get_window(service, &id);
+       service_get_extra_data(service, MP_EXIT_ON_BACK, &value);
+
+       DEBUG_TRACE("Caller window id: 0x%x, ExitOnBack: %s", id, value);
+       if(id && value && !strcasecmp(value, "true"))
+       {
+               ecore_x_icccm_transient_for_set(elm_win_xwindow_get(ad->win_main), id);
+               ecore_x_window_client_manage(id);
+
+               ad->callerWinEventHandler =
+                       ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY,
+                                               _mp_main_caller_win_destroy_cb, ad);
+               ad->caller_win_id = id;
+       }
+#endif
+
+#else
+       char *uri = NULL;
+
+       *activate_window = true;
+
+       if(!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_REQ_TYPE, &value))
+       {
+               IF_FREE(value);
+       }
+
+       else
+       {
+               if(!service_get_extra_data(service, MP_MM_KEY, &value))
+               {
+                       DEBUG_TRACE("mm key event, ad->player_state : %d", ad->player_state);
+                       *activate_window = false;
+                       if(ad->player_state == PLAY_STATE_PAUSED)
+                       {
+                               ad->launch_type = MP_LAUNCH_DEFAULT;
+                               ad->loadtype = LOAD_DEFAULT;
+                               mp_play_control_play_pause(ad, true);
+                       }
+                       else
+                       {
+                               ad->launch_type = MP_LAUNCH_PLAY_RECENT;
+                               ad->loadtype = LOAD_MM_KEY;
+
+                               int count;
+                               mp_media_list_h media = NULL;
+
+                               *activate_window = false;
+                               mp_media_info_list_count(MP_TRACK_BY_PLAYED_TIME, NULL, NULL, NULL, 0, &count);
+                               if(!count)
+                               {
+                                       mp_media_info_list_count(MP_TRACK_ALL, NULL, NULL, NULL, 0, &count);
+                                       mp_media_info_list_create(&media, MP_TRACK_ALL, NULL, NULL, NULL, 0, 0, count);
+                               }
+                               else
+                                       mp_media_info_list_create(&media, MP_TRACK_BY_PLAYED_TIME, NULL, NULL, NULL, 0, 0, count);
+
+                               mp_util_append_media_list_item_to_playlist(ad->playlist_mgr, media, count, 0, NULL);
+                               mp_media_info_list_destroy(media);
+                       }
+                       IF_FREE(value);
+               }
+       }
+
+#endif
+       return ret;
+}
+
+
+static void
+_mp_atexit_cb(void)
+{
+       ERROR_TRACE("%%%%%%%%%%%%%%%%%%%%%");
+       ERROR_TRACE("#exit() invoked. music-player is exiting");
+       ERROR_TRACE("%%%%%%%%%%%%%%%%%%%%%");
+}
+
+static void
+_mp_playlist_item_change_callback(mp_plst_item *item, void *userdata)
+{
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       if(ad->current_track_info)
+       {
+               mp_util_free_track_info(ad->current_track_info);
+               ad->current_track_info = NULL;
+       }
+
+       if(item)
+       {
+               mp_util_load_track_info(ad, item, &ad->current_track_info);
+#ifdef MP_FEATURE_AVRCP_13
+               mp_avrcp_noti_track(ad->current_track_info->title,
+                       ad->current_track_info->artist, ad->current_track_info->album,
+                       ad->current_track_info->genre, ad->current_track_info->duration);
+#endif
+       }
+
+}
+
+/**< Called before main loop */
+static bool
+mp_create(void *data)
+{
+       struct appdata *ad = data;
+
+       atexit(_mp_atexit_cb);
+
+       MP_CHECK_VAL(ad, EINA_FALSE);
+
+       TA_S(0, "mp_create");
+
+       TA_S(1, "elm_theme_extension_add");
+       /* do extension add before add elm object.*/
+       elm_theme_extension_add(NULL, THEME_NAME);
+       TA_E(1,"elm_theme_extension_add");
+
+       TA_S(1, "bindtextdomain");
+       bindtextdomain(DOMAIN_NAME, LOCALE_DIR);
+       DEBUG_TRACE("DOMAIN_NAME: %s, LOCALE_DIR: %s", DOMAIN_NAME, LOCALE_DIR);
+       TA_E(1,"bindtextdomain");
+
+       TA_S(1, "mp_create_win");
+       ad->win_main = mp_create_win(GET_SYS_STR("IDS_COM_BODY_MUSIC"));
+       mp_retv_if(ad->win_main == NULL, EINA_FALSE);
+       elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_SHOW);
+       evas_event_callback_add(evas_object_evas_get(ad->win_main), EVAS_CALLBACK_RENDER_FLUSH_POST,
+                               _mp_evas_flush_post, ad);
+       ad->xwin = elm_win_xwindow_get(ad->win_main);
+       mp_volume_key_grab_set_window(ad->xwin);
+       TA_E(1,"mp_create_win");
+
+       TA_S(1, "mp_widget_create_bgimg");
+       ad->bgimage = mp_widget_create_bgimg(ad->win_main);
+       ad->evas = evas_object_evas_get(ad->win_main);
+       TA_E(1,"mp_widget_create_bgimg");
+
+       TA_S(1, "mp_player_mgr_session_init");
+       /*initialize session type */
+       if (!mp_player_mgr_session_init())
+       {
+               ERROR_TRACE("Error when set session");
+               return EINA_FALSE;
+       }
+       TA_E(1,"mp_player_mgr_session_init");
+
+       TA_S(1, "mp_setting_init");
+       mp_setting_init(ad);
+       TA_E(1,"mp_setting_init");
+
+       TA_S(1, "_mp_main_init");
+       if (!_mp_main_init(ad))
+       {
+               ERROR_TRACE("Fail when init music");
+               return EINA_FALSE;
+       }
+       TA_E(1,"_mp_main_init");
+
+
+#ifdef ENABLE_RICHINFO
+       xmlInitParser();
+#endif
+
+       TA_S(1, "mp_http_mgr_create");
+       mp_http_mgr_create(ad);
+       TA_E(1,"mp_http_mgr_create");
+
+
+       TA_S(1, "mp_playlist_mgr_create");
+       ad->playlist_mgr = mp_playlist_mgr_create();
+       mp_playlist_mgr_set_item_change_callback(ad->playlist_mgr, _mp_playlist_item_change_callback, ad);
+       int val = 0;
+       mp_setting_get_shuffle_state(&val);
+       mp_playlist_mgr_set_shuffle(ad->playlist_mgr, val);
+#ifdef MP_SOUND_PLAYER
+       val = MP_SETTING_REP_NON;
+#else
+       mp_setting_get_repeat_state(&val);
+#endif
+       mp_playlist_mgr_set_repeat(ad->playlist_mgr, val);
+       TA_E(1,"mp_playlist_mgr_create");
+
+       TA_S(1, "mp_language_mgr_create");
+       mp_language_mgr_create();
+       TA_E(1,"mp_language_mgr_create");
+
+       TA_S(1, "mp_conformant_add");
+       Evas_Object *conformant = elm_conformant_add(ad->win_main);
+       MP_CHECK_FALSE(conformant);
+       evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(conformant);
+       elm_win_resize_object_add(ad->win_main, conformant);
+       ad->conformant = conformant;
+       TA_E(1,"mp_conformant_add");
+
+       TA_E(0, "mp_create");
+       return EINA_TRUE;
+}
+
+/**< Called after main loop */
+static void
+mp_terminate(void *data)
+{
+       struct appdata *ad = data;
+       DEBUG_TRACE_FUNC();
+       MP_CHECK(ad);
+
+       mp_language_mgr_destroy();
+       mp_ecore_idler_del(ad->mss_startup_idler);
+       mp_ecore_idler_del(ad->bt_pause_idler);
+       mp_ecore_idler_del(ad->app_init_idler);
+       mp_ecore_idler_del(ad->popup_del_idler);
+       mp_ecore_timer_del(ad->longpress_timer);
+#ifdef MP_FEATURE_AUTO_OFF
+       mp_ecore_timer_del(ad->auto_off_timer);
+       mp_ecore_timer_del(ad->pause_off_timer);
+#endif
+
+       mp_app_ungrab_mm_keys(ad);
+
+       if (ad->key_down)
+               ecore_event_handler_del(ad->key_down);
+       if (ad->key_up)
+               ecore_event_handler_del(ad->key_up);
+       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;
+       }
+       if (ad->focus_in) {
+               ecore_event_handler_del(ad->focus_in);
+               ad->focus_in = NULL;
+       }
+       if (ad->focus_out) {
+               ecore_event_handler_del(ad->focus_out);
+               ad->focus_out = NULL;
+       }
+
+       if (ad->player_state != PLAY_STATE_NONE)
+       {
+               mp_player_mgr_stop(ad);
+               mp_player_mgr_destroy(ad);
+       }
+
+       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");
+#ifdef MP_ENABLE_INOTIFY
+       mp_app_inotify_finalize(ad);
+#endif
+       mp_http_mgr_destory(ad);
+
+       mp_media_info_disconnect();
+
+#ifdef ENABLE_RICHINFO
+       xmlCleanupParser();
+#endif
+       mp_setting_deinit(ad);
+       if (!mp_app_noti_ignore())
+               ERROR_TRACE("Error when ignore noti");
+
+
+#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();
+
+       mp_lyric_mgr_destory(ad);
+
+
+
+
+
+       return;
+}
+
+/**< Called when every window goes back */
+static void
+mp_pause(void *data)
+{
+       DEBUG_TRACE_FUNC();
+
+       return;
+}
+
+/**< Called when any window comes on top */
+static void
+mp_resume(void *data)
+{
+       DEBUG_TRACE_FUNC();
+
+       return;
+}
+
+/**< Called at the first idler and relaunched by AUL*/
+static void
+mp_service(service_h service, void *data)
+{
+       startfunc;
+
+       struct appdata *ad = data;
+       mp_ret_if(ad == NULL);
+
+       if(ad->app_is_foreground)
+       {
+               DEBUG_TRACE("relaunch is not allowed");
+               elm_win_activate(ad->win_main);
+               return;
+       }
+       else
+               ad->app_is_foreground = true;
+
+       TA_S(0, "mp_service");
+
+       TA_S(1, "_mp_main_is_launching_available");
+       if (!_mp_main_is_launching_available(ad))
+               return;
+       TA_E(1,"_mp_main_is_launching_available");
+
+       char *request_title = NULL;
+       int lunching_by_menu_icon = 0;
+       char *path = NULL;
+       bool activate_window = true;
+
+       ad->launch_type = MP_LAUNCH_DEFAULT;
+       ad->loadtype = LOAD_DEFAULT;
+
+       TA_S(1, "_mp_main_parse_service");
+       if(_mp_main_parse_service(ad, service, &request_title, &path, &lunching_by_menu_icon, &activate_window))
+       {
+               ERROR_TRACE("Error: _mp_main_parse_service");
+               elm_exit();
+               return;
+       }
+       TA_E(1,"_mp_main_parse_service");
+
+#ifdef MP_SOUND_PLAYER
+       if (path) {
+               _mp_main_set_current_playing_item(ad, path);
+               free(path);
+       }
+       else {
+               mp_error("no path");
+               mp_app_exit(ad);
+               return;
+       }
+
+       IF_FREE(ad->latest_playing_key_id);
+       if (!ad->base_layout_main) {
+
+               ad->base_layout_main = mp_widget_create_layout_main(ad->conformant);
+               elm_object_content_set(ad->conformant, ad->base_layout_main);
+
+               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);
+               ad->naviframe = navibar;
+       }
+
+       mp_play_destory(ad);
+       mp_play_view_load(ad);
+       ad->paused_by_user = FALSE;
+
+       mp_play_new_file(data, TRUE);
+#else
+
+       if (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);
+       }
+
+       DEBUG_TRACE("ad->launch_type:%d, ad->loadtype:%d", ad->launch_type, ad->loadtype);
+
+       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);
+
+       }
+
+       TA_S(1, "mp_library_create");
+       if (ad->base_layout_main == NULL)
+               mp_library_create(ad);
+       TA_E(1, "mp_library_create");
+
+       if (ad->launch_type != MP_LAUNCH_DEFAULT &&
+               (ad->loadtype == LOAD_TRACK))
+       {
+               IF_FREE(ad->latest_playing_key_id);
+               ad->load_play_view = true;
+
+               ad->b_add_tracks = 0;
+               elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE);
+               Evas_Object *layout = mp_view_manager_get_last_view_layout(ad);
+               mp_view_layout_set_edit_mode(mp_util_get_layout_data(layout), false);
+
+               if(ad->loadtype == LOAD_TRACK)
+               {
+                       mp_play_view_load_by_path(ad, ad->request_playing_path);
+               }
+               else
+               {
+                       mp_play_view_load_and_play(ad, NULL, FALSE);
+               }
+
+               IF_FREE(ad->request_playing_path);
+
+               ad->paused_by_user = FALSE;
+
+       }
+       else if(ad->loadtype == LOAD_MM_KEY)
+       {
+               ad->launch_type = MP_LAUNCH_DEFAULT;
+               ad->loadtype= LOAD_DEFAULT;
+               mp_play_new_file(ad, TRUE);
+               _show_minicontroller(ad);
+       }
+#endif
+
+
+       TA_S(1, "evas_object_show");
+       evas_object_show(ad->win_main);
+       TA_E(1,"evas_object_show");
+
+       DEBUG_TRACE("activate window");
+       TA_S(1, "elm_win_activate");
+       elm_win_activate(ad->win_main);
+       TA_E(1,"elm_win_activate");
+
+       TA_S(1, "mp_player_mgr_vol_type_set");
+       mp_player_mgr_vol_type_set();
+       TA_E(1,"mp_player_mgr_vol_type_set");
+
+       TA_E(0,"MP-LAUNCH_TIME");
+       TA_E(0,"mp_service");
+
+       endfunc;
+
+       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)
+{
+       struct appdata *ad = user_data;
+       MP_CHECK(ad);
+
+}
+
+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;
+       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();
+       TA_S(0, "MP-LAUNCH_TIME");
+       memset(&ad, 0x0, sizeof(struct appdata));
+       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
new file mode 100644 (file)
index 0000000..c0681fc
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * 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://floralicense.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 "music.h"
+#include "mp-view-layout.h"
+       \rEvas_Object * mp_edit_view_create(view_data_t * view_data);
+\rvoid mp_edit_view_back_button_cb(void *data, Evas_Object * obj, void *event_info);
+\rvoid mp_edit_view_create_new_cancel_cb(void *data, Evas_Object * obj, void *event_info);
+\rvoid mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info);
+\rvoid mp_edit_view_delete_cb(void *data, Evas_Object * obj, void *event_info);
+\rvoid mp_edit_view_add_to_plst_cb(void *data, Evas_Object * obj, void *event_info);
+\rvoid mp_edit_view_share_cb(void *data, Evas_Object * obj, void *event_info);
+\rvoid mp_edit_view_excute_edit(mp_layout_data_t * layout_data, mp_edit_operation_t edit_operation);
+\rvoid mp_edit_view_cencel_cb(void *data, Evas_Object * obj, void *event_info);
+\rvoid 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
new file mode 100644 (file)
index 0000000..4332756
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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://floralicense.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 "music.h"
+\rEvas_Object * mp_group_view_create(struct appdata *ad, mp_view_type_t type);
+\rvoid mp_group_view_destroy(Evas_Object * group_view);
+\rvoid mp_group_view_refresh(Evas_Object * group_view);
+\rbool mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, mp_group_type_e type);
+\rEvas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part);
+\rchar *mp_group_view_album_list_label_get(void *data, Evas_Object * obj, const char *part);
+\rvoid mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_info);
+\rchar *mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part);
+\rEvas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part);
+
diff --git a/src/view/include/mp-library.h b/src/view/include/mp-library.h
new file mode 100644 (file)
index 0000000..2fc78ee
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * 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://floralicense.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_LIBRARY_H_
+#define __MP_LIBRARY_H_
+
+#include "music.h"
+#include "mp-view-manager.h"
+#include "mp-setting-ctrl.h"
+
+#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_BUTTON_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_SQUARE                      ("IDS_MUSIC_TAB4_MUSIC_SQUARE")
+#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_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_view_change_cb(void *data, Evas_Object * obj, void *event_info);
+
+
+#endif //__MP_LIBRARY_H_
diff --git a/src/view/include/mp-lyric-view.h b/src/view/include/mp-lyric-view.h
new file mode 100644 (file)
index 0000000..fcbbe1a
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * 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://floralicense.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_LYRIC_VIEW_H__
+#define __MP_LYRIC_VIEW_H__
+
+#include "mp-define.h"
+
+typedef struct
+{
+       struct appdata *ad;
+       int win_w;
+       int win_h;
+
+       Evas_Object *layout;
+       Evas_Object *scroller;
+       Evas_Object *box;
+       Evas_Object *cur_line;
+       Evas_Object *prev_line;
+
+       int cur_line_index;
+       int prev_line_index;
+
+#ifdef MP_FEATURE_SUPPORT_ID3_TAG
+       char *lyric_buffer;
+       Eina_List *synclrc_list;
+#else
+       char *lyric_path;
+#endif
+
+       char *music_path;
+       bool b_drag;
+       bool b_show;
+}mp_lyric_view_t;
+
+void mp_lyric_view_create(struct appdata *ad);
+void mp_lyric_view_destroy(struct appdata *ad);
+void mp_lyric_view_show(struct appdata *ad);
+void mp_lyric_view_hide(struct appdata *ad);
+void mp_lyric_view_refresh(struct appdata *ad);
+
+#endif /* __MP_LYRIC_VIEW_H__ */
\ No newline at end of file
diff --git a/src/view/include/mp-play-view.h b/src/view/include/mp-play-view.h
new file mode 100644 (file)
index 0000000..8d7a29d
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * 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://floralicense.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_PLAY_VIEW_H_
+#define __MP_PLAY_VIEW_H_
+
+#include "music.h"
+#ifndef MP_SOUND_PLAYER
+#include "mp-view-layout.h"
+#endif
+
+typedef enum
+{
+       MP_PLAYING_VIEW_TOP_LEFT,
+       MP_PLAYING_VIEW_TOP_CENTER,
+       MP_PLAYING_VIEW_TOP_RIGHT,
+       MP_PLAYING_VIEW_BOTTOM_LEFT,
+       MP_PLAYING_VIEW_BOTTOM_CENTER,
+       MP_PLAYING_VIEW_BOTTOM_RIGHT,
+} mp_playing_view_bg_capture_mode;
+
+typedef struct
+{
+       //EDJ Layout
+       Evas_Object *layout;
+       Evas_Object *content;
+       Evas_Object *play_view;
+       Evas_Object *play_control;
+       Evas_Object *play_menu; //information, srs, shuffle, repeat
+       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_img;
+       Evas_Object *albumart_bg;
+       int flick_direction;    //1 for right, 2 for left, other for invalid
+       Evas_Object *play_view_bg;
+       Evas_Object *play_options;
+       Evas_Object *bg_albumart_bg;
+       Evas_Object *dmr_button;
+       Evas_Object *snd_button;
+       mp_playing_view_bg_capture_mode mode;
+       Evas_Object *play_view_bg_next;
+       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;  //if user start transiton start, set that value if finish transiton reset it
+
+       mp_screen_mode play_view_screen_mode;
+       Evas_Object *play_icon;
+
+       bool b_play_all; /* for update playlist view when back from playview which created by playall */
+       Evas_Object *volume_widget;
+       Ecore_Timer *volume_widget_timer;
+} mp_playing_view;
+
+bool mp_play_view_set_screen_mode(void *data, int mode);
+bool mp_play_view_stop_transit(struct appdata *ad);
+
+bool mp_play_view_pop(void *data);
+bool mp_play_view_load(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_and_play(struct appdata *ad, char *prev_item_uid, bool effect_value);
+#endif
+bool mp_play_view_refresh(void *data); // use for refresh playing view
+
+void mp_play_view_volume_widget_show(void *data, bool volume_clicked);
+bool mp_play_view_create(void *data);
+bool mp_play_view_destory(void *data);
+
+bool mp_play_view_play_item(void *data, mp_plst_item *it, bool effect_value, bool move_left);
+
+void mp_play_view_update_progressbar(void *data);
+void mp_play_view_progress_timer_freeze(void *data);
+void mp_play_view_progress_timer_thaw(void *data);
+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_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);
+
+
+#endif
diff --git a/src/view/include/mp-playlist-view.h b/src/view/include/mp-playlist-view.h
new file mode 100644 (file)
index 0000000..eea326a
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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://floralicense.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_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);
+void mp_playlist_view_create_auto_playlist(struct appdata *ad, char *type);
+bool mp_playlist_view_create_by_id(Evas_Object * obj, int p_id);
+void mp_playlist_view_update_navibutton(mp_layout_data_t * layout_data);
+bool mp_playlist_view_reset_rename_mode(struct appdata *ad);
+void mp_playlist_view_create_playlist_button_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_playlist_view_create_new_cancel_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_playlist_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_playlist_view_rename_done_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_playlist_view_rename_cancel_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_playlist_view_add_button_cb(void *data, Evas_Object * obj, void *event_info);
+
+#endif //__MP_PLAYLIST_VIEW_H_
diff --git a/src/view/include/mp-track-view.h b/src/view/include/mp-track-view.h
new file mode 100644 (file)
index 0000000..02486ce
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * 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://floralicense.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_TRACK_VIEW_H_
+#define __MP_TRACK_VIEW_H_
+
+#include "music.h"
+       \rEvas_Object * mp_track_view_create(struct appdata *ad);
+\rvoid mp_track_view_destroy(Evas_Object * track_view);
+\rvoid mp_track_view_refresh(Evas_Object * track_view);
+\rvoid mp_track_view_update_title_button(Evas_Object * track_view);
+\rvoid mp_track_view_add_to_playlist_done_cb(void *data, Evas_Object * obj, void *event_info);
+\rvoid mp_track_view_add_to_playlist_cancel_cb(void *data, Evas_Object * obj, void *event_info);
+
+#endif /* \r */
+
diff --git a/src/view/mp-edit-view.c b/src/view/mp-edit-view.c
new file mode 100755 (executable)
index 0000000..c4b9647
--- /dev/null
@@ -0,0 +1,1034 @@
+/*
+ * 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://floralicense.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-edit-view.h"
+#include "mp-view-layout.h"
+#include "mp-library.h"
+#include "mp-popup.h"
+#include "mp-util.h"
+#include "mp-widget.h"
+#include "mp-common.h"
+#include "mp-menu.h"
+#include "mp-playlist-mgr.h"
+#include "mp-playlist-view.h"
+#include "mp-ctxpopup.h"
+
+typedef enum {
+       MP_EDIT_THREAD_FEEDBACK_UNABLE_TO_ADD_PLST,
+       MP_EDIT_THREAD_FEEDBACK_CANCEL_BY_EXCEPTION,
+} mp_edit_thread_feedback_e;
+
+void
+mp_edit_view_back_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       mp_retm_if(view_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       evas_object_smart_callback_del(obj, "clicked", mp_edit_view_back_button_cb);
+       mp_view_manager_pop_view_content(view_data, FALSE, FALSE);
+}
+
+static const char *
+_mp_edit_view_get_view_title(mp_layout_data_t * layout_data)
+{
+       const char *title = NULL;
+               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_ctxpopup_create(obj, MP_CTXPOPUP_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("");
+       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");
+
+       view_data_t *view_data = layout_data->view_data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
+}
+
+void
+mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       mp_playlist_h playlist_handle = NULL;
+       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");
+
+       view_data_t *view_data = layout_data->view_data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       struct appdata *ad = view_data->ad;
+       int plst_uid = -1;
+
+       char *converted_name = NULL;
+       Evas_Object *entry = mp_widget_editfield_entry_get(ad->editfiled_new_playlist);
+       const char *name = elm_entry_entry_get(entry);
+       if (name == NULL || strlen(name) == 0)
+       {
+               name = elm_object_part_text_get(ad->editfiled_new_playlist, "elm.guidetext");
+       }
+       converted_name = elm_entry_markup_to_utf8(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;
+       }
+
+       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)
+               mp_view_manager_update_list_contents(view_data, FALSE);
+
+}
+
+static void
+_mp_edit_view_create_playlist_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       MP_CHECK(layout_data->ad);
+
+       view_data_t *view_data = layout_data->view_data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       Evas_Object *create_plst_layout = NULL;
+       char *new_playlist_name = NULL;
+
+       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");
+
+
+       Elm_Object_Item *it = mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT);
+       elm_object_item_text_set(it, GET_STR("IDS_MUSIC_BODY_CREATE_PLAYLIST"));
+       mp_language_mgr_register_object_item(it, "IDS_MUSIC_BODY_CREATE_PLAYLIST");
+
+       Evas_Object *btn = mp_widget_create_button(create_plst_layout, "naviframe/toolbar/default", GET_SYS_STR("IDS_COM_OPT_SAVE"), NULL, mp_edit_view_create_new_done_cb, layout_data);
+       elm_object_item_part_content_set(it, "title_toolbar_button1", btn);
+       btn = mp_widget_create_button(create_plst_layout, "naviframe/back_btn/default", NULL, NULL, mp_playlist_view_create_new_cancel_cb, view_data);
+       elm_object_item_part_content_set(it, "title_prev_btn", btn);
+
+       mp_common_add_keypad_state_callback(layout_data->ad->conformant, create_plst_layout, it);
+
+       mp_view_manager_set_back_button(create_plst_layout, it, mp_playlist_view_create_new_cancel_cb, view_data);
+
+       evas_object_show(create_plst_layout);
+
+       mp_popup_destroy(layout_data->ad);
+}
+
+static void
+_mp_edit_view_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       MP_CHECK(data);
+
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) evas_object_data_get(obj, "layout_data");
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       layout_data->edit_playlist_id = (int)data;
+       mp_popup_destroy(layout_data->ad);
+       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)
+{
+       DEBUG_TRACE("");
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       MP_CHECK(layout_data->ad);
+
+       mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       bool b_from_more_btn = false;
+       if (layout_data->ad->more_btn_popup)
+               b_from_more_btn = true;
+
+       mp_evas_object_del(layout_data->ad->more_btn_popup);
+
+       Evas_Object *popup = NULL;
+
+       if (layout_data->checked_count <= 0)
+       {
+               mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_NOTHING_SELECTED"));
+               return;
+       }
+
+       popup = mp_genlist_popup_create(layout_data->ad->win_main, MP_POPUP_ADD_TO_PLST, data, layout_data->ad);
+       evas_object_data_set(popup, "layout_data", layout_data);
+       mp_retm_if(!popup, "popup is NULL !!!");
+
+       Evas_Object *genlist = evas_object_data_get(popup, "genlist");
+       evas_object_data_set(genlist, "layout_data", layout_data);
+
+       mp_genlist_popup_item_append(popup, GET_STR("IDS_MUSIC_OPT_CREATE_PLAYLIST"), NULL,
+                                    _mp_edit_view_create_playlist_cb, layout_data);
+       int i = 0, count = -1, ret = -1;
+
+       ret = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
+       if (ret != 0)
+       {
+               ERROR_TRACE("Error in mp_media_info_group_list_count (%d)\n", ret);
+               return;
+       }
+
+       if (count)
+       {
+               mp_media_list_h list = NULL;
+
+               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");
+                       return;
+               }
+               for (i = 0; i < count; i++)
+               {
+                       char *name = NULL;
+                       int id;
+                       mp_media_info_h item = NULL;
+                       item = mp_media_info_group_list_nth_item(list, i);
+
+                       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);
+}
+
+static Eina_Bool
+_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;
+       mp_media_info_h item_handle = NULL;
+       int ret = 0;
+       int plst_id = -1;
+       char *fid = NULL;
+       int uid = 0;
+       char *file_path;
+       bool error_occured = FALSE;
+
+       MP_CHECK_FALSE(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       ad = layout_data->ad;
+       MP_CHECK_FALSE(ad);
+
+       if (!layout_data->current_edit_item)
+       {
+               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)
+       {
+               WARN_TRACE("CHECK here...");
+               goto END;
+       }
+
+       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)
+       {
+               if (layout_data->edit_operation == MP_EDIT_DELETE)
+               {
+                       switch (layout_data->category)
+                       {
+                       case MP_LAYOUT_PLAYLIST_LIST:
+                               {
+                                       layout_data->current_edit_item =
+                                               elm_genlist_item_next_get(layout_data->current_edit_item);
+                                       item_handle = (item->handle);
+                                       if (!item_handle)
+                                       {
+                                               WARN_TRACE("CHECK here...");
+                                               goto END;
+                                       }
+
+                                       ret = mp_media_info_group_get_playlist_id(item_handle, &plst_id);
+                                       MP_CHECK_EXCEP(ret == 0);
+
+                                       ret = mp_media_info_playlist_delete_from_db(plst_id);
+                                       MP_CHECK_EXCEP(ret == 0);
+
+                                       DEBUG_TRACE("playlist (%d) deleted", plst_id);
+                                       elm_object_item_del(item->it);
+                                       layout_data->item_count--;
+                                       layout_data->checked_count--;
+
+                                       break;
+                               }
+                       case MP_LAYOUT_TRACK_LIST:
+                               {
+                                       layout_data->current_edit_item =
+                                               elm_genlist_item_next_get(layout_data->current_edit_item);
+                                       item_handle =  (item->handle);
+                                       if (item_handle)
+                                       {
+                                               if (layout_data->playlist_id >= 0)
+                                               {
+                                                       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);
+                                               }
+                                               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 = mp_media_info_set_played_time(item_handle, 0);
+                                                       MP_CHECK_EXCEP(ret == 0);
+                                               }
+                                               else if (layout_data->track_type == MP_TRACK_BY_FAVORITE)
+                                               {
+                                                       ret = mp_media_info_set_favorite(item_handle, false);
+                                                       MP_CHECK_EXCEP(ret == 0);
+                                               }
+                                               else if (layout_data->track_type == MP_TRACK_BY_PLAYED_COUNT)
+                                               {
+                                                       ret = mp_media_info_set_played_count(item_handle, 0);
+                                                       MP_CHECK_EXCEP(ret == 0);
+                                               }
+                                               else
+                                               {
+                                                       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);
+                                                               layout_data->error_count++;
+                                                               error_occured = true;
+                                                       }
+                                               }
+                                       }
+                                       if (!error_occured)
+                                       {
+                                               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));
+                                                       }
+                                               } else if (MP_TRACK_BY_ALBUM == layout_data->track_type) {
+                                                       /* update group title */
+                                                       elm_genlist_item_update(layout_data->album_group);
+                                               }
+                                               elm_object_item_del(item->it);
+                                               layout_data->item_count--;
+                                               layout_data->checked_count--;
+                                       }
+                                       break;
+                               }
+                       default:
+                               WARN_TRACE("unexpected case...");
+                               break;
+                       }
+                       mp_common_set_toolbar_button_sensitivity(layout_data, layout_data->checked_count);
+               }
+               else
+               {
+                       WARN_TRACE("Unsupported operation...");
+                       goto mp_exception;
+               }
+       }
+       else
+               layout_data->current_edit_item = elm_genlist_item_next_get(layout_data->current_edit_item);
+
+       if (layout_data->current_edit_item)
+       {
+               return EINA_TRUE;
+       }
+       DEBUG_TRACE("no more items");
+
+      END:
+       DEBUG_TRACE("");
+       mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_YES);
+       layout_data->edit_idler = NULL;
+       return EINA_FALSE;
+
+      mp_exception:
+       DEBUG_TRACE("");
+       if (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], MP_POPUP_NO);
+       layout_data->edit_idler = NULL;
+       return EINA_FALSE;
+
+
+}
+
+static void
+_mp_edit_view_progress_popup_response_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_CHECK(obj);
+       mp_evas_object_del(obj);
+
+       struct appdata *ad = layout_data->ad;
+       MP_CHECK(ad);
+
+       if (layout_data->edit_idler)
+       {
+               ecore_idler_del(layout_data->edit_idler);
+               layout_data->edit_idler = NULL;
+       }
+
+       if (layout_data->edit_thread)
+       {
+               ecore_thread_cancel(layout_data->edit_thread);
+               layout_data->edit_thread = NULL;
+       }
+
+       if (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)
+               mp_view_manager_update_list_contents(layout_data->view_data, TRUE);
+
+       int selected_count = layout_data->selected_count;
+
+       mp_view_layout_set_edit_mode(layout_data, false);
+       mp_util_unset_rename(layout_data);
+
+       DEBUG_TRACE("selected_count, %d, error_count: %d", selected_count, layout_data->error_count);
+
+       if (layout_data->edit_operation == MP_EDIT_ADD_TO_PLAYLIST)
+       {
+               if (selected_count)
+                       mp_util_post_status_message(layout_data->ad, GET_STR("IDS_MUSIC_POP_ADDED"));
+       }
+       else
+       {
+               if ((selected_count == 1) && layout_data->error_count)
+               {
+                       if ((layout_data->category == MP_LAYOUT_TRACK_LIST)
+                           && (layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST))
+                       {
+                               mp_util_post_status_message(layout_data->ad, GET_SYS_STR("IDS_COM_POP_FAILED"));
+                       }
+                       else
+                       {
+                               mp_util_post_status_message(layout_data->ad, GET_SYS_STR("IDS_COM_POP_FAILED"));
+                       }
+               }
+               else
+               {
+                       if ((layout_data->category == MP_LAYOUT_TRACK_LIST)
+                           && (layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST))
+                       {
+                               mp_util_post_status_message(layout_data->ad, GET_SYS_STR("IDS_COM_POP_REMOVED"));
+                       }
+                       else
+                       {
+                               mp_util_post_status_message(layout_data->ad, GET_SYS_STR("IDS_COM_POP_DELETED"));
+                       }
+               }
+       }
+
+       layout_data->ad->edit_in_progress = false;
+
+       if (layout_data->edit_operation == MP_EDIT_ADD_TO_PLAYLIST && layout_data->ad->b_add_tracks)
+       {
+               layout_data->ad->b_add_tracks = FALSE;
+               mp_view_layout_reset_select_all(layout_data);
+               elm_toolbar_item_selected_set(layout_data->ad->library->ctltab_plist, EINA_TRUE);
+
+               if (selected_count)
+                       mp_util_post_status_message(ad, GET_STR("IDS_MUSIC_POP_ADDED"));
+       }
+
+}
+
+static void
+_mp_edit_view_add_to_plst_thread(void *data, Ecore_Thread *thread)
+{
+       mp_layout_data_t *layout_data = data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       struct appdata *ad = layout_data->ad;
+       MP_CHECK(ad);
+
+       mp_genlist_item_data_t *item = NULL;
+       mp_media_info_h item_handle = NULL;
+       int ret = 0;
+       char *fid = NULL;
+       char *title = NULL;
+
+       if (MP_TRACK_BY_ALBUM == layout_data->track_type || MP_TRACK_BY_ARTIST == layout_data->track_type)
+               layout_data->category = MP_LAYOUT_TRACK_LIST;
+
+       while (layout_data->current_edit_item)
+       {
+               if (ecore_thread_check(thread)) {       // pending cancellation
+                       WARN_TRACE("popup cancel clicked");
+                       goto mp_exception;
+               }
+
+               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);
+                       continue;
+               }
+
+               item = elm_object_item_data_get(layout_data->current_edit_item);
+               if (!item)
+               {
+                       WARN_TRACE("CHECK here...");
+                       ecore_thread_feedback(thread, (void *)MP_EDIT_THREAD_FEEDBACK_CANCEL_BY_EXCEPTION);
+                       goto mp_exception;
+               }
+
+               if (!item->checked)
+               {
+                       layout_data->current_edit_item = elm_genlist_item_next_get(layout_data->current_edit_item);
+                       continue;
+               }
+
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
+               if (layout_data->playlist_track_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
+               {
+                       DEBUG_TRACE("unable to add more tracks...");
+                       ecore_thread_feedback(thread, (void *)MP_EDIT_THREAD_FEEDBACK_CANCEL_BY_EXCEPTION);
+                       goto mp_exception;
+               }
+#endif
+               switch (layout_data->category) {
+               case MP_LAYOUT_TRACK_LIST:
+               {
+                       item_handle =  (item->handle);
+                       if (item_handle)
+                       {
+                               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))
+                               {
+                                       ecore_thread_feedback(thread, (void *)MP_EDIT_THREAD_FEEDBACK_UNABLE_TO_ADD_PLST);
+                                       ecore_thread_feedback(thread, (void *)MP_EDIT_THREAD_FEEDBACK_CANCEL_BY_EXCEPTION);
+                                       goto mp_exception;
+                               }
+                               else
+                                       layout_data->playlist_track_count++;
+                       }
+
+                       layout_data->current_edit_item = elm_genlist_item_next_get(layout_data->current_edit_item);
+                       break;
+               }
+               case MP_LAYOUT_GROUP_LIST:
+               {
+                       item_handle =  (item->handle);
+                       if (item_handle)
+                       {
+                               mp_track_type_e item_type = MP_TRACK_ALL;
+                               int count = 0;
+                               mp_media_info_h item = NULL;
+
+                               if (layout_data->view_data->view_type == MP_VIEW_TYPE_FOLDER)
+                               {
+                                       ret = mp_media_info_group_get_folder_id(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 = 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 = 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;
+                               }
+
+                               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))
+                               {
+                                       ecore_thread_feedback(thread, (void *)MP_EDIT_THREAD_FEEDBACK_CANCEL_BY_EXCEPTION);
+                                       goto mp_exception;
+                               }
+                               else
+                                       layout_data->playlist_track_count++;
+
+                               if (layout_data->edit_track_index <= 0)
+                               {
+                                       DEBUG_TRACE("all tracks in %s added.", title);
+                                       layout_data->current_edit_item = 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
+                                       layout_data->edit_track_index--;
+
+                       }
+                       break;
+               }
+               default:
+                       WARN_TRACE("unexpected case...");
+                       break;
+               }
+       }
+
+mp_exception:
+       if (layout_data->group_track_handle) {
+               mp_media_info_list_destroy(layout_data->group_track_handle);
+               layout_data->group_track_handle = NULL;
+       }
+}
+
+static void
+_mp_edit_view_edit_thread_notify_cb(void *data, Ecore_Thread *thread, void *msg_data)
+{
+       DEBUG_TRACE("");
+       mp_layout_data_t *layout_data = data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       struct appdata *ad = layout_data->ad;
+       MP_CHECK(ad);
+
+       mp_edit_thread_feedback_e feedback = (mp_edit_thread_feedback_e)msg_data;
+       switch (feedback) {
+       case MP_EDIT_THREAD_FEEDBACK_UNABLE_TO_ADD_PLST:
+               mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
+               break;
+
+       case MP_EDIT_THREAD_FEEDBACK_CANCEL_BY_EXCEPTION:
+               mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_NO);
+               break;
+
+       default:
+               WARN_TRACE("Not defined feedback .. [%d]", feedback);
+       }
+}
+
+static void
+_mp_edit_view_edit_thread_end_cb(void *data, Ecore_Thread *thread)
+{
+       WARN_TRACE("thread_end");
+       mp_layout_data_t *layout_data = data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       layout_data->edit_thread = NULL;
+
+       struct appdata *ad = layout_data->ad;
+       MP_CHECK(ad);
+
+       mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_YES);
+}
+
+static void
+_mp_edit_view_edit_thread_cancel_cb(void *data, Ecore_Thread *thread)
+{
+       WARN_TRACE("thread_cancel");
+}
+
+void
+mp_edit_view_excute_edit(mp_layout_data_t * layout_data, mp_edit_operation_t edit_operation)
+{
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       struct appdata *ad = layout_data->ad;
+       MP_CHECK(ad);
+
+       Elm_Object_Item *first_item = elm_genlist_first_item_get(layout_data->genlist);
+       MP_CHECK(first_item);
+       layout_data->current_edit_item = first_item;
+
+       if (layout_data->edit_idler)
+       {
+               ecore_idler_del(layout_data->edit_idler);
+               layout_data->edit_idler = NULL;
+       }
+
+       layout_data->selected_count = layout_data->checked_count;
+       layout_data->error_count = 0;
+       layout_data->group_track_handle = NULL;
+       layout_data->group_item_delete_error = false;
+       layout_data->edit_operation = edit_operation;
+
+       if (edit_operation == MP_EDIT_ADD_TO_PLAYLIST)
+       {
+               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)
+                       {
+                               layout_data->ad->b_add_tracks = FALSE;
+                               mp_view_layout_reset_select_all(layout_data);
+                               elm_toolbar_item_selected_set(layout_data->ad->library->ctltab_plist, EINA_TRUE);
+                       }
+                       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_post_status_message(ad, noti_str);
+                       IF_FREE(noti_str);
+                       return;
+               }
+#endif
+       }
+
+
+       if (edit_operation == MP_EDIT_ADD_TO_PLAYLIST)
+       {
+               mp_popup_create(ad->win_main, MP_POPUP_PROGRESS, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), layout_data,
+                               _mp_edit_view_progress_popup_response_cb, ad);
+
+               layout_data->edit_thread = ecore_thread_feedback_run(
+                                               _mp_edit_view_add_to_plst_thread,
+                                               _mp_edit_view_edit_thread_notify_cb,
+                                               _mp_edit_view_edit_thread_end_cb,
+                                               _mp_edit_view_edit_thread_cancel_cb,
+                                               (const void *)layout_data,
+                                               EINA_TRUE);
+
+               if (!layout_data->edit_thread) {
+                       mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_NO);
+               }
+       }
+       else
+       {
+               layout_data->edit_idler = ecore_idler_add(_mp_edit_view_edit_idler_cb, layout_data);
+
+               DEBUG_TRACE("layout_data->category=%d=====layout_data->view_data->view_type=%d\n",
+                           layout_data->category, layout_data->view_data->view_type);
+               if ((layout_data->category == MP_LAYOUT_TRACK_LIST)
+                   && (layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST))
+               {
+                       mp_popup_create(ad->win_main, MP_POPUP_PROGRESS, GET_SYS_STR("IDS_COM_SK_REMOVE"), layout_data,
+                                       _mp_edit_view_progress_popup_response_cb, ad);
+               }
+               else
+               {
+                       mp_popup_create(ad->win_main, MP_POPUP_PROGRESS, GET_SYS_STR("IDS_COM_OPT_DELETE"), layout_data,
+                                       _mp_edit_view_progress_popup_response_cb, ad);
+               }
+       }
+       ad->edit_in_progress = true;
+
+}
+
+static void
+_mp_edit_view_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       MP_CHECK(layout_data->ad);
+       layout_data->ad->popup_delete = NULL;
+
+       mp_evas_object_del(obj);
+
+       int response = (int)event_info;
+       if (response == MP_POPUP_NO)
+       {
+               return;
+       }
+       ERROR_TRACE("0x%x", layout_data->layout);
+       mp_edit_view_excute_edit(layout_data, MP_EDIT_DELETE);
+
+       endfunc;
+       return;
+}
+
+void
+mp_edit_view_cencel_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = NULL;
+       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");
+
+       ad = layout_data->ad;
+
+       mp_view_layout_set_edit_mode(layout_data, false);
+       mp_util_unset_rename(layout_data); /* Cancel the rename mode */
+
+}
+
+void
+mp_edit_view_delete_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = NULL;
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       ERROR_TRACE("0x%x", layout_data->layout);
+
+       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;
+       }
+
+       ad = layout_data->ad;
+
+       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;
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       if ((layout_data->category == MP_LAYOUT_TRACK_LIST)
+           && (layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST))
+       {
+               elm_object_text_set(popup, GET_STR("IDS_MUSIC_POP_REMOVE_Q"));
+       }
+       else
+       {
+               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_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);
+
+}
+
+void
+mp_edit_view_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       mp_retm_if(!layout_data, "layout_data is NULL !!!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       Elm_Object_Item *gli = (Elm_Object_Item *) event_info;
+       elm_genlist_item_selected_set(gli, FALSE);
+
+       if (elm_genlist_item_flip_get(gli))
+       {
+               return;
+       }
+
+       mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) elm_object_item_data_get(gli);
+       MP_CHECK(item);
+       item->checked = !item->checked;
+
+       if (item->checked)
+               layout_data->checked_count++;
+       else
+               layout_data->checked_count--;
+
+       if (layout_data->select_all_layout)
+       {
+               if (layout_data->item_count == layout_data->checked_count)
+                       layout_data->select_all_checked = EINA_TRUE;
+               else
+                       layout_data->select_all_checked = EINA_FALSE;
+
+               elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked);
+       }
+
+       elm_genlist_item_fields_update(item->it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+       mp_util_create_selectioninfo_with_count(layout_data->layout, layout_data->checked_count);
+       mp_common_set_toolbar_button_sensitivity(layout_data, layout_data->checked_count);
+}
+
+Evas_Object *
+mp_edit_view_create(view_data_t * view_data)
+{
+       DEBUG_TRACE("");
+       MP_CHECK_NULL(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       int reorder = FALSE;
+
+       mp_common_hide_search_ise_context(view_data);
+
+       Evas_Object *top_view = mp_view_manager_get_last_view_layout(view_data->ad);
+       mp_retvm_if(!top_view, NULL, "top view must exist...");
+       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 == 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);
+
+       mp_view_layout_set_edit_mode(layout_data, true);
+
+       const char *title = NULL;
+       if(mp_view_manager_count_view_content(view_data) > 1)
+               title = _mp_edit_view_get_view_title(layout_data);
+
+       mp_view_manager_set_title_and_buttons(view_data, title, layout_data);
+       mp_common_set_toolbar_button_sensitivity(layout_data, 0);
+
+       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
new file mode 100755 (executable)
index 0000000..67f4598
--- /dev/null
@@ -0,0 +1,813 @@
+/*
+ * 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://floralicense.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-library.h"
+#include "mp-ta.h"
+#include "mp-player-debug.h"
+#include "mp-common.h"
+#include "music.h"
+#include "mp-view-layout.h"
+#include "mp-search.h"
+#include "mp-menu.h"
+#include "mp-edit-view.h"
+#include "mp-util.h"
+#include "mp-widget.h"
+#include "mp-play-view.h"
+#include "mp-group-view.h"
+
+static void _mp_group_view_push_item_content(view_data_t * view_data, Evas_Object * content, char *title);
+static char * _mp_group_view_album_album_list_label_get(void *data, Evas_Object * obj, const char *part);
+
+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_ALBUM || list_type == MP_TRACK_BY_ARTIST_ALBUM) {
+               itc->item_style = "2text.2";
+               itc->decorate_item_style = "mode/slide4";
+       } else if (list_type == MP_TRACK_BY_FOLDER) {
+               itc->item_style = "2text.1icon";
+               itc->decorate_item_style = "mode/slide4";
+       } else {
+               itc->item_style = "3text.1icon.1";
+               itc->decorate_item_style = "mode/slide4";
+       }
+
+       itc->func.text_get = mp_common_track_list_label_get;
+       itc->func.content_get = mp_common_track_list_icon_get;
+
+       return itc;
+}
+
+static Elm_Genlist_Item_Class *
+_mp_group_view_get_artist_album_itc()
+{
+       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+       MP_CHECK_NULL(itc);
+
+       itc->item_style = "2text.1icon";
+       itc->decorate_item_style = "mode/slide";
+
+       itc->func.text_get = _mp_group_view_album_album_list_label_get;
+       itc->func.content_get = mp_group_view_icon_get;
+
+       return itc;
+}
+
+static int
+_mp_group_view_get_list_type_by_group_type(int type)
+{
+       int list_type = 0;
+       switch (type)
+       {
+       case MP_GROUP_BY_ALBUM:
+               list_type = MP_TRACK_BY_ALBUM;
+               break;
+       case MP_GROUP_BY_ARTIST:
+               list_type = MP_TRACK_BY_ARTIST;
+               break;
+       case MP_GROUP_BY_ARTIST_ALBUM:
+               list_type = MP_TRACK_BY_ARTIST_ALBUM;
+               break;
+       case MP_GROUP_BY_GENRE:
+               list_type = MP_TRACK_BY_GENRE;
+               break;
+       case MP_GROUP_BY_YEAR:
+               list_type = MP_TRACK_BY_YEAR;
+               break;
+       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:
+               WARN_TRACE("Unhandled type: %d", type);
+       }
+       return list_type;
+}
+
+static Evas_Object *
+_mp_group_create_all_song_view_layout(view_data_t * view_data, char *type_str)
+{
+       int category = MP_LAYOUT_TRACK_LIST;
+       Elm_Genlist_Item_Class *itc = NULL;
+       mp_genlist_cb_t genlist_cbs;
+
+       MP_CHECK_NULL(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       Evas_Object *layout = mp_view_layout_create(view_data->navibar, view_data, MP_VIEW_MODE_DEFAULT);
+       mp_assert(layout);
+
+       memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t));
+
+       itc = _mp_group_view_get_track_list_itc(MP_TRACK_BY_ARTIST);
+       genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb;
+
+       mp_view_layout_set_layout_data(layout,
+                                      MP_LAYOUT_CATEGORY_TYPE, category,
+                                      MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_ARTIST,
+                                      MP_LAYOUT_TYPE_STR, type_str,
+                                      MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, itc, -1);
+
+       mp_view_layout_update(layout);
+
+       return layout;
+
+}
+
+static Evas_Object *
+_mp_group_create_detail_view_layout(view_data_t * view_data, char *type_str, char *type_str2, mp_group_type_e type)
+{
+       mp_track_type_e list_type = 0;
+       mp_group_type_e g_type = 0;
+       int category = MP_LAYOUT_TRACK_LIST;
+       Elm_Genlist_Item_Class *itc = NULL;
+       mp_genlist_cb_t genlist_cbs;
+
+       MP_CHECK_NULL(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       Evas_Object *layout = mp_view_layout_create(view_data->navibar, view_data, MP_VIEW_MODE_DEFAULT);
+       mp_assert(layout);
+
+       memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t));
+
+       if(type == MP_GROUP_BY_ARTIST)
+       {
+               category = MP_LAYOUT_GROUP_LIST;
+               g_type = MP_GROUP_BY_ARTIST_ALBUM;
+               itc = _mp_group_view_get_artist_album_itc();
+               genlist_cbs.selected_cb = mp_group_view_group_list_select_cb;
+       }
+       else
+       {
+               list_type = _mp_group_view_get_list_type_by_group_type(type);
+               itc = _mp_group_view_get_track_list_itc(list_type);
+               genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb;
+       }
+       mp_view_layout_set_layout_data(layout,
+                                      MP_LAYOUT_CATEGORY_TYPE, category,
+                                      MP_LAYOUT_TRACK_LIST_TYPE, list_type,
+                                      MP_LAYOUT_GROUP_LIST_TYPE, g_type,
+                                      MP_LAYOUT_TYPE_STR, type_str,
+                                      MP_LAYOUT_TYPE_STR2, type_str2,
+                                      MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, itc, -1);
+
+       mp_view_layout_update(layout);
+
+       return layout;
+
+}
+
+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, mp_group_type_e type)
+{
+       startfunc;
+
+       view_data_t *view_data = evas_object_data_get(obj, "view_data");
+       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, NULL, type);
+
+       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 = 0;
+       int index = (int)data;
+       char *name = NULL;
+       char *artist = NULL;
+       char *title = NULL;
+       char *folder_id = 0;
+
+       Elm_Object_Item *gli = (Elm_Object_Item *) event_info;
+       MP_CHECK(gli);
+       elm_genlist_item_selected_set(gli, FALSE);
+
+       mp_genlist_item_data_t *gli_data = elm_object_item_data_get(gli);
+       MP_CHECK(gli_data);
+
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       mp_retm_if(!layout_data, "layout_data is NULL !!!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       if (layout_data->edit_mode)
+       {
+               mp_edit_view_genlist_sel_cb(data, obj, event_info);
+               return;
+       }
+
+       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 == 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 != 0, "Fail to get value");
+               mp_retm_if(name == NULL, "Fail to get value");
+
+               title = name;
+       }
+       else
+       {
+               if(index >=0)
+               {
+                       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);
+
+                       ret = mp_media_info_group_get_sub_info(item_handle, &artist);
+
+                       mp_retm_if(ret != 0, "Fail to get value");
+                       mp_retm_if(name == NULL, "Fail to get value");
+
+                       if(layout_data->group_type == MP_GROUP_BY_ARTIST_ALBUM)
+                               title = artist;
+                       else
+                               title = name;
+               }
+               else    //All songs in artist view
+               {
+                       artist = layout_data->type_str;
+                       title = GET_STR("All songs");
+               }
+       }
+
+       DEBUG_TRACE("name: %s, type: %d", name, layout_data->group_type);
+
+       Evas_Object *view_layout = NULL;
+       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, NULL, layout_data->group_type);
+       }
+       else
+       {
+               if(index >=0)
+                       view_layout = _mp_group_create_detail_view_layout(view_data, name, artist, layout_data->group_type);
+               else
+                       view_layout = _mp_group_create_all_song_view_layout(view_data, artist);
+       }
+
+       mp_util_reset_genlist_mode_item(layout_data->genlist);
+
+       _mp_group_view_push_item_content(view_data, view_layout, title);
+
+}
+
+static void
+_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_set_title_and_buttons(view_data, NULL, view_data);
+
+}
+
+static void
+_mp_group_view_push_item_content(view_data_t * view_data, Evas_Object * content, char *title)
+{
+       MP_CHECK(view_data);
+       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, 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;
+       mp_track_type_e track_type = 0;
+       char *type_str = NULL;
+       int ret = 0;
+
+       track_type = _mp_group_view_get_list_type_by_group_type(layout_data->group_type);
+       if(track_type == MP_TRACK_BY_FOLDER)
+       {
+               ret = mp_media_info_group_get_folder_id(handle, &type_str);
+       }
+       else
+       {
+               ret = mp_media_info_group_get_main_info(handle, &type_str);
+       }
+       MP_CHECK(type_str);
+
+       /* get playlist data by name */
+       mp_media_list_h svc_handle = NULL;
+
+       mp_media_info_list_count(track_type, type_str, NULL, NULL, 0, &count);
+       mp_media_info_list_create(&svc_handle,
+               track_type, type_str, NULL, NULL, 0, 0, count);
+
+       mp_playlist_mgr_clear(ad->playlist_mgr);
+       mp_util_append_media_list_item_to_playlist(ad->playlist_mgr, svc_handle, count, 0, NULL);
+
+       mp_play_view_load_and_play(ad, NULL, 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 (svc_handle)
+       {
+               mp_media_info_list_destroy(svc_handle);
+       }
+
+       endfunc;
+}
+
+
+Evas_Object *
+mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part)
+{
+       Evas_Object *icon = NULL;
+
+       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);
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       char *thumb_name = NULL;
+
+       mp_media_info_group_get_thumbnail_path(svc_item, &thumb_name);
+
+       const char *slide_part_play_all = "";
+       if(layout_data->group_type == MP_GROUP_BY_FOLDER)
+               slide_part_play_all = "elm.slide.swallow.2";
+
+       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 = NULL;
+       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, slide_part_play_all))
+       {
+               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_MEMORY;
+                       else
+                               icon_path = MP_ICON_STORAGE_EXTERNAL;
+
+                       icon = elm_icon_add(obj);
+                       MP_CHECK_NULL(icon);
+                       elm_image_file_set(icon, IMAGE_EDJ_NAME, icon_path);
+                       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);
+                       return check;
+               }
+       }
+
+       return icon;
+}
+
+static char *
+_mp_group_view_album_album_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");
+
+               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 = 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);
+       }
+
+       DEBUG_TRACE("Unusing part: %s", part);
+       return NULL;
+}
+
+
+char *
+mp_group_view_album_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");
+
+               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 = 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 g_strdup(name);
+       }
+       else if (!strcmp(part, "elm.text.3"))
+       {
+               int count = -1;
+               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);
+       }
+
+       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);
+       }
+
+       DEBUG_TRACE("Unusing part: %s", part);
+       return NULL;
+}
+
+char *
+mp_group_view_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);
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       MP_CHECK_NULL(layout_data);
+
+       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");
+               if(layout_data->filter_str)
+               {
+                       char *markup_name = NULL;
+                       bool res = false;
+                       markup_name = (char *)mp_util_search_markup_keyword(name, layout_data->filter_str, &res);
+                       if(res)
+                               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 = 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 = 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);
+       }
+
+       return NULL;
+}
+
+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);
+
+       const char *group_slide_style = "mode/slide";
+       const char *folder_slide_style = "mode/slide2";
+
+       switch (view_type) {
+       case MP_VIEW_TYPE_ALBUM:
+               itc->item_style = "3text.1icon.1";
+               itc->decorate_item_style = group_slide_style;
+               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 = "2text.1icon";
+               itc->decorate_item_style = group_slide_style;
+               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 = "3text.1icon.1";
+               itc->decorate_item_style = folder_slide_style;
+               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)
+{
+       DEBUG_TRACE("view_type: %d", view_type);
+       int list_type;
+
+       Elm_Genlist_Item_Class *itc;
+
+       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);
+
+       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 = MP_GROUP_BY_ALBUM;
+       }
+       else if (view_type == MP_VIEW_TYPE_ARTIST)
+       {
+               DEBUG_TRACE("artist view");
+               list_type = MP_GROUP_BY_ARTIST;
+       }
+       else if (view_type == MP_VIEW_TYPE_GENRE)
+       {
+               DEBUG_TRACE("genre view");
+               list_type = MP_GROUP_BY_GENRE;
+       }
+       else if (view_type == MP_VIEW_TYPE_COMPOSER)
+       {
+               DEBUG_TRACE("composer view");
+               list_type = MP_GROUP_BY_COMPOSER;
+       }
+       else if (view_type == MP_VIEW_TYPE_YEAR)
+       {
+               DEBUG_TRACE("year view");
+               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);
+               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_set_title(view_data);
+
+       return view_layout;
+}
+
+void
+mp_group_view_destroy(Evas_Object * group_view)
+{
+       DEBUG_TRACE("");
+       evas_object_del(group_view);
+}
+
+void
+mp_group_view_refresh(Evas_Object * group_view)
+{
+       DEBUG_TRACE("");
+       view_data_t *view_data = (view_data_t *) evas_object_data_get(group_view, "view_data");
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       mp_view_manager_update_list_contents(view_data, TRUE);
+}
diff --git a/src/view/mp-library.c b/src/view/mp-library.c
new file mode 100644 (file)
index 0000000..bda8798
--- /dev/null
@@ -0,0 +1,788 @@
+/*
+ * 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://floralicense.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-library.h"
+#include "mp-ta.h"
+#include "mp-setting-ctrl.h"
+#include "mp-player-debug.h"
+#include "mp-common.h"
+#include "music.h"
+#include "mp-track-view.h"
+#include "mp-group-view.h"
+#include "mp-playlist-view.h"
+#include "mp-play-view.h"
+#include "mp-util.h"
+#include "mp-widget.h"
+
+
+
+static void _mp_library_init(void *data);
+static Evas_Object *_mp_library_create_layout_main(Evas_Object * parent);
+static Evas_Object *_mp_library_create_tabbar(struct appdata *ad);
+static void _mp_library_controlbar_item_append(struct appdata *ad);
+static bool _mp_library_check_request_item(struct appdata *ad);
+
+static void
+_mp_library_init(void *data)
+{
+       struct appdata *ad = data;
+
+       ad->library = calloc(1, sizeof(mp_library));
+       if (!ad->library)
+       {
+               ERROR_TRACE("failed to create library object\n");
+       }
+}
+
+static Evas_Object *
+_mp_library_create_layout_main(Evas_Object * parent)
+{
+       Evas_Object *layout;
+
+       mp_retv_if(parent == NULL, NULL);
+       layout = elm_layout_add(parent);
+       mp_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
+
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       evas_object_show(layout);
+
+       return layout;
+}
+
+static Evas_Object *
+_mp_library_create_tabbar(struct appdata *ad)
+{
+       Evas_Object *obj;
+
+       /* create controlbar */
+       TA_S(3, "elm_toolbar_add");
+       obj = elm_toolbar_add(ad->naviframe);
+       TA_E(3, "elm_toolbar_add");
+
+       elm_toolbar_transverse_expanded_set(obj, EINA_TRUE);
+       elm_toolbar_shrink_mode_set(obj, ELM_TOOLBAR_SHRINK_EXPAND);
+       elm_toolbar_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+       elm_object_style_set(obj, "tabbar");
+
+       mp_retvm_if(obj == NULL, NULL, "Fail to create control bar");
+       ad->tabbar = obj;
+
+       TA_S(3, "_mp_library_controlbar_item_append");
+       _mp_library_controlbar_item_append(ad);
+       TA_E(3, "_mp_library_controlbar_item_append");
+       TA_S(3, "evas_object_show");
+       evas_object_show(obj);
+       TA_E(3, "evas_object_show");
+
+       return obj;
+}
+
+// update menu when menu changed while bgm.
+static void
+_mp_library_menu_changed(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       MP_CHECK(ad->library->ctltab_songs);
+       MP_CHECK(ad->tabbar);
+
+       DEBUG_TRACE("loadtype=%d", ad->loadtype);
+       if (ad->loadtype == LOAD_TRACK)
+       {
+               DEBUG_TRACE("Don't need to update menu...");
+               return;
+       }
+
+       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);
+}
+
+
+static bool
+_mp_library_append_item_idler_cb( void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad);
+       Evas_Object *obj;
+       obj = ad->tabbar;
+
+       TA_S(4, "elm_toolbar_item_append-ctltab_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);
+               DEBUG_TRACE("library->ctltab_genres: 0x%x", ad->library->ctltab_genres);
+       }
+       TA_E(4, "elm_toolbar_item_append-ctltab_genres");
+       TA_S(4, "elm_toolbar_item_append-ctltab_composer");
+       {
+               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);
+               DEBUG_TRACE("library->ctltab_composer: 0x%x", ad->library->ctltab_composer);
+       }
+       TA_E(4, "elm_toolbar_item_append-ctltab_composer");
+       TA_S(4, "elm_toolbar_item_append-ctltab_year");
+       {
+               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);
+               DEBUG_TRACE("library->ctltab_year: 0x%x", ad->library->ctltab_year);
+       }
+       TA_E(4, "elm_toolbar_item_append-ctltab_year");
+       TA_S(4, "elm_toolbar_item_append-ctltab_folder");
+       {
+               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);
+               DEBUG_TRACE("library->ctltab_folder: 0x%x", ad->library->ctltab_folder);
+       }
+       TA_E(4, "elm_toolbar_item_append-ctltab_folder");
+
+
+       return EINA_FALSE;
+}
+
+static void
+_mp_library_controlbar_item_append(struct appdata *ad)
+{
+       startfunc;
+       MP_CHECK(ad);
+       MP_CHECK(ad->library);
+
+       Evas_Object *obj;
+
+       obj = ad->tabbar;
+
+       ad->library->first_append = true;
+       TA_S(4, "elm_toolbar_item_append-ctltab_songs");
+       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);
+       TA_E(4, "elm_toolbar_item_append-ctltab_songs");
+       mp_language_mgr_register_object_item(ad->library->ctltab_songs, STR_MP_ALL_TRACKS);
+       DEBUG_TRACE("library->ctltab_songs: 0x%x", ad->library->ctltab_songs);
+
+       ad->library->first_append = false;
+       TA_S(4, "elm_toolbar_item_append-ctltab_plist");
+       ad->library->ctltab_plist =
+               elm_toolbar_item_append(obj, MP_CTRBAR_ICON_PLAYLIST, GET_STR(STR_MP_PLAYLISTS), mp_library_view_change_cb, ad);
+       TA_E(4, "elm_toolbar_item_append-ctltab_plist");
+       mp_language_mgr_register_object_item( ad->library->ctltab_plist,STR_MP_PLAYLISTS);
+       DEBUG_TRACE("library->ctltab_plist: 0x%x", ad->library->ctltab_plist);
+
+       TA_S(4, "elm_toolbar_item_append-ctltab_album");
+       {
+               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);
+               DEBUG_TRACE("library->ctltab_album: 0x%x", ad->library->ctltab_album);
+       }
+       TA_E(4, "elm_toolbar_item_append-ctltab_album");
+       TA_S(4, "elm_toolbar_item_append-ctltab_artist");
+       {
+               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);
+               DEBUG_TRACE("library->ctltab_artist: 0x%x", ad->library->ctltab_artist);
+       }
+       TA_E(4, "elm_toolbar_item_append-ctltab_artist");
+
+       ecore_idler_add(_mp_library_append_item_idler_cb, ad);
+
+       endfunc;
+}
+
+/**
+ * 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)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       DEBUG_TRACE("ad->request_play_id: %d", ad->request_play_id);
+       MP_CHECK_FALSE(ad);
+
+       if (!_mp_library_check_request_item(ad))
+               return false;
+
+       if (ad->request_group_name)
+       {
+               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 > 0)
+       {
+               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 = MP_SYS_PLST_NONE;
+               ad->update_default_view = TRUE;
+       }
+       else if (ad->request_play_id == MP_SYS_PLST_MOST_PLAYED)
+       {
+               mp_playlist_view_create_auto_playlist(ad, STR_MP_MOST_PLAYED);
+               ad->request_play_id = MP_SYS_PLST_NONE;
+               ad->update_default_view = TRUE;
+       }
+       else if (ad->request_play_id == MP_SYS_PLST_RECENTELY_ADDED)
+       {
+               mp_playlist_view_create_auto_playlist(ad, STR_MP_RECENTLY_ADDED);
+               ad->request_play_id = MP_SYS_PLST_NONE;
+               ad->update_default_view = TRUE;
+       }
+       else if (ad->request_play_id == MP_SYS_PLST_RECENTELY_PLAYED)
+       {
+               mp_playlist_view_create_auto_playlist(ad, STR_MP_RECENTLY_PLAYED);
+               ad->request_play_id = MP_SYS_PLST_NONE;
+               ad->update_default_view = TRUE;
+       }
+       else
+       {
+               mp_debug("That is not request mode ");
+               return FALSE;
+       }
+
+       endfunc;
+
+       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)
+       {
+               if (ad->request_group_type == MP_GROUP_BY_ARTIST)
+               {
+                       select_request_item = ad->library->ctltab_artist;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_ALBUM)
+               {
+                       select_request_item = ad->library->ctltab_album;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_GENRE)
+               {
+                       select_request_item = ad->library->ctltab_genres;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_COMPOSER)
+               {
+                       select_request_item = ad->library->ctltab_composer;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_YEAR)
+               {
+                       select_request_item = ad->library->ctltab_year;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_FOLDER)
+               {
+                       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, Elm_Object_Item *it)
+{
+       MP_CHECK(ad);
+       MP_CHECK(it);
+
+       Evas_Object *content = NULL;
+       view_data_t *view_data = NULL;
+       mp_layout_data_t *layout_data = NULL;
+       mp_library *library = NULL;
+
+       library = ad->library;
+       MP_CHECK(library);
+
+       DEBUG_TRACE("selected view: %s", elm_object_item_text_get(it));
+
+       content = elm_object_part_content_unset(ad->controlbar_layout, "elm.swallow.content");
+
+       if (content)
+       {
+               DEBUG_TRACE("destory previous view");
+               mp_view_manager_unswallow_info_ug_layout(ad);
+               evas_object_del(content);
+               content = NULL;
+       }
+
+       if (it == library->ctltab_album)
+       {
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_ALBUM);
+       }
+       else if (it == library->ctltab_artist)
+       {
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_ARTIST);
+       }
+       else if (it == library->ctltab_genres)
+       {
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_GENRE);
+       }
+       else if (it == library->ctltab_year)
+       {
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_YEAR);
+       }
+       else if (it == library->ctltab_composer)
+       {
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_COMPOSER);
+       }
+       else if (it == library->ctltab_folder)
+       {
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_FOLDER);
+       }
+
+       else if (it == library->ctltab_plist)
+       {
+               content = mp_playlist_view_create(ad, MP_VIEW_TYPE_PLAYLIST);
+       }
+
+       else
+       {
+               TA_S(5, "mp_track_view_create");
+               content = mp_track_view_create(ad);
+               TA_E(5, "mp_track_view_create");
+               TA_S(5, "mp_track_view_update_title_button");
+               mp_track_view_update_title_button(ad->naviframe);
+               TA_E(5, "mp_track_view_update_title_button");
+       }
+
+       MP_CHECK(content);
+
+       layout_data = evas_object_data_get(content, "layout_data");
+       MP_CHECK(layout_data);
+
+       if (it != library->ctltab_songs)
+       {
+               ad->b_add_tracks = FALSE;
+       }
+
+       elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.content", content);
+       TA_S(5, "mp_view_layout_update");
+       mp_view_layout_update(content);
+       TA_E(5, "mp_view_layout_update");
+
+       view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data");
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       if (!_mp_library_load_request_view(ad, ad->naviframe))
+       {
+               DEBUG_TRACE("Update default layout...");
+               if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
+               {
+                       mp_playlist_view_update_navibutton(layout_data);
+               }
+       }
+
+
+       evas_object_show(content);
+}
+
+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 && ad->loadtype != LOAD_TRACK) {
+               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);
+       DEBUG_TRACE("selected toolbar item: 0x%x", it);
+       mp_retm_if(it == NULL, "tab item is NULL");
+
+       _mp_library_show_selected_view(ad, it);
+
+       ad->navi_effect_in_progress = false;
+}
+
+
+static bool
+_mp_library_check_request_item(struct appdata *ad)
+{
+       startfunc;
+
+       char *popup_text = NULL;
+       int count = -1;
+       int ret = 0;
+       MP_CHECK_FALSE(ad);
+
+       if (!ad->request_group_name && ad->request_play_id > 0)
+       {
+               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; i<count; i++)
+               {
+                       int playlist_id;
+                       mp_media_info_h media = NULL;
+                       media = mp_media_info_group_list_nth_item(list, i);
+                       mp_media_info_group_get_playlist_id(media, &playlist_id);
+                       if(playlist_id == ad->request_play_id)
+                       {
+                               break;
+                       }
+               }
+
+               if (i == count)
+               {
+                       IF_FREE(ad->request_group_name);
+                       ad->request_play_id = MP_SYS_PLST_NONE;
+                       mp_error("removed play list");
+                       popup_text = g_strdup(GET_STR("IDS_MUSIC_BODY_NO_PLAYLISTS"));
+               }
+       }
+       else if (ad->request_group_name)
+       {
+               mp_track_type_e list_type = MP_TRACK_ALL;
+
+               switch (ad->request_group_type)
+               {
+               case MP_GROUP_BY_ALBUM:
+                       DEBUG_TRACE("create album detail view");
+                       list_type = MP_TRACK_BY_ALBUM;
+                       break;
+               case MP_GROUP_BY_ARTIST:
+                       DEBUG_TRACE("create artist detail view");
+                       list_type = MP_TRACK_BY_ARTIST;
+                       break;
+               case MP_GROUP_BY_GENRE:
+                       DEBUG_TRACE("create genre detail view");
+                       list_type = MP_TRACK_BY_GENRE;
+                       break;
+               case MP_GROUP_BY_YEAR:
+                       DEBUG_TRACE("create year detail view");
+                       list_type = MP_TRACK_BY_YEAR;
+                       break;
+               case MP_GROUP_BY_COMPOSER:
+                       DEBUG_TRACE("create composer detail view");
+                       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 = mp_media_info_list_count(list_type, ad->request_group_name, NULL, NULL, 0, &count);
+               mp_debug("group cout %d", count);
+
+               if (!(ret == 0 && count > 0))
+               {
+                       mp_error("removed group");
+                       char *fmt = GET_STR("IDS_MUSIC_POP_PS_REMOVED");
+                       popup_text = g_strdup_printf(fmt, ad->request_group_name);
+                       IF_FREE(ad->request_group_name);
+               }
+
+       }
+       else if (ad->request_playing_path)
+       {
+               if (mp_util_check_uri_available(ad->request_playing_path))
+               {
+                       mp_debug("http uri path");
+
+               } else if (!mp_check_file_exist(ad->request_playing_path))
+               {
+                       mp_error("removed file");
+                       IF_FREE(ad->request_playing_path);
+                       popup_text = g_strdup_printf(GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST"));
+               }
+       }
+
+       if (popup_text)
+       {
+               mp_widget_text_popup(ad, popup_text);
+               free(popup_text);
+               return false;
+       }
+
+       return true;
+}
+
+static Elm_Object_Item *
+_mp_library_get_control_tab_item(mp_library *library, mp_group_type_e group_type)
+{
+       MP_CHECK_NULL(library);
+       Elm_Object_Item *it = NULL;
+       if (group_type == MP_GROUP_BY_ARTIST)
+       {
+               it = library->ctltab_artist;
+       }
+       else if (group_type == MP_GROUP_BY_ALBUM)
+       {
+               it = library->ctltab_album;
+       }
+       else if (group_type == MP_GROUP_BY_GENRE)
+       {
+               it = library->ctltab_genres;
+       }
+       else if (group_type == MP_GROUP_BY_COMPOSER)
+       {
+               it = library->ctltab_composer;
+       }
+       else if (group_type == MP_GROUP_BY_YEAR)
+       {
+               it = library->ctltab_year;
+       }
+       else if (group_type == MP_GROUP_BY_FOLDER)
+       {
+               it = library->ctltab_folder;
+       }
+       else
+       {
+               mp_error("can not support that value");
+       }
+       return it;
+}
+
+/**
+ * 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)
+{
+       startfunc;
+
+       MP_CHECK_FALSE(ad);
+
+       if (!ad->base_layout_main)
+       {
+               mp_library_create(ad);
+       }
+       else
+       {
+               //Select current tab
+               Elm_Object_Item *selected_item = NULL;
+               Elm_Object_Item *select_request_item = NULL;
+
+               if (!ad->tabbar)
+                       _mp_library_create_tabbar(ad);
+               else
+                       selected_item = elm_toolbar_selected_item_get(ad->tabbar);
+
+               select_request_item = _mp_library_get_request_control_item(ad);
+
+               if (selected_item && selected_item == select_request_item)
+               {
+                       view_data_t *view_data = NULL;
+
+                       if (ad->naviframe)
+                       {
+                               //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->naviframe);
+                       }
+                       else
+                               mp_error("invalid cur_view");
+               }
+               else if (select_request_item)
+               {
+                       elm_toolbar_item_selected_set(select_request_item, EINA_TRUE);
+               }
+               else
+               {
+                       DEBUG_TRACE("Tab is not exist for selected category...");
+                       if (ad->loadtype == LOAD_GROUP)
+                       {
+                               elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE);
+                       }
+                       else
+                               ERROR_TRACE("It shouldn't be here..");
+               }
+       }
+
+       endfunc;
+
+       return true;
+}
+
+
+void
+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
+       TA_S(2, "_mp_library_create_layout_main");
+       ad->base_layout_main = _mp_library_create_layout_main(ad->conformant);
+       TA_E(2, "_mp_library_create_layout_main");
+       mp_retm_if(ad->base_layout_main == NULL, "library view layout is not initialized");
+       elm_object_content_set(ad->conformant, ad->base_layout_main);
+
+       TA_S(2, "mp_widget_navigation_new");
+       ad->naviframe = mp_widget_navigation_new(ad->base_layout_main, ad);
+       TA_E(2, "mp_widget_navigation_new");
+
+       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);
+
+       ad->controlbar_layout = elm_layout_add(ad->base_layout_main);
+       MP_CHECK(ad->controlbar_layout);
+       elm_layout_file_set(ad->controlbar_layout, EDJ_NAME, "music/tabbar/default");
+
+       TA_S(2, "mp_view_manager_push_view_content");
+       mp_view_manager_push_view_content(view_data, ad->controlbar_layout, MP_VIEW_CONTENT_LIST);
+       TA_E(2, "mp_view_manager_push_view_content");
+
+       elm_object_part_content_set(ad->base_layout_main, "elm.swallow.content", ad->naviframe);
+
+       //create control tab
+       TA_S(2, "_mp_library_create_tabbar");
+       tabbar = _mp_library_create_tabbar(ad);
+       elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.tabbar", tabbar);
+       TA_E(2, "_mp_library_create_tabbar");
+
+       if(ad->loadtype == LOAD_TRACK)
+       {
+               DEBUG_TRACE("Don't need to select control tab..");
+               return;
+       }
+
+       Elm_Object_Item *reqeust_item = _mp_library_get_request_control_item(ad);
+
+       //select tabbar item
+       if (reqeust_item)
+       {
+               TA_S(2, "elm_toolbar_item_selected_set");
+               elm_toolbar_item_selected_set(reqeust_item, EINA_TRUE);
+               TA_E(2, "elm_toolbar_item_selected_set");
+       }
+       else
+       {
+               Elm_Object_Item *it = _mp_library_get_control_tab_item(ad->library, ad->request_group_type);
+               if (it)
+                       _mp_library_show_selected_view(ad, it);
+               else
+                       elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE);
+       }
+
+       endfunc;
+
+}
+
+void
+mp_library_update_view(struct appdata *ad)
+{
+       MP_CHECK(ad);
+       MP_CHECK(ad->naviframe);
+
+       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);
+       mp_view_manager_update_list_contents(cur_view_data, FALSE);
+}
+
+void
+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->naviframe, "view_data");
+               MP_CHECK(view_data);
+               MP_CHECK_VIEW_DATA(view_data);
+
+               mp_view_manager_set_now_playing(view_data, FALSE);
+       }
+}
+
+void
+mp_library_now_playing_set(struct appdata *ad)
+{
+       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);
+
+       if (!ad->show_now_playing)
+       {
+               ad->show_now_playing = TRUE;
+       }
+
+       mp_view_manager_set_now_playing(view_data, TRUE);
+}
+
+
diff --git a/src/view/mp-lyric-view.c b/src/view/mp-lyric-view.c
new file mode 100644 (file)
index 0000000..673cad6
--- /dev/null
@@ -0,0 +1,876 @@
+/*
+ * 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://floralicense.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-lyric-view.h"
+#include "mp-lyric-mgr.h"
+#include "mp-common.h"
+#include "mp-player-mgr.h"
+#include "mp-play-view.h"
+#include "mp-widget.h"
+
+#include <metadata_extractor.h>
+
+#define MP_LRC_STR_NO_LYRIC ("IDS_MUSIC_SK3_NO_LYRICS")
+#define MP_LRC_FOLDER_PATH "/opt/media/Sounds and music/Lyric/"
+#define MP_LRC_SIFFIX_NAME ".lrc"
+#define MP_LRC_FILE_PATH_LEN (int)255 /* The max length of file path */
+
+#define MP_LRC_LINE_COLOR_DEFAULT "#7e7d7d" /* 126:125:125 */
+#define MP_LRC_LINE_COLOR_PLAYING "#f9f9f9" /* 249:249:249 */
+#define MP_LRC_FONT_CURRENT_SIZE (int)32 /* The size of current playing line */
+#define MP_LRC_FONT_NORMAL_SIZE (int)32 /* The size of normal line */
+
+#define HD_MAIN_W 720
+#define HD_MAIN_H 1280
+
+/* Portrait mode */
+#define MP_LRC_VIEW_X_SCALE 0/HD_MAIN_W /* The X coordinate of the view */
+#define MP_LRC_VIEW_Y_SCALE 454/HD_MAIN_H /* The Y coordinate of the view */
+#define MP_LRC_VIEW_H_SCALE 560/HD_MAIN_H /* The hight of lyric view */
+#define MP_LRC_VIEW_W_SCALE 592/HD_MAIN_W /* The wigth of lyric view */
+
+/* Landscape mode */
+#define MP_LRC_VIEW_H_SCALE_LS 104/HD_MAIN_W
+#define MP_LRC_VIEW_W_SCALE_LS 400/HD_MAIN_W
+#define MP_LRC_VIEW_Y_SCALE_LS 186/HD_MAIN_W
+
+#define MP_LRC_HEAD_H_SCALE 15/HD_MAIN_H
+#define MP_LRC_HEAD_H_SCALE_LS 10/HD_MAIN_W
+
+static void* _mp_lyric_view_get_lyric(struct appdata *ad, int *sync_num);
+#ifndef MP_FEATURE_SUPPORT_ID3_TAG
+static char* _mp_lyric_view_get_current_music_name(struct appdata *ad);
+static char* _mp_lyric_view_get_lyric_path(struct appdata *ad);
+#endif
+static void _mp_lyric_view_set_line_color(struct appdata *ad, Evas_Object *obj, int index, const char *color);
+static const Eina_List* _mp_lyric_view_get_line_list(struct appdata *ad);
+static Evas_Object* _mp_lyric_view_get_line(struct appdata *ad, int index);
+static void _mp_lyric_view_set_current_line(struct appdata *ad, int index);
+static void _mp_lyric_view_drag_start(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _mp_lyric_view_drag_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _mp_lyric_view_drag_stop(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _mp_lyric_view_load_lyric(struct appdata *ad);
+static Evas_Object* _mp_lyric_view_create_layout(struct appdata *ad);
+static void _mp_lyric_view_init_data(struct appdata *ad);
+
+static void*
+_mp_lyric_view_get_lyric(struct appdata *ad, int *sync_num)
+{
+       void *lrc_data = NULL;
+       Eina_List *synclrc_list = NULL;
+       char *unsynclrc_buffer = NULL;
+
+       metadata_extractor_h handle = NULL;
+       int mmf_error = -1;
+
+       /* Get current playing music */
+       mp_plst_item *current_item = NULL;
+       current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);;
+       MP_CHECK_NULL(current_item);
+
+       const char *musicPath = current_item->uri;
+       MP_CHECK_NULL(musicPath);
+
+       mmf_error = metadata_extractor_create(&handle);
+       MP_CHECK_NULL(mmf_error == METADATA_EXTRACTOR_ERROR_NONE);
+
+       mmf_error = metadata_extractor_set_path(handle, musicPath);
+       if (mmf_error == METADATA_EXTRACTOR_ERROR_NONE)
+       {
+               int sync_len = 0;
+               char *unsynclyrics = NULL;
+               int unsync_len = 0;
+
+               char *value = NULL;
+               mmf_error = metadata_extractor_get_metadata(handle, METADATA_SYNCLYRICS_NUM, &value);
+               if (mmf_error == METADATA_EXTRACTOR_ERROR_NONE && value) {
+                       sync_len = atoi(value);
+               }
+               SAFE_FREE(value);
+
+               mmf_error = metadata_extractor_get_metadata(handle, METADATA_UNSYNCLYRICS, &unsynclyrics);
+               if (mmf_error == METADATA_EXTRACTOR_ERROR_NONE && unsynclyrics) {
+                       unsync_len = strlen(unsynclyrics);
+               } else {
+                       DEBUG_TRACE("fail to metadata_extractor_get_metadata() %x", mmf_error);
+               }
+               /* unsynclyrics must be freed */
+
+               if (sync_len || unsync_len)
+               {
+                       DEBUG_TRACE("sync_len=%d", sync_len);
+                       *sync_num = sync_len;
+
+                       if(sync_len > 0)
+                       {
+                               int ret = 0;
+                               int idx = 0;
+                               unsigned long time_info = 0;
+                               char *lyrics_info = NULL;
+
+                               for(idx = 0; idx < sync_len ; idx++)
+                               {
+                                       /*Get one time and lyrics info.*/
+                                       ret = metadata_extractor_get_synclyrics(handle, idx, &time_info, &lyrics_info);
+                                       if(ret == METADATA_EXTRACTOR_ERROR_NONE && lyrics_info != NULL && strlen(lyrics_info) > 0)
+                                       {
+                                               mp_lrc_node_t *new_node = malloc(sizeof(mp_lrc_node_t));
+                                               if (new_node == NULL) {
+                                                       if (handle) {
+                                                               metadata_extractor_destroy(handle);
+                                                               handle = NULL;
+                                                       }
+                                                       return NULL;
+                                               }
+                                               new_node->time = time_info;
+                                               new_node->lyric = g_strdup(lyrics_info);
+
+                                               synclrc_list = eina_list_append(synclrc_list, (gpointer)new_node);
+
+                                               DEBUG_TRACE("[%2d][%6d][%s]", idx, time_info, lyrics_info);
+                                       }
+                                       else
+                                       {
+                                               ERROR_TRACE("Error when get lyrics");
+                                               *sync_num = 0;
+                                               mp_lrc_node_t *node = NULL;
+                                               Eina_List *next = NULL;
+                                               EINA_LIST_FOREACH(synclrc_list, next, node)
+                                               {
+                                                       if (node)
+                                                       {
+                                                               if (node->lyric != NULL)
+                                                                       free(node->lyric);
+                                                               free(node);
+                                                       }
+                                               }
+                                               eina_list_free(synclrc_list);
+                                               synclrc_list = NULL;
+                                               break;
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               DEBUG_TRACE("unsynclyrics[%d] : %s", unsync_len, unsynclyrics);
+                               if (unsynclyrics != NULL)
+                               {
+                                       unsynclrc_buffer = g_strdup(unsynclyrics);
+                               }
+                       }
+
+                       SAFE_FREE(unsynclyrics);
+               }
+               else
+               {
+                       DEBUG_TRACE("No lyric infomation");
+               }
+       }
+
+       if (handle) {
+               metadata_extractor_destroy(handle);
+               handle = NULL;
+       }
+
+       if (*sync_num > 0)
+       {
+               lrc_data = synclrc_list;
+       }
+       else
+       {
+               lrc_data = unsynclrc_buffer;
+       }
+
+       return lrc_data;
+}
+
+#ifndef MP_FEATURE_SUPPORT_ID3_TAG
+static char*
+_mp_lyric_view_get_current_music_name(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK_NULL(ad);
+
+       /* Get current playing music */
+       mp_plst_item *current_item = NULL;
+       current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);;
+       MP_CHECK_NULL(current_item);
+
+       const char *musicPath = current_item->uri;
+       MP_CHECK_NULL(musicPath);
+
+       char musicName[MP_LRC_FILE_PATH_LEN] = {'0'};
+       int len, start, end;
+       const char *p;
+
+       /* Get music name by path */
+       start = end = len = strlen(musicPath);
+       p = musicPath + len;
+
+       while(*p-- != '.')
+       {
+               start--;
+               end--;
+       }
+
+       while(*p-- != '/')
+       {
+               start--;
+       }
+
+       DEBUG_TRACE("len=%d, start=%d, end=%d\n", len, start, end);
+       memcpy(musicName, &musicPath[start], end-start);
+       DEBUG_TRACE("musicName=%s\n", musicName);
+
+       endfunc;
+       return g_strdup(musicName);
+}
+
+static char*
+_mp_lyric_view_get_lyric_path(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK_NULL(ad);
+
+       char *musicName = _mp_lyric_view_get_current_music_name(ad);
+       MP_CHECK_NULL(musicName);
+
+       char buf[MP_LRC_LINE_BUF_LEN] = {'0'};
+       /* Get the lyric path */
+       g_strlcpy(buf, MP_LRC_FOLDER_PATH, (gsize)sizeof(buf));
+       g_strlcat(buf, musicName, (gsize)sizeof(buf));
+       g_strlcat(buf, MP_LRC_SIFFIX_NAME, (gsize)sizeof(buf));
+
+       free(musicName);
+
+       if ( !ecore_file_exists(buf) )
+       {
+               return NULL;
+       }
+
+       if ( ecore_file_is_dir(buf))
+       {
+               return NULL;
+       }
+
+       endfunc;
+
+       return g_strdup(buf);
+}
+#endif
+static void
+_mp_lyric_view_set_line_color(struct appdata *ad, Evas_Object *obj, int index, const char *color)
+{
+       startfunc;
+
+       MP_CHECK(obj);
+       MP_CHECK(color);
+       MP_CHECK(index >= 0);
+       MP_CHECK(ad->lyric_mgr);
+
+       Eina_List *list = ad->lyric_mgr->synclrc_list;
+       int count = eina_list_count(list);
+
+       if (count <= 0)
+               list = ad->lyric_mgr->unsynclrc_list;
+
+       mp_lrc_node_t *lrc_node = (mp_lrc_node_t*)eina_list_nth(list, index);
+       MP_CHECK(lrc_node);
+       char *text_old = lrc_node->lyric;
+       MP_CHECK(text_old);
+
+       char *text_new = (char*)malloc(sizeof(char)*(strlen(text_old)+50));
+       MP_CHECK(text_new);
+       strcpy(text_new, "<color=");
+       strcat(text_new, color);
+       strcat(text_new, ">");
+       strcat(text_new, text_old);
+       strcat(text_new, "</color>");
+
+       edje_object_part_text_set(_EDJ(obj), "txt", text_new);
+
+       free(text_new);
+
+       endfunc;
+}
+
+static const Eina_List*
+_mp_lyric_view_get_line_list(struct appdata *ad)
+{
+       startfunc;
+       const Eina_List *list = NULL;
+
+       MP_CHECK_NULL(ad->lyric_view);
+       mp_lyric_view_t *lyric_view = ad->lyric_view;
+
+       Evas_Object *scroller =  lyric_view->scroller;
+       Evas_Object *content = elm_object_content_get(scroller);
+       list = elm_box_children_get(content);
+
+       endfunc;
+
+       return list;
+}
+
+static Evas_Object*
+_mp_lyric_view_get_line(struct appdata *ad, int index)
+{
+       startfunc;
+
+       MP_CHECK_NULL(index >= 0);
+
+       const Eina_List *list = _mp_lyric_view_get_line_list(ad);
+       Evas_Object *line = eina_list_nth(list, index+1);
+
+       endfunc;
+
+       return line;
+}
+
+static void
+_mp_lyric_view_set_current_line(struct appdata *ad, int index)
+{
+       startfunc;
+
+       MP_CHECK(ad->lyric_view);
+       MP_CHECK(index >= 0);
+       MP_CHECK(ad->playing_view);
+
+       DEBUG_TRACE("index=%d\n", index);
+       Evas_Object *line = _mp_lyric_view_get_line(ad, index);
+       MP_CHECK(line);
+
+       /* No change */
+       if (ad->lyric_view->cur_line == line)
+       {
+               return;
+       }
+
+       /* Update current line */
+       ad->lyric_view->prev_line = ad->lyric_view->cur_line;
+       ad->lyric_view->cur_line = line;
+
+       ad->lyric_view->prev_line_index = ad->lyric_view->cur_line_index;
+       ad->lyric_view->cur_line_index = index;
+
+       int x0, y0, w0, h0;
+       Evas_Object *head = _mp_lyric_view_get_line(ad, 0);
+
+       evas_object_geometry_get(head, &x0, &y0, &w0, &h0);
+       int head_gap = y0 + h0;
+
+       DEBUG_TRACE("===Get current line====i =%d, x=%d, y=%d, w=%d, h=%d\n",index, x0, y0, w0, h0);
+       int x, y, w, h;
+       evas_object_geometry_get(ad->lyric_view->cur_line, &x, &y, &w, &h);
+       DEBUG_TRACE("===Get current line====i =%d, x=%d, y=%d, w=%d, h=%d\n",index, x, y, w, h);
+
+       int new_y = 0;
+       if (ad->playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+       {
+               int scale_h_ls = ad->lyric_view->win_w*MP_LRC_VIEW_H_SCALE_LS;
+               int scale_w_ls = ad->lyric_view->win_h*MP_LRC_VIEW_W_SCALE_LS;
+               int scale_head_h_ls = ad->lyric_view->win_w*MP_LRC_HEAD_H_SCALE_LS;
+
+               if ((y-y0) > (scale_h_ls/2 - scale_head_h_ls))
+               {
+                       new_y = y-head_gap+(h)-(scale_h_ls/2 - scale_head_h_ls);
+               }
+               else
+               {
+                       new_y = y-head_gap+(h/2)-(y-y0);
+               }
+
+               elm_scroller_region_bring_in(ad->lyric_view->scroller, x, new_y, scale_w_ls, scale_h_ls);
+       }
+       else
+       {
+               int scale_h = ad->lyric_view->win_h*MP_LRC_VIEW_H_SCALE;
+               int scale_w = ad->lyric_view->win_w*MP_LRC_VIEW_W_SCALE;
+               int scale_head_h = ad->lyric_view->win_h*MP_LRC_HEAD_H_SCALE;
+
+               if ((y-y0) > (scale_h/2 - scale_head_h))
+               {
+                       new_y = y-head_gap+(h)-(scale_h/2 - scale_head_h);
+               }
+               else
+               {
+                       new_y = y-head_gap+(h/2)-(y-y0);
+               }
+
+               elm_scroller_region_bring_in(ad->lyric_view->scroller, x, new_y, scale_w, scale_h);
+       }
+
+       _mp_lyric_view_set_line_color(ad, ad->lyric_view->cur_line, ad->lyric_view->cur_line_index, MP_LRC_LINE_COLOR_PLAYING);
+
+       if (ad->lyric_view->prev_line != NULL)
+       {
+               _mp_lyric_view_set_line_color(ad, ad->lyric_view->prev_line, ad->lyric_view->prev_line_index, MP_LRC_LINE_COLOR_DEFAULT);
+       }
+
+       evas_object_show(ad->lyric_view->scroller);
+
+       endfunc;
+}
+
+static void
+_mp_lyric_view_drag_start(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+
+       struct appdata *ad = data;
+
+       MP_CHECK(data);
+       MP_CHECK(ad->lyric_view);
+
+       ad->lyric_view->b_drag = EINA_TRUE;
+
+       if(ad->player_state == PLAY_STATE_PLAYING)
+       {
+               //mp_player_mgr_pause(ad);
+               //ad->player_state = PLAY_STATE_PLAYING;
+       }
+
+       endfunc;
+}
+
+static void
+_mp_lyric_view_drag_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+
+       struct appdata *ad = data;
+
+       MP_CHECK(ad);
+       MP_CHECK(ad->lyric_view);
+
+       endfunc;
+}
+
+static void
+_mp_lyric_view_drag_stop(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+
+       struct appdata *ad = data;
+
+       MP_CHECK(data);
+       MP_CHECK(ad->lyric_view);
+
+       ad->lyric_view->b_drag = EINA_FALSE;
+
+       if(ad->player_state == PLAY_STATE_PLAYING)
+       {
+               //mp_player_mgr_resume(ad);
+       }
+
+       endfunc;
+}
+
+static void
+_mp_lyric_view_load_lyric(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK(ad);
+       MP_CHECK(ad->playing_view);
+       MP_CHECK(ad->lyric_view);
+       MP_CHECK(ad->lyric_mgr);
+       MP_CHECK(ad->lyric_view->scroller);
+       MP_CHECK(ad->lyric_view->box);
+
+       /* Create lyric line */
+       int index = 0;
+       Eina_List *list = ad->lyric_mgr->synclrc_list;
+       int count = eina_list_count(list);
+
+       if (count <= 0)
+       {
+               list = ad->lyric_mgr->unsynclrc_list;
+               count = eina_list_count(list);
+       }
+
+       for (index = 0; index < count; index++)
+       {
+               mp_lrc_node_t *lrc_node = (mp_lrc_node_t*)eina_list_nth(list, index);
+               MP_CHECK(lrc_node);
+               DEBUG_TRACE("line%d=%s\n", index, lrc_node->lyric);
+               Evas_Object* line = mp_common_load_edj(ad->playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_lrc_line");
+               edje_object_part_text_set(_EDJ(line), "txt", lrc_node->lyric);
+
+               evas_object_show(line);
+               evas_object_data_set(line, "time", &lrc_node->time);
+               elm_box_pack_end(ad->lyric_view->box, line);
+       }
+
+       /* Add gap for head and tail */
+       if (ad->playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+       {
+           Evas_Object* head = mp_common_load_edj(ad->playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_lrc_head_landscape");
+           elm_box_pack_start(ad->lyric_view->box, head);
+       }
+       else
+       {
+           Evas_Object* head = mp_common_load_edj(ad->playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_lrc_head");
+           elm_box_pack_start(ad->lyric_view->box, head);
+       }
+
+       endfunc;
+}
+
+static Evas_Object*
+_mp_lyric_view_create_layout(struct appdata *ad)
+{
+       startfunc;
+
+       Evas_Object *layout = NULL;
+
+       MP_CHECK_NULL(ad);
+       MP_CHECK_NULL(ad->lyric_view);
+
+       /* Create layout */
+       MP_CHECK_NULL(ad->playing_view);
+       if (ad->playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+       {
+               layout = mp_common_load_edj(ad->playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_lrc_layout_landscape");
+       }
+       else
+       {
+               layout = mp_common_load_edj(ad->playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_lrc_layout");
+       }
+       evas_object_show(layout);
+       ad->lyric_view->layout = layout;
+
+       /* Create scroller */
+       Evas_Object *scroller = elm_scroller_add(ad->playing_view->layout);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller,ELM_SCROLLER_POLICY_OFF,ELM_SCROLLER_POLICY_ON);
+       evas_object_show(scroller);
+       ad->lyric_view->scroller = scroller;
+
+       /* Create box */
+       Evas_Object *box = elm_box_add(ad->playing_view->layout);
+       evas_object_show(box);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       ad->lyric_view->box = box;
+
+       /* Set layout content */
+       elm_object_content_set(scroller, box);
+       elm_object_part_content_set(layout, "lyric", scroller);
+       elm_object_part_content_set(ad->playing_view->layout, "lrc", layout);
+
+       /* Set event callback */
+       //evas_object_smart_callback_add(ad->lyric_view->scroller, "scroll", _mp_lyric_view_scroll_cb, ad);
+       evas_object_event_callback_add(ad->lyric_view->scroller, EVAS_CALLBACK_MOUSE_DOWN, _mp_lyric_view_drag_start, ad);
+       evas_object_event_callback_add(ad->lyric_view->scroller, EVAS_CALLBACK_MOUSE_MOVE, _mp_lyric_view_drag_move, ad);
+       evas_object_event_callback_add(ad->lyric_view->scroller, EVAS_CALLBACK_MOUSE_UP, _mp_lyric_view_drag_stop, ad);
+
+       endfunc;
+
+       return layout;
+}
+
+static void
+_mp_lyric_view_init_data(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK(ad);
+
+       if (ad->lyric_view != NULL)
+       {
+               mp_lyric_view_destroy(ad);
+       }
+
+       /* Create view data */
+       ad->lyric_view = (mp_lyric_view_t*)malloc(sizeof(mp_lyric_view_t));
+       MP_CHECK(ad->lyric_view);
+       memset(ad->lyric_view, 0, sizeof(mp_lyric_view_t));
+
+       /* Create lyric layout */
+       ad->lyric_view->layout = _mp_lyric_view_create_layout(ad);
+       elm_box_clear(ad->lyric_view->box);
+
+       /* Get window size */
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &ad->lyric_view->win_w, &ad->lyric_view->win_h);
+
+       endfunc;
+}
+
+void
+mp_lyric_view_refresh(struct appdata *ad)
+{
+       MP_CHECK(ad);
+       if(!ad->lyric_view)
+               return;
+
+       if (ad->lyric_view->b_drag)
+               return;
+
+       if (ad->lyric_mgr != NULL)
+       {
+               Eina_List *list = ad->lyric_mgr->synclrc_list;
+               int count = eina_list_count(list);
+               int pos = mp_player_mgr_get_position();
+               int index = 0;
+
+               /* Get the current playing line */
+               for (index = 0; index < count-1; index++)
+               {
+                       mp_lrc_node_t *node1 = (mp_lrc_node_t*)eina_list_nth(list, index);
+                       mp_lrc_node_t *node2 = (mp_lrc_node_t*)eina_list_nth(list, index+1);
+                       MP_CHECK(node1);
+                       MP_CHECK(node2);
+
+                       if ((pos >= node1->time) && (pos < node2->time))
+                       {
+                               _mp_lyric_view_set_current_line(ad, index);
+                               break;
+                       }
+               }
+       }
+
+       endfunc;
+}
+
+void
+mp_lyric_view_hide(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK(ad);
+       MP_CHECK(ad->lyric_view);
+
+       if (ad->lyric_view->layout != NULL)
+       {
+               evas_object_hide(ad->lyric_view->layout);
+               Evas_Object *bg = (Evas_Object *)edje_object_part_object_get(_EDJ(ad->lyric_view->layout), "bg");
+               evas_object_hide(bg);
+       }
+
+       if (ad->lyric_view->box != NULL)
+       {
+               evas_object_hide(ad->lyric_view->box);
+       }
+
+       if (ad->lyric_view->scroller != NULL)
+       {
+               evas_object_hide(ad->lyric_view->scroller);
+       }
+
+       MP_CHECK(ad->playing_view);
+       edje_object_signal_emit(_EDJ(ad->playing_view->layout), "lrc_invisible", "lrc");
+
+       endfunc;
+}
+
+void
+mp_lyric_view_show(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK(ad);
+
+       /* The first time show lyric */
+       if (ad->lyric_view == NULL)
+       {
+               mp_lyric_view_create(ad);
+       }
+
+       MP_CHECK(ad->lyric_view);
+
+       /* Show directly if the current playing music is the same as last one, otherwise create again */
+#ifdef MP_FEATURE_SUPPORT_ID3_TAG
+       /* Get current music path */
+       mp_plst_item *current_item = NULL;
+       current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);;
+       MP_CHECK(current_item);
+       MP_CHECK(current_item->uri);
+
+       if (ad->lyric_view->music_path == NULL ||
+               ((ad->lyric_view->lyric_buffer == NULL) && (ad->lyric_view->synclrc_list == NULL)))
+       {
+               mp_lyric_view_create(ad);
+       }
+       else if (strcmp(ad->lyric_view->music_path, current_item->uri))
+       {
+               mp_lyric_view_create(ad);
+       }
+#else
+       char *lyric_path = _mp_lyric_view_get_lyric_path(ad);
+       MP_CHECK(lyric_path);
+
+       if (ad->lyric_view->lyric_path != NULL)
+       {
+               if (strcmp(lyric_path, ad->lyric_view->lyric_path))
+               {
+                       mp_lyric_view_create(ad);
+               }
+       }
+       IF_FREE(lyric_path);
+#endif
+
+       MP_CHECK(ad->lyric_view);
+
+       if (ad->lyric_view->layout != NULL)
+       {
+               evas_object_show(ad->lyric_view->layout);
+               Evas_Object *bg = (Evas_Object *)edje_object_part_object_get(_EDJ(ad->lyric_view->layout), "bg");
+               evas_object_show(bg);
+       }
+
+       if (ad->lyric_view->box != NULL)
+       {
+               evas_object_show(ad->lyric_view->box);
+       }
+
+       if (ad->lyric_view->scroller != NULL)
+       {
+               evas_object_show(ad->lyric_view->scroller);
+       }
+
+       MP_CHECK(ad->playing_view);
+       edje_object_signal_emit(_EDJ(ad->playing_view->layout), "lrc_visible", "lrc");
+
+       endfunc;
+}
+
+void
+mp_lyric_view_destroy(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK(ad);
+       MP_CHECK(ad->lyric_view);
+
+       if (ad->lyric_mgr != NULL)
+       {
+               //mp_lyric_mgr_destory(ad);
+       }
+
+        if (ad->lyric_view->layout != NULL)
+       {
+               evas_object_del(ad->lyric_view->layout);
+       }
+
+       if (ad->lyric_view->box != NULL)
+       {
+               elm_box_clear(ad->lyric_view->box);
+               evas_object_del(ad->lyric_view->box);
+       }
+
+       if (ad->lyric_view->scroller != NULL)
+       {
+               evas_object_del(ad->lyric_view->scroller);
+       }
+
+#ifdef MP_FEATURE_SUPPORT_ID3_TAG
+       if (ad->lyric_view->lyric_buffer != NULL)
+       {
+               free(ad->lyric_view->lyric_buffer);
+       }
+#else
+       if (ad->lyric_view->lyric_path != NULL)
+       {
+               free(ad->lyric_view->lyric_path);
+       }
+#endif
+       if (ad->lyric_view->music_path != NULL)
+       {
+               free(ad->lyric_view->music_path);
+       }
+
+       free(ad->lyric_view);
+       ad->lyric_view = NULL;
+
+       MP_CHECK(ad->playing_view);
+       edje_object_signal_emit(_EDJ(ad->playing_view->layout), "lrc_destroy", "lrc");
+
+       endfunc;
+}
+
+void
+mp_lyric_view_create(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK(ad);
+
+       /* Get current music path */
+       mp_plst_item *current_item = NULL;
+       current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);;
+       MP_CHECK(current_item);
+       MP_CHECK(current_item->uri);
+
+       if (ad->lyric_view != NULL)
+       {
+               mp_lyric_view_destroy(ad);
+       }
+
+#ifdef MP_FEATURE_SUPPORT_ID3_TAG
+       int sync_num = 0;
+       void *lrc_data = _mp_lyric_view_get_lyric(ad, &sync_num);
+
+       /* No lyric */
+       if (lrc_data == NULL)
+       {
+               //_mp_lyric_view_show_nolyric(ad);
+               return;
+       }
+#else
+       char* lyricPath = _mp_lyric_view_get_lyric_path(ad);
+
+       /* No lyric */
+       if (lyricPath == NULL)
+       {
+               //_mp_lyric_view_show_nolyric(ad);
+               return;
+       }
+
+       DEBUG_TRACE("lyricPath=%s\n",lyricPath);
+#endif
+
+       /* Init view data */
+       _mp_lyric_view_init_data(ad);
+       MP_CHECK(ad->lyric_view);
+
+       /* Parse lyric file */
+#ifdef MP_FEATURE_SUPPORT_ID3_TAG
+       if (sync_num > 0)
+       {
+               ad->lyric_view->synclrc_list = lrc_data;
+               mp_lyric_mgr_create(ad, lrc_data, MP_LYRIC_SOURCE_LIST);
+       }
+       else
+       {
+               ad->lyric_view->lyric_buffer = lrc_data;
+               mp_lyric_mgr_create(ad, lrc_data, MP_LYRIC_SOURCE_BUFFER);
+       }
+#else
+       ad->lyric_view->lyric_path = lyricPath;
+       mp_lyric_mgr_create(ad, lyricPath, MP_LYRIC_SOURCE_FILE);
+#endif
+       SAFE_FREE(ad->lyric_view->music_path);
+       ad->lyric_view->music_path = strdup(current_item->uri);
+
+       /* Load lyric view */
+       _mp_lyric_view_load_lyric(ad);
+
+       endfunc;
+}
diff --git a/src/view/mp-play-view.c b/src/view/mp-play-view.c
new file mode 100755 (executable)
index 0000000..468c41d
--- /dev/null
@@ -0,0 +1,2815 @@
+/*
+ * 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://floralicense.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 <glib.h>
+#include "music.h"
+#include "mp-play-view.h"
+#include "mp-player-control.h"
+#include "mp-play.h"
+#include "mp-item.h"
+#include "mp-player-drm.h"
+#include "mp-smart-event-box.h"
+#include "mp-file-tag-info.h"
+#include "mp-player-mgr.h"
+#include "mp-player-debug.h"
+#include "mp-playlist-mgr.h"
+#include "mp-util.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-ctxpopup.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
+
+
+
+#include "mp-volume.h"
+#include "mp-volume-widget.h"
+
+
+#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 VOLUME_WIDGET_HIDE_TIME        (3.0)   /* sec */
+
+#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_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(struct appdata *ad, mp_plst_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);
+#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);
+
+static void
+_mp_play_view_init(void *data)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       ad->show_optional_menu = FALSE;
+
+       playing_view->layout = NULL;
+       playing_view->play_view = NULL;
+       playing_view->play_control = NULL;
+       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->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;
+
+       return;
+}
+
+void
+mp_play_view_back_clicked_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");
+
+       DEBUG_TRACE("ad->loadtype: %d", ad->loadtype);
+
+       //reset mute flag
+       ad->mute_flag = false;
+       if (ad->playing_view)
+               mp_evas_object_del(ad->playing_view->play_icon);
+
+       {
+#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);
+
+               if (ad->music_setting_change_flag)
+               {
+                       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);
+       evas_object_smart_callback_del(obj, "clicked", mp_play_view_back_clicked_cb);
+
+       return;
+}
+
+
+static void
+_mp_play_view_clear_animator(struct appdata *ad)
+{
+       MP_CHECK(ad);
+       if(ad->minfo_ani)
+       {
+               ecore_animator_del(ad->minfo_ani);
+               ad->minfo_ani = NULL;
+       }
+
+       if(ad->minfo_list)
+       {
+               g_list_free_full(ad->minfo_list, _mp_play_view_glist_free_cb);
+               ad->minfo_list = NULL;
+       }
+}
+
+void
+mp_play_view_info_back_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       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;
+       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;
+
+                       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, true);
+               }
+       }
+
+       endfunc;
+       return;
+}
+
+/* callback function when click "album" image*/
+static void
+_mp_play_view_sb_click_info_albumart(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       mp_play_view_info_back_cb(ad, NULL, NULL);
+       endfunc;
+}
+
+typedef struct
+{
+       char *header;
+       char *detail;
+}mp_media_info_t;
+
+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);
+               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);
+               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;
+}
+
+static void
+_mp_play_view_info_gl_item_del(void *data, Evas_Object * obj)
+{
+       mp_media_info_t *info = data;
+       MP_CHECK(info);
+       IF_FREE(info->header);
+       IF_FREE(info->detail);
+       free(info);
+}
+
+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,
+       .func.content_get = NULL,
+};
+
+static Eina_Bool
+_ecore_animator_cb(void *data)
+{
+       struct appdata *ad = NULL;
+       Elm_Object_Item *item;
+
+       ad = data;
+       MP_CHECK_FALSE(ad);
+
+       if(ad->minfo_list)
+       {
+               ad->minfo_list = g_list_first(ad->minfo_list);
+
+               item = elm_genlist_item_append(ad->minfo_genlist, &info_view_info_item_class,
+                                                      ad->minfo_list->data,
+                                                      NULL,
+                                                      ELM_GENLIST_ITEM_NONE,
+                                                      NULL, NULL);
+               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;
+       }
+
+       ad->minfo_ani = NULL;
+       return EINA_FALSE;
+
+}
+
+static void
+_mp_play_view_create_info_item(Evas_Object * genlist, char *header, char *detail)
+{
+       MP_CHECK(genlist);
+
+       struct appdata *ad =  evas_object_data_get(genlist, "ad");
+       MP_CHECK(ad);
+
+       mp_media_info_t *info = calloc(1, sizeof(mp_media_info_t));
+       MP_CHECK(info);
+       info->header = g_strdup(header);
+       info->detail= g_strdup(detail);
+
+       if(!ad->minfo_ani)
+       {
+               DEBUG_TRACE("create animator");
+               ad->minfo_ani = ecore_animator_add(_ecore_animator_cb, ad);
+               ad->minfo_genlist = genlist;
+       }
+
+       ad->minfo_list = g_list_append(ad->minfo_list, info);
+
+}
+
+static void
+_mp_play_view_glist_free_cb(gpointer data)
+{
+       startfunc;
+       _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)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_NULL(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_NULL(playing_view);
+
+       mp_track_info_t *track_info = ad->current_track_info;
+       MP_CHECK_NULL(track_info);
+
+       int ret = 0;
+       Evas_Object *genlist;
+
+       _mp_play_view_clear_animator(ad);
+
+       genlist = elm_genlist_add(parent);
+       MP_CHECK_NULL(genlist);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+       evas_object_data_set(genlist, "ad", ad);
+
+       if (ret == 0)
+       {
+
+               if (track_info->artist && strlen(track_info->artist))
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ARTIST"), track_info->artist);
+
+               _mp_play_view_create_info_item(genlist, ("IDS_COM_BODY_DETAILS_TITLE"), track_info->title);
+
+               if (track_info->album && strlen(track_info->album))
+                        _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ALBUM"), track_info->album);
+
+               char duration_format[10] = { 0, };
+               int dur_sec = track_info->duration / 1000;
+               int sec = dur_sec % 60;
+               int min = dur_sec / 60;
+               snprintf(duration_format, sizeof(duration_format), "%02u:%02u", min, sec);
+
+               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_LENGTH"),
+                                                             duration_format);
+
+
+               if (track_info->genre && strlen(track_info->genre))
+                        _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_GENRE"), track_info->genre);
+
+               if (track_info->author && strlen(track_info->author))
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_AUTHOR"), track_info->author);
+
+               if (track_info->copyright && strlen(track_info->copyright))
+                        _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_COPYRIGHT"), track_info->copyright);
+
+               if (mp_drm_file_right(track_info->uri))
+               {
+                       if (mp_drm_get_description(ad, track_info->uri))
+                               _mp_play_view_create_info_item(genlist,
+                                                                             ("IDS_MUSIC_BODY_DESCRIPTION"),
+                                                                             ad->drm_info.description);
+                       else
+                               _mp_play_view_create_info_item(genlist,
+                                                                             ("IDS_MUSIC_BODY_DESCRIPTION"),
+                                                                             "-");
+
+
+                       if (ad->drm_info.forward)
+                               _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"));
+
+                       /* right status */
+                       _mp_play_view_append_drm_info(genlist, track_info->uri);
+               }
+
+               if (track_info->track_num && strlen(track_info->track_num))
+               {
+                        _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_NUMBER"), track_info->track_num);
+               }
+
+               if (track_info->format && strlen(track_info->format))
+               {
+
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_FORMAT"), track_info->format);
+
+               }
+
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_MUSIC_LOCATION"),
+                                                             track_info->uri);
+       }
+
+       evas_object_show(genlist);
+       elm_object_part_content_set(parent, "mi_content", genlist);
+       return genlist;
+}
+
+static void
+mp_play_view_create_info_contents(Evas_Object * parent, void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       mp_track_info_t *cur_item = ad->current_track_info;
+       MP_CHECK(cur_item);
+
+       /***********create left area start********************/
+       Evas_Object *info_view_left_area = mp_common_load_edj(parent, PLAY_VIEW_EDJ_NAME, "info_view_left_area");
+       MP_CHECK(info_view_left_area);
+       elm_object_part_content_set(parent, "left_area", info_view_left_area);
+       evas_object_show(info_view_left_area);
+
+       Evas_Object *video_play_img = elm_image_add(info_view_left_area);
+       elm_image_file_set(video_play_img, IMAGE_EDJ_NAME, MP_ICON_VIDEO_PLAY);
+       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 (mp_util_is_image_valid(ad->evas, cur_item->thumbnail_path))
+       {
+               elm_image_file_set(album_image, cur_item->thumbnail_path, NULL);
+       }
+       else
+       {
+               elm_image_file_set(album_image, DEFAULT_THUMBNAIL, NULL);
+       }
+
+
+       elm_object_part_content_set(info_view_left_area, "left_album_bg", album_image);
+       evas_object_show(album_image);
+       evas_object_event_callback_add(video_play_img, EVAS_CALLBACK_MOUSE_DOWN, NULL, NULL);
+       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);
+       evas_object_show(right_base_box);
+
+       Evas_Object *right_base_box_detail =
+               mp_common_load_edj(right_base_box, PLAY_VIEW_EDJ_NAME, "mi_base_box_detail");
+       MP_CHECK(right_base_box_detail);
+       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);
+}
+
+static void
+_mp_play_view_popup_bt_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+
+       MP_CHECK(data);
+       struct appdata *ad = (struct appdata *)data;
+
+       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);
+
+       mp_popup_destroy(ad);
+       endfunc;
+}
+
+static void
+_mp_play_view_popup_headphone_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+
+       MP_CHECK(data);
+       struct appdata *ad = (struct appdata *)data;
+
+       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);
+
+       mp_popup_destroy(ad);
+       endfunc;
+}
+
+static void
+_mp_play_view_popup_speaker_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+
+       int ret = 0;
+       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);
+
+       mp_popup_destroy(ad);
+       endfunc;
+}
+
+static void
+_mp_play_view_append_snd_path_device(struct appdata *ad, char *bt_name, int bt_connected, int earjack, Evas_Object *popup)
+{
+       MP_CHECK(ad);
+       MP_CHECK(popup);
+
+       if (bt_connected)
+               mp_genlist_popup_item_append(popup, bt_name, ad->radio_group, _mp_play_view_popup_bt_cb, ad);
+
+       if (earjack)
+               mp_genlist_popup_item_append(popup, GET_SYS_STR("IDS_COM_OPT_HEADPHONES_ABB"), ad->radio_group, _mp_play_view_popup_headphone_cb, ad);
+
+       mp_genlist_popup_item_append(popup, GET_SYS_STR("IDS_COM_OPT_SPEAKER_ABB"), ad->radio_group, _mp_play_view_popup_speaker_cb, ad);
+
+       mp_util_get_sound_path(&(ad->snd_path));
+}
+
+void
+mp_play_view_update_snd_path(struct appdata *ad)
+{
+       startfunc;
+       MP_CHECK(ad);
+
+       bool popup_exist = false;
+       bool bt_connected = false;
+       int earjack = 0;
+       static char *bt_name;
+       int ret = 0;
+       Evas_Object *popup = NULL;
+
+       popup = ad->popup[MP_POPUP_GENLIST];
+       if(popup)
+       {
+               popup_exist = evas_object_data_get(popup, "sound_path");
+       }
+
+       //update or destroy popup..
+       if(popup_exist)
+       {
+               IF_FREE(bt_name);
+               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 (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack))
+                       WARN_TRACE("Earjack state get Fail...");
+
+               if (!bt_connected && !earjack)
+               {
+                       evas_object_del(popup);
+               }
+               else
+               {
+                       // TODO: updating list is not working now.. there is timing issue... complete it after MMFW support..
+                       evas_object_del(popup);
+               }
+       }
+
+       //update button
+       mp_play_view_set_snd_path_sensitivity(ad);
+
+}
+
+void
+mp_play_view_set_snd_path_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+
+       Evas_Object *group = NULL;
+       Evas_Object *popup = NULL;
+
+       int ret = 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);
+       mp_retm_if(!popup, "Error: popup is null...");
+
+       group = elm_radio_add(popup);
+       ad->radio_group = group;
+
+       Evas_Object *genlist = evas_object_data_get(popup, "genlist");
+       MP_CHECK(genlist);
+       evas_object_data_set(genlist, "ad", ad);
+
+       IF_FREE(bt_name);
+       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 (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack))
+               WARN_TRACE("Earjack state get Fail...");
+
+       _mp_play_view_append_snd_path_device(ad, bt_name, bt_connected, earjack, popup);
+
+}
+
+static void
+_mp_play_view_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       playing_view->flick_direction = 0;
+       //hide mute popup
+       if (playing_view->play_view)
+               edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
+       mp_ecore_timer_del(ad->volume_down_timer);
+       mp_ecore_timer_del(ad->mute_popup_show_timer);
+       //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);
+
+       /* volume */
+       mp_evas_object_del(playing_view->volume_widget);
+       mp_ecore_timer_del(playing_view->volume_widget_timer);
+       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, false);
+       mp_volume_key_event_callback_del();
+
+       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_lyric_view_destroy(ad);
+
+       endfunc;
+
+       return;
+}
+
+void
+mp_play_view_show_default_info(struct appdata *ad)
+{
+       MP_CHECK(ad);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, false);
+
+       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(parent, PLAY_VIEW_EDJ_NAME, "richinfo/test_rich_info");
+
+       mp_play_view_create_info_contents(playing_view->play_info, ad);
+
+#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_MEDIA_INFO"));
+       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, "IDS_MUSIC_BODY_MEDIA_INFO",
+                                             ad);
+#endif
+}
+
+void
+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);
+       //hide mute popup
+       if (playing_view->play_view)
+               edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
+       //show volume button
+       if (mp_volume_get_current()>0)
+               edje_object_signal_emit(_EDJ(playing_view->play_icon), "unmute", "volume");
+       else
+               edje_object_signal_emit(_EDJ(playing_view->play_icon), "mute", "volume");
+       mp_ecore_timer_del(ad->volume_down_timer);
+       mp_ecore_timer_del(ad->mute_popup_show_timer);
+
+       mp_evas_object_del(playing_view->volume_widget);
+       mp_ecore_timer_del(playing_view->volume_widget_timer);
+
+#ifndef ENABLE_RICHINFO
+       mp_play_view_show_default_info(ad);
+#else
+       mp_plst_item *cur_item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK(cur_item);
+
+       if(mp_drm_file_right(cur_item->uri) || mp_ug_show_info(ad) < 0)
+       {
+               DEBUG_TRACE("fail to load ug, Create default Info layout");
+               mp_play_view_show_default_info(ad);
+       }
+#endif
+
+}
+
+static bool
+mp_common_refresh_track_info(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       if (mp_volume_get_current() == 0)
+       {
+               //set mute
+               edje_object_signal_emit(_EDJ(playing_view->play_icon), "mute", "volume");
+       }
+       else
+       {
+               //reset volume
+               edje_object_signal_emit(_EDJ(playing_view->play_icon), "unmute", "volume");
+       }
+
+       mp_plst_item *current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK_FALSE(current_item);
+
+       mp_track_info_t *track_info = ad->current_track_info;
+       MP_CHECK_FALSE(track_info);
+
+#ifdef MP_SOUND_PLAYER
+       edje_object_signal_emit(_EDJ(playing_view->play_menu), "add_to_playlist_invisible", "play_view");
+#else
+       if(current_item->track_type != MP_TRACK_URI || current_item->uid == NULL )
+       {
+               edje_object_signal_emit(_EDJ(playing_view->play_menu), "add_to_playlist_invisible", "play_view");
+       }
+#endif
+
+
+       if(playing_view->play_head)
+       {
+               elm_object_item_text_set(playing_view->play_head, track_info->title);
+       }
+       edje_object_part_text_set(_EDJ(playing_view->play_title), "title", track_info->title);
+       edje_object_part_text_set(_EDJ(playing_view->play_title), "artist_name", track_info->artist);
+
+       return true;
+}
+
+static Evas_Object *
+_mp_play_view_create_next_item(mp_plst_item * next_item, struct appdata *ad)
+{
+       Evas_Object *next_view = NULL;
+       Evas_Object *album_img = NULL;
+       mp_track_info_t *track_info = NULL;
+
+       MP_CHECK_NULL(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_NULL(playing_view);
+
+       track_info = ad->current_track_info;
+       MP_CHECK_NULL(track_info);
+
+       mp_debug("next item : %s", track_info->title);
+       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_config_scale_get(), 480 * elm_config_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);
+       }
+       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_config_scale_get(), 800 * elm_config_scale_get());
+       }
+
+       evas_object_show(next_view);
+
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+       {
+               album_img = elm_bg_add(next_view);
+               if (mp_util_is_image_valid(ad->evas, track_info->thumbnail_path))
+               {
+                       elm_bg_file_set(album_img, track_info->thumbnail_path, NULL);
+               }
+               else
+               {
+                       elm_bg_file_set(album_img, DEFAULT_THUMBNAIL, NULL);
+               }
+       }
+       else
+       {
+               album_img = evas_object_image_add(ad->evas);
+               int 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);
+               evas_object_image_load_size_set(album_img, w, h);
+               evas_object_image_fill_set(album_img, 0, 0, w, h);
+               if (mp_util_is_image_valid(ad->evas, track_info->thumbnail_path))
+               {
+                       evas_object_image_file_set(album_img, track_info->thumbnail_path, NULL);
+               }
+               else
+               {
+                       evas_object_image_file_set(album_img, DEFAULT_THUMBNAIL, NULL);
+               }
+       }
+
+       elm_object_part_content_set(next_view, "album_art", album_img);
+       evas_object_show(album_img);
+       return next_view;
+}
+
+static Evas_Object *
+_mp_play_view_create_next_bg_item(mp_plst_item * next_item, struct appdata *ad)
+{
+       Evas_Object *next_view = NULL;
+       Evas_Object *album_img = NULL;
+
+       MP_CHECK_NULL(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_NULL(playing_view);
+
+       mp_track_info_t *track_info = ad->current_track_info;
+       MP_CHECK_NULL(track_info);
+
+       mp_debug("next item : %s", track_info->title);
+
+       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_config_scale_get(), 480 * elm_config_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);
+       }
+       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_config_scale_get(), 800 * elm_config_scale_get());
+       }
+
+       evas_object_show(next_view);
+
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+       {
+               album_img = elm_bg_add(next_view);
+               if (mp_util_is_image_valid(ad->evas, track_info->thumbnail_path))
+               {
+                       elm_bg_file_set(album_img, track_info->thumbnail_path, NULL);
+               }
+               else
+               {
+                       elm_bg_file_set(album_img, DEFAULT_THUMBNAIL, NULL);
+               }
+       }
+       else
+       {
+               album_img = evas_object_image_add(ad->evas);
+               int w, h;
+               edje_object_part_geometry_get(_EDJ(playing_view->play_view_bg), "album_bg", NULL, NULL, &w, &h);
+               mp_debug("album bg size =  [%d * %d]", w, h);
+               evas_object_image_load_size_set(album_img, w, h);
+               evas_object_image_fill_set(album_img, 0, 0, w, h);
+
+               playing_view->mode = rand()%MP_PLAYING_VIEW_BOTTOM_RIGHT+1;
+
+               if (mp_util_is_image_valid(ad->evas, track_info->thumbnail_path))
+               {
+                       mp_util_edit_image(ad->evas, album_img, track_info->thumbnail_path, playing_view->mode);
+               }
+               else
+               {
+                       mp_util_edit_image(ad->evas, album_img, DEFAULT_THUMBNAIL, playing_view->mode);
+               }
+       }
+
+       elm_object_part_content_set(next_view, "album_art", album_img);
+       evas_object_show(album_img);
+
+       return next_view;
+}
+
+static void
+_mp_play_view_eventbox_clicked_cb(void *data, 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(playing_view);
+
+       DEBUG_TRACE("[%d]", ad->show_optional_menu);
+
+       mp_play_view_set_menu_state(ad, !ad->show_optional_menu, true);
+
+       return;
+}
+
+static bool
+_mp_play_view_clear_next_bg_view(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       Evas_Object *content = elm_object_part_content_unset(playing_view->layout, "bg_list_content_temp");
+       evas_object_del(content);
+       playing_view->play_view_bg_next = NULL;
+
+       edje_object_signal_emit(elm_layout_edje_get(playing_view->layout), "set_default", "bg_list_content");
+
+       playing_view->transition_state = false;
+
+       return true;
+}
+
+static bool
+_mp_play_view_clear_next_view(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       Evas_Object *content = elm_object_part_content_unset(playing_view->layout, "list_content_temp");
+       evas_object_del(content);
+       playing_view->play_view_next = NULL;
+
+       edje_object_signal_emit(elm_layout_edje_get(playing_view->layout), "set_default", "list_content");
+
+       playing_view->transition_state = false;
+
+       return true;
+}
+
+static void
+_mp_play_view_flick_event(struct appdata *ad, bool left)
+{
+       MP_CHECK(ad);
+
+       if (ad->lyric_view != NULL && ad->b_show_lyric)
+       {
+               DEBUG_TRACE("lyric view is exist");
+               return;
+       }
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       mp_plst_item * next_item = NULL;
+       if(left)
+       {
+               playing_view->flick_direction = 1;
+               next_item = mp_playlist_mgr_get_next(ad->playlist_mgr, EINA_TRUE);
+       }
+       else
+       {
+               playing_view->flick_direction = 2;
+               next_item = mp_playlist_mgr_get_prev(ad->playlist_mgr);
+       }
+       MP_CHECK(next_item);
+       mp_playlist_mgr_set_current(ad->playlist_mgr, next_item);
+
+       if(mp_playlist_mgr_count(ad->playlist_mgr) == 1)
+       {
+               DEBUG_TRACE("There is only one playing item. skip transition effect");
+               ad->freeze_indicator_icon = true;
+               mp_play_destory(ad);
+               mp_play_new_file(ad, true);
+               return ;
+       }
+
+       _mp_play_view_transit_by_item(ad, next_item, left);
+}
+
+static void
+_mp_play_view_eventbox_flick_left_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       _mp_play_view_flick_event(data, true);
+}
+
+static void
+_mp_play_view_eventbox_flick_right_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       _mp_play_view_flick_event(data, false);
+}
+
+static void
+_mp_play_view_add_to_playlist_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       DEBUG_TRACE("%s", emission);
+#ifndef MP_SOUND_PLAYER
+       Evas_Object *add_to_playlist = edje_object_part_object_get(_EDJ(playing_view->play_menu), "add_to_playlist");
+       MP_CHECK(add_to_playlist);
+       mp_menu_add_to_playlist_cb(ad, add_to_playlist, NULL);
+#endif
+       return;
+}
+
+static void
+_mp_play_view_progressbar_down_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 *)1);
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       Evas_Event_Mouse_Down *ev = event_info;
+       Evas_Object *progressbar = obj;
+       int duration = 0, w = 0, current = 0, x = 0;
+       double ratio = 0.0;
+
+       if (ad->player_state == PLAY_STATE_NONE)
+       {
+               ERROR_TRACE("Invaild player_state : %d", ad->player_state);
+               return;
+       }
+
+       mp_play_view_progress_timer_freeze(ad);
+       evas_object_geometry_get(progressbar, &x, NULL, &w, NULL);
+       current = ev->canvas.x - x;
+
+       if (current < 0)
+               current = 0;
+       else if (current > w)
+               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);
+
+       return;
+}
+
+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);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       Evas_Event_Mouse_Up *ev = event_info;
+       Evas_Object *progressbar = obj;
+       int duration = 0, w = 0, current = 0, x = 0;
+       double ratio = 0.0;
+
+       if (ad->player_state == PLAY_STATE_NONE)
+       {
+               ERROR_TRACE("Invaild player_state : %d", ad->player_state);
+               return;
+       }
+
+       evas_object_geometry_get(progressbar, &x, NULL, &w, NULL);
+
+       current = ev->canvas.x - x;
+
+       if (current < 0)
+               current = 0;
+       else if (current > w)
+               current = w;
+
+       ratio = (double)current / w;
+
+       duration = mp_player_mgr_get_duration();
+
+       ad->music_length = duration / 1000.;
+
+       ad->music_pos = ratio * ad->music_length;
+
+       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);
+
+
+       return;
+}
+
+static void
+_mp_play_progressbar_move_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       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);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       Evas_Event_Mouse_Move *ev = event_info;
+
+       if (ad->player_state == PLAY_STATE_NONE)
+       {
+               ERROR_TRACE("Invaild player_state : %d", ad->player_state);
+               return;
+       }
+
+       Evas_Object *progressbar = obj;
+       int w = 0, current = 0;
+       int x;
+       double ratio = 0.0;
+       int new_pos;
+
+       evas_object_geometry_get(progressbar, &x, NULL, &w, NULL);
+
+       current = ev->cur.canvas.x - x;
+
+       if (current < 0)
+               current = 0;
+       else if (current > w)
+               current = w;
+
+       ratio = (double)current / w;
+
+       new_pos= ratio * ad->music_length;
+       ad->music_pos = new_pos;
+       mp_play_view_update_progressbar(ad);
+
+       return;
+}
+
+
+static Eina_Bool
+_mp_play_view_update_progressbar_cb(void *data)
+{
+       struct appdata *ad = data;
+       MP_CHECK_CANCEL(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_CANCEL(playing_view);
+
+       if(ad->is_lcd_off)
+       {
+               WARN_TRACE("Check here.. progress timer should be freezed..");
+               ecore_timer_freeze(playing_view->progressbar_timer);
+       }
+
+       int duration = 0, pos = 0;
+       double get_length = 0., get_pos = 0.;
+
+       if (ad->player_state == PLAY_STATE_PLAYING || ad->player_state == PLAY_STATE_PAUSED)
+       {
+               duration = mp_player_mgr_get_duration();
+               if (duration <= 0) {
+                       mp_track_info_t *track_info = ad->current_track_info;
+                       duration = track_info->duration;
+               }
+
+               if ((duration / 1000) > 0)
+               {
+                       pos = mp_player_mgr_get_position();
+                       get_length = duration / 1000.;
+                       get_pos = pos / 1000.;
+               }
+
+               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;
+
+                       mp_play_view_update_progressbar(ad);
+               }
+       }
+
+       ecore_timer_interval_set(playing_view->progressbar_timer, 0.5);
+
+       if (ad->b_show_lyric)
+       {
+           mp_lyric_view_refresh(ad);
+       }
+
+       return 1;
+}
+
+static void
+_mp_play_view_menu_visible_set(void *data, bool menu_enable, bool animation)
+{
+       struct appdata *ad = data;
+
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       mp_retm_if(ad->playing_view == NULL, "playing_view is NULL");
+       mp_retm_if(ad->playing_view->play_view == NULL, "play_view is NULL");
+
+       if (menu_enable)
+               edje_object_signal_emit(_EDJ(ad->playing_view->layout), "option_menu_visible", "player_option_menu");
+       else
+       {
+               if(animation)
+                       edje_object_signal_emit(_EDJ(ad->playing_view->layout), "option_menu_invisible",
+                                       "player_option_menu");
+               else
+                       edje_object_signal_emit(_EDJ(ad->playing_view->layout), "option_hide",
+                                       "player_option_menu");
+       }
+}
+
+static void
+_mp_play_view_progress_visible_set(void *data, bool progressbar_enable)
+{
+       struct appdata *ad = data;
+
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       mp_retm_if(ad->playing_view == NULL, "playing_view is NULL");
+       mp_retm_if(ad->playing_view->play_view == NULL, "play_view is NULL");
+
+       if (progressbar_enable)
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_ctrl), "progressbar_visible", "player_progress");
+       else
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_ctrl), "progressbar_invisible", "player_progress");
+}
+
+
+void
+_mp_play_view_add_progress_timer(void *data)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       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->is_lcd_off)
+               ecore_timer_freeze(playing_view->progressbar_timer);
+
+       return;
+}
+
+static bool
+_mp_play_view_init_progress_bar(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       int pos = 0, duration = 0;
+       pos = mp_player_mgr_get_position();
+       duration = mp_player_mgr_get_duration();
+       ad->music_pos = pos / 1000.;
+       ad->music_length = duration / 1000.;
+       mp_play_view_update_progressbar(ad);
+       _mp_play_view_add_progress_timer(ad);
+
+       return true;
+}
+
+bool
+_mp_play_view_set_menu_item(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_play_control_shuffle_set(ad, mp_playlist_mgr_is_shuffle(ad->playlist_mgr));
+       mp_play_control_repeat_set(ad, mp_playlist_mgr_get_repeat(ad->playlist_mgr));
+
+       return true;
+}
+
+
+static bool
+_mp_play_view_create_menu(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+#ifdef MP_SOUND_PLAYER
+       if (mp_playlist_mgr_count(ad->playlist_mgr) <= 1) {
+               mp_debug("sound player only 1 file.. do not show menu");
+               return true;
+       }
+#endif
+
+       playing_view->play_menu = mp_common_load_edj(playing_view->play_view, PLAY_VIEW_EDJ_NAME, "mp_play_menu");
+       elm_object_part_content_set(playing_view->layout, "player_option_menu", playing_view->play_menu);
+       edje_object_signal_callback_add(_EDJ(playing_view->play_menu), "add_to_playlist_clicked", "*", _mp_play_view_add_to_playlist_cb,
+                                       ad);
+
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+               evas_object_size_hint_max_set(playing_view->play_menu, 480 * elm_config_scale_get(), 70 * elm_config_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,
+                                       ad);
+       edje_object_signal_callback_add(_EDJ(playing_view->play_menu), SIGNAL_REPALL, "*", mp_play_control_menu_cb, ad);
+       edje_object_signal_callback_add(_EDJ(playing_view->play_menu), SIGNAL_REPNON, "*", mp_play_control_menu_cb, ad);
+       edje_object_signal_callback_add(_EDJ(playing_view->play_menu), SIGNAL_REP1, "*", mp_play_control_menu_cb, ad);
+
+       _mp_play_view_set_menu_item(ad);
+       _mp_play_view_menu_visible_set(ad, FALSE, false);
+       endfunc;
+       return true;
+
+}
+
+void
+mp_play_view_set_snd_path_sensitivity(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       bool bt_connected = 0;
+       bool earjack = 0;
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       mp_evas_object_del(playing_view->snd_button);
+
+       bt_connected = sound_manager_is_route_available(SOUND_ROUTE_OUT_BLUETOOTH);
+       earjack = sound_manager_is_route_available(SOUND_ROUTE_OUT_WIRED_ACCESSORY);
+
+       if (bt_connected || earjack) {
+               playing_view->snd_button = mp_widget_create_title_btn(playing_view->play_title, NULL, MP_ICON_SOUND_PATH,
+                                                                       mp_play_view_set_snd_path_cb, ad);
+       }
+       elm_object_part_content_set(playing_view->play_title, "sound_path", playing_view->snd_button);
+}
+
+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");
+
+#ifdef MP_SOUND_PLAYER
+#ifdef MP_FEATURE_EXIT_ON_BACK
+       if(ad->caller_win_id)
+       {
+               mp_app_exit(ad);
+       }
+       else
+#endif
+       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 void
+_mp_play_view_play_pause_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       DEBUG_TRACE("[%s], ad->player_state: %d", emission, ad->player_state);
+       if (!strcmp(emission, SIGNAL_PLAY))
+               mp_play_control_play_pause(ad, true);
+       else
+               mp_play_control_play_pause(ad, false);
+}
+
+static void
+_mp_play_view_volume_change_cb(int volume, void *user_data)
+{
+       DEBUG_TRACE("volume level: %d", volume);
+       struct appdata *ad = (struct appdata *)user_data;
+       MP_CHECK(ad);
+       MP_CHECK(ad->playing_view);
+
+       if (volume>0)
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_icon), "unmute", "volume");
+       else
+               edje_object_signal_emit(_EDJ(ad->playing_view->play_icon), "mute", "volume");
+
+}
+
+static bool
+_mp_play_view_create_control_bar(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       Evas_Object *play_control = NULL, *play_icon = NULL;
+
+       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);
+
+       play_icon = mp_common_load_edj(play_control, PLAY_VIEW_EDJ_NAME, "music/playing/main/control/buttons");
+
+       if (!play_icon)
+       {
+               mp_evas_object_del(play_control);
+               MP_CHECK_FALSE(play_icon);
+       }
+
+       elm_object_part_content_set(play_control, "buttons", play_icon);
+       evas_object_data_set(play_control, "buttons", play_icon);
+#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_view_play_pause_button_cb, ad);
+       edje_object_signal_callback_add(_EDJ(play_icon), "pause_clicked", CTR_EDJ_SIG_SRC, _mp_play_view_play_pause_button_cb, ad);
+
+       edje_object_signal_callback_add(_EDJ(play_icon), "ff_btn_down", CTR_EDJ_SIG_SRC, mp_play_control_ff_cb, ad);
+       edje_object_signal_callback_add(_EDJ(play_icon), "ff_btn_up", CTR_EDJ_SIG_SRC, mp_play_control_ff_cb, ad);
+
+       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);
+
+       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);
+
+       playing_view->play_control = play_control;
+
+       //show volume button
+       if (mp_volume_get_current()>0)
+               edje_object_signal_emit(_EDJ(play_icon), "unmute", "volume");
+       else
+               edje_object_signal_emit(_EDJ(play_icon), "mute", "volume");
+       playing_view->play_icon = play_icon;
+
+       mp_volume_add_change_cb(_mp_play_view_volume_change_cb, ad);
+
+       elm_object_part_content_set(playing_view->layout, "elm.swallow.controlbar", playing_view->play_control);
+       endfunc;
+       return true;
+}
+
+
+
+static void
+_mp_play_progress_val_set(void *data, double position)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+       MP_CHECK(playing_view->play_progressbar);
+
+       Evas_Object *pbar = evas_object_data_get(playing_view->play_progressbar, "progress_bar");
+
+       edje_object_part_drag_value_set(_EDJ(pbar), "progressbar_control", position, 0.0);
+
+       return;
+}
+
+
+static bool
+_mp_play_view_show_parts(void *data, bool show_flag)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+       MP_CHECK_FALSE(playing_view->layout);
+
+       if (show_flag) {
+               edje_object_signal_emit(_EDJ(playing_view->layout), "set_default", "mp_play_view_layout");
+       } else {
+               edje_object_signal_emit(_EDJ(playing_view->layout), "set_hide", "mp_play_view_layout");
+       }
+       return true;
+}
+
+static void
+_mp_play_view_transit_by_item_complete_cb(void *data, Evas_Object * obj, const char *emission, const char *source)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       DEBUG_TRACE("emission: %s, source: %s", emission, source);
+       if (source)
+       {
+               if (strcmp(source, "list") == 0)
+               {
+                       mp_plst_item *cur = mp_playlist_mgr_get_current(ad->playlist_mgr);
+                       MP_CHECK(cur);
+                       ad->freeze_indicator_icon = true;
+                       mp_play_item_play(ad, cur->uid);
+                       mp_play_view_refresh(ad);
+
+                       _mp_play_view_clear_next_view(data);
+                       _mp_play_view_clear_next_bg_view(data);
+                       _mp_play_view_init_progress_bar(data);
+                       evas_object_show(playing_view->layout);
+
+                       edje_object_signal_callback_del(elm_layout_edje_get(playing_view->layout), "transit_done", "*",
+                                                       _mp_play_view_transit_by_item_complete_cb);
+               }
+       }
+
+       return;
+}
+
+static bool
+_mp_play_view_transit_by_item(struct appdata *ad, mp_plst_item *it, bool move_left)
+{
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       if (playing_view->play_view)
+       {
+               mp_ecore_timer_del(ad->mute_popup_show_timer);
+               //hide mute popup
+               edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
+               //show volume button
+               if (mp_volume_get_current()>0)
+                       edje_object_signal_emit(_EDJ(playing_view->play_icon), "unmute", "volume");
+               else
+                       edje_object_signal_emit(_EDJ(playing_view->play_icon), "mute", "volume");
+       }
+
+       Evas_Object *next = NULL;
+       if (!g_strcmp0(ad->latest_playing_key_id ,it->uid))
+       {
+               mp_debug("same file selected plz check state");
+               return FALSE;
+       }
+
+       if (playing_view->transition_state)     // transiton(transition_state)  should be transiit callback
+       {
+               mp_debug("skip_by transiton effect");
+               return FALSE;
+       }
+
+       mp_play_view_stop_transit(ad);
+
+       mp_play_view_progress_timer_freeze(ad);
+
+       mp_play_view_set_menu_state(ad, ad->b_show_lyric, false);
+
+       next = _mp_play_view_create_next_item(it, ad);
+       Evas_Object *bg_next = NULL;
+       bg_next = _mp_play_view_create_next_bg_item(it, ad);
+
+       MP_CHECK_FALSE(next);
+
+       MP_CHECK_FALSE(bg_next);
+       /* hide menu, controlbar, progressbar, options and title */
+       _mp_play_view_show_parts(ad, false);
+       playing_view->play_view_bg_next = bg_next;
+
+       playing_view->play_view_next = next;
+       elm_object_part_content_set(playing_view->layout, "list_content_temp", next);
+       elm_object_part_content_set(playing_view->layout, "bg_list_content_temp", bg_next);
+       edje_object_signal_callback_add(elm_layout_edje_get(playing_view->layout), "transit_done", "*",
+                                       _mp_play_view_transit_by_item_complete_cb, ad);
+
+       if (!move_left)
+       {
+               edje_object_signal_emit(elm_layout_edje_get(playing_view->layout), "set_left", "list_content_temp");
+               edje_object_signal_emit(elm_layout_edje_get(playing_view->layout), "flick_right", "list_content");
+       }
+       else
+       {
+               edje_object_signal_emit(elm_layout_edje_get(playing_view->layout), "set_right", "list_content_temp");
+               edje_object_signal_emit(elm_layout_edje_get(playing_view->layout), "flick_left", "list_content");
+       }
+
+       edje_object_signal_emit(elm_layout_edje_get(playing_view->layout), "set_default", "list_content_temp");
+
+       playing_view->transition_state = true;
+       /* set next song title and artist */
+       mp_track_info_t *track_info = ad->current_track_info;
+       edje_object_part_text_set(_EDJ(playing_view->play_title), "title", track_info->title);
+       edje_object_part_text_set(_EDJ(playing_view->play_title), "artist_name", track_info->artist);
+
+       return true;
+}
+
+
+static bool
+_mp_play_view_push_navibar(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       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);
+               elm_object_part_content_set(playing_view->layout, "bg_list_content", playing_view->play_view_bg);
+               mp_playing_view *playing_view = ad->playing_view;
+               MP_CHECK_FALSE(playing_view);
+
+#ifdef MP_SOUND_PLAYER
+               sp_view_mgr_push_view_content(ad->view_mgr, playing_view->layout, SP_VIEW_TYPE_PLAY);
+               mp_play_view_set_snd_path_sensitivity(ad);
+#else
+               MP_CHECK_FALSE(ad->naviframe);
+
+               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);
+               mp_view_manager_set_title_and_buttons(view_data, NULL, ad);
+#endif
+       }
+
+       return true;
+
+}
+
+static void
+_mp_play_view_play_option_cb(void *data, Evas_Object * obj, const char *emission, const char *source)
+{
+       MP_CHECK(emission);
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       if (!strcmp(emission, "share_clicked"))
+       {
+               MP_CHECK(ad->playing_view);
+               Evas_Object *share = edje_object_part_object_get(_EDJ(ad->playing_view->play_options), "share");
+               MP_CHECK(share);
+               mp_menu_share_cb(data, share, NULL);
+       }
+       else if (!strcmp(emission, "set_clicked"))
+       {
+               MP_CHECK(ad->playing_view);
+               Evas_Object *set = edje_object_part_object_get(_EDJ(ad->playing_view->play_options), "set");
+               MP_CHECK(set);
+               mp_menu_set_cb(data, set, NULL);
+       }
+       else if (!strcmp(emission, "details_clicked"))  {
+               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);
+       }
+}
+
+static Evas_Object *
+_mp_play_view_create_ctrl_layout(void *data, Evas_Object * parents, Evas_Object ** progress)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       Evas_Object *ctrl_layout = NULL;
+
+       ctrl_layout = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/play_ctrl");
+
+       elm_object_part_content_set(parents, "player_info", ctrl_layout);
+
+       //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");
+       elm_object_part_content_set(*progress, "progress_bar", play_progress);
+       evas_object_data_set(*progress, "progress_bar", play_progress);
+
+       evas_object_event_callback_add(play_progress, EVAS_CALLBACK_MOUSE_DOWN,
+                              _mp_play_view_progressbar_down_cb, ad);
+       evas_object_event_callback_add(play_progress, EVAS_CALLBACK_MOUSE_UP, _mp_play_view_progressbar_up_cb,
+                              ad);
+       evas_object_event_callback_add(play_progress, EVAS_CALLBACK_MOUSE_MOVE, _mp_play_progressbar_move_cb,
+                              ad);
+
+       elm_object_part_content_set(playing_view->layout, "player_progress", *progress);
+
+       Evas_Object *play_info = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "player_view_info");
+       elm_object_part_content_set(playing_view->layout, "player_info", play_info);
+       playing_view->play_title = play_info;
+
+       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");
+               playing_view->play_options = play_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");
+
+               elm_object_part_content_set(playing_view->layout, "player_options", play_options);
+               edje_object_signal_callback_add(_EDJ(play_options), "share_clicked", "*", _mp_play_view_play_option_cb,
+                                               ad);
+               edje_object_signal_callback_add(_EDJ(play_options), "set_clicked", "*", _mp_play_view_play_option_cb,
+                                               ad);
+               edje_object_signal_callback_add(_EDJ(play_options), "details_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 void
+_mp_play_view_bg_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_bg), "album_bg", NULL, NULL, &w, &h);
+       mp_debug("album bg size =  [%d * %d]", w, h);
+
+       if (playing_view->bg_albumart_bg)
+       {
+               evas_object_image_load_size_set(playing_view->bg_albumart_bg, w, h);
+               evas_object_image_fill_set(playing_view->bg_albumart_bg, 0, 0, w, h);
+       }
+}
+
+static bool
+_mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bool b_next)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       //2 Create playing 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_bg = mp_common_load_edj(parents_layout, PLAY_VIEW_EDJ_NAME, "mp_play_view_bg");
+               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);
+       evas_object_event_callback_add(playing_view->play_view_bg, EVAS_CALLBACK_RESIZE, _mp_play_view_bg_resize_cb, ad);
+       //hide mute popup
+       edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
+
+       Evas_Object *event_box = mp_smart_event_box_add(playing_view->play_view);
+
+       evas_object_size_hint_weight_set(event_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(event_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_smart_callback_add(event_box, "mouse.clicked", _mp_play_view_eventbox_clicked_cb, ad);
+       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);
+
+       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);
+
+               mp_evas_object_del(playing_view->bg_albumart_bg);
+               playing_view->bg_albumart_bg = evas_object_image_add(ad->evas);
+               elm_object_part_content_set(playing_view->play_view_bg, "album_bg", playing_view->bg_albumart_bg);
+       }
+
+       playing_view->play_ctrl =
+               _mp_play_view_create_ctrl_layout(ad, playing_view->play_view, &playing_view->play_progressbar);
+
+       _mp_play_view_progress_visible_set(ad, TRUE);
+       _mp_play_progress_val_set(ad, 0.0);
+
+       evas_object_show(playing_view->play_progressbar);
+
+       endfunc;
+
+       return TRUE;
+}
+
+static bool
+_mp_play_view_create_layout(void *data)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       //2 Create main layout
+
+       if (playing_view->layout)
+       {
+               mp_debug("already created skip create layout");
+               return TRUE;
+       }
+
+       {
+               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, ad);
+       //2 Create playing view
+       _mp_play_view_create_playing_layout(ad, playing_view->layout, FALSE);
+
+       //2 Create menu layout
+       _mp_play_view_create_menu(ad);
+
+       //2 Create control bar
+       _mp_play_view_create_control_bar(ad);
+
+       //2 Push at navibar
+       _mp_play_view_push_navibar(ad);
+
+       mp_debug("");
+
+       endfunc;
+
+       return true;
+}
+void
+_mp_play_view_delete_progress_timer(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       mp_ecore_timer_del(playing_view->progressbar_timer);
+}
+
+bool
+mp_play_view_set_menu_state(void *data, bool show, bool anim)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       ad->show_optional_menu = show;
+
+       if (!show)
+       {
+               mp_debug("set hide state");
+
+               mp_ecore_timer_del(ad->longpress_timer);
+
+               _mp_play_view_menu_visible_set(ad, FALSE, anim);
+
+                ad->b_show_lyric = false;
+               mp_lyric_view_hide(ad);
+       }
+       else
+       {
+               mp_debug("set show state");
+
+               _mp_play_view_menu_visible_set(ad, TRUE, anim);
+               ad->b_show_lyric = true;
+               mp_lyric_view_show(ad);
+       }
+
+       mp_play_control_repeat_set(ad, mp_playlist_mgr_get_repeat(ad->playlist_mgr));
+
+       return true;
+
+}
+
+void
+mp_play_view_progress_timer_thaw(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+       MP_CHECK(playing_view->progressbar_timer);
+
+       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
+mp_play_view_progress_timer_freeze(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       if (playing_view->progressbar_timer)
+       {
+               ecore_timer_freeze(playing_view->progressbar_timer);
+       }
+}
+
+void
+mp_play_view_update_progressbar(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       char play_time[16] = { 0, };
+       char total_time[16] = { 0, };
+
+       if (ad->music_length > 0.)
+       {
+               if (ad->music_length > 3600.)
+               {
+                       snprintf(total_time, sizeof(total_time), "%" MUSIC_TIME_FORMAT,
+                                MUSIC_TIME_ARGS(ad->music_length + 0.5));
+                       snprintf(play_time, sizeof(play_time), "%" MUSIC_TIME_FORMAT, MUSIC_TIME_ARGS(ad->music_pos));
+               }
+               else
+               {
+                       snprintf(total_time, sizeof(total_time), "%" PLAY_TIME_FORMAT,
+                                PLAY_TIME_ARGS(ad->music_length + 0.5));
+                       snprintf(play_time, sizeof(play_time), "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(ad->music_pos));
+               }
+       }
+       else
+       {
+               if(ad->current_track_info)
+                       snprintf(total_time, sizeof(total_time), "%" PLAY_TIME_FORMAT,
+                                        PLAY_TIME_ARGS(ad->current_track_info->duration/1000. + 0.5));
+               snprintf(play_time, sizeof(play_time), "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(ad->music_pos));
+       }
+
+       double played_ratio = 0.;
+       if(ad->music_length > 0. && ad->music_pos > 0.)
+               played_ratio = ad->music_pos / ad->music_length;
+       _mp_play_progress_val_set(ad, played_ratio);
+
+       edje_object_part_text_set(_EDJ(playing_view->play_progressbar), "progress_text_total", total_time);
+       edje_object_part_text_set(_EDJ(playing_view->play_progressbar), "progress_text_playing", play_time);
+
+       _mp_play_view_progress_visible_set(ad, TRUE);
+
+       return;
+
+}
+
+bool
+mp_play_view_stop_transit(struct appdata *ad)
+{
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       if (playing_view->play_view_next)
+       {
+               mp_play_view_refresh(ad);
+               _mp_play_view_clear_next_view(ad);
+
+               if (playing_view->play_view_bg_next)
+                       _mp_play_view_clear_next_bg_view(ad);
+               _mp_play_view_init_progress_bar(ad);
+               edje_object_signal_callback_del(elm_layout_edje_get(playing_view->layout), "transit_done", "*",
+                                               _mp_play_view_transit_by_item_complete_cb);
+       }
+
+       return true;
+}
+
+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);
+
+       mp_plst_item *current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+       MP_CHECK(current_item);
+
+       const char *filename =current_item->uri;
+       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_refresh_view(void *data)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       mp_track_info_t *track_info = ad->current_track_info;
+       MP_CHECK_FALSE(track_info);
+
+       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 (mp_util_is_image_valid(ad->evas, track_info->thumbnail_path))
+               {
+                       elm_bg_file_set(playing_view->albumart_img, track_info->thumbnail_path, NULL);
+               }
+               else
+               {
+                       elm_bg_file_set(playing_view->albumart_img, DEFAULT_THUMBNAIL, NULL);
+               }
+               evas_object_show(playing_view->albumart_img);
+       }
+       else
+       {                       //portrait mode
+               if (playing_view->flick_direction || MP_SCREEN_MODE_PORTRAIT == ad->screen_mode)
+               {
+                       // get alubmart
+                       if (mp_util_is_image_valid(ad->evas, track_info->thumbnail_path))
+                       {
+                               mp_util_edit_image(ad->evas, playing_view->bg_albumart_bg, track_info->thumbnail_path, playing_view->mode);
+                               evas_object_image_file_set(playing_view->albumart_bg, track_info->thumbnail_path, NULL);
+                       }
+                       else
+                       {
+                               mp_util_edit_image(ad->evas, playing_view->bg_albumart_bg, DEFAULT_THUMBNAIL, playing_view->mode);
+                               evas_object_image_file_set(playing_view->albumart_bg, DEFAULT_THUMBNAIL, NULL);
+                       }
+
+                       evas_object_show(playing_view->bg_albumart_bg);
+                       evas_object_show(playing_view->albumart_bg);
+                       playing_view->flick_direction = 0;
+               }
+       }
+
+       mp_common_refresh_track_info(data);
+
+
+       /* 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)
+{
+       MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE(path);
+
+       //create play list and set playing request item
+
+       mp_playlist_mgr_clear(ad->playlist_mgr);
+       char *uid = mp_util_get_fid_by_full_path(path);
+       mp_plst_item *item = mp_playlist_mgr_item_append(ad->playlist_mgr, path, uid, MP_TRACK_URI);
+       mp_playlist_mgr_set_current(ad->playlist_mgr, item);
+       IF_FREE(uid);
+
+       mp_play_destory(ad);
+       ad->paused_by_user = FALSE;
+
+       if(ad->playing_view)
+       {
+               mp_evas_object_del(ad->playing_view->play_control);
+               _mp_play_view_create_control_bar(ad);
+               mp_play_view_play_item(ad, item, false, true);
+       }
+       else
+       {
+               mp_play_view_load(ad);
+               MP_CHECK_FALSE(ad->naviframe);
+               evas_object_smart_callback_add(ad->naviframe, "transition,finished",
+                                                                      _mp_play_view_start_request, ad);
+       }
+
+       return true;
+}
+
+
+static void
+_mp_play_view_start_request(void *data, Evas_Object * obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       mp_retm_if(!ad, "ad");
+
+       mp_playing_view *playing_view = ad->playing_view;
+       mp_retm_if(!playing_view, "ad");
+
+       startfunc;
+       ad->paused_by_user = FALSE;
+       mp_play_new_file(data, TRUE);
+
+       _mp_play_view_init_progress_bar(data);
+
+       evas_object_smart_callback_del(ad->naviframe, "transition,finished", _mp_play_view_start_request);
+
+       endfunc;
+
+       return;
+}
+
+
+bool
+mp_play_view_load_and_play(struct appdata *ad, char *prev_item_uid, bool effect_value)
+{
+       MP_CHECK_FALSE(ad);
+
+       bool reqest_play = false;
+
+       mp_plst_item *current_item = mp_playlist_mgr_get_current(ad->playlist_mgr);
+
+       if (!prev_item_uid)
+               reqest_play = true;
+
+       MP_CHECK_EXCEP(current_item);
+
+
+       {
+               if (g_strcmp0(prev_item_uid, current_item->uid))
+               {
+                       reqest_play = true;
+                       mp_play_destory(ad);
+               }
+
+               if (effect_value)
+               {
+                       _mp_play_view_transit_by_item(ad, current_item, true);
+               }
+               else
+               {
+                       mp_play_view_load(ad);
+                       {
+                               if (reqest_play)
+                               {
+                                       evas_object_smart_callback_add(ad->naviframe, "transition,finished",
+                                                                      _mp_play_view_start_request, ad);
+
+                                       Evas_Object *play_icon = elm_object_part_content_get(ad->playing_view->play_control, "buttons");
+                                       edje_object_signal_emit(_EDJ(play_icon), "pause", CTR_PROG_SIG_SRC);
+                               }
+                       }
+               }
+       }
+
+       return true;
+
+       mp_exception:
+       return false;
+
+}
+#endif
+
+bool
+mp_play_view_play_item(void *data, mp_plst_item * it, bool effect_value, bool move_left)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       MP_CHECK_FALSE(it);
+
+       if (effect_value && (mp_playlist_mgr_count(ad->playlist_mgr) > 1))
+       {
+               if(ad->app_is_foreground)
+                       _mp_play_view_transit_by_item(ad, it, move_left);
+               else
+               {
+                       mp_play_item_play(ad, it->uid);
+                       mp_play_view_refresh(data);
+               }
+       }
+       else
+       {
+               mp_play_item_play(data, it->uid );
+               mp_play_view_refresh(data);
+       }
+
+       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(ad);
+
+                               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_playlist_mgr_get_current(ad->playlist_mgr)
+                   && 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->conformant);
+
+                       ad->backup_playing_view = NULL;
+                       ad->backup_layout_play_view = NULL;
+
+               }
+               else
+                       evas_object_show(ad->conformant);
+
+       }
+
+       endfunc;
+
+       return true;
+}
+
+static Eina_Bool
+_mp_play_view_volume_widget_timer_cb(void *data)
+{
+       struct appdata *ad = data;
+       MP_CHECK_VAL(ad, ECORE_CALLBACK_CANCEL);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_VAL(playing_view, ECORE_CALLBACK_CANCEL);
+
+       mp_evas_object_del(playing_view->volume_widget);
+       playing_view->volume_widget_timer = NULL;
+
+       return ECORE_CALLBACK_DONE;
+}
+
+static void
+_mp_player_view_volume_widget_del_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);
+
+       playing_view->volume_widget = NULL;
+       mp_ecore_timer_del(playing_view->volume_widget_timer);
+}
+
+static void
+_mp_play_view_volume_widget_event_cb(void *user_data, Evas_Object *obj, volume_widget_event_e event)
+{
+       struct appdata *ad = user_data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       if (event == VOLUME_WIDGET_EVENT_DRAG_START) {
+               mp_ecore_timer_del(playing_view->volume_widget_timer);
+       } else if (event == VOLUME_WIDGET_EVENT_DRAG_STOP) {
+               playing_view->volume_widget_timer = ecore_timer_add(VOLUME_WIDGET_HIDE_TIME, _mp_play_view_volume_widget_timer_cb, ad);
+       }
+}
+
+void
+mp_play_view_volume_widget_show(void *data, bool volume_clicked)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       mp_ecore_timer_del(playing_view->volume_widget_timer);
+
+       DEBUG_TRACE("volume_widget=%p, volume_clicked=%d", playing_view->volume_widget, volume_clicked);
+       if (!playing_view->volume_widget) {
+               playing_view->volume_widget = mp_volume_widget_add(playing_view->layout);
+               elm_object_part_content_set(playing_view->layout, "volume_layout", playing_view->volume_widget);
+               mp_volume_widget_event_callback_add(playing_view->volume_widget, _mp_play_view_volume_widget_event_cb, ad);
+               evas_object_event_callback_add(playing_view->volume_widget, EVAS_CALLBACK_DEL, _mp_player_view_volume_widget_del_cb, ad);
+       } else if (volume_clicked) {
+               mp_evas_object_del(playing_view->volume_widget);
+               return;
+       }
+
+       playing_view->volume_widget_timer = ecore_timer_add(VOLUME_WIDGET_HIDE_TIME, _mp_play_view_volume_widget_timer_cb, ad);
+}
+
+static void
+_mp_play_view_volume_key_cb(void *user_data, mp_volume_key_e key, bool released)
+{
+       struct appdata *ad = user_data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       mp_ecore_timer_del(playing_view->volume_widget_timer);
+       if (released) {
+               playing_view->volume_widget_timer = ecore_timer_add(VOLUME_WIDGET_HIDE_TIME, _mp_play_view_volume_widget_timer_cb, ad);
+               return;
+       }
+
+       mp_play_view_volume_widget_show(ad, false);
+
+       if (playing_view->volume_widget) {
+               if (key == MP_VOLUME_KEY_DOWN)
+                       mp_volume_widget_volume_down(playing_view->volume_widget);
+               else
+                       mp_volume_widget_volume_up(playing_view->volume_widget);
+       }
+}
+
+/**
+ * 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)
+{
+       struct appdata *ad = data;
+       mp_retvm_if(!ad, FALSE, "ad is invalid");
+
+       mp_retvm_if(ad->playing_view != NULL, FALSE, "ad playing_view is is valid exit create");
+
+       ad->playing_view = malloc(sizeof(mp_playing_view));
+       MP_CHECK_FALSE(ad->playing_view);
+       memset(ad->playing_view, 0, sizeof(mp_playing_view));
+
+       _mp_play_view_init(ad);
+
+       mp_volume_key_event_callback_add(_mp_play_view_volume_key_cb, ad);
+       mp_volume_key_grab_condition_set(MP_VOLUME_KEY_GRAB_COND_VIEW_VISIBLE, true);
+
+       return true;
+}
+
+bool
+mp_play_view_destory(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       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);
+
+       return true;
+}
+
+
+bool
+mp_play_view_load(void *data)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_play_view_create(data);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       _mp_play_view_create_layout(data);
+       MP_CHECK_FALSE(playing_view->layout);
+
+       mp_play_view_refresh(data);
+
+       if (ad->b_show_lyric)
+       {
+               mp_lyric_view_show(ad);
+       }
+       endfunc;
+
+       return true;
+}
+
+bool
+mp_play_view_pop(void *data)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       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;
+}
+
+bool
+mp_play_view_refresh(void *data)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_FALSE(playing_view);
+
+       mp_play_view_refresh_view(ad);
+
+       mp_play_view_set_menu_state(ad, ad->b_show_lyric, 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)
+       {
+       #ifndef MP_3D_FEATURE
+               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);
+               }
+       #endif
+       }
+
+       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);
+       }
+}
+#endif
+
diff --git a/src/view/mp-playlist-view.c b/src/view/mp-playlist-view.c
new file mode 100755 (executable)
index 0000000..100bbb2
--- /dev/null
@@ -0,0 +1,988 @@
+/*
+ * 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://floralicense.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-library.h"
+#include "mp-ta.h"
+#include "mp-player-debug.h"
+#include "mp-common.h"
+#include "music.h"
+#include "mp-view-layout.h"
+#include "mp-search.h"
+#include "mp-edit-view.h"
+#include "mp-playlist-view.h"
+#include "mp-util.h"
+#include "mp-widget.h"
+#include "mp-widget.h"
+#include "mp-menu.h"
+#include "mp-playlist-mgr.h"
+#include "mp-play.h"
+#include "mp-play-view.h"
+
+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 *
+_mp_playlist_view_get_track_sweep_itc()
+{
+       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+       MP_CHECK_NULL(itc);
+
+       itc->item_style = "3text.1icon.1";
+       itc->decorate_item_style = "mode/slide4";
+       itc->func.text_get = mp_common_track_list_label_get;
+       itc->func.content_get = mp_common_track_list_icon_get;
+
+       return itc;
+}
+
+void
+mp_playlist_view_create_auto_playlist(struct appdata *ad, char *type)
+{
+       MP_CHECK(ad);
+
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
+       Evas_Object *view_layout = mp_view_layout_create(ad->naviframe, 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;
+
+       if (!strcmp((STR_MP_MOST_PLAYED), type))
+       {
+               mp_view_layout_set_layout_data(view_layout,
+                                              MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
+                                              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((STR_MP_RECENTLY_ADDED), type))
+       {
+               mp_view_layout_set_layout_data(view_layout,
+                                              MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
+                                              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((STR_MP_RECENTLY_PLAYED), type))
+       {
+               mp_view_layout_set_layout_data(view_layout,
+                                              MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
+                                              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), type))
+       {
+               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
+       {
+               WARN_TRACE("Invalid type: %s", type);
+       }
+
+       _mp_playlist_view_push_item_content(view_data, view_layout, type);
+       mp_view_layout_update(view_layout);
+}
+
+static void
+_mp_playlist_view_auto_playlist_list_select_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       int ret = 0;
+       int index = (int)data;
+       char *name = NULL;
+       mp_media_info_h media;
+
+       Elm_Object_Item *gli = (Elm_Object_Item *) event_info;
+       elm_genlist_item_selected_set(gli, FALSE);
+
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       mp_retm_if(!layout_data, "layout_data is NULL !!!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       if(layout_data->rename_git)
+       {
+               mp_playlist_view_rename_done_cb(layout_data, NULL, NULL);
+               return;
+       }
+
+       mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       if (layout_data->edit_mode)
+       {
+               return;
+       }
+
+       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....");
+       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", name);
+
+       mp_playlist_view_create_auto_playlist(layout_data->ad, name);
+
+}
+
+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);
+       MP_CHECK_FALSE(p_id >= 0);
+
+       view_layout = mp_view_layout_create(obj, view_data, MP_VIEW_MODE_DEFAULT);
+
+       memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t));
+       genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb;
+
+       res = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
+       MP_CHECK_FALSE(res == 0);
+       MP_CHECK_FALSE(count > 0);
+
+       res = mp_media_info_group_list_create(&list, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count);
+       MP_CHECK_FALSE(res == 0);
+
+       for(i=0; i<count; i++)
+       {
+               int playlist_id;
+               media = mp_media_info_group_list_nth_item(list, i);
+               mp_media_info_group_get_playlist_id(media, &playlist_id);
+               if(playlist_id == p_id)
+               {
+                       mp_media_info_group_get_main_info(media, &name);
+                       DEBUG_TRACE("Find playlist. name: %s", name);
+                       break;
+               }
+       }
+
+       if ( i < count)
+       {
+               mp_view_layout_set_layout_data(view_layout,
+                                              MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYLIST,
+                                              MP_LAYOUT_PLAYLIT_ID, p_id,
+                                              MP_LAYOUT_LIST_CB, &genlist_cbs,
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), -1);
+       }
+       else
+               WARN_TRACE("invalid playlist!!");
+
+       _mp_playlist_view_push_item_content(view_data, view_layout, name);
+       mp_view_layout_update(view_layout);
+
+       mp_media_info_group_list_destroy(list);
+
+       endfunc;
+
+       return true;
+}
+
+static void
+_mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       int ret = 0;
+       char *name = NULL;
+       int p_id = 0;
+       mp_genlist_item_data_t *item_data = NULL;
+
+       Elm_Object_Item *gli = (Elm_Object_Item *) event_info;
+       elm_genlist_item_selected_set(gli, FALSE);
+
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       mp_retm_if(!layout_data, "layout_data is NULL !!!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       if (elm_genlist_item_flip_get(gli))
+       {
+               return;
+       }
+
+       if(layout_data->rename_git)
+       {
+               mp_playlist_view_rename_done_cb(layout_data, NULL, NULL);
+               return;
+       }
+
+       mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       if (layout_data->edit_mode)
+       {
+               mp_edit_view_genlist_sel_cb(data, obj, event_info);
+               return;
+       }
+
+       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....");
+
+       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);
+
+       Evas_Object *view_layout = mp_view_layout_create(view_data->navibar, 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;
+
+       if (p_id >= 0)
+       {
+               mp_view_layout_set_layout_data(view_layout,
+                                              MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYLIST,
+                                              MP_LAYOUT_PLAYLIT_ID, p_id,
+                                              MP_LAYOUT_LIST_CB, &genlist_cbs,
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), -1);
+       }
+       else
+               WARN_TRACE("invalid playlist!!");
+
+       mp_util_reset_genlist_mode_item(layout_data->genlist);
+
+       _mp_playlist_view_push_item_content(view_data, view_layout, name);
+       mp_view_layout_update(view_layout);
+
+}
+
+void
+mp_playlist_view_add_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       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;
+       ad->b_add_tracks = TRUE;
+
+       Elm_Object_Item *top_item = elm_naviframe_top_item_get(view_data->navibar);
+       Evas_Object *top_view = elm_object_item_content_get(top_item);
+       mp_retm_if(!top_view, "top view must exist...");
+       mp_layout_data_t *layout_data = evas_object_data_get(top_view, "layout_data");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       ad->new_playlist_id = layout_data->playlist_id;
+       elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE);
+}
+
+static void
+_mp_playlist_view_push_item_content(view_data_t * view_data, Evas_Object * content, char *title)
+{
+       MP_CHECK(view_data);
+       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, title, view_data);
+}
+
+void
+mp_playlist_view_create_new_cancel_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       mp_retm_if(view_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
+}
+
+void
+mp_playlist_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       mp_retm_if(view_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       struct appdata *ad = view_data->ad;
+       int plst_uid = -1;
+
+       char *converted_name = NULL;
+       Evas_Object *entry = mp_widget_editfield_entry_get(ad->editfiled_new_playlist);
+       const char *name = elm_entry_entry_get(entry);
+       if (name == NULL || strlen(name) == 0)
+       {
+               name = elm_object_part_text_get(ad->editfiled_new_playlist, "elm.guidetext");
+       }
+       converted_name = elm_entry_markup_to_utf8(name);
+
+       plst_uid = mp_util_create_playlist(ad, converted_name, NULL);
+       IF_FREE(converted_name);
+       if (plst_uid < 0)
+               return;
+
+       ad->new_playlist_id = plst_uid;
+       ad->b_add_tracks = TRUE;
+       elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE);
+
+}
+
+void
+mp_playlist_view_create_playlist_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       char *new_playlist_name = NULL;
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       MP_CHECK(view_data->ad);
+       mp_evas_object_del(view_data->ad->more_btn_popup);
+
+       mp_retm_if(view_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       Evas_Object *create_plst_layout = NULL;
+
+       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");
+
+       Elm_Object_Item *it = mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST);
+
+       Evas_Object *btn = mp_widget_create_button(create_plst_layout, "naviframe/toolbar/default", GET_SYS_STR("IDS_COM_OPT_SAVE"), NULL, mp_playlist_view_create_new_done_cb, view_data);
+       elm_object_item_part_content_set(it, "title_toolbar_button1", btn);
+       btn = mp_widget_create_button(create_plst_layout, "naviframe/back_btn/default", NULL, NULL, mp_playlist_view_create_new_cancel_cb, view_data);
+       elm_object_item_part_content_set(it, "title_prev_btn", btn);
+
+       mp_common_add_keypad_state_callback(view_data->ad->conformant, create_plst_layout, it);
+
+       mp_view_manager_set_back_button(create_plst_layout, it, NULL, NULL);
+
+       evas_object_show(create_plst_layout);
+
+}
+
+static char *
+_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);
+       mp_media_info_h plst_item = (item->handle);
+       MP_CHECK_NULL(plst_item);
+
+       int ret = 0;
+       if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1"))
+       {
+
+               char *name = NULL;
+               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");
+
+               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 = 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 = 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;
+}
+
+void
+mp_playlist_view_rename_done_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       char *text = NULL;
+       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");
+
+       /* save */
+
+       mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) elm_object_item_data_get(layout_data->rename_git);
+       MP_CHECK(item);
+       mp_media_info_h plst = (item->handle);
+       MP_CHECK(plst);
+
+       bool rename_success = FALSE;
+       int ret = 0;
+
+       text = mp_util_isf_get_edited_str(layout_data->ad->editfiled_entry, TRUE);
+
+       if (!mp_util_is_playlist_name_valid((char *)text))
+               mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"));
+       else
+       {
+               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 (exist) {
+                               char *origin_name = NULL;
+                               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;
+                               } else {
+                                       char *msg = g_strdup_printf("Playlist name %s is exist", text);
+                                       mp_widget_text_popup(layout_data->ad, msg);
+                                       SAFE_FREE(msg);
+                               }
+                       } else {
+                               ret = mp_media_info_playlist_rename(plst, text);
+                               if (ret == 0) {
+                                       mp_debug("mp_media_info_playlist_rename().. OK");
+                                       rename_success = TRUE;
+                               }
+                       }
+               }
+       }
+       IF_FREE(text);
+
+       if (rename_success) {
+               mp_debug("playlist rename success");
+               if (layout_data->edit_mode)
+                       mp_view_manager_update_list_contents(layout_data->view_data, FALSE);
+       }
+
+       elm_genlist_item_update(layout_data->rename_git);
+
+       mp_util_unset_rename(layout_data);
+
+       mp_view_manager_set_controlbar_visible(mp_view_manager_get_navi_item(layout_data->ad), true);
+
+       return;
+}
+
+void
+mp_playlist_view_rename_cancel_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       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");
+       mp_util_unset_rename(layout_data);
+}
+
+static void
+_mp_playlist_rename_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       MP_CHECK(data);
+       mp_layout_data_t *layout_data =
+               (mp_layout_data_t *) evas_object_data_get(elm_object_item_widget_get(data), "layout_data");
+       MP_CHECK(layout_data);
+
+       if (layout_data->rename_mode)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               if (layout_data->rename_git)
+               {
+                       elm_genlist_item_flip_set(layout_data->rename_git, EINA_FALSE);
+                       elm_genlist_item_select_mode_set(layout_data->rename_git, ELM_OBJECT_SELECT_MODE_DEFAULT);
+               }
+       }
+
+       layout_data->rename_git = data;
+       layout_data->rename_mode = true;
+
+       elm_genlist_item_decorate_mode_set(layout_data->rename_git, "slide", EINA_FALSE);
+       elm_genlist_item_flip_set(layout_data->rename_git, EINA_TRUE);
+       elm_genlist_item_select_mode_set(layout_data->rename_git, ELM_OBJECT_SELECT_MODE_NONE);
+       mp_common_set_toolbar_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;
+       }
+
+       /* create playlist */
+       mp_playlist_mgr_clear(ad->playlist_mgr);
+       mp_util_append_media_list_item_to_playlist(ad->playlist_mgr, layout_data_new->svc_handle, layout_data_new->item_count, 0, NULL);
+
+       /* play music */
+       mp_play_view_load_and_play(ad, NULL, 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);
+       mp_media_info_h plst = (item->handle);
+       MP_CHECK_NULL(plst);
+
+       Evas_Object *eo = NULL;
+       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;
+       mp_retvm_if(!layout_data, NULL, "list data is NULL !!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       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");
+
+       const char *slide_rename_part = "elm.slide.swallow.2";
+       const char *slide_delete_part = "elm.slide.swallow.3";
+
+       if (!strcmp(part, "elm.icon"))
+       {
+
+               if (!playlist_id)
+               {
+                       eo = mp_util_create_thumb_icon(obj, thumb_path, MP_LIST_ICON_SIZE,
+                                                              MP_LIST_ICON_SIZE);
+               }
+               else
+               {
+                       if (thumb_path == NULL)
+                       {
+                               int count = 0;
+                               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);
+                               else
+                                       eo = mp_util_create_thumb_icon(obj, NULL, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE);
+                       }
+                       else
+                       {
+                               eo = mp_util_create_thumb_icon(obj, thumb_path, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE);
+                       }
+               }
+       }
+       else if (!strcmp(part, "elm.swallow.end"))
+       {
+               if (playlist_id > 0 && layout_data->edit_mode)
+               {
+                       eo = elm_button_add(obj);
+                       elm_object_style_set(eo, "rename");
+                       evas_object_smart_callback_add(eo, "clicked", _mp_playlist_rename_button_cb, item->it);
+                       evas_object_data_set(eo, "layout_data", layout_data);
+               }
+       }
+
+       Evas_Object *button = NULL;
+       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, slide_rename_part))
+       {
+               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, slide_delete_part))
+       {
+               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))
+       {
+               if (!strcmp(part, "elm.edit.icon.1"))
+               {
+                       if (!elm_genlist_item_flip_get(item->it))
+                       {
+                               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);
+                               return check;
+                       }
+               }
+               else if (!strcmp(part, "elm.edit.icon.2"))
+               {
+                       btn = elm_button_add(obj);
+                       elm_object_style_set(btn, "rename");
+                       if (item->it)
+                       {
+                               evas_object_propagate_events_set(btn, EINA_FALSE);
+                               evas_object_smart_callback_add(btn, "clicked", _mp_playlist_rename_button_cb, item->it);
+                               evas_object_data_set(btn, "layout_data", layout_data);
+                       }
+                       return btn;
+               }
+       }
+
+       if (!strcmp(part, "elm.flip.content"))
+       {
+               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);
+               elm_entry_cursor_end_set(entry);
+
+               layout_data->ad->editfiled_entry = entry;
+
+               evas_object_smart_callback_add(entry, "activated", mp_playlist_view_rename_done_cb, layout_data);
+
+               evas_object_show(entry);
+               elm_object_focus_set(entry, EINA_TRUE);
+
+               return edit_field;
+       }
+       //}
+
+       return eo;
+}
+
+static void _mp_playlist_view_playlist_setting_changed_cb(int state, void *data)
+{
+       startfunc;
+       mp_view_layout_update(data);
+}
+
+static void _playlist_view_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+       mp_setting_playlist_set_callback(NULL, NULL);
+}
+
+Evas_Object *
+mp_playlist_view_create(struct appdata *ad, mp_view_type_t view_type)
+{
+       DEBUG_TRACE("view_type: %d", view_type);
+       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_event_callback_add(view_layout, EVAS_CALLBACK_DEL, _playlist_view_del_cb, NULL);
+       mp_setting_playlist_set_callback(_mp_playlist_view_playlist_setting_changed_cb, view_layout);
+
+       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);
+
+       static Elm_Genlist_Item_Class g_playlist_class_sweep = {
+               .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+               .refcount = 0,
+               .delete_me = EINA_FALSE,
+               .item_style = "2text.1icon",
+               .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 = "2text.1icon",
+               .decorate_item_style = "mode/slide",
+               .func.text_get = _mp_playlist_view_label_get,
+               .func.content_get = _mp_playlist_view_icon_get,
+       };
+
+
+       static mp_genlist_cb_t g_playlist_list_cbs = {
+               .selected_cb = _mp_playlist_view_playlist_list_select_cb,
+               .auto_playlist_cb = _mp_playlist_view_auto_playlist_list_select_cb
+       };
+
+       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_view_manager_set_title_and_buttons(view_data, NULL, view_data);
+
+       return view_layout;
+}
+
+void
+mp_playlist_view_destroy(Evas_Object * playlist_view)
+{
+       DEBUG_TRACE("");
+}
+
+void
+mp_playlist_view_refresh(Evas_Object * playlist_view)
+{
+       DEBUG_TRACE("");
+       view_data_t *view_data = (view_data_t *) evas_object_data_get(playlist_view, "view_data");
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       mp_view_manager_update_list_contents(view_data, TRUE);
+}
+
+void
+mp_playlist_view_update_navibutton(mp_layout_data_t * layout_data)
+{
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       mp_view_manager_set_title_and_buttons(layout_data->view_data, NULL, layout_data->view_data);
+}
+
+bool
+mp_playlist_view_reset_rename_mode(struct appdata *ad)
+{
+       MP_CHECK_FALSE(ad);
+
+       MP_CHECK_FALSE(ad->naviframe);
+
+       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;
+
+       Evas_Object *last_view_layout = mp_view_manager_get_last_view_layout(ad);
+
+       if (last_view_layout)
+       {
+               layout_data = evas_object_data_get(last_view_layout, "layout_data");
+       }
+
+       MP_CHECK_FALSE(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       mp_util_unset_rename(layout_data);
+
+       return true;
+}
diff --git a/src/view/mp-track-view.c b/src/view/mp-track-view.c
new file mode 100644 (file)
index 0000000..ca11681
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * 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://floralicense.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-library.h"
+#include "mp-ta.h"
+#include "mp-player-debug.h"
+#include "mp-common.h"
+#include "music.h"
+#include "mp-view-layout.h"
+#include "mp-search.h"
+#include "mp-edit-view.h"
+#include "mp-widget.h"
+#include "mp-util.h"
+
+void
+mp_track_view_add_to_playlist_done_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       mp_retm_if(view_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       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)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               layout_data->edit_playlist_id = view_data->ad->new_playlist_id;
+               mp_edit_view_excute_edit(layout_data, MP_EDIT_ADD_TO_PLAYLIST);
+       }
+       else
+               DEBUG_TRACE("layout_data is NULL !!!");
+}
+
+void
+mp_track_view_add_to_playlist_cancel_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       view_data_t *view_data = (view_data_t *) data;
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       MP_CHECK(view_data->ad);
+
+       mp_retm_if(view_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       view_data->ad->b_add_tracks = FALSE;
+
+       Evas_Object *view_layout = mp_view_manager_get_last_view_layout(view_data->ad);
+       MP_CHECK(view_layout);
+
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       mp_view_layout_reset_select_all(layout_data);
+
+       elm_toolbar_item_selected_set(view_data->ad->library->ctltab_plist, EINA_TRUE);
+}
+
+Evas_Object *
+mp_track_view_create(struct appdata *ad)
+{
+       DEBUG_TRACE("");
+
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
+       view_data->view_type = MP_VIEW_TYPE_SONGS;
+       TA_S(6, "mp_track_view_create");
+       Evas_Object *view_layout = mp_view_layout_create(ad->tabbar, view_data, MP_VIEW_MODE_DEFAULT);
+       TA_E(6, "mp_track_view_create");
+
+       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+
+       itc->item_style = "3text.1icon.1";
+       itc->decorate_item_style = "mode/slide4";
+       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, 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);
+
+       evas_object_data_set(ad->controlbar_layout, "layout_data", layout_data);
+
+       return view_layout;
+}
+
+void
+mp_track_view_destroy(Evas_Object * track_view)
+{
+       DEBUG_TRACE("");
+       evas_object_del(track_view);
+}
+
+void
+mp_track_view_refresh(Evas_Object * track_view)
+{
+       DEBUG_TRACE("");
+       view_data_t *view_data = (view_data_t *) evas_object_data_get(track_view, "view_data");
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       mp_view_manager_update_list_contents(view_data, TRUE);
+}
+
+void
+mp_track_view_update_title_button(Evas_Object * track_view)
+{
+       DEBUG_TRACE("");
+       Evas_Object *top_view = NULL;
+       Elm_Object_Item *navi_it = NULL;
+       view_data_t *view_data = (view_data_t *) evas_object_data_get(track_view, "view_data");
+       MP_CHECK(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+
+       navi_it = elm_naviframe_top_item_get(view_data->navibar);
+       MP_CHECK(navi_it);
+       top_view = elm_object_item_content_get(navi_it);
+       MP_CHECK(top_view);
+
+       if (view_data->ad->b_add_tracks)
+       {
+               mp_view_manager_set_title_and_buttons(view_data, NULL, view_data);
+               Evas_Object *view_layout = mp_view_manager_get_last_view_layout(view_data->ad);
+               if (view_layout) {
+                       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+                       if (layout_data)
+                               mp_common_set_toolbar_button_sensitivity(layout_data, layout_data->checked_count);
+               }
+       }
+       else
+       {
+               mp_view_manager_set_title_and_buttons(view_data, NULL, view_data);
+       }
+
+}
diff --git a/src/widget/include/mp-ctxpopup.h b/src/widget/include/mp-ctxpopup.h
new file mode 100644 (file)
index 0000000..91dcf7c
--- /dev/null
@@ -0,0 +1,45 @@
+/*\r
+ * Copyright 2012        Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *  http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef __MP_ctxpopup_H_\r
+#define __MP_ctxpopup_H_\r
+\r
+#include <Elementary.h>\r
+\r
+typedef enum _mp_ctxpopup_t\r
+{
+       MP_CTXPOPUP_PV_SET_AS = 0,\r
+       MP_CTXPOPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME,\r
+       MP_CTXPOPUP_PV_SHARE,\r
+       MP_CTXPOPUP_LIST_SHARE,\r
+       MP_CTXPOPUP_CHANGE_AXIS,\r
+} mp_ctxpopup_t;\r
+\r
+typedef struct {\r
+       Evas_Object *popup;\r
+       char *label;\r
+       void *user_data;\r
+} CtxPopup_Data;\r
+\r
+Elm_Object_Item *\r
+mp_ctxpopup_item_append(Evas_Object *popup, char *label, Evas_Object *icon, void *cb, void *data);\r
+\r
+Evas_Object *\r
+mp_ctxpopup_create(Evas_Object *parent, int type, void *user_data, void *ad);\r
+void mp_ctxpopup_clear(Evas_Object * popup);\r
+void mp_ctxpopup_destroy(Evas_Object * popup);\r
+\r
+#endif // __MP_ctxpopup_H_
\ No newline at end of file
diff --git a/src/widget/include/mp-minicontroller.h b/src/widget/include/mp-minicontroller.h
new file mode 100644 (file)
index 0000000..14f0e85
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * 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://floralicense.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_control(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-notification.h b/src/widget/include/mp-notification.h
new file mode 100644 (file)
index 0000000..04c98ca
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * 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://floralicense.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_NOTIFICATION_H__
+#define __MP_NOTIFICATION_H__
+
+#include <stdbool.h>
+
+typedef void *mp_noti_h;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+mp_noti_h mp_noti_create(const char *title);
+void mp_noti_destroy(mp_noti_h noti);
+bool mp_noti_update_size(mp_noti_h noti, unsigned long long total, unsigned long long byte);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MP_NOTIFICATION_H__ */
+
diff --git a/src/widget/include/mp-popup.h b/src/widget/include/mp-popup.h
new file mode 100644 (file)
index 0000000..4e29415
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * 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://floralicense.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_popup_H_
+#define __MP_popup_H_
+
+#include <Elementary.h>
+
+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;
+
+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, Evas_Smart_Cb response_cb,
+                            struct appdata *ad);
+void mp_popup_destroy(struct appdata *ad);
+void mp_popup_response(Evas_Object *popup, 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);
+bool mp_popup_tickernoti_show(const char *text, bool info_style, bool bottom);
+
+#endif // __MP_contextpopup_H_
diff --git a/src/widget/include/mp-search.h b/src/widget/include/mp-search.h
new file mode 100644 (file)
index 0000000..8186554
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * 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://floralicense.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_SEARCH_H_
+#define __MP_SEARCH_H_
+#include <Evas.h>
+
+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);
+void mp_search_hide_imf_pannel(Evas_Object * search);
+void mp_search_show_imf_pannel(Evas_Object * search);
+Evas_Object *mp_search_entry_get(Evas_Object *search);
+const char *mp_search_text_get(Evas_Object *search);
+void mp_search_text_set(Evas_Object *search, const char *text);
+
+#endif //__MP_SEARCH_H_
diff --git a/src/widget/include/mp-smart-event-box.h b/src/widget/include/mp-smart-event-box.h
new file mode 100644 (file)
index 0000000..a211b5c
--- /dev/null
@@ -0,0 +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://floralicense.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_SMART_EVENT_BOX_H_
+#define        __MP_SMART_EVENT_BOX_H_
+
+Evas_Object *mp_smart_event_box_add(Evas_Object * parent);
+
+#endif //__MP_SMART_EVENT_BOX_H_
diff --git a/src/widget/include/mp-view-layout.h b/src/widget/include/mp-view-layout.h
new file mode 100644 (file)
index 0000000..df36a72
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ * 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://floralicense.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_VIEW_LAYOUT_H_
+#define __MP_VIEW_LAYOUT_H_
+
+#include "music.h"
+#include "mp-define.h"
+
+typedef void (*genlist_cb_t) (void *, Evas_Object *, void *);
+
+typedef enum
+{
+       MP_LAYOUT_TRACK_LIST,
+       MP_LAYOUT_GROUP_LIST,
+       MP_LAYOUT_PLAYLIST_LIST,
+
+
+} mp_list_category_t;
+
+typedef enum
+{
+       MP_EDIT_DELETE,
+       MP_EDIT_ADD_TO_PLAYLIST,
+} mp_edit_operation_t;
+
+enum
+{
+       MP_LAYOUT_CATEGORY_TYPE = 1,    //track list or group list or playlist
+       MP_LAYOUT_TRACK_LIST_TYPE,      //mp_track_type_e
+       MP_LAYOUT_GROUP_LIST_TYPE,      //mp_group_type_e
+
+       MP_LAYOUT_PLAYLIT_ID,
+       MP_LAYOUT_TYPE_STR,     //type_str for db query
+       MP_LAYOUT_TYPE_STR2,    //type_str for db query
+       MP_LAYOUT_FILTER_STR,
+       MP_LAYOUT_GENLIST_ITEMCLASS,    //item class of genlist
+       MP_LAYOUT_GENLIST_AUTO_PLAYLIST_ITEMCLASS,      //item class of genlist
+       MP_LAYOUT_LIST_CB,
+       MP_LAYOUT_EDIT_MODE,
+       MP_LAYOUT_REORDER_MODE,
+       MP_LAYOUT_PLST_HANDLE_TYPE,
+};
+
+typedef struct
+{
+       genlist_cb_t selected_cb;
+       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;
+       Evas_Object *navibar;
+       mp_view_type_t view_type;
+       struct appdata *ad;     //appdata
+} view_data_t;
+
+typedef struct
+{
+       int magic;
+       mp_list_category_t category;
+       mp_track_type_e track_type;
+       mp_group_type_e group_type;
+
+       int playlist_id;
+       mp_media_info_h playlist_handle;
+       mp_media_list_h playlists;
+       char *type_str;
+       char *type_str2;
+       char *filter_str;
+
+       int edit_mode;
+       int reorder;
+       bool reordered;
+       int add_to_plst;
+       int rename_mode;
+
+       int b_loading;
+
+       int item_count;
+       int track_count;        //for create playing list from search result.
+
+       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 auto_playlist_item_class;
+       Elm_Object_Item *selected_it;   //Selected genlist item;
+
+       struct appdata *ad;
+
+       mp_genlist_cb_t cb_func;
+
+       Ecore_Idler *search_idler_handle;
+
+       view_data_t *view_data;
+
+       char *old_name;
+       Elm_Object_Item *rename_git;
+
+       mp_view_mode_t view_mode;       // to classify edit & search view.
+       Elm_Object_Item *search_group_git;      //group item for search list.
+
+       Evas_Object *now_playing_icon;
+       Evas_Object *now_playing_progress;
+       Ecore_Timer *progress_timer;
+
+       // append item in idler callback.
+       char *fast_scrooll_index;
+       Ecore_Idler *load_item_idler;
+       Ecore_Idler *block_size_idler;
+
+       // genlist edit mode
+       Evas_Object *select_all_layout;
+       Evas_Object *select_all_checkbox;
+       Eina_Bool select_all_checked;
+       int checked_count;
+
+       //mp_plst_type_t plst_handle_type;
+
+       // support cancel while processing edit function.
+       Ecore_Idler *edit_idler;
+       Elm_Object_Item *current_edit_item;
+       int selected_count;     //use to store checked count when editing strared.
+       int error_count;
+       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;
+
+       bool album_delete_flag; //flag for delete album item
+
+       Elm_Object_Item *album_group;   //group item for album track view.
+
+       Ecore_Thread *edit_thread;
+} mp_layout_data_t;
+
+typedef enum
+{
+       MP_GENLIST_ITEM_TYPE_NORMAL     = 0,
+       MP_GENLIST_ITEM_TYPE_GROUP_TITLE,
+} mp_genlist_item_type;
+
+typedef struct
+{
+       int index;
+       mp_genlist_item_type item_type;
+
+       Elm_Object_Item *it;    // Genlist Item pointer
+       Eina_Bool checked;      // Check status
+       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;
+
+       char *group_title_text_ID;
+} mp_genlist_item_data_t;
+
+#define MP_LAYOUT_DATA_MAGIC   0x810522bb
+#define MP_SET_LAYOUT_DATA_MAGIC(layout_data)  ((mp_layout_data_t *)layout_data)->magic = MP_LAYOUT_DATA_MAGIC
+#define MP_CHECK_LAYOUT_DATA(layout_data)      \
+do {                                                  \
+       if (((mp_layout_data_t *)layout_data)->magic != MP_LAYOUT_DATA_MAGIC) {        \
+               ERROR_TRACE("\n###########      ERROR   CHECK  #############\nPARAM is not layout data\n###########      ERROR   CHECK  #############\n"); \
+               mp_assert(FALSE);}            \
+} while (0)
+
+Evas_Object *mp_view_layout_create(Evas_Object * parent, view_data_t * view_data, mp_view_mode_t view_mode);
+void mp_view_layout_destroy(Evas_Object * view_layout);
+void mp_view_layout_update(Evas_Object * view_layout);
+int mp_view_layout_get_count(Evas_Object * view_layout);
+void mp_view_layout_set_layout_data(Evas_Object * view_layout, ...);
+void mp_view_layout_clear(Evas_Object * view_layout);
+
+void mp_view_layout_show_now_playing(Evas_Object * view_layout);
+void mp_view_layout_hide_now_playing(Evas_Object * view_layout);
+void mp_view_layout_set_now_playing_info(Evas_Object * view_layout);
+void mp_view_layout_reset_select_all(mp_layout_data_t * layout_data);
+
+void mp_view_layout_progress_timer_thaw(Evas_Object * view_layout);
+void mp_view_layout_progress_timer_freeze(Evas_Object * view_layout);
+void mp_view_layout_set_edit_mode(mp_layout_data_t * layout_data, bool edit_mode);
+void mp_view_layout_search_changed_cb(void *data, Evas_Object * obj, void *event_info);
+
+#endif
diff --git a/src/widget/include/mp-volume-widget.h b/src/widget/include/mp-volume-widget.h
new file mode 100644 (file)
index 0000000..fa7480b
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * 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://floralicense.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_VOLUME_WIDGET_H__
+#define __MP_VOLUME_WIDGET_H__
+
+#include <Elementary.h>
+
+typedef enum {
+       VOLUME_WIDGET_EVENT_DRAG_START,
+       VOLUME_WIDGET_EVENT_DRAG_STOP,
+} volume_widget_event_e;
+
+typedef void (*Mp_Volume_Widget_Cb)(void *user_data, Evas_Object *obj, volume_widget_event_e event);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+Evas_Object *mp_volume_widget_add(Evas_Object *parent);
+void mp_volume_widget_event_callback_add(Evas_Object *obj, Mp_Volume_Widget_Cb event_cb, void *user_data);
+void mp_volume_widget_volume_up(Evas_Object *obj);
+void mp_volume_widget_volume_down(Evas_Object *obj);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __MP_VOLUME_WIDGET_H__ */
+
diff --git a/src/widget/mp-ctxpopup.c b/src/widget/mp-ctxpopup.c
new file mode 100644 (file)
index 0000000..9e96463
--- /dev/null
@@ -0,0 +1,217 @@
+/*\r
+ * Copyright 2012        Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *  http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#include "mp-ctxpopup.h"\r
+#include <syspopup_caller.h>\r
+#include <bundle.h>\r
+#include <stdio.h>\r
+#include "music.h"\r
+#include "mp-menu.h"\r
+#include "mp-item.h"\r
+#include "mp-player-debug.h"\r
+#include "mp-view-layout.h"\r
+#include "mp-playlist-mgr.h"\r
+#include "mp-common.h"\r
+#include <sound_manager.h>\r
+#include "mp-util.h"\r
+\r
+#include "mp-widget.h"\r
+\r
+static void _mp_ctxpopup_item_del_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       IF_FREE(data);\r
+}\r
+\r
+static void _dismissed_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       MP_CHECK(data);\r
+\r
+       evas_object_del(data);\r
+       evas_object_smart_callback_del(data,"dismissed", _dismissed_cb);\r
+}\r
+\r
+static void _move_ctxpopup(Evas_Object *ctxpopup, Evas_Object *btn)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       Evas_Coord x, y, w , h;\r
+       evas_object_geometry_get(btn, &x, &y, &w, &h);\r
+    evas_object_move(ctxpopup, x + (w / 2), y + (h /2));\r
+}\r
+\r
+Evas_Object *\r
+_mp_ctxpopup_pv_set_as_create(Evas_Object *parent, void *user_data, struct appdata *ad)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       MP_CHECK_NULL(ad);\r
+       MP_CHECK_NULL(parent);\r
+\r
+       Evas_Object *popup = elm_ctxpopup_add(ad->naviframe);\r
+       evas_object_smart_callback_add(popup,"dismissed", _dismissed_cb, popup);\r
+       elm_ctxpopup_direction_priority_set(popup,\r
+                                                    ELM_CTXPOPUP_DIRECTION_DOWN,
+                                                    ELM_CTXPOPUP_DIRECTION_LEFT,
+                                                    ELM_CTXPOPUP_DIRECTION_UP,
+                                                    ELM_CTXPOPUP_DIRECTION_RIGHT );\r
+\r
+       mp_ctxpopup_item_append(popup, GET_STR(CALL_RINGTONE), NULL, mp_menu_set_as_select_cb, user_data);\r
+       mp_ctxpopup_item_append(popup, GET_STR(CALLER_RINGTONE), NULL, mp_menu_set_as_select_cb, user_data);\r
+\r
+       _move_ctxpopup(popup, parent);\r
+       evas_object_show(popup);\r
+\r
+       return popup;\r
+}\r
+\r
+Evas_Object *\r
+_mp_ctxpopup_pv_share_create(Evas_Object *parent, void *user_data, struct appdata *ad)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       MP_CHECK_NULL(ad);\r
+       MP_CHECK_NULL(parent);\r
+\r
+       Evas_Object *popup = elm_ctxpopup_add(ad->naviframe);\r
+       evas_object_smart_callback_add(popup,"dismissed", _dismissed_cb, popup);\r
+       elm_ctxpopup_direction_priority_set(popup,\r
+                                                    ELM_CTXPOPUP_DIRECTION_DOWN,
+                                                    ELM_CTXPOPUP_DIRECTION_LEFT,
+                                                    ELM_CTXPOPUP_DIRECTION_UP,
+                                                    ELM_CTXPOPUP_DIRECTION_RIGHT );\r
+\r
+       mp_ctxpopup_item_append(popup, BLUETOOTH_SYS, NULL, mp_menu_share_select_cb, user_data);\r
+       mp_ctxpopup_item_append(popup, EMAIL_SYS, NULL, mp_menu_share_select_cb, user_data);\r
+       mp_ctxpopup_item_append(popup, MESSAGE_SYS, NULL, mp_menu_share_select_cb, user_data);\r
+\r
+#ifdef MP_FEATURE_WIFI_SHARE\r
+       mp_ctxpopup_item_append(popup, WIFI_SYS, NULL, mp_menu_share_select_cb, user_data);\r
+#endif\r
+\r
+       _move_ctxpopup(popup, parent);\r
+       evas_object_show(popup);\r
+\r
+       return popup;\r
+}\r
+\r
+Evas_Object *\r
+_mp_ctxpopup_list_share_create(Evas_Object *parent, void *user_data, struct appdata *ad)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       MP_CHECK_NULL(ad);\r
+       MP_CHECK_NULL(parent);\r
+\r
+       Evas_Object *popup = elm_ctxpopup_add(ad->naviframe);\r
+       evas_object_smart_callback_add(popup,"dismissed", _dismissed_cb, popup);\r
+       elm_ctxpopup_direction_priority_set(popup,\r
+                                                    ELM_CTXPOPUP_DIRECTION_DOWN,
+                                                    ELM_CTXPOPUP_DIRECTION_LEFT,
+                                                    ELM_CTXPOPUP_DIRECTION_UP,
+                                                    ELM_CTXPOPUP_DIRECTION_RIGHT );\r
+\r
+       mp_ctxpopup_item_append(popup, BLUETOOTH_SYS, NULL, mp_menu_share_list_select_cb, user_data);\r
+       mp_ctxpopup_item_append(popup, EMAIL_SYS, NULL, mp_menu_share_list_select_cb, user_data);\r
+       mp_ctxpopup_item_append(popup, MESSAGE_SYS, NULL, mp_menu_share_list_select_cb, user_data);\r
+\r
+#ifdef MP_FEATURE_WIFI_SHARE\r
+       mp_ctxpopup_item_append(popup, WIFI_SYS, NULL, mp_menu_share_list_select_cb, user_data);\r
+#endif\r
+\r
+       _move_ctxpopup(popup, parent);\r
+       evas_object_show(popup);\r
+\r
+       return popup;\r
+}\r
+\r
+\r
+void\r
+mp_ctxpopup_destroy(Evas_Object * popup)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       MP_CHECK(popup);\r
+       mp_evas_object_del(popup);\r
+}\r
+\r
+void\r
+mp_ctxpopup_clear(Evas_Object * popup)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       MP_CHECK(popup);\r
+       elm_ctxpopup_clear(popup);\r
+}\r
+\r
+Elm_Object_Item *\r
+mp_ctxpopup_item_append(Evas_Object *popup, char *label, Evas_Object *icon, void *cb, void *data)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       MP_CHECK_NULL(popup);\r
+       //MP_CHECK_NULL(label);\r
+\r
+       Elm_Object_Item *item = NULL;
+\r
+       CtxPopup_Data *popup_data = NULL;\r
+       popup_data = (CtxPopup_Data *)calloc(1, sizeof(CtxPopup_Data));\r
+       mp_assert(popup_data);
+       ERROR_TRACE("popup_data: %x", popup_data);
+\r
+       popup_data->popup = popup;\r
+       popup_data->label = label;\r
+       popup_data->user_data = data;\r
+\r
+       item = elm_ctxpopup_item_append(popup, label, icon, cb, popup_data);\r
+       elm_object_item_del_cb_set(item, _mp_ctxpopup_item_del_cb);\r
+
+       return item;\r
+}\r
+\r
+Evas_Object *\r
+mp_ctxpopup_create(Evas_Object *parent, int type, void *user_data, void *ad)\r
+{\r
+       DEBUG_TRACE("");\r
+\r
+       MP_CHECK_NULL(parent);\r
+       MP_CHECK_NULL(ad);\r
+\r
+       Evas_Object *popup = NULL;\r
+\r
+       switch (type)\r
+       {
+       case MP_CTXPOPUP_PV_SET_AS:\r
+               popup = _mp_ctxpopup_pv_set_as_create(parent, user_data, ad);\r
+               break;
+       case MP_CTXPOPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME:\r
+               popup = _mp_ctxpopup_pv_set_as_create(parent, user_data, ad);\r
+               break;
+       case MP_CTXPOPUP_PV_SHARE:\r
+               popup = _mp_ctxpopup_pv_share_create(parent, user_data, ad);\r
+               break;
+       case MP_CTXPOPUP_LIST_SHARE:\r
+               popup = _mp_ctxpopup_list_share_create(parent, user_data, ad);\r
+               break;\r
+       default:
+               break;
+       }\r
+
+       return popup;\r
+}\r
diff --git a/src/widget/mp-minicontroller.c b/src/widget/mp-minicontroller.c
new file mode 100755 (executable)
index 0000000..a090901
--- /dev/null
@@ -0,0 +1,461 @@
+/*
+ * 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://floralicense.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 <minicontrol-provider.h>
+#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 (692)
+#define MINI_CONTROLLER_WIDTH_LANDSCAPE (1280)
+#define MINI_CONTROLLER_HEIGHT (178)
+#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 (emission)
+       {
+               if (!g_strcmp0(emission, "rew_btn_down"))
+               {
+                       DEBUG_TRACE("REW");
+                       mp_play_control_rew_cb(data, obj, "rew_btn_down", CTR_EDJ_SIG_SRC);
+
+               }
+               else if (!g_strcmp0(emission, "rew_btn_up"))
+               {
+                       DEBUG_TRACE("REW_up");
+                       mp_play_control_rew_cb(data, obj, "rew_btn_up", CTR_EDJ_SIG_SRC);
+               }
+               else if (!g_strcmp0(emission, "play_btn_clicked")) {
+                       DEBUG_TRACE("PLAY clicked");
+                       mp_play_control_play_pause(data, true);
+               }
+               else if (!g_strcmp0(emission, "pause_btn_clicked")) {
+                       DEBUG_TRACE("PAUSE clicked");
+                       mp_play_control_play_pause(data, false);
+               }
+               else if (!g_strcmp0(emission, "ff_btn_down"))
+               {
+                       DEBUG_TRACE("FWD_down");
+                       mp_play_control_ff_cb(data, obj, "ff_btn_down", CTR_EDJ_SIG_SRC);
+
+               }
+               else if (!g_strcmp0(emission, "ff_btn_up"))
+               {
+                       DEBUG_TRACE("FWD_up");
+                       mp_play_control_ff_cb(data, obj, "ff_btn_up", CTR_EDJ_SIG_SRC);
+               }
+               else if (!g_strcmp0(emission, "repeat"))
+               {
+                       DEBUG_TRACE("REPEAT");
+                       int repeat_state = 0;
+                       mp_setting_get_repeat_state(&repeat_state);
+                       repeat_state++;
+                       repeat_state %= 3;
+                       mp_setting_set_repeat_state(repeat_state);
+                       mp_play_control_repeat_set(ad, repeat_state);
+               }
+               else if (!g_strcmp0(emission, "shuffle"))
+               {
+                       DEBUG_TRACE("SHUFFLE");
+                       int shuffle_state = 0;
+                       mp_setting_get_shuffle_state(&shuffle_state);
+                       shuffle_state = !shuffle_state;
+                       mp_setting_set_shuffle_state(shuffle_state);
+                       mp_play_control_shuffle_set(ad, shuffle_state);
+               }
+               else if (!g_strcmp0(emission, "albumart_clicked"))
+               {
+                       DEBUG_TRACE("albumart");
+                       ad->load_play_view = true;
+                       elm_win_activate(ad->win_main);
+                       return;
+               }
+       }
+
+
+
+}
+
+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;
+
+       elm_win_resize_object_add(win, eo);
+
+       icon = elm_icon_add(eo);
+       ad->minicon_icon = icon;
+       edje_object_signal_callback_add(_EDJ(eo), "*", "*", _minicontroller_action_cb, ad);
+
+       evas_object_show(win);
+       //evas_object_show(eo);
+
+       return eo;
+}
+
+static Eina_Bool
+_hide_minicontroller_timer_cb(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad);
+
+       mp_minicontroller_destroy(ad);
+       return EINA_FALSE;
+}
+
+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_language_mgr_register_object(ad->minicontroller_layout, OBJ_TYPE_EDJE_OBJECT, "elm.text.app_name", "IDS_COM_BODY_MUSIC");
+               elm_object_part_text_set(ad->minicontroller_layout, "elm.text.app_name", GET_SYS_STR("IDS_COM_BODY_MUSIC"));
+       }
+
+       int angle = elm_win_rotation_get(ad->win_minicon);
+       mp_minicontroller_rotate(ad, angle);
+
+       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");
+       MP_CHECK_VAL(ad->win_minicon, -1);
+
+       ad->b_minicontroller_show = TRUE;
+       mp_minicontroller_update(ad);
+       evas_object_show(ad->win_minicon);
+       return 0;
+
+}
+
+void
+mp_minicontroller_update_control(struct appdata *ad)
+{
+       startfunc;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       MP_CHECK(ad->win_minicon);
+
+       if (ad->player_state == PLAY_STATE_PLAYING)
+       {
+               edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_pause", "c_source");
+       }
+       else
+       {
+               edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_play", "c_source");
+       }
+}
+
+void
+mp_minicontroller_update(struct appdata *ad)
+{
+
+       DEBUG_TRACE();
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       MP_CHECK(ad->win_minicon);
+
+       mp_ecore_timer_del(ad->minicon_timer);
+
+       if (ad->player_state == PLAY_STATE_PLAYING)
+       {
+               edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_pause", "c_source");
+
+               if (ad->minicon_visible)
+                       _minicontroller_progress_timer_add(ad);
+       }
+       else
+       {
+               edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_play", "c_source");
+               ad->minicon_timer = ecore_timer_add(PAUSE_TIME_OUT, _hide_minicontroller_timer_cb, ad);
+       }
+
+       mp_track_info_t *current_item = ad->current_track_info;
+       if (current_item) {
+
+               DEBUG_TRACE("album art is %s", current_item->thumbnail_path);
+               if (mp_util_is_image_valid(ad->evas, current_item->thumbnail_path))
+                       elm_image_file_set(ad->minicon_icon, current_item->thumbnail_path, NULL);
+               else
+                       elm_image_file_set(ad->minicon_icon, DEFAULT_THUMBNAIL, NULL);
+               edje_object_part_swallow(_EDJ(ad->minicontroller_layout), "albumart_image", ad->minicon_icon);
+
+               char *title = g_strdup_printf("%s / %s", current_item->title, current_item->artist);
+               edje_object_part_text_set(_EDJ(ad->minicontroller_layout), "elm.text", title);
+               SAFE_FREE(title);
+
+               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");
+       MP_CHECK_VAL(ad->win_minicon, -1);
+
+       evas_object_hide(ad->win_minicon);
+       ad->b_minicontroller_show = FALSE;
+
+       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");
+       MP_CHECK_VAL(ad->win_minicon, -1);
+
+       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;
+       }
+
+       mp_ecore_timer_del(ad->minicon_timer);
+
+       ad->minicon_visible = false;
+
+       return 0;
+}
+
+void
+mp_minicontroller_rotate(struct appdata *ad, int angle)
+{
+       MP_CHECK(ad);
+       MP_CHECK(ad->win_minicon);
+
+       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_config_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);
+       MP_CHECK(ad->win_minicon);
+
+       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
new file mode 100644 (file)
index 0000000..62714c5
--- /dev/null
@@ -0,0 +1,661 @@
+/*
+ * 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://floralicense.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 <syspopup_caller.h>
+#include <bundle.h>
+#include <stdio.h>
+#include "music.h"
+#include "mp-menu.h"
+#include "mp-popup.h"
+#include "mp-item.h"
+#include "mp-player-debug.h"
+#include "mp-view-layout.h"
+#include "mp-playlist-mgr.h"
+#include "mp-common.h"
+#include <sound_manager.h>
+#include "mp-util.h"
+
+#include "mp-widget.h"
+
+static Elm_Genlist_Item_Class itc;
+
+typedef struct {
+       struct appdata *ad;
+       mp_popup_type type;
+
+       Evas_Smart_Cb response_cb;
+       void *cb_data;
+} Popup_Data;
+
+#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)
+{
+       char *label = (char *)data;
+       DEBUG_TRACE("%s", label);
+       return strdup(label);
+}
+
+static Evas_Object *
+_mp_popup_gl_icon_get(void *data, Evas_Object * obj, const char *part)
+{
+       DEBUG_TRACE("");
+       MP_CHECK_NULL(data);
+
+       struct appdata *ad = evas_object_data_get(obj, "ad");
+       MP_CHECK_NULL(ad);
+
+       Evas_Object *radio = elm_radio_add(obj);
+       elm_radio_group_add(radio, ad->radio_group);
+
+       if (!strcmp(GET_SYS_STR("IDS_COM_OPT_HEADPHONES_ABB"), data))
+       {
+               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_STR("Speaker"), data))
+       {
+               elm_radio_state_value_set(radio, MP_SND_PATH_SPEAKER);
+               evas_object_data_set(radio, "idx", (void *)(MP_SND_PATH_SPEAKER));
+       }
+       else
+       {
+               elm_radio_state_value_set(radio, MP_SND_PATH_BT);
+               evas_object_data_set(radio, "idx", (void *)(MP_SND_PATH_BT));
+       }
+
+       evas_object_show(radio);
+
+       elm_radio_value_set(ad->radio_group, ad->snd_path);
+
+       return radio;
+}
+
+static void
+mp_popup_set_min_size(Evas_Object *box, int cnt)
+{
+       int min_h = 0;
+       MP_CHECK(box);
+       if(cnt > 3)
+               min_h = MP_POPUP_GENLIST_ITEM_H_MAX;
+       else
+               min_h = MP_POPUP_GENLIST_ITEM_H*cnt + cnt -1;
+
+       evas_object_size_hint_min_set(box,
+                       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,
+                               void *user_data, Evas_Smart_Cb cb, struct appdata *ad)
+{
+       Evas_Object *genlist = NULL;
+       Evas_Object *box = NULL;
+       Evas_Object *popup = mp_popup_create(parent, MP_POPUP_GENLIST, title, user_data, cb, ad);
+       MP_CHECK_NULL(popup);
+
+       box = elm_box_add(popup);
+       MP_CHECK_NULL(box);
+
+       mp_popup_set_min_size(box, cnt);
+
+       genlist = elm_genlist_add(box);
+       MP_CHECK_NULL(genlist);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_data_set(popup, "genlist", genlist);
+
+       evas_object_show(genlist);
+       elm_box_pack_end(box, genlist);
+       elm_object_content_set(popup, box);
+       evas_object_show(box);
+
+       evas_object_show(popup);
+
+       return popup;
+}
+
+static Evas_Object *
+_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;
+       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);
+
+
+       elm_genlist_item_append(genlist, &itc, GET_STR(CALL_RINGTONE), NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_set_as_select_cb, user_data);
+
+       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;
+       Evas_Object *genlist;
+       int option_count = 3;
+#ifdef MP_FEATURE_WIFI_SHARE
+       ++option_count;
+#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);
+
+       elm_genlist_item_append(genlist, &itc, BLUETOOTH_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data);
+
+       elm_genlist_item_append(genlist, &itc, EMAIL_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data);
+       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
+       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;
+       Evas_Object *genlist;
+       int option_count = 3;
+#ifdef MP_FEATURE_WIFI_SHARE
+       ++option_count;
+#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);
+
+       elm_genlist_item_append(genlist, &itc, BLUETOOTH_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data);
+       elm_genlist_item_append(genlist, &itc, EMAIL_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data);
+
+       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
+       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;
+       bool bt_connected = false;
+       int earjack = 0;
+       int ret = 0;
+       char *bt_name = NULL;
+       int cnt = 1;
+
+       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_FREE(bt_name);
+       if(bt_connected)
+               cnt++;
+
+       if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack))
+               WARN_TRACE("Earjack state get Fail...");
+       if(earjack)
+               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;
+}
+
+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 = 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, 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;
+}
+
+
+
+static void
+_mp_popup_del_cb(void *data, Evas * e, Evas_Object * eo, void *event_info)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = (struct appdata *)data;
+       int type = (int)evas_object_data_get(eo, "type");
+       DEBUG_TRACE("type: %d", type);
+       if (type >= MP_POPUP_MAX)
+       {
+               ERROR_TRACE("Never should be here!!!");
+               return;
+       }
+       ad->popup[type] = NULL;
+}
+
+static bool
+_mp_popup_popup_exist(struct appdata *ad, mp_popup_t type)
+{
+       MP_CHECK_FALSE(ad);
+       if (ad->popup[type])
+               return TRUE;
+       return FALSE;
+}
+
+Elm_Object_Item *
+mp_genlist_popup_item_append(Evas_Object * popup, char *label, Evas_Object * icon, void *cb, void *data)
+{
+       MP_CHECK_NULL(popup);
+       MP_CHECK_NULL(label);
+
+       Evas_Object *genlist = evas_object_data_get(popup, "genlist");
+       MP_CHECK_NULL(genlist);
+
+       Elm_Object_Item *item = NULL;
+
+       if (!icon)
+       {
+               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;
+       }
+       else
+       {
+               itc.item_style = "1text.1icon.3";
+               itc.func.text_get = _mp_popup_gl_label_get;
+               itc.func.content_get = _mp_popup_gl_icon_get;
+               itc.func.state_get = NULL;
+               itc.func.del = NULL;
+       }
+
+       item = elm_genlist_item_append(genlist, &itc, label, NULL, ELM_GENLIST_ITEM_NONE, cb, data);
+
+       return item;
+
+}
+
+Evas_Object *
+mp_genlist_popup_create(Evas_Object * parent, mp_popup_t type, void *user_data, struct appdata * ad)
+{
+       mp_retvm_if(parent == NULL, NULL, "parent is NULL");
+       MP_CHECK_NULL(ad);
+
+       if (_mp_popup_popup_exist(ad, MP_POPUP_GENLIST))
+       {
+               DEBUG_TRACE("popup already exist...");
+               return NULL;
+       }
+
+       Evas_Object *popup = NULL;
+
+       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, ad);
+               evas_object_data_set(popup, "sound_path", (char *)1);
+               break;
+
+       default:
+               break;
+       }
+
+       if (popup)
+       {
+               evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_popup_del_cb, ad);
+               evas_object_data_set(popup, "type", (void *)MP_POPUP_GENLIST);
+               ad->popup[MP_POPUP_GENLIST] = popup;
+       }
+
+       return popup;
+}
+
+static Eina_Bool
+_mp_popup_genlist_popup_del_idler(void *data)
+{
+       Evas_Object *genlist_popup = data;
+       MP_CHECK_VAL(genlist_popup, ECORE_CALLBACK_CANCEL);
+
+       struct appdata *ad = evas_object_data_get(genlist_popup, "appdata");
+       evas_object_del(genlist_popup);
+
+       if (ad)
+               ad->popup_del_idler = NULL;
+
+       return ECORE_CALLBACK_DONE;
+}
+
+void
+mp_popup_destroy(struct appdata *ad)
+{
+       MP_CHECK(ad);
+       int i = 0;
+       for(i=0; i < MP_POPUP_MAX; i++)
+       {
+               if (ad->popup[i] && i != MP_POPUP_NOTIFY)
+               {
+                       if (i == MP_POPUP_GENLIST) {
+                               /* do NOT destroy genlist in genlst select callback function */
+                               evas_object_data_set(ad->popup[i], "appdata", ad);
+                               evas_object_hide(ad->popup[i]);
+                               ad->popup_del_idler = ecore_idler_add(_mp_popup_genlist_popup_del_idler, ad->popup[i]);
+                       } else {
+                               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;
+       }
+       mp_popup_set_popup_data(obj, NULL);
+
+       SAFE_FREE(popup_data);
+}
+
+
+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)
+{
+       Evas_Object *popup = NULL;
+       Evas_Object *progressbar = NULL;
+
+       MP_CHECK_NULL(parent);
+       MP_CHECK_NULL(ad);
+
+       if (_mp_popup_popup_exist(ad, type))
+       {
+               DEBUG_TRACE("popup already exist...");
+               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);
+       ERROR_TRACE("popup_data: %x", 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_NORMAL:
+               DEBUG_TRACE("MP_POPUP_NORMAL");
+               break;
+
+       case MP_POPUP_GENLIST:
+               DEBUG_TRACE("MP_POPUP_GENLIST");
+               evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_object_style_set(popup, "min_menustyle");
+               break;
+
+       case MP_POPUP_PROGRESS:
+               progressbar = elm_progressbar_add(popup);
+               MP_CHECK_NULL(progressbar);
+
+               elm_object_style_set(progressbar, "list_process");
+               evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
+               evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(progressbar);
+               elm_progressbar_pulse(progressbar, EINA_TRUE);
+
+               elm_object_content_set(popup, progressbar);
+
+               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);
+       }
+
+       evas_object_show(popup);
+
+       ad->popup[type] = popup;
+
+       return popup;
+
+}
+
+void
+mp_popup_response(Evas_Object *popup, int response)
+{
+       startfunc;
+       MP_CHECK(popup);
+
+       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);
+}
+
+
+static void
+_mp_popup_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+       Evas_Object *popup = data;
+       MP_CHECK(popup);
+
+       Popup_Data *popup_data = mp_popup_get_popup_data(popup);
+       MP_CHECK(popup_data);
+
+       int response = mp_evas_object_response_get(obj);
+       mp_popup_response(popup, response);
+}
+
+bool
+mp_popup_button_set(Evas_Object *popup, popup_button_t btn_index, const char *text, int response)
+{
+       MP_CHECK_FALSE(popup);
+       MP_CHECK_FALSE(text);
+       if (btn_index == MP_POPUP_BTN_MAX) {
+               mp_error("invalid button type");
+               return FALSE;
+       }
+
+       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[btn_index], button);
+               mp_evas_object_response_set(button, response);
+               ret = TRUE;
+       }
+
+       return ret;
+}
+
+static void
+__mp_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       startfunc;
+       int response = (int)data;
+       mp_popup_response(obj, response);
+}
+
+void
+mp_popup_timeout_set(Evas_Object *popup, double timeout)
+{
+       startfunc;
+       MP_CHECK(popup);
+
+       elm_popup_timeout_set(popup, timeout);
+       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);
+}
+
+
+bool
+mp_popup_tickernoti_show(const char *text, bool info_style, bool bottom)
+{
+       MP_CHECK_FALSE(text);
+
+       /*************************************************************************************
+        *      bundle infomaiton
+        *      Key     Value                           Description
+        *      0       "default", "info"       Tickernoti style, (default: "default")
+        *      1       "text"                          Text to use for the tickernoti description
+        *      2       "0", "1"                        Orientation of tickernoti. (0: top, 1:bottom, default: top)
+        *      3       "1", "2", ¡¦ ,"999"     Timeout (1: 1 second, default: -1 means infinite)
+        *************************************************************************************/
+
+       bundle *b = NULL;
+
+       b = bundle_create();
+       MP_CHECK_FALSE(b);
+       if (info_style)
+               bundle_add(b, "0", "info");
+       bundle_add(b, "1", text);
+       if (bottom)
+               bundle_add(b, "2", "1");  // bottom orientation
+       bundle_add(b, "3", "2");  // terminated after 2 seconds
+
+       int ret = syspopup_launch("tickernoti-syspopup", b);
+       bundle_free(b);
+
+       if (ret == 0)
+               mp_debug("# tickernoti [%s] #", text);
+       else {
+               mp_error("syspopup_launch().. [0x%0x]", ret);
+               return false;
+       }
+
+       return true;
+}
+
diff --git a/src/widget/mp-search.c b/src/widget/mp-search.c
new file mode 100755 (executable)
index 0000000..0f498e2
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+ * 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://floralicense.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 "music.h"
+#include "mp-search.h"
+#include "mp-player-debug.h"
+#include "mp-view-layout.h"
+
+#define MP_SEARCHBAR_W 400*elm_config_scale_get()
+
+void
+_mp_search_view_activated_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       MP_CHECK(data);
+       mp_search_hide_imf_pannel(data);
+}
+
+static void
+_mp_search_entry_changed_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       Evas_Object *searchbar = data;
+       MP_CHECK(searchbar);
+       Evas_Object *entry = obj;
+       MP_CHECK(entry);
+
+       const char *signal = NULL;
+       if (elm_entry_is_empty(entry))
+               signal = "elm,state,eraser,hide";
+       else
+               signal = "elm,state,eraser,show";
+
+       elm_object_signal_emit(searchbar, signal, "elm");
+}
+
+static void
+_mp_search_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       Evas_Object *entry = data;
+       MP_CHECK(entry);
+
+       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)
+{
+       startfunc;
+       Evas_Object *sb = NULL;
+       Evas_Object *en = NULL;
+
+       sb = elm_layout_add(parent);
+       MP_CHECK_NULL(sb);
+
+       const char *style = (cancel_cb) ? "cancel_button" : "default";
+       elm_layout_theme_set(sb, "layout", "searchbar", style);
+
+       if (cancel_cb) {
+               Evas_Object *cancel_btn = elm_button_add(sb);
+               elm_object_style_set(cancel_btn, "searchbar/default");
+               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);
+               elm_object_signal_emit(sb, "cancel,show", "");
+       }
+
+       en = elm_entry_add(sb);
+       elm_entry_scrollable_set(en, EINA_TRUE);
+       elm_entry_single_line_set(en, EINA_TRUE);
+       elm_entry_cnp_mode_set(en, ELM_CNP_MODE_PLAINTEXT);
+       elm_object_part_content_set(sb, "elm.swallow.content", en);
+       evas_object_data_set(sb, "entry", en);
+
+       elm_entry_input_panel_layout_set(en, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+
+       evas_object_size_hint_weight_set(sb, EVAS_HINT_EXPAND, 0);
+       evas_object_size_hint_align_set(sb, EVAS_HINT_FILL, 0.0);
+
+       evas_object_smart_callback_add(en, "changed", _mp_search_entry_changed_cb, sb);
+       elm_object_signal_callback_add(sb, "elm,eraser,clicked", "elm", _mp_search_eraser_clicked_cb, en);
+
+       evas_object_smart_callback_add(en, "changed", change_cb, change_cb_data);
+       evas_object_smart_callback_add(en, "activated", _mp_search_view_activated_cb, sb);
+
+       static Elm_Entry_Filter_Limit_Size limit_filter_data;
+       limit_filter_data.max_char_count = 0;
+       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);
+
+       return sb;
+}
+
+void
+mp_search_hide_imf_pannel(Evas_Object * search)
+{
+       MP_CHECK(search);
+       Evas_Object *en = mp_search_entry_get(search);
+       Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
+
+       if (imf_context)
+       {
+               ecore_imf_context_input_panel_hide(imf_context);
+       }
+}
+
+void
+mp_search_show_imf_pannel(Evas_Object * search)
+{
+       MP_CHECK(search);
+       Evas_Object *en = mp_search_entry_get(search);
+       Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
+
+       if (imf_context)
+       {
+               ecore_imf_context_input_panel_show(imf_context);
+       }
+}
+
+Evas_Object *
+mp_search_entry_get(Evas_Object *search)
+{
+       MP_CHECK_NULL(search);
+
+       Evas_Object *entry = evas_object_data_get(search, "entry");
+
+       return entry;
+}
+
+const char *
+mp_search_text_get(Evas_Object *search)
+{
+       MP_CHECK_NULL(search);
+       Evas_Object *entry = evas_object_data_get(search, "entry");
+       MP_CHECK_NULL(entry);
+
+       const char *text = elm_object_text_get(entry);
+       return text;
+}
+
+void
+mp_search_text_set(Evas_Object *search, const char *text)
+{
+       MP_CHECK(search);
+       Evas_Object *entry = evas_object_data_get(search, "entry");
+       MP_CHECK(entry);
+
+       if (text == NULL)
+               text = "";
+
+       elm_object_text_set(entry, text);
+}
+
diff --git a/src/widget/mp-smart-event-box.c b/src/widget/mp-smart-event-box.c
new file mode 100644 (file)
index 0000000..d8052f6
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+ * 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://floralicense.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 <Elementary.h>
+#include "mp-smart-event-box.h"
+#include "mp-player-debug.h"
+
+#ifndef ABS
+#define ABS(x) ((x) < 0 ? -(x) : (x))
+#endif
+
+typedef struct _MpSmartEventBoxObject
+{
+       Evas_Object *rect;
+       Evas_Coord x, y, w, h;
+       Evas_Coord down_x;
+       Evas_Coord down_y;
+} MpSmartEventBoxObject;
+
+static Evas_Smart_Class _parent_sc = EVAS_SMART_CLASS_INIT_NULL;
+
+static void
+__mouse_down_cb(void *data, Evas * evas, Evas_Object * obj, void *event_info)
+{
+       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *) event_info;
+       Evas_Object *box = (Evas_Object *) data;
+       MpSmartEventBoxObject *box_d = evas_object_smart_data_get(box);
+       MP_CHECK(box_d);
+
+       box_d->down_x = ev->canvas.x;
+       box_d->down_y = ev->canvas.y;
+
+       evas_object_smart_callback_call((Evas_Object *) data, "mouse.down", NULL);
+       return;
+}
+
+static void
+__mouse_up_cb(void *data, Evas * evas, Evas_Object * obj, void *event_info)
+{
+       Evas_Coord minw = 0, minh = 0, diff_x = 0, diff_y = 0;
+       Evas_Event_Mouse_Up *mu = (Evas_Event_Mouse_Up *) event_info;
+       Evas_Object *box = (Evas_Object *) data;
+       MpSmartEventBoxObject *box_d = evas_object_smart_data_get(box);
+       MP_CHECK(box_d);
+
+       elm_coords_finger_size_adjust(1, &minw, 1, &minh);
+
+       diff_x = box_d->down_x - mu->canvas.x;
+       diff_y = box_d->down_y - mu->canvas.y;
+
+       if ((ABS(diff_x) > minw) || (ABS(diff_y) > minh))
+       {                       // dragging
+               if (ABS(diff_y) > ABS(diff_x))
+               {
+                       if (diff_y < 0) //down
+                               goto flick_down;
+                       else    //up
+                               goto flick_up;
+               }
+               else
+               {
+                       if (diff_x < 0)
+                       {       //right
+                               goto flick_right;
+                       }
+                       else
+                       {       //left
+                               goto flick_left;
+                       }
+               }
+       }
+
+       evas_object_smart_callback_call((Evas_Object *) data, "mouse.clicked", NULL);
+       return;
+
+      flick_up:
+       evas_object_smart_callback_call((Evas_Object *) data, "mouse.flick.up", NULL);
+       return;
+
+      flick_down:
+       evas_object_smart_callback_call((Evas_Object *) data, "mouse.flick.down", NULL);
+       return;
+
+      flick_left:
+       evas_object_smart_callback_call((Evas_Object *) data, "mouse.flick.left", NULL);
+       return;
+
+      flick_right:
+       evas_object_smart_callback_call((Evas_Object *) data, "mouse.flick.right", NULL);
+       return;
+}
+
+static void
+_smart_reconfigure(MpSmartEventBoxObject * data)
+{
+       evas_object_move(data->rect, data->x, data->y);
+       evas_object_resize(data->rect, data->w, data->h);
+       return;
+}
+
+
+static void
+_mp_smart_event_box_object_add(Evas_Object * obj)
+{
+       MpSmartEventBoxObject *data = NULL;
+
+       data = (MpSmartEventBoxObject *) malloc(sizeof(MpSmartEventBoxObject));
+       mp_assert(data);
+       memset(data, 0, sizeof(MpSmartEventBoxObject));
+
+       data->rect = evas_object_rectangle_add(evas_object_evas_get(obj));
+       evas_object_size_hint_min_set(data->rect, 0, 15);
+       evas_object_color_set(data->rect, 0, 0, 0, 0);
+       evas_object_size_hint_fill_set(data->rect, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(data->rect, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(data->rect, EVAS_HINT_FILL, 0.0);
+
+       evas_object_smart_member_add(data->rect, obj);
+
+       evas_object_smart_data_set(obj, data);
+
+       return;
+}
+
+static void
+_mp_smart_event_box_object_del(Evas_Object * obj)
+{
+       MpSmartEventBoxObject *data = NULL;
+       data = evas_object_smart_data_get(obj);
+       MP_CHECK(data);
+       if (data->rect != NULL)
+       {
+               evas_object_smart_member_del(data->rect);
+               evas_object_del(data->rect);
+               data->rect = NULL;
+       }
+       free(data);
+
+       return;
+}
+
+static void
+_mp_smart_event_box_object_show(Evas_Object * obj)
+{
+       MpSmartEventBoxObject *data = NULL;
+       data = evas_object_smart_data_get(obj);
+       MP_CHECK(data);
+       if (data->rect != NULL)
+       {
+               evas_object_show(data->rect);
+       }
+
+       return;
+}
+
+static void
+_mp_smart_event_box_object_hide(Evas_Object * obj)
+{
+       MpSmartEventBoxObject *data = NULL;
+       data = evas_object_smart_data_get(obj);
+
+       MP_CHECK(data);
+
+       if (data->rect != NULL)
+       {
+               evas_object_hide(data->rect);
+       }
+
+       return;
+}
+
+static void
+_mp_smart_event_box_object_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y)
+{
+       MpSmartEventBoxObject *data = NULL;
+       data = evas_object_smart_data_get(obj);
+       MP_CHECK(data);
+       data->x = x;
+       data->y = y;
+
+       _smart_reconfigure(data);
+}
+
+static void
+_mp_smart_event_box_object_resize(Evas_Object * obj, Evas_Coord w, Evas_Coord h)
+{
+       MpSmartEventBoxObject *data = NULL;
+       data = evas_object_smart_data_get(obj);
+       MP_CHECK(data);
+       data->w = w;
+       data->h = h;
+
+       _smart_reconfigure(data);
+}
+
+
+
+static Evas_Smart *
+_mp_smart_event_box_object_smart_get(void)
+{
+       static Evas_Smart_Class sc = EVAS_SMART_CLASS_INIT_NAME_VERSION("mp_smart_event_box_object");
+
+       if (!_parent_sc.name)
+       {
+               evas_object_smart_clipped_smart_set(&sc);
+               _parent_sc = sc;
+               sc.add = _mp_smart_event_box_object_add;
+               sc.del = _mp_smart_event_box_object_del;
+               sc.show = _mp_smart_event_box_object_show;
+               sc.hide = _mp_smart_event_box_object_hide;
+               sc.move = _mp_smart_event_box_object_move;
+               sc.resize = _mp_smart_event_box_object_resize;
+       }
+
+       return evas_smart_class_new(&sc);
+}
+
+
+static Evas_Object *
+_mp_smart_event_box_object_new(Evas * e)
+{
+       Evas_Object *obj;
+       obj = evas_object_smart_add(e, _mp_smart_event_box_object_smart_get());
+
+       return obj;
+}
+
+
+Evas_Object *
+mp_smart_event_box_add(Evas_Object * parent)
+{
+       Evas *e = NULL;
+       Evas_Object *obj = NULL;
+       MpSmartEventBoxObject *data = NULL;
+
+       e = evas_object_evas_get(parent);
+       if ((obj = _mp_smart_event_box_object_new(e)))
+       {
+               if ((data = evas_object_smart_data_get(obj)))
+               {
+                       evas_object_event_callback_add(data->rect, EVAS_CALLBACK_MOUSE_DOWN, __mouse_down_cb, obj);
+                       evas_object_event_callback_add(data->rect, EVAS_CALLBACK_MOUSE_UP, __mouse_up_cb, obj);
+               }
+               else
+               {
+                       evas_object_del(obj);
+                       obj = NULL;
+               }
+       }
+
+       return obj;
+}
diff --git a/src/widget/mp-view-layout.c b/src/widget/mp-view-layout.c
new file mode 100644 (file)
index 0000000..c09b23c
--- /dev/null
@@ -0,0 +1,2065 @@
+/*
+ * 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://floralicense.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-view-layout.h"
+#include "mp-player-debug.h"
+#include "mp-ta.h"
+#include "mp-library.h"
+#include "mp-widget.h"
+#include "mp-util.h"
+#include "mp-common.h"
+#include "mp-search.h"
+#include "mp-play-view.h"
+#include "mp-playlist-mgr.h"
+#include "mp-view-manager.h"
+#include "mp-playlist-view.h"
+#include "mp-player-control.h"
+#include "mp-group-view.h"
+#include "mp-player-mgr.h"
+#include "mp-popup.h"
+#include "mp-play.h"
+
+
+#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
+#define MP_LABEL_SLIDE_DURATION 5
+#define MP_ALBUM_SONGS_MAX_LEN 10
+
+/* get layout_data of landscape square view */
+
+static void _mp_view_layout_reorder(void *data, Evas_Object * obj, void *event_info);
+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);
+
+static Eina_Bool
+_mp_view_layout_update_list_idler_cb(void *data)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       _mp_view_layout_load_search_list_item(layout_data->layout);
+
+       DEBUG_TRACE("layout_data->filter_str: %s", layout_data->filter_str);
+       if (!layout_data->filter_str || !strlen(layout_data->filter_str))
+               mp_search_show_imf_pannel(layout_data->search_bar);
+
+       layout_data->search_idler_handle = NULL;
+       return EINA_FALSE;
+}
+
+void
+mp_view_layout_search_changed_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       const char *search_str = NULL;
+
+       search_str = mp_search_text_get(layout_data->search_bar);
+
+       DEBUG_TRACE("search_str: %s", search_str);
+       if (search_str)
+       {
+               if (layout_data->filter_str)
+                       free(layout_data->filter_str);
+               layout_data->filter_str = strdup(search_str);
+               if (layout_data->search_idler_handle)
+                       ecore_idler_del(layout_data->search_idler_handle);
+               layout_data->search_idler_handle = ecore_idler_add(_mp_view_layout_update_list_idler_cb, data);
+       }
+}
+
+static Eina_Bool
+_mp_view_layout_reorder_item(void *data)
+{
+       DEBUG_TRACE("");
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK_FALSE(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       Elm_Object_Item *list_item = NULL;
+       int count = 0;
+       int err = -1;
+       int old_order;
+       int new_order = 1;
+       int uid;
+
+       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);
+
+               if (list_item != NULL)
+               {
+                       do
+                       {
+                               mp_genlist_item_data_t *gl_item =
+                                       (mp_genlist_item_data_t *) elm_object_item_data_get(list_item);
+                               MP_CHECK_FALSE(gl_item);
+                               mp_media_info_h item = (gl_item->handle);
+                               MP_CHECK_FALSE(item);
+                               if (item != NULL)
+                               {
+                                       if (gl_item->index+1 == new_order)
+                                       {
+                                               new_order++;
+                                               continue;
+                                       }
+                                       err = mp_media_info_get_playlist_member_id(item, &uid);
+                                       DEBUG_TRACE("uid: %d, old_order: %d", uid, gl_item->index+1);
+                                       if (err != 0)
+                                       {
+                                               ERROR_TRACE("Error in mp_media_info_playlist_get_play_order (%d)\n", err);
+                                               break;
+                                       }
+                                       err = mp_media_info_playlist_set_play_order(layout_data->playlist_handle, uid, new_order++);
+                                       if (err != 0)
+                                       {
+                                               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_media_info_playlist_update_db(layout_data->playlist_handle);
+               }
+       }
+       return EINA_FALSE;
+}
+
+static void
+_mp_view_layout_reorder(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+       mp_layout_data_t *layout_data = data;
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       layout_data->reordered = true;
+
+}
+
+static void
+_mp_view_layout_genlist_del_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       if (layout_data)
+       {
+               DEBUG_TRACE("category: %d, track_type: %d, group_type: %d", layout_data->category,
+                           layout_data->track_type, layout_data->group_type);
+               MP_CHECK_LAYOUT_DATA(layout_data);
+
+               mp_ecore_timer_del(layout_data->progress_timer);
+               mp_ecore_idler_del(layout_data->load_item_idler);
+               mp_ecore_idler_del(layout_data->search_idler_handle);
+               mp_ecore_idler_del(layout_data->block_size_idler);
+
+               SAFE_FREE(layout_data->type_str);
+               SAFE_FREE(layout_data->type_str2);
+               SAFE_FREE(layout_data->filter_str);
+               if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
+                       mp_media_info_group_list_destroy(layout_data->svc_handle);
+               else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+                       mp_media_info_group_list_destroy(layout_data->svc_handle);
+
+               else
+                       mp_media_info_list_destroy(layout_data->svc_handle);
+
+               if (layout_data->track_handle)
+                       mp_media_info_list_destroy(layout_data->track_handle);
+               if (layout_data->artist_handle)
+                       mp_media_info_group_list_destroy(layout_data->artist_handle);
+               if (layout_data->album_handle)
+                       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;
+               }
+
+               if (layout_data->edit_thread) {
+                       ecore_thread_cancel(layout_data->edit_thread);
+                       layout_data->edit_thread = NULL;
+               }
+
+               if(layout_data->playlists)
+                       mp_media_info_group_list_destroy(layout_data->playlists);
+
+               free(layout_data);
+       }
+       endfunc;
+}
+
+static void
+_mp_view_layout_append_auto_playlists(mp_layout_data_t * layout_data)
+{
+       int i;
+       mp_media_list_h plst;
+       int playlist_state = 0;
+
+       MP_CHECK(layout_data);
+
+       if (layout_data->default_playlists)
+               mp_media_info_group_list_destroy(layout_data->default_playlists);
+
+       layout_data->default_playlist_count = 0;
+
+       mp_setting_playlist_get_state(&playlist_state);
+
+       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_SYS_PLAYLIST_COUNT; i++)
+       {
+               int enable = playlist_state&(1<<i);
+               DEBUG_TRACE("index: %d, state: %d",i, enable);
+               if(!enable)
+               {
+                       continue;
+               }
+
+               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->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);
+       }
+}
+
+static Evas_Object *
+_mp_view_layout_sentinel_add(mp_layout_data_t * layout_data)
+{
+       DEBUG_TRACE_FUNC();
+       Evas_Object *no_contents = NULL;
+
+       no_contents = elm_layout_add(layout_data->box);
+       evas_object_size_hint_weight_set(no_contents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(no_contents, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+
+       if (layout_data->view_mode == MP_VIEW_MODE_SEARCH)
+       {
+               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
+       {
+
+               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)
+       {
+               elm_box_unpack(layout_data->box, layout_data->genlist);
+               evas_object_hide(layout_data->genlist);
+       }
+
+       elm_box_pack_end(layout_data->box, no_contents);
+       evas_object_show(no_contents);
+
+       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)
+{
+       mp_layout_data_t * layout_data = (mp_layout_data_t *)data;
+       MP_CHECK_FALSE(layout_data);
+       elm_genlist_block_count_set(layout_data->genlist, MP_GENLIST_DEFALT_BLOCK_SIZE);
+       layout_data->block_size_idler = NULL;
+       return FALSE;
+}
+
+char *
+_mp_view_layout_gl_label_get_title(void *data, Evas_Object * obj, const char *part)
+{
+       mp_genlist_item_data_t *item_data = data;
+       char *text = NULL;
+
+       MP_CHECK_NULL(item_data);
+
+       if (!strcmp(part, "elm.text"))
+       {
+               if(item_data->group_title_text_ID && strstr(item_data->group_title_text_ID, "IDS_COM"))
+                       text = GET_SYS_STR(item_data->group_title_text_ID);
+               else
+                       text = GET_STR(item_data->group_title_text_ID);
+
+               return g_strdup(text);
+       }
+       return NULL;
+}
+
+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_group_gl_del(void *data, Evas_Object * obj)
+{
+       mp_genlist_item_data_t *item_data = data;
+       MP_CHECK(item_data);
+       mp_language_mgr_unregister_genlist_item(item_data->it);
+       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_genlist_item_data_t *item_data = 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_genlist_item_data_t));
+       item_data->group_title_text_ID = text_ID;
+       item_data->item_type = MP_GENLIST_ITEM_TYPE_GROUP_TITLE;
+
+       item_data->it = 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->it);
+
+       MP_CHECK(layout_data->search_group_git);
+
+}
+
+static Evas_Object *
+_mp_view_layout_get_label_slide(Evas_Object *parent, char *name, int font_size, char *color, int max_size)
+{
+       Evas_Object *label = NULL;
+       char *label_str = NULL;
+       char *pre_format = NULL;
+       pre_format = (char *)g_malloc(MP_MAX_TEXT_PRE_FORMAT_LEN);
+       mp_retvm_if(!pre_format, NULL, "Fail to allocate memory");
+       memset(pre_format, 0, MP_MAX_TEXT_PRE_FORMAT_LEN);
+       const char *last_format = "</color></font_size>";
+       snprintf(pre_format, MP_MAX_TEXT_PRE_FORMAT_LEN, "<font_size=%d><color=#%s>", font_size, color);
+       int str_length = strlen(pre_format) + strlen(name) + strlen(last_format) + 1;
+       label_str = (char *)g_malloc(str_length);
+       if (!label_str) {
+               DEBUG_TRACE("Fail to allocate memory");
+               g_free(pre_format);
+               return NULL;
+       }
+       memset(label_str, 0, str_length);
+       snprintf(label_str, str_length, "%s%s%s", pre_format, name, last_format);
+       label = elm_label_add(parent);
+       elm_object_style_set(label, "slide_bounce");
+       elm_object_text_set(label, label_str);
+       elm_label_wrap_width_set(label, MP_MAX_ARTIST_NAME_WIDTH);
+       if (strlen(name) > max_size) {
+               elm_label_slide_duration_set(label, (strlen(name) / max_size) * MP_LABEL_SLIDE_DURATION);
+               elm_label_slide_set(label, EINA_TRUE);
+       }
+       g_free(pre_format);
+       g_free(label_str);
+       return label;
+}
+
+static char *
+_mp_view_layout_album_list_label_get(void *data, Evas_Object * obj, const char *part)
+{
+       MP_CHECK_NULL(data);
+       char *name = NULL;
+       int ret = 0;
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       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 = 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")) {
+               return g_strdup_printf("%d %s", layout_data->item_count, GET_STR("IDS_MUSIC_HEADER_SONGS"));
+       }
+
+       DEBUG_TRACE("Unusing part: %s", part);
+       return NULL;
+}
+
+static char *
+_mp_view_layout_all_songs_label_get(void *data, Evas_Object * obj, const char *part)
+{
+       MP_CHECK_NULL(data);
+       char *name = NULL;
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       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")) {
+               name = GET_SYS_STR("All songs");
+               return strdup(name);
+
+       } else if (!g_strcmp0(part, "elm.text.3")) {
+               int count;
+               mp_media_info_list_count(MP_TRACK_BY_ARTIST, layout_data->type_str, NULL, NULL, 0, &count);
+               return g_strdup_printf("(%d)", count);
+       }
+
+       DEBUG_TRACE("Unusing part: %s", part);
+       return NULL;
+}
+
+static Evas_Object *
+_mp_view_layout_album_list_icon_get(void *data, Evas_Object * obj, const char *part)
+{
+       startfunc;
+       MP_CHECK_NULL(data);
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       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 ret = 0;
+       if (!g_strcmp0(part, "elm.icon")) {
+               char *thumb_name = NULL;
+               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 = 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, 28, "5A6368", 42);
+       }
+       return icon;
+}
+
+static void
+_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 =
+                       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);
+       endfunc;
+}
+
+static void
+_mp_view_layout_append_all_song(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 = "2text",
+               .func.text_get = _mp_view_layout_all_songs_label_get,
+       };
+       layout_data->album_group =
+                       elm_genlist_item_append(layout_data->genlist, &album_group_itc, layout_data,
+                                               NULL, ELM_GENLIST_ITEM_GROUP, mp_group_view_group_list_select_cb, (const void *)-1);
+       MP_CHECK(layout_data->album_group);
+       endfunc;
+}
+
+static void
+_mp_view_layout_load_search_list_item(Evas_Object * view_layout)
+{
+
+       DEBUG_TRACE("");
+
+       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");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       if (layout_data->filter_str && strlen(layout_data->filter_str))
+       {
+               _mp_view_layout_load_search_item(view_layout);
+               edje_object_signal_emit(_EDJ(layout_data->layout), "hide.screen", "music_app");
+       }
+       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 = "3text.1icon.1";
+               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_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
+                                              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);
+
+               edje_object_signal_emit(_EDJ(layout_data->layout), "show.screen", "music_app");
+       }
+}
+
+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)
+{
+       startfunc;
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       int index;
+       int ret = -1;
+       genlist_cb_t sel_cb;
+       Elm_Genlist_Item_Class *itc;
+
+       if (!layout_data)
+       {
+               WARN_TRACE("layout_data is null...");
+               return EINA_FALSE;
+       }
+
+       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++)
+       {
+               mp_media_info_h item = NULL;
+               Elm_Object_Item *list_item = NULL;
+               char *title = NULL;
+
+               if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
+               {
+                       item = mp_media_info_group_list_nth_item(layout_data->svc_handle, index);
+                       if (!item)
+                       {
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+                               goto END;
+                       }
+                       mp_media_info_group_get_main_info(item, &title);
+               }
+               else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+               {
+                       item = mp_media_info_group_list_nth_item(layout_data->svc_handle, index);
+                       if (item == NULL)
+                       {
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
+                               goto END;
+                       }
+                       ret = mp_media_info_group_get_main_info(item, &title);
+               }
+
+               else
+               {
+                       item = mp_media_info_list_nth_item(layout_data->svc_handle, index);
+                       if (!item)
+                       {
+                               DEBUG_TRACE("Fail to mp_media_info_list_nth_item, ret[%d], index[%d]", ret, index);
+                               goto END;
+                       }
+                       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)
+                       {
+                               if (strcmp(layout_data->fast_scrooll_index, title_initial) != 0)
+                               {
+                                       make_group_title = TRUE;
+                                       IF_FREE(layout_data->fast_scrooll_index);
+                                       layout_data->fast_scrooll_index = title_initial;
+                               }
+                               else
+                               {
+                                       IF_FREE(title_initial);
+                               }
+                       }
+               }
+
+               mp_genlist_item_data_t *item_data;
+               item_data = calloc(1, sizeof(mp_genlist_item_data_t));
+               if (!item_data)
+                       goto END;
+               item_data->handle = item;
+               item_data->group_type = layout_data->group_type;
+               item_data->index = index;
+
+               // 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:
+       layout_data->load_item_idler = NULL;
+       endfunc;
+       return EINA_FALSE;
+}
+
+static void
+_mp_view_layout_check_select_all(mp_layout_data_t * layout_data)
+{
+       MP_CHECK(layout_data);
+
+       Elm_Object_Item *it;
+       bool disabled = false;
+
+       if (layout_data->select_all_checked)
+               layout_data->checked_count = layout_data->item_count;
+       else
+               layout_data->checked_count = 0;
+
+       it = elm_genlist_first_item_get(layout_data->genlist);
+       while (it)
+       {
+               if (elm_genlist_item_select_mode_get(it) != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) {
+                       mp_genlist_item_data_t *it_data = NULL;
+                       it_data = elm_object_item_data_get(it);
+                       disabled = elm_object_item_disabled_get(it);    //not to select auto playlist.
+                       if (it_data && !disabled) {
+                               it_data->checked = layout_data->select_all_checked;
+                       }
+               }
+               it = elm_genlist_item_next_get(it);
+       }
+       // Update all realized items
+       elm_genlist_realized_items_update(layout_data->genlist);
+       mp_util_create_selectioninfo_with_count(layout_data->layout, layout_data->checked_count);
+       mp_common_set_toolbar_button_sensitivity(layout_data, layout_data->checked_count);
+
+}
+
+static void
+_mp_view_layout_select_all_layout_mouse_down_cb(void *data, Evas * evas, Evas_Object * obj, void *event_info)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+
+       if(layout_data->rename_git)
+       {
+               mp_playlist_view_rename_done_cb(layout_data, NULL, NULL);
+               return;
+       }
+
+       layout_data->select_all_checked = !layout_data->select_all_checked;
+       elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked);
+
+       _mp_view_layout_check_select_all(layout_data);
+}
+
+static void
+_mp_view_layout_select_all_check_changed_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+
+       if(layout_data->rename_git)
+       {
+               mp_playlist_view_rename_done_cb(layout_data, NULL, NULL);
+               layout_data->select_all_checked = !layout_data->select_all_checked;
+               elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked);
+               return;
+       }
+
+       _mp_view_layout_check_select_all(data);
+}
+
+static void
+_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/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,
+                                      _mp_view_layout_select_all_layout_mouse_down_cb, layout_data);
+
+       Evas_Object *check = layout_data->select_all_checkbox = elm_check_add(layout_data->select_all_layout);
+       elm_check_state_pointer_set(check, &layout_data->select_all_checked);
+       evas_object_smart_callback_add(check, "changed", _mp_view_layout_select_all_check_changed_cb, layout_data);
+       evas_object_propagate_events_set(check, EINA_FALSE);
+       elm_object_part_content_set(layout_data->select_all_layout, "elm.icon", check);
+
+       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);
+}
+
+static void
+_mp_view_layout_load_search_item(Evas_Object * view_layout)
+{
+       startfunc;
+       int count = 0;
+       gint track_count = 0;
+       gint artist_count = 0;
+       gint album_count = 0;
+
+       gint index = 0;
+       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");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       mp_retm_if(layout_data->b_loading, "func called while loading");
+       layout_data->b_loading = TRUE;
+
+       elm_genlist_clear(layout_data->genlist);
+
+       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 = 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 = 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;
+       }
+
+       count = artist_count + album_count + track_count;
+       layout_data->track_count = track_count;
+
+       if(_mp_view_layout_set_sentinel(layout_data, count))
+               goto END;
+
+       static Elm_Genlist_Item_Class group_class = {
+               .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+               .refcount = 0,
+               .delete_me = EINA_FALSE,
+               .item_style = "2text.1icon",
+               .func.text_get = mp_group_view_list_label_get,
+               .func.content_get = mp_group_view_icon_get,
+               .func.del = _mp_view_layout_gl_del,
+       };
+
+       static Elm_Genlist_Item_Class track_class = {
+               .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+               .refcount = 0,
+               .delete_me = EINA_FALSE,
+               .item_style = "3text.1icon.1",
+               .func.text_get = mp_common_track_list_label_get,
+               .func.content_get = mp_common_track_list_icon_get,
+               .func.del = _mp_view_layout_gl_del,
+       };
+
+       if (artist_count)
+       {
+               DEBUG_TRACE("append artist list items");
+               _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;
+               }
+
+               for (index = 0; index < artist_count; index++)
+               {
+                       mp_media_info_h item = NULL;
+                       Elm_Object_Item *list_item = NULL;
+                       char *title = NULL;
+
+                       item = mp_media_info_group_list_nth_item(svc_handle, index);
+                       if (item == NULL)
+                       {
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index);
+                               goto END;
+                       }
+                       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 = 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,
+                                                       layout_data->search_group_git, ELM_GENLIST_ITEM_NONE,
+                                                       mp_group_view_group_list_select_cb, (void *)index);
+
+               }
+
+               if (layout_data->artist_handle)
+               {
+                       mp_media_info_group_list_destroy(layout_data->artist_handle);
+                       layout_data->artist_handle = NULL;
+               }
+               layout_data->artist_handle = svc_handle;
+
+       }
+
+       if (album_count)
+       {
+               DEBUG_TRACE("append album_count list items");
+               _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;
+               }
+
+               for (index = 0; index < album_count; index++)
+               {
+                       mp_media_info_h item = NULL;
+                       Elm_Object_Item *list_item = NULL;
+                       char *title = NULL;
+                       item = mp_media_info_group_list_nth_item(svc_handle, index);
+                       if (item == NULL)
+                       {
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index);
+                               goto END;
+                       }
+                       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 = 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,
+                                                       layout_data->search_group_git, ELM_GENLIST_ITEM_NONE,
+                                                       mp_group_view_group_list_select_cb, (void *)index);
+
+               }
+
+               if (layout_data->album_handle)
+               {
+                       mp_media_info_group_list_destroy(layout_data->album_handle);
+                       layout_data->album_handle = NULL;
+               }
+               layout_data->album_handle = svc_handle;
+
+       }
+
+       if (track_count)
+       {
+               DEBUG_TRACE("append track_count list items");
+               _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;
+               }
+
+               for (index = 0; index < track_count; index++)
+               {
+                       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->handle = item;
+                       item_data->group_type = MP_GROUP_NONE;
+
+                       item_data->it =
+                               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, layout_data);
+               }
+
+               if (layout_data->track_handle)
+               {
+                       mp_media_info_list_destroy(layout_data->track_handle);
+                       layout_data->track_handle = NULL;
+               }
+               layout_data->track_handle = svc_handle;
+
+       }
+
+      END:
+       layout_data->b_loading = FALSE;
+       endfunc;
+}
+
+
+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 = 0;
+       Elm_Genlist_Item_Class *itc;
+       genlist_cb_t sel_cb;
+
+
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       mp_retm_if(!layout_data, "layout_data is null");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       mp_retm_if(layout_data->b_loading, "func called while loading");
+       layout_data->b_loading = TRUE;
+       layout_data->checked_count = 0;
+       layout_data->select_all_checked = 0;
+
+       if (layout_data->load_item_idler)
+       {
+               DEBUG_TRACE("unregister idler");
+               ecore_idler_del(layout_data->load_item_idler);
+               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);
+       }
+
+
+       if(layout_data->track_type == MP_TRACK_BY_PLAYLIST)
+               id = layout_data->playlist_id;
+
+       if (layout_data->category == MP_LAYOUT_TRACK_LIST)
+       {
+               mp_media_info_list_count(layout_data->track_type, layout_data->type_str, layout_data->type_str2, layout_data->filter_str, id, &count);
+       }
+       else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+               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)
+       {
+               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
+       {
+               WARN_TRACE("category is not valid: %d", layout_data->category);
+               goto END;
+       }
+
+       layout_data->item_count = count;
+       DEBUG_TRACE("count: %d", count);
+
+       if(_mp_view_layout_set_sentinel(layout_data, count+layout_data->default_playlist_count))
+               goto END;
+
+       if(count < 0)
+               goto END;
+
+       if (layout_data->category != MP_LAYOUT_PLAYLIST_LIST && layout_data->view_mode != MP_VIEW_MODE_SEARCH
+               && layout_data->track_type != MP_TRACK_BY_ADDED_TIME && layout_data->track_type != MP_TRACK_BY_PLAYED_COUNT
+               && layout_data->track_type != MP_TRACK_BY_PLAYED_TIME && layout_data->track_type != MP_TRACK_BY_PLAYLIST
+               && layout_data->track_type != MP_TRACK_BY_ALBUM && layout_data->track_type != MP_TRACK_BY_ARTIST_ALBUM)
+       {
+               if (layout_data->index_fast)
+                       elm_index_item_clear(layout_data->index_fast);
+               else
+               {
+                       layout_data->index_fast = _mp_view_layout_create_fastscroll_index(view_layout, layout_data);
+               }
+       }
+
+
+       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 = 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 = mp_media_info_group_list_create(&svc_handle, layout_data->group_type, layout_data->type_str, layout_data->filter_str, 0, count);
+       else
+       {
+               ret = mp_media_info_list_create(&svc_handle, layout_data->track_type, layout_data->type_str, layout_data->type_str2, layout_data->filter_str, id, 0, count);
+       }
+       if (ret != 0)
+       {
+               DEBUG_TRACE("Fail to get items");
+               goto END;
+       }
+
+       if (layout_data->svc_handle)
+       {
+               if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
+                       mp_media_info_group_list_destroy(layout_data->svc_handle);
+               else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+                       mp_media_info_group_list_destroy(layout_data->svc_handle);
+               else
+               {
+                       mp_media_info_list_destroy(layout_data->svc_handle);
+               }
+       }
+       layout_data->svc_handle = svc_handle;
+
+
+       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 = "edit_default";
+
+       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);
+
+       static bool first_loading = true;
+
+       if(first_loading)
+       {
+               load_count = MIN(count, MP_INIT_ITEM_LOAD_COUNT);
+               first_loading = false;
+       }
+       else
+       {
+               load_count = count;
+               elm_genlist_block_count_set(layout_data->genlist, MP_INIT_ITEM_LOAD_COUNT);
+               if(!layout_data->block_size_idler)
+                       layout_data->block_size_idler = ecore_idler_add(_mp_view_layout_set_block_count_idle_cb, layout_data);
+       }
+
+       if ( MP_TRACK_BY_ALBUM == layout_data->track_type
+               || MP_TRACK_BY_ARTIST_ALBUM == layout_data->track_type)
+               _mp_view_layout_append_album_group_title(layout_data);
+       else if(layout_data->group_type == MP_GROUP_BY_ARTIST_ALBUM)
+               _mp_view_layout_append_all_song(layout_data);
+
+       for (index = 0; index < load_count; index++)
+       {
+               mp_media_info_h item = NULL;
+               Elm_Object_Item *list_item = NULL;
+               char *title = NULL;
+
+               if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST || layout_data->category == MP_LAYOUT_GROUP_LIST)
+               {
+                       item = mp_media_info_group_list_nth_item(svc_handle, index);
+                       if (!item)
+                       {
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index);
+                               goto END;
+                       }
+                       mp_media_info_group_get_main_info(item, &title);
+               }
+
+
+               else
+               {
+                       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 mp_media_info_get_title, ret[%d], index[%d]", ret, index);
+                               goto END;
+                       }
+               }
+
+               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)
+                       {
+                               if (strcmp(layout_data->fast_scrooll_index, title_initial) != 0)
+                               {
+                                       make_group_title = TRUE;
+                                       IF_FREE(layout_data->fast_scrooll_index);
+                                       layout_data->fast_scrooll_index = title_initial;
+                               }
+                               else
+                               {
+                                       IF_FREE(title_initial);
+                               }
+                       }
+               }
+
+
+
+               mp_genlist_item_data_t *item_data;
+               item_data = calloc(1, sizeof(mp_genlist_item_data_t));
+               MP_CHECK(item_data);
+               item_data->handle = item;
+               item_data->group_type = layout_data->group_type;
+               item_data->index = index;
+
+               Elm_Object_Item *parent_group = NULL;
+               if (layout_data->playlist_id < 0
+                   && MP_LAYOUT_TRACK_LIST == layout_data->category
+                   && 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);
+               elm_object_item_data_set(item_data->it, item_data);
+
+               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);
+               }
+
+       }
+
+
+
+       if (count > load_count && layout_data->view_mode != MP_VIEW_MODE_SEARCH)
+       {
+               if(!layout_data->load_item_idler)
+                       layout_data->load_item_idler = ecore_idler_add(_mp_view_layout_load_item_idler_cb, layout_data);
+       }
+
+       if (layout_data->edit_mode
+           || (layout_data->ad->b_add_tracks && layout_data->view_data->view_type == MP_VIEW_TYPE_SONGS))
+       {
+               if (!layout_data->select_all_layout)
+               {
+                       _mp_view_layout_create_select_all(layout_data);
+               }
+               else
+               {
+                       if (layout_data->select_all_checkbox)
+                               elm_check_state_set(layout_data->select_all_checkbox, false);
+               }
+
+               elm_genlist_decorate_mode_set(layout_data->genlist, EINA_TRUE);
+               elm_genlist_select_mode_set(layout_data->genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+       }
+       else
+       {
+               if (layout_data->select_all_layout)
+               {
+                       evas_object_del(layout_data->select_all_layout);
+                       layout_data->select_all_layout = NULL;
+               }
+               elm_genlist_decorate_mode_set(layout_data->genlist, EINA_FALSE);
+               elm_genlist_select_mode_set(layout_data->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       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);
+
+      END:
+       layout_data->b_loading = FALSE;
+       endfunc;
+}
+
+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(elm_object_item_data_get(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(elm_object_item_data_get(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
+       index = elm_index_add(parent);
+       elm_object_part_content_set(parent, "elm.swallow.content.index", index);
+
+       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
+_mp_view_layout_now_playing_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       startfunc;
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       struct appdata *ad = layout_data->ad;
+       MP_CHECK(ad);
+
+       if (!strcmp(emission, SIGNAL_NOW_PLAYING_CLICKED)) {
+               if(layout_data->rename_git)
+               {
+                       mp_playlist_view_rename_done_cb(layout_data, NULL, NULL);
+                       return;
+               }
+               mp_common_hide_search_ise_context(layout_data->view_data);
+               mp_util_reset_genlist_mode_item(layout_data->genlist);
+               mp_play_view_load(layout_data->ad);
+       } else if (!strcmp(emission, "play_pause_clicked")){
+               if (ad->player_state == PLAY_STATE_PLAYING)
+               {
+                       mp_play_control_play_pause(ad, false);
+               }
+               else
+               {
+                       mp_play_control_play_pause(ad, true);
+               }
+       }
+
+       endfunc;
+}
+
+static Evas_Object *
+_mp_view_layout_create_now_playing(Evas_Object * parent, mp_layout_data_t * layout_data)
+{
+       Evas_Object *playing_pannel = NULL;
+       int r = -1;
+
+       DEBUG_TRACE_FUNC();
+
+       playing_pannel = elm_layout_add(parent);
+       if (playing_pannel)
+       {
+               r = elm_layout_file_set(playing_pannel, PLAY_VIEW_EDJ_NAME, "mp_now_playing");
+               if (!r)
+               {
+                       evas_object_del(playing_pannel);
+                       return NULL;
+               }
+               evas_object_size_hint_weight_set(playing_pannel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       }
+
+       Evas_Object *thumbnail = elm_bg_add(playing_pannel);
+       elm_bg_load_size_set(thumbnail, MP_NOW_PLAYING_ICON_SIZE, MP_NOW_PLAYING_ICON_SIZE);
+       elm_object_part_content_set(playing_pannel, "thumb_image", thumbnail);
+       layout_data->now_playing_icon = thumbnail;
+
+       Evas_Object *progress = elm_progressbar_add(playing_pannel);
+       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);
+       evas_object_size_hint_weight_set(progress, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_value_set(progress, 0.0);
+       evas_object_show(progress);
+
+       elm_object_part_content_set(playing_pannel, "progress_bar", progress);
+       layout_data->now_playing_progress = progress;
+
+       mp_retvm_if(playing_pannel == NULL, NULL, "now playing view is NULL");
+
+       edje_object_signal_callback_add(_EDJ(playing_pannel), SIGNAL_NOW_PLAYING_CLICKED, "*",
+                                       _mp_view_layout_now_playing_cb, layout_data);
+       edje_object_signal_callback_add(_EDJ(playing_pannel), "play_pause_clicked", "*",
+                                       _mp_view_layout_now_playing_cb, layout_data);
+
+       evas_object_show(playing_pannel);
+
+       return playing_pannel;
+}
+
+static void
+_mp_widget_gl_drag_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+
+       if(layout_data->rename_git)
+       {
+               mp_playlist_view_rename_done_cb(layout_data, NULL, NULL);
+               return;
+       }
+}
+
+static Evas_Object *
+_mp_view_layout_create_layout(Evas_Object * parent, view_data_t * view_data, mp_layout_data_t * layout_data,
+                             mp_view_mode_t view_mode)
+{
+       Evas_Object *layout = NULL;
+       MP_CHECK_NULL(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       if (view_mode == MP_VIEW_MODE_SEARCH)
+       {
+               layout = elm_layout_add(parent);
+               mp_retvm_if(layout == NULL, NULL, "layout is NULL");
+               elm_layout_file_set(layout, EDJ_NAME, "main_layout_with_searchbar");
+
+               layout_data->genlist = mp_widget_genlist_create(layout_data->ad, layout, false, false);
+               evas_object_data_set(layout_data->genlist, "layout_data", layout_data);
+
+               Evas_Object *box = elm_box_add(layout);
+               evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(box);
+               layout_data->box = box;
+
+               elm_box_pack_end(box, layout_data->genlist);
+
+               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);
+               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                    // use conformant to use auto scroll
+       {
+               TA_S(8, "elm_layout_add");
+               layout = elm_layout_add(parent);
+               mp_retvm_if(layout == NULL, NULL, "layout is NULL");
+               elm_layout_file_set(layout, EDJ_NAME, "main_layout");
+               TA_E(8, "elm_layout_add");
+
+               TA_S(8, "mp_widget_genlist_create");
+               layout_data->genlist = mp_widget_genlist_create(layout_data->ad, layout, true, true);
+               evas_object_data_set(layout_data->genlist, "layout_data", layout_data);
+               TA_E(8, "mp_widget_genlist_create");
+
+               TA_S(8, "elm_box_add");
+               Evas_Object *box = elm_box_add(layout);
+               evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(box);
+               TA_E(8, "elm_box_add");
+               layout_data->box = box;
+
+               TA_S(8, "elm_box_pack_end");
+               elm_box_pack_end(box, layout_data->genlist);
+               TA_E(8, "elm_box_pack_end");
+
+               elm_object_part_content_set(layout, "list_content", box);
+       }
+       evas_object_event_callback_add(layout_data->genlist, EVAS_CALLBACK_FREE, _mp_view_layout_genlist_del_cb,
+                                      layout_data);
+       evas_object_smart_callback_add(layout_data->genlist, "drag,start,up", _mp_widget_gl_drag_cb, layout_data);
+       evas_object_smart_callback_add(layout_data->genlist, "drag,start,down", _mp_widget_gl_drag_cb, layout_data);
+
+       return layout;
+}
+
+Evas_Object *
+mp_view_layout_create(Evas_Object * parent, view_data_t * view_data, mp_view_mode_t view_mode)
+{
+       startfunc;
+       MP_CHECK_NULL(view_data);
+       MP_CHECK_VIEW_DATA(view_data);
+       mp_layout_data_t *layout_data = calloc(1, sizeof(mp_layout_data_t));
+       MP_CHECK_NULL(layout_data);
+       MP_SET_LAYOUT_DATA_MAGIC(layout_data);
+
+       layout_data->ad = view_data->ad;
+       layout_data->view_data = view_data;
+       layout_data->view_mode = view_mode;
+       layout_data->playlist_id = -1;
+       TA_S(7, "_mp_view_layout_create_layout");
+       Evas_Object *layout = _mp_view_layout_create_layout(parent, view_data, layout_data, view_mode);
+       TA_E(7, "_mp_view_layout_create_layout");
+       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;
+       return layout;
+}
+
+static void
+_set_playlist_handle(mp_layout_data_t *layout_data)
+{
+       int res = 0;
+       int i, count = 0;
+       mp_media_list_h list = NULL;
+       mp_media_info_h media = NULL;
+
+       res = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
+       MP_CHECK(res == 0);
+
+       res = mp_media_info_group_list_create(&list, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count);
+       MP_CHECK(res == 0);
+
+       for(i=0; i<count; i++)
+       {
+               int playlist_id;
+               media = mp_media_info_group_list_nth_item(list, i);
+               mp_media_info_group_get_playlist_id(media, &playlist_id);
+               if(playlist_id == layout_data->playlist_id)
+                       break;
+       }
+       if(layout_data->playlists)
+               mp_media_info_group_list_destroy(layout_data->playlists);
+
+       layout_data->playlists = list;
+       layout_data->playlist_handle = media;
+}
+
+void
+mp_view_layout_set_layout_data(Evas_Object * view_layout, ...)
+{
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       va_list var_args;
+       int field;
+
+       va_start(var_args, view_layout);
+       do
+       {
+               field = va_arg(var_args, int);
+               if (field < 0)
+               {
+                       break;
+               }
+
+               switch (field)
+               {
+               case MP_LAYOUT_CATEGORY_TYPE:
+                       {
+                               int val = va_arg((var_args), int);
+                               layout_data->category = val;
+                               DEBUG_TRACE("layout_data->category = %d", layout_data->category);
+                               break;
+                       }
+               case MP_LAYOUT_TRACK_LIST_TYPE:
+                       {
+                               int val = va_arg((var_args), int);
+
+                               layout_data->track_type = val;
+                               DEBUG_TRACE("layout_data->track_type = %d", layout_data->track_type);
+                               break;
+                       }
+               case MP_LAYOUT_GROUP_LIST_TYPE:
+                       {
+                               int val = va_arg((var_args), int);
+                               layout_data->group_type = val;
+                               DEBUG_TRACE("layout_data->group_type = %d", layout_data->group_type);
+                               break;
+                       }
+               case MP_LAYOUT_PLAYLIT_ID:
+                       {
+                               int val = va_arg((var_args), int);
+                               layout_data->playlist_id = val;
+                               DEBUG_TRACE("layout_data->playlist_id = %d", layout_data->playlist_id);
+
+                               _set_playlist_handle(layout_data);
+
+                               break;
+                       }
+               case MP_LAYOUT_TYPE_STR:
+                       {
+                               char *val = va_arg((var_args), char *);
+                               SAFE_FREE(layout_data->type_str);
+                               layout_data->type_str = g_strdup(val);
+                               DEBUG_TRACE("layout_data->type_str = %s", layout_data->type_str);
+
+                               break;
+                       }
+               case MP_LAYOUT_TYPE_STR2:
+                       {
+                               char *val = va_arg((var_args), char *);
+                               SAFE_FREE(layout_data->type_str2);
+                               layout_data->type_str2 = g_strdup(val);
+                               DEBUG_TRACE("layout_data->type_str = %s", layout_data->type_str2);
+
+                               break;
+                       }
+               case MP_LAYOUT_FILTER_STR:
+                       {
+                               char *val = va_arg((var_args), char *);
+                               SAFE_FREE(layout_data->filter_str);
+                               layout_data->filter_str = g_strdup(val);
+                               DEBUG_TRACE("layout_data->filter_str = %s", layout_data->filter_str);
+
+                               break;
+                       }
+               case MP_LAYOUT_EDIT_MODE:
+                       {
+                               int val = va_arg((var_args), int);
+                               layout_data->edit_mode = val;
+                               DEBUG_TRACE("layout_data->edit_mode = %d", layout_data->edit_mode);
+                               break;
+                       }
+               case MP_LAYOUT_REORDER_MODE:
+                       {
+                               int val = va_arg((var_args), int);
+                               layout_data->reorder = val;
+                               DEBUG_TRACE("layout_data->reorder = %d", layout_data->reorder);
+                               break;
+                       }
+               case MP_LAYOUT_GENLIST_ITEMCLASS:
+                       {
+                               Elm_Genlist_Item_Class *itc = va_arg((var_args), 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:
+                       {
+                               Elm_Genlist_Item_Class *itc = va_arg((var_args), Elm_Genlist_Item_Class *);
+                               if (itc)
+                                       memcpy(&(layout_data->auto_playlist_item_class), itc,
+                                              sizeof(Elm_Genlist_Item_Class));
+                               break;
+                       }
+               case MP_LAYOUT_LIST_CB:
+                       {
+                               mp_genlist_cb_t *cb_func = va_arg((var_args), mp_genlist_cb_t *);
+                               if (cb_func)
+                                       memcpy(&(layout_data->cb_func), cb_func, sizeof(layout_data->cb_func));
+                               break;
+                       }
+               default:
+                       DEBUG_TRACE("Invalid arguments");
+               }
+
+       }
+       while (field);
+
+       va_end(var_args);
+
+}
+
+void
+mp_view_layout_destroy(Evas_Object * view_layout)
+{
+       mp_retm_if(!view_layout, "");
+       if (view_layout)
+               evas_object_del(view_layout);
+}
+
+void
+mp_view_layout_update(Evas_Object * view_layout)
+{
+       startfunc;
+       MP_CHECK(view_layout);
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       mp_retm_if(!layout_data, "layout_data is null!!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+               if (layout_data->view_mode != MP_VIEW_MODE_SEARCH) {
+                       {
+                               _mp_view_layout_load_list_item(view_layout);
+                       }
+
+                       if (layout_data->ad->show_now_playing)
+                       {
+                               //if (!layout_data->ad->b_add_tracks && !layout_data->edit_mode)
+                               if (!layout_data->ad->b_add_tracks)
+                               {
+                                       mp_view_layout_show_now_playing(view_layout);
+                                       mp_view_layout_set_now_playing_info(view_layout);
+                               }
+                               else
+                                       mp_view_layout_hide_now_playing(view_layout);
+                       }
+                       else
+                       {
+                               mp_view_layout_hide_now_playing(view_layout);
+                       }
+               }
+               else
+                       _mp_view_layout_load_search_list_item(view_layout);
+               DEBUG_TRACE("category: %d, track_type: %d, group_type: %d", layout_data->category,
+                           layout_data->track_type, layout_data->group_type);
+
+       if (view_layout == mp_view_manager_get_last_view_layout(layout_data->ad))
+       {
+               mp_view_layout_progress_timer_thaw(view_layout);
+               mp_common_set_toolbar_button_sensitivity(layout_data, layout_data->checked_count);
+       }
+
+       /* update the first controlba item */
+       mp_view_manager_update_first_controlbar_item(layout_data);
+       endfunc;
+}
+
+void
+mp_view_layout_clear(Evas_Object * view_layout)
+{
+       mp_retm_if(!view_layout, "");
+
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       mp_retm_if(!layout_data, "");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       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);
+       SAFE_FREE(layout_data->filter_str);
+       mp_search_text_set(layout_data->search_bar, "");
+
+       if (layout_data->progress_timer)
+               ecore_timer_freeze(layout_data->progress_timer);
+       mp_view_layout_set_edit_mode(layout_data, false);
+
+}
+
+static void
+_mp_view_layout_set_progress_pos(void *data)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+       MP_CHECK(layout_data->ad);
+
+       double pos = layout_data->ad->music_pos;
+       double duration = layout_data->ad->music_length;
+       double value = 0.0;
+
+       if (duration > 0.0)
+               value = pos / duration;
+
+       elm_progressbar_value_set(layout_data->now_playing_progress, value);
+}
+
+
+static Eina_Bool
+_mp_view_layout_progress_timer_cb(void *data)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK_FALSE(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       MP_CHECK_FALSE(layout_data->ad);
+
+       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;
+}
+
+void
+mp_view_layout_show_now_playing(Evas_Object * view_layout)
+{
+       mp_retm_if(!view_layout, "view_layout is null!!");
+
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       MP_CHECK(layout_data);
+       /* get layout_data of landscape square view */
+
+       if(!layout_data->now_playing)
+       {
+               layout_data->now_playing = _mp_view_layout_create_now_playing(layout_data->layout, layout_data);
+               elm_object_part_content_set(layout_data->layout, "now_playing", layout_data->now_playing);
+       }
+
+       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)
+               layout_data->progress_timer = ecore_timer_add(0.5, _mp_view_layout_progress_timer_cb, layout_data);
+
+       MP_CHECK(layout_data->ad);
+       if(layout_data->ad->player_state != PLAY_STATE_PLAYING)
+               ecore_timer_freeze(layout_data->progress_timer);
+
+       _mp_view_layout_update_icon(view_layout);
+
+}
+
+void
+mp_view_layout_hide_now_playing(Evas_Object * view_layout)
+{
+       mp_retm_if(!view_layout, "view_layout is null!!");
+
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       /* get layout_data of landscape square view */
+
+       if (layout_data->progress_timer)
+       {
+               ecore_timer_del(layout_data->progress_timer);
+               layout_data->progress_timer = NULL;
+       }
+
+       edje_object_signal_emit(_EDJ(layout_data->layout), "HIDE_NOW_PLAING", "music_app");
+}
+
+void
+mp_view_layout_progress_timer_thaw(Evas_Object * view_layout)
+{
+       mp_retm_if(!view_layout, "view_layout is null!!");
+
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       MP_CHECK(layout_data->ad);
+
+       /* get layout_data of landscape square view */
+
+
+       if (layout_data->progress_timer && layout_data->ad->player_state == PLAY_STATE_PLAYING)
+               ecore_timer_thaw(layout_data->progress_timer);
+
+       _mp_view_layout_set_progress_pos(layout_data);
+       _mp_view_layout_update_icon(view_layout);
+}
+
+void
+mp_view_layout_progress_timer_freeze(Evas_Object * view_layout)
+{
+       mp_retm_if(!view_layout, "view_layout is null!!");
+
+       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       /* get layout_data of landscape square view */
+
+       if (layout_data->progress_timer)
+               ecore_timer_freeze(layout_data->progress_timer);
+       _mp_view_layout_set_progress_pos(layout_data);
+       _mp_view_layout_update_icon(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 !!!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       mp_retm_if(!layout_data->ad, "layout_data->ad is null !!!!");
+
+       /* get layout_data of landscape square view */
+       MP_CHECK(layout_data->now_playing);
+       MP_CHECK(layout_data->now_playing_icon);
+
+       mp_track_info_t *current_item = layout_data->ad->current_track_info;
+       MP_CHECK(current_item);
+
+
+       if (!mp_util_is_image_valid(layout_data->ad->evas, current_item->thumbnail_path))
+               elm_bg_file_set(layout_data->now_playing_icon, DEFAULT_THUMBNAIL, NULL);
+       else
+               elm_bg_file_set(layout_data->now_playing_icon, current_item->thumbnail_path, NULL);
+
+       char *label =
+               g_strdup_printf("%s / %s",
+                               (current_item->title ? current_item->title : GET_SYS_STR("IDS_COM_BODY_UNKNOWN")),
+                               (current_item->artist ? current_item->artist : GET_SYS_STR("IDS_COM_BODY_UNKNOWN")));
+
+       edje_object_part_text_set(_EDJ(layout_data->now_playing), "now_playing_label", label);
+       IF_FREE(label);
+
+}
+
+static void
+_mp_view_layout_update_icon(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 !!!!");
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       mp_retm_if(!layout_data->ad, "layout_data->ad is null !!!!");
+
+       /* get layout_data of landscape square view */
+
+       MP_CHECK(layout_data->now_playing);
+
+       if(layout_data->ad->player_state != PLAY_STATE_PLAYING)
+               edje_object_signal_emit(_EDJ(layout_data->now_playing), "pause", "playing_icon");
+       else
+               edje_object_signal_emit(_EDJ(layout_data->now_playing), "play", "playing_icon");
+}
+
+void
+mp_view_layout_reset_select_all(mp_layout_data_t * layout_data)
+{
+       MP_CHECK(layout_data);
+       MP_CHECK(layout_data->select_all_checkbox);
+
+       layout_data->checked_count = 0;
+       layout_data->select_all_checked = 0;
+       elm_check_state_set(layout_data->select_all_checkbox, false);
+}
+
+void
+mp_view_layout_set_edit_mode(mp_layout_data_t * layout_data, bool edit_mode)
+{
+       startfunc;
+       MP_CHECK(layout_data);
+       if (edit_mode)
+       {
+               if (!layout_data->select_all_layout)
+               {
+                       _mp_view_layout_create_select_all(layout_data);
+               }
+               else
+               {
+                       if (layout_data->select_all_checkbox)
+                               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);
+               if (sweeped_item)
+               {
+                       elm_genlist_item_decorate_mode_set(sweeped_item, "slide", EINA_FALSE);
+                       elm_genlist_item_select_mode_set(sweeped_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+                       elm_genlist_item_update(sweeped_item);
+               }
+
+               if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
+               {
+                       int i = 0;
+                       Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
+                       for (i = 0; i < layout_data->default_playlist_count; i++)
+                       {
+                               Elm_Object_Item *next = NULL;
+                               next = elm_genlist_item_next_get(item);
+                               elm_object_item_disabled_set(item, EINA_TRUE);
+                               item = next;
+                       }
+               }
+               else if(layout_data->group_type == MP_GROUP_BY_ARTIST_ALBUM)
+               {
+                       Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
+                       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+               }
+
+               if (layout_data->reorder)
+                       elm_genlist_reorder_mode_set(layout_data->genlist, EINA_TRUE);
+               elm_genlist_decorate_mode_set(layout_data->genlist, EINA_TRUE);
+
+               elm_genlist_select_mode_set(layout_data->genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+       }
+       else
+       {
+
+               if (layout_data->select_all_layout)
+               {
+                       evas_object_del(layout_data->select_all_layout);
+                       layout_data->select_all_layout = NULL;
+               }
+
+               elm_genlist_decorate_mode_set(layout_data->genlist, EINA_FALSE);
+               layout_data->edit_mode = 0;
+               elm_genlist_select_mode_set(layout_data->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+               if(layout_data->reordered)
+               {
+                       _mp_view_layout_reorder_item(layout_data);
+                       layout_data->reordered = false;
+               }
+
+               layout_data->reorder = 0;
+               if (layout_data->checked_count)
+               {
+                       Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
+                       while (item)
+                       {
+                               if(elm_genlist_item_select_mode_get(item) != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+                               {
+                                       mp_genlist_item_data_t *item_data =
+                                               (mp_genlist_item_data_t *) elm_object_item_data_get(item);
+                                       MP_CHECK(item_data);
+                                       item_data->checked = EINA_FALSE;
+                               }
+                               item = elm_genlist_item_next_get(item);
+                       }
+                       layout_data->checked_count = 0;
+               }
+
+               layout_data->selected_count = 0;
+               layout_data->select_all_checked = false;
+
+               mp_view_manager_set_title_and_buttons(layout_data->view_data, layout_data->navibar_title,
+                                                     layout_data->callback_data);
+               mp_common_set_toolbar_button_sensitivity(layout_data, 0);
+
+               if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
+               {
+                       int i = 0;
+                       Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
+                       for (i = 0; i < layout_data->default_playlist_count; i++)
+                       {
+                               Elm_Object_Item *next = NULL;
+                               next = elm_genlist_item_next_get(item);
+                               elm_object_item_disabled_set(item, EINA_FALSE);
+                               item = next;
+                       }
+               }
+               else if(layout_data->group_type == MP_GROUP_BY_ARTIST_ALBUM)
+               {
+                       Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
+                       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+               }
+               mp_util_create_selectioninfo_with_count(layout_data->layout, 0);
+
+       }
+
+       endfunc;
+}
+
+
diff --git a/src/widget/mp-volume-widget.c b/src/widget/mp-volume-widget.c
new file mode 100755 (executable)
index 0000000..caff5a6
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * 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://floralicense.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-volume-widget.h"
+#include "mp-player-debug.h"
+#include "mp-define.h"
+#include "mp-volume.h"
+
+typedef struct {
+       bool dragging;
+
+       Mp_Volume_Widget_Cb event_cb;
+       void *user_data;
+
+} Volume_Widget_Data;
+
+static void
+_mp_volume_widget_drag_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Volume_Widget_Data *wd = data;
+       MP_CHECK(wd);
+
+       if (wd->event_cb)
+               wd->event_cb(wd->user_data, obj, VOLUME_WIDGET_EVENT_DRAG_START);
+}
+
+static void
+_mp_volume_widget_drag_stop_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Volume_Widget_Data *wd = data;
+       MP_CHECK(wd);
+
+       if (wd->event_cb)
+               wd->event_cb(wd->user_data, obj, VOLUME_WIDGET_EVENT_DRAG_STOP);
+}
+
+static void
+_mp_volume_widget_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       double val = elm_slider_value_get(obj);
+       int incator_val = (int)(val + 0.5);
+       if (incator_val != mp_volume_get_current())
+               mp_volume_set(incator_val);
+}
+
+static void
+_mp_volume_widget_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       Volume_Widget_Data *wd = data;
+       SAFE_FREE(wd);
+}
+
+
+Evas_Object *
+mp_volume_widget_add(Evas_Object *parent)
+{
+       MP_CHECK_NULL(parent);
+
+       Evas_Object *slider = elm_slider_add(parent);
+       elm_object_style_set(slider, "music-player/default");
+       elm_slider_indicator_show_set(slider, EINA_TRUE);
+       evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_slider_indicator_format_set(slider, "%1.0f");
+
+       Evas_Object *icon = elm_icon_add(slider);
+       elm_image_file_set(icon, IMAGE_EDJ_NAME, MP_ICON_VOLUME_MIN);
+       evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+       Evas_Object *icon_end = elm_icon_add(slider);
+       elm_image_file_set(icon_end, IMAGE_EDJ_NAME, MP_ICON_VOLUME_MAX);
+       evas_object_size_hint_aspect_set(icon_end, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+       elm_object_content_set(slider,icon);
+       elm_object_part_content_set(slider, "end", icon_end);
+
+       elm_slider_min_max_set(slider, 0, (double)mp_volume_get_max());
+       elm_slider_value_set(slider, (double)mp_volume_get_current());
+
+       Volume_Widget_Data *wd = calloc(1, sizeof(Volume_Widget_Data));
+       mp_assert(wd);
+       evas_object_data_set(slider, "widget_data", wd);
+
+       evas_object_smart_callback_add(slider, "slider,drag,start", _mp_volume_widget_drag_start_cb, wd);
+       evas_object_smart_callback_add(slider, "changed", _mp_volume_widget_changed_cb, wd);
+       evas_object_smart_callback_add(slider, "slider,drag,stop", _mp_volume_widget_drag_stop_cb, wd);
+
+       evas_object_event_callback_add(slider, EVAS_CALLBACK_DEL, _mp_volume_widget_del_cb, wd);
+
+       return slider;
+}
+
+void
+mp_volume_widget_event_callback_add(Evas_Object *obj, Mp_Volume_Widget_Cb event_cb, void *user_data)
+{
+       MP_CHECK(obj);
+       Volume_Widget_Data *wd = evas_object_data_get(obj, "widget_data");
+       MP_CHECK(wd);
+
+       wd->event_cb = event_cb;
+       wd->user_data = user_data;
+}
+
+void
+mp_volume_widget_volume_up(Evas_Object *obj)
+{
+       double max = 0.0;
+       elm_slider_min_max_get(obj, NULL, &max);
+
+       double current = elm_slider_value_get(obj);
+
+       if (current < max)
+               elm_slider_value_set(obj, (current + 1.0));
+
+       evas_object_smart_callback_call(obj, "changed", NULL);
+}
+
+void
+mp_volume_widget_volume_down(Evas_Object *obj)
+{
+       double min = 0.0;
+       elm_slider_min_max_get(obj, &min, NULL);
+
+       double current = elm_slider_value_get(obj);
+
+       if (current > min)
+               elm_slider_value_set(obj, (current - 1.0));
+
+       evas_object_smart_callback_call(obj, "changed", NULL);
+}
+
diff --git a/target_images/music_player/00_winset_Back.png b/target_images/music_player/00_winset_Back.png
new file mode 100644 (file)
index 0000000..780e24e
Binary files /dev/null and b/target_images/music_player/00_winset_Back.png differ
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 (file)
index 0000000..e91d2e4
Binary files /dev/null and b/target_images/music_player/02_controlbar_icon_synchronise_start_sync.png differ
diff --git a/target_images/music_player/34_mostplayed.png b/target_images/music_player/34_mostplayed.png
new file mode 100644 (file)
index 0000000..8baf524
Binary files /dev/null and b/target_images/music_player/34_mostplayed.png differ
diff --git a/target_images/music_player/34_player_list_thum_noitems.png b/target_images/music_player/34_player_list_thum_noitems.png
new file mode 100644 (file)
index 0000000..8359b06
Binary files /dev/null and b/target_images/music_player/34_player_list_thum_noitems.png differ
diff --git a/target_images/music_player/34_quicklist.png b/target_images/music_player/34_quicklist.png
new file mode 100644 (file)
index 0000000..133d075
Binary files /dev/null and b/target_images/music_player/34_quicklist.png differ
diff --git a/target_images/music_player/34_recentlyadded.png b/target_images/music_player/34_recentlyadded.png
new file mode 100644 (file)
index 0000000..341fdf3
Binary files /dev/null and b/target_images/music_player/34_recentlyadded.png differ
diff --git a/target_images/music_player/34_recentlyplayed.png b/target_images/music_player/34_recentlyplayed.png
new file mode 100644 (file)
index 0000000..39a274b
Binary files /dev/null and b/target_images/music_player/34_recentlyplayed.png differ
diff --git a/target_images/music_player/34_thumb_07.png b/target_images/music_player/34_thumb_07.png
new file mode 100644 (file)
index 0000000..75fbaf7
Binary files /dev/null and b/target_images/music_player/34_thumb_07.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_add.png b/target_images/music_player/T02_controlbar_icon_add.png
new file mode 100644 (file)
index 0000000..02cb967
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_add.png differ
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
new file mode 100644 (file)
index 0000000..8205121
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_add_to_playlist.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_all.png b/target_images/music_player/T02_controlbar_icon_all.png
new file mode 100644 (file)
index 0000000..f02f863
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_all.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_artist.png b/target_images/music_player/T02_controlbar_icon_artist.png
new file mode 100644 (file)
index 0000000..d1cc167
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_artist.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_cancel.png b/target_images/music_player/T02_controlbar_icon_cancel.png
new file mode 100644 (file)
index 0000000..6c3eac6
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_cancel.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_composer.png b/target_images/music_player/T02_controlbar_icon_composer.png
new file mode 100644 (file)
index 0000000..f5f815d
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_composer.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_delete.png b/target_images/music_player/T02_controlbar_icon_delete.png
new file mode 100644 (file)
index 0000000..ee52ace
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_delete.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_edit.png b/target_images/music_player/T02_controlbar_icon_edit.png
new file mode 100644 (file)
index 0000000..748461d
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_edit.png differ
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 100644 (file)
index 0000000..f926a8d
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_folders.png differ
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 100644 (file)
index 0000000..9eb1e59
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_genres.png differ
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 100644 (file)
index 0000000..6cf8d88
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_music_albums.png differ
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 100644 (file)
index 0000000..4de1dac
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_music_square.png differ
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 100644 (file)
index 0000000..96bcf05
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_nearby_device.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_playlists.png b/target_images/music_player/T02_controlbar_icon_playlists.png
new file mode 100644 (file)
index 0000000..6e7c6eb
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_playlists.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_search.png b/target_images/music_player/T02_controlbar_icon_search.png
new file mode 100644 (file)
index 0000000..58fd8a8
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_search.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_share.png b/target_images/music_player/T02_controlbar_icon_share.png
new file mode 100644 (file)
index 0000000..a8e4611
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_share.png differ
diff --git a/target_images/music_player/T02_controlbar_icon_years.png b/target_images/music_player/T02_controlbar_icon_years.png
new file mode 100644 (file)
index 0000000..2d8008e
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_years.png differ
diff --git a/target_images/music_player/T02_icon_allshare.png b/target_images/music_player/T02_icon_allshare.png
new file mode 100644 (file)
index 0000000..5db1ef9
Binary files /dev/null and b/target_images/music_player/T02_icon_allshare.png differ
diff --git a/target_images/music_player/T02_music_player_image_shadow.png b/target_images/music_player/T02_music_player_image_shadow.png
new file mode 100644 (file)
index 0000000..bd87b52
Binary files /dev/null and b/target_images/music_player/T02_music_player_image_shadow.png differ
diff --git a/target_images/music_player/allshare/myfile_icon_folder.png b/target_images/music_player/allshare/myfile_icon_folder.png
new file mode 100644 (file)
index 0000000..d53be43
Binary files /dev/null and b/target_images/music_player/allshare/myfile_icon_folder.png differ
diff --git a/target_images/music_player/default_folder.png b/target_images/music_player/default_folder.png
new file mode 100644 (file)
index 0000000..01f3df7
Binary files /dev/null and b/target_images/music_player/default_folder.png differ